aboutsummaryrefslogtreecommitdiff
path: root/documentation/examples/hooks/trigger/basic.php
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/examples/hooks/trigger/basic.php')
-rw-r--r--documentation/examples/hooks/trigger/basic.php9
1 files changed, 0 insertions, 9 deletions
diff --git a/documentation/examples/hooks/trigger/basic.php b/documentation/examples/hooks/trigger/basic.php
deleted file mode 100644
index a32bf9296..000000000
--- a/documentation/examples/hooks/trigger/basic.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-$result = trigger_plugin_hook('get_status', 'example', null, true);
-
-if ($result) {
- var_dump('Plugin hook says ok!');
-} else {
- var_dump('Plugin hook says no.');
-}
='mode'>-rw-r--r--README.md28
-rw-r--r--README.txt24
-rw-r--r--_graphics/ajax_loader.gifbin4421 -> 2608 bytes-rw-r--r--_graphics/ajax_loader_bw.gifbin3394 -> 2608 bytes-rw-r--r--_graphics/walled_garden/one_column_bottom.pngbin522 -> 1336 bytes-rw-r--r--_graphics/walled_garden/one_column_top.pngbin517 -> 1345 bytes-rw-r--r--_graphics/walled_garden/two_column_bottom.pngbin532 -> 1353 bytes-rw-r--r--_graphics/walled_garden/two_column_top.pngbin547 -> 1366 bytes-rw-r--r--actions/admin/plugins/activate.php3
-rw-r--r--actions/admin/plugins/deactivate.php3
-rw-r--r--actions/admin/site/regenerate_secret.php11
-rw-r--r--actions/admin/site/unlock_upgrade.php10
-rw-r--r--actions/admin/site/update_advanced.php8
-rw-r--r--actions/admin/site/update_basic.php2
-rw-r--r--actions/avatar/remove.php36
-rw-r--r--actions/avatar/revert.php15
-rw-r--r--actions/comments/delete.php22
-rw-r--r--actions/friends/collections/add.php5
-rw-r--r--actions/login.php9
-rw-r--r--actions/plugins/settings/save.php2
-rw-r--r--actions/plugins/usersettings/save.php2
-rw-r--r--actions/profile/edit.php49
-rw-r--r--actions/register.php7
-rw-r--r--actions/river/delete.php21
-rw-r--r--actions/widgets/add.php3
-rw-r--r--documentation/info/manifest.xml3
-rw-r--r--engine/classes/ElggAccess.php4
-rw-r--r--engine/classes/ElggAnnotation.php5
-rw-r--r--engine/classes/ElggAttributeLoader.php248
-rw-r--r--engine/classes/ElggAutoP.php336
-rw-r--r--engine/classes/ElggBatch.php73
-rw-r--r--engine/classes/ElggCache.php4
-rw-r--r--engine/classes/ElggCrypto.php208
-rw-r--r--engine/classes/ElggData.php20
-rw-r--r--engine/classes/ElggDiskFilestore.php48
-rw-r--r--engine/classes/ElggEntity.php192
-rw-r--r--engine/classes/ElggExtender.php2
-rw-r--r--engine/classes/ElggFile.php21
-rw-r--r--engine/classes/ElggFileCache.php6
-rw-r--r--engine/classes/ElggGroup.php62
-rw-r--r--engine/classes/ElggGroupItemVisibility.php93
-rw-r--r--engine/classes/ElggLRUCache.php181
-rw-r--r--engine/classes/ElggMemcache.php8
-rw-r--r--engine/classes/ElggMenuBuilder.php63
-rw-r--r--engine/classes/ElggMenuItem.php3
-rw-r--r--engine/classes/ElggMetadata.php38
-rw-r--r--engine/classes/ElggObject.php56
-rw-r--r--engine/classes/ElggPAM.php8
-rw-r--r--engine/classes/ElggPlugin.php45
-rw-r--r--engine/classes/ElggPluginManifest.php50
-rw-r--r--engine/classes/ElggPluginManifestParser.php6
-rw-r--r--engine/classes/ElggPluginManifestParser18.php11
-rw-r--r--engine/classes/ElggPluginPackage.php6
-rw-r--r--engine/classes/ElggPriorityList.php30
-rw-r--r--engine/classes/ElggRelationship.php5
-rw-r--r--engine/classes/ElggSession.php14
-rw-r--r--engine/classes/ElggSite.php83
-rw-r--r--engine/classes/ElggStaticVariableCache.php8
-rw-r--r--engine/classes/ElggTranslit.php269
-rw-r--r--engine/classes/ElggUser.php57
-rw-r--r--engine/classes/ElggVolatileMetadataCache.php355
-rw-r--r--engine/classes/ElggWidget.php12
-rw-r--r--engine/classes/ElggXMLElement.php131
-rw-r--r--engine/classes/IncompleteEntityException.php10
-rw-r--r--engine/classes/ODDMetaData.php14
-rw-r--r--engine/classes/ODDRelationship.php8
-rw-r--r--engine/handlers/cache_handler.php19
-rw-r--r--engine/lib/access.php172
-rw-r--r--engine/lib/actions.php176
-rw-r--r--engine/lib/admin.php48
-rw-r--r--engine/lib/annotations.php104
-rw-r--r--engine/lib/cache.php12
-rw-r--r--engine/lib/calendar.php2
-rw-r--r--engine/lib/configuration.php55
-rw-r--r--engine/lib/cron.php4
-rw-r--r--engine/lib/database.php99
-rw-r--r--engine/lib/deprecated-1.7.php2
-rw-r--r--engine/lib/deprecated-1.8.php66
-rw-r--r--engine/lib/elgglib.php187
-rw-r--r--engine/lib/entities.php605
-rw-r--r--engine/lib/export.php29
-rw-r--r--engine/lib/extender.php34
-rw-r--r--engine/lib/filestore.php12
-rw-r--r--engine/lib/group.php63
-rw-r--r--engine/lib/input.php21
-rw-r--r--engine/lib/languages.php206
-rw-r--r--engine/lib/location.php4
-rw-r--r--engine/lib/mb_wrapper.php2
-rw-r--r--engine/lib/memcache.php20
-rw-r--r--engine/lib/metadata.php190
-rw-r--r--engine/lib/metastrings.php56
-rw-r--r--engine/lib/navigation.php55
-rw-r--r--engine/lib/notification.php61
-rw-r--r--engine/lib/objects.php7
-rw-r--r--engine/lib/opendd.php4
-rw-r--r--engine/lib/output.php197
-rw-r--r--engine/lib/pagehandler.php24
-rw-r--r--engine/lib/pageowner.php28
-rw-r--r--engine/lib/pam.php7
-rw-r--r--engine/lib/plugins.php125
-rw-r--r--engine/lib/private_settings.php5
-rw-r--r--engine/lib/relationships.php45
-rw-r--r--engine/lib/river.php77
-rw-r--r--engine/lib/sessions.php28
-rw-r--r--engine/lib/sites.php23
-rw-r--r--engine/lib/statistics.php11
-rw-r--r--engine/lib/system_log.php35
-rw-r--r--engine/lib/tags.php7
-rw-r--r--engine/lib/upgrade.php58
-rw-r--r--engine/lib/upgrades/2009102801.php5
-rw-r--r--engine/lib/upgrades/2010033101.php2
-rw-r--r--engine/lib/upgrades/2010052601.php12
-rw-r--r--engine/lib/upgrades/2010061501.php6
-rw-r--r--engine/lib/upgrades/2010071001.php5
-rw-r--r--engine/lib/upgrades/2010071002.php5
-rw-r--r--engine/lib/upgrades/2010121602.php2
-rw-r--r--engine/lib/upgrades/2011010101.php2
-rw-r--r--engine/lib/upgrades/2011052801.php5
-rw-r--r--engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php2
-rw-r--r--engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php24
-rw-r--r--engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php28
-rw-r--r--engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php12
-rw-r--r--engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php16
-rw-r--r--engine/lib/upgrades/create_upgrade.php5
-rw-r--r--engine/lib/user_settings.php7
-rw-r--r--engine/lib/users.php112
-rw-r--r--engine/lib/views.php206
-rw-r--r--engine/lib/web_services.php69
-rw-r--r--engine/lib/widgets.php3
-rw-r--r--engine/lib/xml.php40
-rw-r--r--engine/schema/mysql.sql2
-rw-r--r--engine/start.php12
-rw-r--r--engine/tests/api/access_collections.php25
-rw-r--r--engine/tests/api/annotations.php80
-rw-r--r--engine/tests/api/entity_getter_functions.php68
-rw-r--r--engine/tests/api/helpers.php103
-rw-r--r--engine/tests/api/metadata.php113
-rw-r--r--engine/tests/api/metadata_cache.php176
-rw-r--r--engine/tests/api/metastrings.php33
-rw-r--r--engine/tests/api/output.php74
-rw-r--r--engine/tests/api/plugins.php18
-rw-r--r--engine/tests/objects/entities.php4
-rw-r--r--engine/tests/objects/objects.php2
-rw-r--r--engine/tests/objects/users.php21
-rw-r--r--engine/tests/regression/trac_bugs.php201
-rw-r--r--engine/tests/test_files/output/autop/block-a.exp.norun.html6
-rw-r--r--engine/tests/test_files/output/autop/block-a.in.norun.html9
-rw-r--r--engine/tests/test_files/output/autop/domdoc_exp.html46
-rw-r--r--engine/tests/test_files/output/autop/domdoc_in.html80
-rw-r--r--engine/tests/test_files/output/autop/typical-post.exp.html84
-rw-r--r--engine/tests/test_files/output/autop/typical-post.in.html89
-rw-r--r--engine/tests/test_files/output/autop/wp-welcome.exp.html22
-rw-r--r--engine/tests/test_files/output/autop/wp-welcome.in.html25
-rw-r--r--engine/tests/test_files/output/autop/wpautop-fails.exp.html31
-rw-r--r--engine/tests/test_files/output/autop/wpautop-fails.in.html41
-rw-r--r--engine/tests/test_files/output/autop/wysiwyg-test.exp.html51
-rw-r--r--engine/tests/test_files/output/autop/wysiwyg-test.in.html79
-rw-r--r--engine/tests/test_files/plugin_18/manifest.xml3
-rw-r--r--engine/tests/test_files/xxe/external_entity.txt1
-rw-r--r--engine/tests/test_files/xxe/request.xml8
-rw-r--r--gpl-plugins20
-rw-r--r--htaccess_dist72
-rw-r--r--install/ElggInstaller.php39
-rw-r--r--install/ElggRewriteTester.php4
-rw-r--r--install/cli/sample_installer.php43
-rw-r--r--install/js/install.js21
-rw-r--r--install/languages/en.php5
-rw-r--r--js/lib/elgglib.js14
-rw-r--r--js/lib/languages.js17
-rw-r--r--js/lib/security.js33
-rw-r--r--js/lib/session.js32
-rw-r--r--js/lib/ui.js18
-rw-r--r--js/lib/ui.river.js14
-rw-r--r--js/lib/ui.userpicker.js4
-rw-r--r--js/lib/ui.widgets.js6
-rw-r--r--js/tests/ElggLibTest.js13
-rw-r--r--js/tests/README5
-rw-r--r--languages/en.php91
m---------mod/admins0
m---------mod/audio_html50
-rw-r--r--mod/beechat/README23
-rw-r--r--mod/beechat/actions/get_connection.php21
-rw-r--r--mod/beechat/actions/get_details.php21
-rw-r--r--mod/beechat/actions/get_icons.php52
-rw-r--r--mod/beechat/actions/get_state.php21
-rw-r--r--mod/beechat/actions/get_statuses.php41
-rw-r--r--mod/beechat/actions/join_groupchat.php15
-rw-r--r--mod/beechat/actions/leave_groupchat.php12
-rw-r--r--mod/beechat/actions/save_state.php29
-rw-r--r--mod/beechat/classes/BeechatSync.php37
-rw-r--r--mod/beechat/disablechat.php8
-rw-r--r--mod/beechat/enablechat.php8
-rw-r--r--mod/beechat/graphics/icons/bullet_arrow_down.pngbin0 -> 201 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_arrow_up.pngbin0 -> 201 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_black.pngbin0 -> 211 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_blue.pngbin0 -> 289 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_delete.pngbin0 -> 308 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_error.pngbin0 -> 454 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_green.pngbin0 -> 295 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_orange.pngbin0 -> 283 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_pink.pngbin0 -> 286 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_purple.pngbin0 -> 294 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_red.pngbin0 -> 287 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_star.pngbin0 -> 331 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_white.pngbin0 -> 201 bytes-rw-r--r--mod/beechat/graphics/icons/bullet_yellow.pngbin0 -> 287 bytes-rw-r--r--mod/beechat/graphics/icons/chat_icon.pngbin0 -> 456 bytes-rw-r--r--mod/beechat/graphics/icons/cog_edit.pngbin0 -> 865 bytes-rw-r--r--mod/beechat/graphics/icons/comment_edit.pngbin0 -> 644 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_evilgrin.pngbin0 -> 727 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_grin.pngbin0 -> 714 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_happy.pngbin0 -> 731 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_smile.pngbin0 -> 725 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_surprised.pngbin0 -> 741 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_tongue.pngbin0 -> 727 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_unhappy.pngbin0 -> 723 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_waii.pngbin0 -> 737 bytes-rw-r--r--mod/beechat/graphics/icons/emoticon_wink.pngbin0 -> 712 bytes-rw-r--r--mod/beechat/graphics/icons/heart.pngbin0 -> 749 bytes-rw-r--r--mod/beechat/graphics/icons/house.pngbin0 -> 806 bytes-rw-r--r--mod/beechat/graphics/icons/muc_icon.pngbin0 -> 592 bytes-rw-r--r--mod/beechat/graphics/icons/notification_pink.pngbin0 -> 3140 bytes-rw-r--r--mod/beechat/graphics/icons/pointer.pngbin0 -> 2833 bytes-rw-r--r--mod/beechat/graphics/icons/resultset_next.pngbin0 -> 395 bytes-rw-r--r--mod/beechat/graphics/icons/resultset_previous.pngbin0 -> 389 bytes-rw-r--r--mod/beechat/graphics/icons/statuses.pngbin0 -> 5857 bytes-rw-r--r--mod/beechat/graphics/icons/vcard.pngbin0 -> 533 bytes-rw-r--r--mod/beechat/languages/en.php45
-rw-r--r--mod/beechat/languages/es.php43
-rw-r--r--mod/beechat/languages/fr.php32
-rw-r--r--mod/beechat/lib/beechat.php250
-rw-r--r--mod/beechat/manifest.xml15
-rw-r--r--mod/beechat/migrate.php88
-rw-r--r--mod/beechat/migrategroups.php18
-rw-r--r--mod/beechat/sounds/newmessage.wavbin0 -> 39440 bytes-rw-r--r--mod/beechat/start.php184
-rw-r--r--mod/beechat/views/default/beechat/beechat.js.php2498
-rw-r--r--mod/beechat/views/default/beechat/beechat.php84
-rw-r--r--mod/beechat/views/default/beechat/beechat.userjs.php54
-rw-r--r--mod/beechat/views/default/beechat/screen.css.php672
-rw-r--r--mod/beechat/views/default/js/b64.js.php74
-rw-r--r--mod/beechat/views/default/js/jquery.cookie.min.js.php10
-rw-r--r--mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php9
-rwxr-xr-xmod/beechat/views/default/js/jquery.scrollTo-min.js.php11
-rwxr-xr-xmod/beechat/views/default/js/jquery.serialScroll-min.js.php10
-rw-r--r--mod/beechat/views/default/js/jquery.tools.min.js.php49
-rw-r--r--mod/beechat/views/default/js/json2.js.php476
-rw-r--r--mod/beechat/views/default/js/md5.js.php261
-rw-r--r--mod/beechat/views/default/js/sha1.js.php207
-rw-r--r--mod/beechat/views/default/js/strophe.min.js.php1
-rw-r--r--mod/beechat/views/default/js/strophe.muc.js300
-rw-r--r--mod/beechat/views/default/js/strophe.muc.js.php300
-rwxr-xr-xmod/beechat/views/default/settings/beechat/edit.php31
-rw-r--r--mod/blog/actions/blog/auto_save_revision.php2
-rw-r--r--mod/blog/actions/blog/save.php43
-rw-r--r--mod/blog/languages/en.php1
-rw-r--r--mod/blog/lib/blog.php107
-rw-r--r--mod/blog/start.php38
-rw-r--r--mod/blog/views/default/blog/sidebar/archives.php2
-rw-r--r--mod/blog/views/default/forms/blog/save.php13
-rw-r--r--mod/blog/views/default/js/blog/save_draft.php6
-rw-r--r--mod/blog/views/default/object/blog.php3
-rw-r--r--mod/blog/views/default/river/object/blog/create.php6
-rw-r--r--mod/bookmarks/actions/bookmarks/save.php2
-rw-r--r--mod/bookmarks/languages/en.php2
-rw-r--r--mod/bookmarks/pages/bookmarks/all.php3
-rw-r--r--mod/bookmarks/pages/bookmarks/friends.php2
-rw-r--r--mod/bookmarks/pages/bookmarks/owner.php3
-rw-r--r--mod/bookmarks/pages/bookmarks/view.php5
-rw-r--r--mod/bookmarks/start.php31
-rw-r--r--mod/bookmarks/views/default/object/bookmarks.php3
-rw-r--r--mod/categories/languages/en.php2
-rw-r--r--mod/categories/pages/categories/listing.php4
-rw-r--r--mod/categories/views/default/input/categories.php6
-rw-r--r--mod/colorbox/COPYING661
-rw-r--r--mod/colorbox/languages/ca.php29
-rw-r--r--mod/colorbox/languages/en.php29
-rw-r--r--mod/colorbox/languages/es.php29
-rw-r--r--mod/colorbox/manifest.xml29
-rw-r--r--mod/colorbox/start.php36
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/README.md318
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/colorbox.ai1811
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox-min.js4
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox.js926
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/ajax.html11
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/flash.html8
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/homer.jpgbin0 -> 8917 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/marylou.jpgbin0 -> 55125 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/ohoopee1.jpgbin0 -> 74827 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/ohoopee2.jpgbin0 -> 117411 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/content/ohoopee3.jpgbin0 -> 71514 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/colorbox.css86
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/border.pngbin0 -> 112 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/controls.pngbin0 -> 2893 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomCenter.pngbin0 -> 111 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomLeft.pngbin0 -> 215 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomRight.pngbin0 -> 217 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleLeft.pngbin0 -> 108 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleRight.pngbin0 -> 108 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopCenter.pngbin0 -> 111 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopLeft.pngbin0 -> 216 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopRight.pngbin0 -> 214 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/loading.gifbin0 -> 9427 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/loading_background.pngbin0 -> 157 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/images/overlay.pngbin0 -> 182 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example1/index.html87
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example2/colorbox.css43
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example2/images/controls.pngbin0 -> 570 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example2/images/loading.gifbin0 -> 9427 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example2/index.html87
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example3/colorbox.css38
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example3/images/controls.pngbin0 -> 1633 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example3/images/loading.gifbin0 -> 9427 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example3/index.html87
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/colorbox.css82
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/border1.pngbin0 -> 1057 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/border2.pngbin0 -> 170 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomCenter.pngbin0 -> 153 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomLeft.pngbin0 -> 473 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomRight.pngbin0 -> 470 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleLeft.pngbin0 -> 148 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleRight.pngbin0 -> 139 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopCenter.pngbin0 -> 153 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopLeft.pngbin0 -> 359 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopRight.pngbin0 -> 465 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/images/loading.gifbin0 -> 9427 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example4/index.html87
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/colorbox.css52
-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/images/border.pngbin0 -> 163 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/images/controls.pngbin0 -> 2033 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/images/loading.gifbin0 -> 9427 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/images/loading_background.pngbin0 -> 166 bytes-rw-r--r--mod/colorbox/vendors/jquery/colorbox/example5/index.html87
-rw-r--r--mod/colorbox/views/default/css/lightbox.php73
-rw-r--r--mod/colorbox/views/default/js/embed/embed.php171
-rw-r--r--mod/colorbox/views/default/js/lightbox.php81
-rw-r--r--mod/custom_index/index.php2
-rw-r--r--mod/custom_index_widgets/index.php66
-rw-r--r--mod/custom_index_widgets/languages/de.php78
-rw-r--r--mod/custom_index_widgets/languages/en.php82
-rw-r--r--mod/custom_index_widgets/languages/es.php78
-rw-r--r--mod/custom_index_widgets/languages/fr.php80
-rw-r--r--mod/custom_index_widgets/manifest.xml21
-rw-r--r--mod/custom_index_widgets/start.php159
-rw-r--r--mod/custom_index_widgets/views/default/admin/appearance/custom_index_widgets.php56
-rw-r--r--mod/custom_index_widgets/views/default/custom_index_widgets/css.php347
-rw-r--r--mod/custom_index_widgets/views/default/custom_index_widgets/footerlinks.php3
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/edit_widgets.php61
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index.php30
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_1rsss.php29
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rbhh.php30
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rbms.php30
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rbsm.php28
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rhhb.php30
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rmsb.php30
-rw-r--r--mod/custom_index_widgets/views/default/page/layouts/index_2rsmb.php30
-rw-r--r--mod/custom_index_widgets/views/default/plugins/custom_index_widgets/settings.php61
-rw-r--r--mod/custom_index_widgets/views/default/widgets/cloud_generic_index/content.php59
-rw-r--r--mod/custom_index_widgets/views/default/widgets/cloud_generic_index/edit.php120
-rw-r--r--mod/custom_index_widgets/views/default/widgets/feed_reader_index/content.php8
-rw-r--r--mod/custom_index_widgets/views/default/widgets/feed_reader_index/edit.php5
-rw-r--r--mod/custom_index_widgets/views/default/widgets/inline_content_index/content.php7
-rw-r--r--mod/custom_index_widgets/views/default/widgets/inline_content_index/edit.php46
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_activity_index/content.php20
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_activity_index/edit.php64
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_album_index/content.php64
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_album_index/edit.php64
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_blogs_index/content.php43
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_blogs_index/edit.php85
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/content.php43
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/edit.php85
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_events_index/content.php95
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_events_index/edit.php96
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_files_index/content.php44
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_files_index/edit.php86
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_generic_index/content.php47
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_generic_index/edit.php103
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_groups_index/content.php21
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_groups_index/edit.php63
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/content.php50
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/edit.php86
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_members_index/content.php20
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_members_index/edit.php79
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_news_index/content.php47
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_news_index/edit.php85
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_pages_index/content.php45
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_pages_index/edit.php86
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_photos_index/content.php25
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_photos_index/edit.php64
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_tasks_index/content.php45
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_tasks_index/edit.php85
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_wire_index/content.php17
-rw-r--r--mod/custom_index_widgets/views/default/widgets/latest_wire_index/edit.php62
-rw-r--r--mod/custom_index_widgets/views/default/widgets/login_index/content.php15
-rw-r--r--mod/custom_index_widgets/views/default/widgets/login_index/edit.php27
-rw-r--r--mod/custom_index_widgets/views/default/widgets/rich_media_index/content.php27
-rw-r--r--mod/custom_index_widgets/views/default/widgets/rich_media_index/edit.php78
-rw-r--r--mod/developers/languages/en.php4
-rw-r--r--mod/developers/manifest.xml1
-rw-r--r--mod/developers/start.php10
-rw-r--r--mod/developers/views/default/developers/css.php4
-rw-r--r--mod/developers/views/default/forms/developers/settings.php6
-rw-r--r--mod/developers/views/default/page/theme_preview.php12
-rw-r--r--mod/developers/views/default/theme_preview/components.php8
-rw-r--r--mod/developers/views/default/theme_preview/components/image_block.php12
-rw-r--r--mod/developers/views/default/theme_preview/components/list.php38
-rw-r--r--mod/developers/views/default/theme_preview/components/messages.php10
-rw-r--r--mod/developers/views/default/theme_preview/components/table.php22
-rw-r--r--mod/developers/views/default/theme_preview/components/tagcloud.php17
-rw-r--r--mod/developers/views/default/theme_preview/components/tags.php5
-rw-r--r--mod/developers/views/default/theme_preview/general.php27
-rw-r--r--mod/developers/views/default/theme_preview/grid.php134
-rw-r--r--mod/developers/views/default/theme_preview/icons/avatars.php72
-rw-r--r--mod/developers/views/default/theme_preview/icons/sprites.php120
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous.php22
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/lightbox.php19
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/popup.php15
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/site_menu.php15
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/system_messages.php35
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/toggle.php15
-rw-r--r--mod/developers/views/default/theme_preview/miscellaneous/user_hover_menu.php16
-rw-r--r--mod/developers/views/default/theme_preview/modules.php2
-rw-r--r--mod/developers/views/default/theme_preview/modules/modules.php44
-rw-r--r--mod/developers/views/default/theme_preview/navigation.php10
-rw-r--r--mod/developers/views/default/theme_preview/navigation/breadcrumbs.php16
-rw-r--r--mod/developers/views/default/theme_preview/navigation/default.php22
-rw-r--r--mod/developers/views/default/theme_preview/navigation/entity.php12
-rw-r--r--mod/developers/views/default/theme_preview/navigation/extras.php34
-rw-r--r--mod/developers/views/default/theme_preview/navigation/filter.php26
-rw-r--r--mod/developers/views/default/theme_preview/navigation/footer.php10
-rw-r--r--mod/developers/views/default/theme_preview/navigation/horizontal.php24
-rw-r--r--mod/developers/views/default/theme_preview/navigation/owner_block.php24
-rw-r--r--mod/developers/views/default/theme_preview/navigation/page.php39
-rw-r--r--mod/developers/views/default/theme_preview/navigation/pagination.php14
-rw-r--r--mod/developers/views/default/theme_preview/navigation/site.php36
-rw-r--r--mod/developers/views/default/theme_preview/navigation/tabs.php18
-rw-r--r--mod/developers/views/default/theme_preview/typography.php2
-rw-r--r--mod/developers/views/default/theme_preview/typography/fonts.php7
-rw-r--r--mod/developers/views/default/theme_preview/typography/headings.php10
-rw-r--r--mod/developers/views/default/theme_preview/typography/misc.php32
-rw-r--r--mod/developers/views/default/theme_preview/typography/paragraph.php36
m---------mod/dokuwiki6
-rw-r--r--mod/dokuwiki/AUTHORS2
-rwxr-xr-xmod/dokuwiki/COPYING340
-rw-r--r--mod/dokuwiki/README31
-rw-r--r--mod/dokuwiki/index.php17
-rw-r--r--mod/dokuwiki/languages/ca.php18
-rwxr-xr-xmod/dokuwiki/languages/de.php21
-rwxr-xr-xmod/dokuwiki/languages/en.php32
-rw-r--r--mod/dokuwiki/languages/es.php18
-rw-r--r--mod/dokuwiki/languages/fr.php12
-rw-r--r--mod/dokuwiki/languages/gl.php23
-rwxr-xr-xmod/dokuwiki/languages/pl.php21
-rw-r--r--mod/dokuwiki/languages/pt.php23
-rw-r--r--mod/dokuwiki/lib/dokuwiki.php60
-rw-r--r--mod/dokuwiki/manifest.xml21
-rw-r--r--mod/dokuwiki/start.php168
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/COPYING340
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/README9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/VERSION1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/bin/dwpage.php378
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/bin/indexer.php172
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/bin/wantedpages.php134
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php.dist21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/acronyms.conf143
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/dokuwiki.php156
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/entities.conf22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/interwiki.conf125
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/license.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/local.php43
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/local.php.dist26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/mediameta.php57
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/mime.conf52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/msg8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/mysql.conf.php.example253
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/scheme.conf11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/smileys.conf27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php.dist10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/wordblock.conf8004
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/conf/words.aspell.dist5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/_dummy1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/attic/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/cache/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/index/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/locks/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/media/wiki/dokuwiki-128.pngbin0 -> 33615 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/meta/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/pages/playground/playground.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/pages/sidebar.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/dokuwiki.txt66
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/syntax.txt488
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/data/tmp/_dummy0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/doku.php109
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/feed.php353
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/DifferenceEngine.php1066
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/EmailAddressValidator.php146
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/FeedParser.php76
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/HTTPClient.php573
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/IXR_Library.php817
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/JSON.php624
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/JpegMeta.php3116
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/SimplePie.php10849
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/TarLib.class.php918
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/ZipLib.class.php475
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/actions.php639
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/adLDAP.php2347
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth.php1099
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/ad.class.php205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/basic.class.php403
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/elgg.class.php352
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/ldap.class.php357
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/mysql.class.php942
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/pgsql.class.php411
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/auth/plain.class.php324
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/blowfish.php521
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/cache.php292
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/changelog.php474
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/cliopts.php361
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/common.php1549
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/confutils.php320
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/events.php202
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/feedcreator.class.php1572
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/form.php918
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/fulltext.php722
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi.php4644
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/abap.php1409
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/actionscript-french.php957
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/actionscript.php197
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/actionscript3.php473
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/ada.php133
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/apache.php480
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/applescript.php157
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/apt_sources.php144
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/asm.php225
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/asp.php164
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/autoit.php1171
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/avisynth.php194
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/bash.php282
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/basic4gl.php341
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/bf.php114
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/blitzbasic.php185
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/bnf.php110
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/boo.php217
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/c.php188
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/c_mac.php212
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/caddcl.php126
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cadlisp.php186
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cfdg.php124
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cfm.php299
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cil.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cobol.php244
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cpp-qt.php315
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/cpp.php226
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/csharp.php250
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/css.php212
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/d.php272
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/dcs.php185
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/delphi.php289
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/diff.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/div.php126
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/dos.php198
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/dot.php164
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/eiffel.php395
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/email.php209
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/fortran.php160
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/freebasic.php141
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/genero.php463
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/gettext.php97
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/glsl.php205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/gml.php506
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/gnuplot.php296
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/groovy.php1011
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/haskell.php198
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/hq9plus.php104
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/html4strict.php203
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/idl.php123
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/ini.php128
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/inno.php212
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/intercal.php122
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/io.php138
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/java.php983
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/java5.php1031
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/javascript.php150
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/kixtart.php329
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/klonec.php282
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/klonecpp.php310
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/latex.php218
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lisp.php144
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/locobasic.php130
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lolcode.php152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lotusformulas.php318
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lotusscript.php191
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lscript.php387
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lsl2.php898
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/lua.php137
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/m68k.php143
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/make.php151
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/matlab.php227
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/mirc.php171
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/modula3.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/mpasm.php164
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/mxml.php145
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/mysql.php475
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/nsis.php351
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/oberon2.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/objc.php358
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/ocaml-brief.php111
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/ocaml.php174
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/oobas.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/oracle11.php614
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/oracle8.php496
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/pascal.php152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/per.php302
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/perl.php213
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/php-brief.php222
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/php.php1114
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/pic16.php141
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/pixelbender.php176
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/plsql.php256
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/povray.php199
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/powershell.php277
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/progress.php485
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/prolog.php143
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/providex.php299
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/python.php237
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/qbasic.php151
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/rails.php406
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/rebol.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/reg.php233
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/robots.php98
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/ruby.php226
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/sas.php290
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/scala.php122
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/scheme.php170
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/scilab.php295
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/sdlbasic.php165
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/smalltalk.php160
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/smarty.php192
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/sql.php140
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/tcl.php194
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/teraterm.php317
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/text.php84
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/thinbasic.php868
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/tsql.php375
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/typoscript.php300
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/vb.php133
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/vbnet.php201
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/verilog.php173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/vhdl.php144
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/vim.php185
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/visualfoxpro.php456
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/visualprolog.php129
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/whitespace.php121
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/winbatch.php369
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/xml.php157
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/xorg_conf.php124
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/xpp.php436
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/geshi/z80.php144
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/html.php1608
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/httputils.php199
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/indexer.php705
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/infoutils.php385
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/init.php598
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/io.php593
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/af/lang.php75
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/lang.php223
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/pwconfirm.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/revisions.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ar/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/install.html25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/lang.php247
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/recent.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/bg/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/install.html11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/lang.php250
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/register.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/stopwords.txt76
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca-valencia/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/lang.php247
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/norev.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/stopwords.txt106
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/subscribermail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ca/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/install.html23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/lang.php247
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/showrev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/stopwords.txt944
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/cs/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/install.html24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/lang.php253
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/stopwords.txt87
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/da/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/diff.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/edit.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/install.html27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/lang.php249
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/newpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/pwconfirm.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/searchpage.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/stopwords.txt125
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de-informal/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/diff.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/edit.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/install.html27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/lang.php257
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/newpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/pwconfirm.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/searchpage.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/stopwords.txt125
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/de/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/denied.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/draft.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/install.html25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/lang.php243
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/subscribermail.txt24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/uploadmail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/el/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/adminplugins.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/install.html24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/lang.php280
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/stopwords.txt39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/en/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/install.html9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/lang.php254
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/stopwords.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eo/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/install.html14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/lang.php262
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/pwconfirm.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/stopwords.txt171
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/es/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/editrev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/lang.php214
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/pwconfirm.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/stopwords.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/et/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/install.html9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/lang.php223
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/pwconfirm.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/stopwords.txt26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/subscribermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/eu/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/editrev.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/install.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/lang.php253
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/showrev.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/stopwords.txt445
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/subscribermail.txt21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fa/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/install.html21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/lang.php248
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/recent.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/stopwords.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fi/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/lang.php173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/stopwords.txt87
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fo/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/install.html19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/lang.php258
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/mailtext.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/stopwords.txt112
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/fr/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/install.html25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/lang.php243
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/stopwords.txt246
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/subscribermail.txt19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/gl/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/install.html13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/lang.php224
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/he/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hi/lang.php126
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/denied.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/index.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/lang.php200
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/searchpage.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hr/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/conflict.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/install.html26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/lang.php249
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/login.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/norev.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/stopwords.txt39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/subscribermail.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/hu/wordblock.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id-ni/lang.php79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/install.html25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/lang.php210
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/stopwords.txt37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/id/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/lang.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/is/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/denied.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/install.html24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/lang.php240
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/recent.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/stopwords.txt119
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/subscribermail.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/it/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/edit.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/install.html14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/lang.php249
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ja/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/conflict.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/edit.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/index.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/lang.php230
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/login.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/norev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/register.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/km/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/diff.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/install.html17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/lang.php229
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/pwconfirm.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/subscribermail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/uploadmail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ko/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/lang.php163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ku/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/lang.php207
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/login.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/mailtext.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/norev.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/read.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/updateprofile.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lt/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/admin.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/conflict.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/denied.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/diff.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/editrev.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/install.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/lang.php244
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/locked.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/mailtext.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/newpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/norev.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/read.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/recent.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/revisions.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/searchpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/stopwords.txt48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/subscribermail.txt23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/updateprofile.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/lv/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/lang.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/preview.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/read.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/register.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/revisions.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/searchpage.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mg/wordblock.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/install.html10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/lang.php229
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/mailtext.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/pwconfirm.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/stopwords.txt39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/subscribermail.txt21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/mr/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/admin.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/backlinks.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/lang.php220
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/norev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/pwconfirm.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/recent.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/searchpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/subscribermail.txt19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ne/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/install.html14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/lang.php253
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/stopwords.txt37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/nl/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/install.html24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/lang.php260
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/stopwords.txt130
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/no/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/edit.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/install.html23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/lang.php248
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/mailtext.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/registermail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/stopwords.txt89
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/uploadmail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pl/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/editrev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/install.html7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/lang.php247
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/recent.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/stopwords.txt55
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/subscribermail.txt24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt-br/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/admin.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/conflict.txt9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/denied.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/diff.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/draft.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/edit.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/editrev.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/index.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/lang.php237
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/locked.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/login.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/mailtext.txt20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/newpage.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/norev.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/preview.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/read.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/register.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/revisions.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/searchpage.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/showrev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/stopwords.txt141
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/subscribermail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/pt/wordblock.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/install.html10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/lang.php251
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ro/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/install.html7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/lang.php258
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/stopwords.txt93
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/ru/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/admin.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/editrev.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/install.html23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/lang.php227
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/showrev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/stopwords.txt28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/subscribermail.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/updateprofile.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sk/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/lang.php162
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sl/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/draft.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/install.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/lang.php224
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/registermail.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/stopwords.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/subscribermail.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sr/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/adminplugins.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/install.html25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/lang.php261
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/pwconfirm.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/resendpwd.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/stopwords.txt129
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/subscribermail.txt24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/sv/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/index.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/lang.php249
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/searchpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/subscribermail.txt22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/th/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/backlinks.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/conflict.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/lang.php226
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/locked.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/subscribermail.txt18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/updateprofile.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/tr/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/conflict.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/draft.txt6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/index.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/install.html21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/lang.php244
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/login.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/newpage.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/pwconfirm.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/recent.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/registermail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/revisions.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/stopwords.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/subscribermail.txt22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/uploadmail.txt14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/uk/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/lang.php106
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/read.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/recent.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/vi/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/admin.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/adminplugins.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/backlinks.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/conflict.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/lang.php252
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/login.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/read.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/stopwords.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/draft.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/lang.php230
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/registermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/resendpwd.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/subscribermail.txt19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/uploadmail.txt20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/mail.php266
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/media.php1102
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/pageutils.php537
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/code.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/handler.php1697
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/lexer.php600
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/metadata.php483
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/parser.php956
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/renderer.php322
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/xhtml.php1142
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/xhtmlsummary.php90
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parserutils.php672
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/plugin.php248
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/plugincontroller.class.php172
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/pluginutils.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/search.php630
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/template.php1413
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/toolbar.php241
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/utf8.php1657
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/index.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/install.php516
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/MultipleUpload.as329
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/README4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/multipleUpload.flabin0 -> 1812480 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/ajax.php370
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/css.php330
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/detail.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/fetch.php173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/indexer.php375
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/js.php397
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/mediamanager.php105
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/multipleUpload.swfbin0 -> 64561 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/opensearch.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/xmlrpc.php921
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/README2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/acl.pngbin0 -> 1336 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/config.pngbin0 -> 1761 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/plugin.pngbin0 -> 1415 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/popularity.pngbin0 -> 1420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/revert.pngbin0 -> 1598 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/usermanager.pngbin0 -> 1850 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/arrow_down.gifbin0 -> 273 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/arrow_up.gifbin0 -> 274 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/at.gifbin0 -> 57 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/blank.gifbin0 -> 42 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/close.pngbin0 -> 1345 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/del.pngbin0 -> 433 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/diff.pngbin0 -> 219 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/edit.gifbin0 -> 142 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/error.pngbin0 -> 706 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/bz2.pngbin0 -> 720 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/c.pngbin0 -> 774 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/conf.pngbin0 -> 717 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/cpp.pngbin0 -> 859 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/cs.pngbin0 -> 808 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/css.pngbin0 -> 843 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/deb.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/doc.pngbin0 -> 659 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/file.pngbin0 -> 720 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/gif.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/gz.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/htm.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/html.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/index.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/java.pngbin0 -> 739 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/jpeg.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/jpg.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/js.pngbin0 -> 809 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/lua.pngbin0 -> 465 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odc.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odf.pngbin0 -> 807 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odg.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odi.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odp.pngbin0 -> 744 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ods.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odt.pngbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/pdf.pngbin0 -> 663 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/php.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/pl.pngbin0 -> 698 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/png.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ppt.pngbin0 -> 762 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ps.pngbin0 -> 534 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/py.pngbin0 -> 714 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rar.pngbin0 -> 631 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rb.pngbin0 -> 828 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rpm.pngbin0 -> 638 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rtf.pngbin0 -> 474 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/swf.pngbin0 -> 843 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxc.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxd.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxi.pngbin0 -> 744 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxw.pngbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/tar.pngbin0 -> 747 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/tgz.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/txt.pngbin0 -> 542 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/xls.pngbin0 -> 731 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/xml.pngbin0 -> 475 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/zip.pngbin0 -> 874 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/history.pngbin0 -> 202 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/info.pngbin0 -> 783 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki.pngbin0 -> 1089 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.de.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.uk.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/coral.gifbin0 -> 85 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/doku.gifbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/dokubug.gifbin0 -> 166 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/google.gifbin0 -> 980 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/meatball.gifbin0 -> 1100 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/phpfn.gifbin0 -> 330 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/sb.gifbin0 -> 886 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wiki.gifbin0 -> 909 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wp.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpde.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpes.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpfr.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpjp.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpmeta.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wppl.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/larger.gifbin0 -> 87 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc-nd.pngbin0 -> 5281 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc-sa.pngbin0 -> 5460 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc.pngbin0 -> 5145 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nd.pngbin0 -> 4880 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-sa.pngbin0 -> 5083 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by.pngbin0 -> 4739 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc.pngbin0 -> 958 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/gnufdl.pngbin0 -> 1748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/publicdomain.pngbin0 -> 4962 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc-nd.pngbin0 -> 678 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc-sa.pngbin0 -> 686 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc.pngbin0 -> 663 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nd.pngbin0 -> 658 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-sa.pngbin0 -> 661 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by.pngbin0 -> 629 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc.pngbin0 -> 728 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/gnufdl.pngbin0 -> 839 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/publicdomain.pngbin0 -> 621 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/list-minus.gifbin0 -> 64 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/list-plus.gifbin0 -> 67 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/loading.gifbin0 -> 1876 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/magnifier.pngbin0 -> 615 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/minus.gifbin0 -> 858 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/multiupload.pngbin0 -> 698 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/notify.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/ns.pngbin0 -> 853 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/page.pngbin0 -> 635 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/pencil.pngbin0 -> 450 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/plus.gifbin0 -> 860 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smaller.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/delete.gifbin0 -> 1421 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/fixme.gifbin0 -> 1435 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_arrow.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_biggrin.gifbin0 -> 172 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_confused.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_cool.gifbin0 -> 172 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_cry.gifbin0 -> 498 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_doubt.gifbin0 -> 990 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_doubt2.gifbin0 -> 992 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_eek.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_evil.gifbin0 -> 236 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_exclaim.gifbin0 -> 236 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_frown.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_fun.gifbin0 -> 590 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_idea.gifbin0 -> 176 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_kaddi.gifbin0 -> 991 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_lol.gifbin0 -> 336 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_mrgreen.gifbin0 -> 349 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_neutral.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_question.gifbin0 -> 248 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_razz.gifbin0 -> 176 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_redface.gifbin0 -> 650 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_rolleyes.gifbin0 -> 485 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_sad.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_silenced.gifbin0 -> 231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_smile.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_smile2.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_surprised.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_twisted.gifbin0 -> 238 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_wink.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/success.pngbin0 -> 816 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/throbber.gifbin0 -> 875 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/bold.pngbin0 -> 433 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/chars.pngbin0 -> 619 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h.pngbin0 -> 360 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h1.pngbin0 -> 420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h2.pngbin0 -> 442 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h3.pngbin0 -> 452 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h4.pngbin0 -> 432 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h5.pngbin0 -> 440 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hequal.pngbin0 -> 426 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hminus.pngbin0 -> 538 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hplus.pngbin0 -> 520 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hr.pngbin0 -> 329 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/image.pngbin0 -> 625 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/italic.pngbin0 -> 322 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/link.pngbin0 -> 579 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/linkextern.pngbin0 -> 962 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/mono.pngbin0 -> 385 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/ol.pngbin0 -> 403 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/sig.pngbin0 -> 569 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/smiley.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/strike.pngbin0 -> 415 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/ul.pngbin0 -> 383 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/underline.pngbin0 -> 375 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/trash.pngbin0 -> 476 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/up.pngbin0 -> 376 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/wrap.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/admin.php809
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php62
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/af/lang.php10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ar/lang.php24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/bg/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/bg/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca-valencia/help.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca-valencia/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/cs/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/cs/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/da/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/da/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de-informal/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de-informal/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/el/help.txt10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/el/lang.php43
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/en/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/en/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eo/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eo/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/es/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/es/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/et/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eu/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eu/lang.php34
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fa/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fa/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fi/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fi/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fr/help.txt9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fr/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/gl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/gl/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/he/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/he/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hu/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hu/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/id/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/is/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/it/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/it/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ja/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ja/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ko/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ko/lang.php41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lt/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lv/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lv/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/mr/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/mr/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ne/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/nl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/nl/lang.php45
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/no/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/no/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pl/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt-br/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt-br/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt/help.txt9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ro/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ro/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ru/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ru/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sk/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sk/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sl/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sr/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sr/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sv/help.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sv/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/th/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/th/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/tr/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/tr/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/uk/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/uk/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/vi/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh-tw/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh-tw/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/group.pngbin0 -> 753 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/ns.pngbin0 -> 853 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/page.pngbin0 -> 635 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/user.pngbin0 -> 706 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/script.js163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/style.css96
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/action.php26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/admin.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/print.css274
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/style.css272
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/syntax.php287
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/COPYING340
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/CREDITS58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/VERSION.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/action.php169
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/admin.php453
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/ajax.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/changelog207
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/conf/default.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/conf/metadata.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/edit-full.js152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/edit.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/close.gifbin0 -> 64 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/base.gifbin0 -> 578 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/empty.gifbin0 -> 62 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folder.gifbin0 -> 352 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderh.gifbin0 -> 572 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderhopen.gifbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderopen.gifbin0 -> 354 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/info.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/join.gifbin0 -> 69 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/joinbottom.gifbin0 -> 66 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/line.gifbin0 -> 66 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/minus.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/minusbottom.gifbin0 -> 85 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/nolines_minus.gifbin0 -> 861 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/nolines_plus.gifbin0 -> 870 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/page.gifbin0 -> 565 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/plus.gifbin0 -> 89 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/plusbottom.gifbin0 -> 88 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/empty.gifbin0 -> 275 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/indexmenu_toolbar.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/larrow.gifbin0 -> 1829 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/msort.gifbin0 -> 420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/rarrow.gifbin0 -> 81 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/toc_bullet.gifbin0 -> 74 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/inc/pclzip.lib.php5748
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/inc/repo.class.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/indexmenu-full.js640
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/indexmenu.js18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/admmenu.js71
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/menu.js56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/usrmenu.js69
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/de/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/en/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/es/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/it/lang.php29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/nojsindex-full.js101
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/nojsindex.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/script.js152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/style.css190
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/syntax/indexmenu.php720
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/syntax/tag.php70
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/info/syntax.php259
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/important.pngbin0 -> 2250 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/note.pngbin0 -> 2520 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_important.pngbin0 -> 1366 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_note.pngbin0 -> 1461 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_tip.pngbin0 -> 1441 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_warning.pngbin0 -> 1870 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tip.pngbin0 -> 2909 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/warning.pngbin0 -> 3249 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/script.js36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/style.css41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/syntax.php191
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/ChangeLog.txt255
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/README.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/ZipLib.class.php391
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/action.php41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/conf/default.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/conf/metadata.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/de/lang.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/en/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/es/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/fr/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/it/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/ja/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/ru/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/zh/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/odt.pngbin0 -> 3320 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/renderer.php1232
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/styles.xml158
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/syntax.php96
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/admin.php202
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/af/lang.php5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ar/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/bg/intro.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/bg/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca-valencia/intro.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca-valencia/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/cs/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/cs/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/da/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/da/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de-informal/lang.php14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/el/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/el/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/en/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/en/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eo/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eo/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/es/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/es/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eu/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eu/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fa/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fa/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fi/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fi/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fr/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/gl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/gl/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/he/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/he/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hu/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hu/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/id/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/is/lang.php10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/it/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/it/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ja/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ja/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ko/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ko/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lt/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lv/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lv/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/mr/intro.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/mr/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ne/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/nl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/nl/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/no/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/no/lang.php26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pl/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt-br/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt-br/lang.php25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ro/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ro/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ru/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ru/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sk/intro.txt0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sk/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sl/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sr/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sv/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sv/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/th/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/th/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/tr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/tr/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/uk/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/uk/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh-tw/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh-tw/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/README20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/conf/default.php4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/conf/metadata.php4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/en/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/ru/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/sp/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/plugin.info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/renderer.php338
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/screen.gifbin0 -> 1574 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/syntax.php72
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/license.txt29
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/null.mp3bin0 -> 2508 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/soundmanager2.js658
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/soundmanager2.swfbin0 -> 2198 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluebg.gifbin0 -> 2295 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluebottom.gifbin0 -> 3428 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluefooter.gifbin0 -> 591 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pretty.css173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/bodybg.gifbin0 -> 10119 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pretty.css156
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/logo.pngbin0 -> 16746 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pretty.css163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/MIT-LICENSE20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/builder.js136
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/controls.js965
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/dragdrop.js974
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/effects.js1123
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/presentacular.js153
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/prototype.js4874
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/scriptaculous.js68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/slider.js275
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/sound.js59
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/unittest.js568
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-foot.pngbin0 -> 451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-head.pngbin0 -> 450 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-head.xcfbin0 -> 6114 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-main.pngbin0 -> 92480 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/logo.pngbin0 -> 9760 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/table-header.pngbin0 -> 344 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pretty.css545
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/across.pngbin0 -> 178955 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_over.pngbin0 -> 1117 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/blank.gifbin0 -> 49 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/bottom.pngbin0 -> 41109 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/delay_link.pngbin0 -> 1943 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/druplicon.pngbin0 -> 9215 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_over.pngbin0 -> 1093 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/framing.css65
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/next_over.pngbin0 -> 734 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes.css122
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pretty.css354
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/toggle_over.pngbin0 -> 1071 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/top.pngbin0 -> 74839 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/blume.jpgbin0 -> 6779 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/blumerechts.jpgbin0 -> 2215 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pretty.css168
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_over.pngbin0 -> 1117 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/bg-slide.jpgbin0 -> 48642 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/framing.css23
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pretty.css130
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/LEEME.txt32
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-foot.pngbin0 -> 501 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-head.pngbin0 -> 2999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-main.pngbin0 -> 1824 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-main2.pngbin0 -> 3735 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/logo.pngbin0 -> 16331 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/table-header.pngbin0 -> 247 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/finish.gifbin0 -> 1364 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/fixed.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/help.jpgbin0 -> 30942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/numeric.pngbin0 -> 7144 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/progress.gifbin0 -> 4237 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/00_head.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/bg-shade.pngbin0 -> 594 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/bg-slide.jpgbin0 -> 31239 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pretty.css139
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back-handout-print.pngbin0 -> 5958 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back-slide-print.pngbin0 -> 5648 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back_console.pngbin0 -> 11708 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-foot.pngbin0 -> 397 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-head.pngbin0 -> 401 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-head.xcf.7zbin0 -> 2889 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-main.pngbin0 -> 27159 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-main2.pngbin0 -> 27171 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/logo.pngbin0 -> 11222 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/table-header.pngbin0 -> 654 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pretty.css584
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelbg.gifbin0 -> 1716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelheader.jpgbin0 -> 3571 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelslide0bg.gifbin0 -> 3180 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pretty.css166
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-index.pngbin0 -> 15049 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-foot.pngbin0 -> 389 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-head.pngbin0 -> 373 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-main.pngbin0 -> 9066 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/favicon.icobin0 -> 318 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/logo.pngbin0 -> 1312 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/table-header.pngbin0 -> 384 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pretty.css585
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/s5-notes.html157
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/backgrnd.jpgbin0 -> 3648 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/chalks.pngbin0 -> 30926 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/footer.pngbin0 -> 34238 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/framing.css22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/header.pngbin0 -> 49918 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/outline.css14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pretty.css162
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/print.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/s5-core.css8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/triangle.pngbin0 -> 81350 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/backgrnd.pngbin0 -> 12943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/bank.pngbin0 -> 41837 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/footer.pngbin0 -> 62136 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/framing.css22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/outline.css14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pattern.pngbin0 -> 226 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pretty.css163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/print.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/s5-core.css8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/sun.pngbin0 -> 32851 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-foot.pngbin0 -> 604 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-head.pngbin0 -> 605 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-main.pngbin0 -> 51209 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/logo.pngbin0 -> 14675 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/table-header.pngbin0 -> 309 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/LEEME.txt36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-foot.pngbin0 -> 1705 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-head.pngbin0 -> 1700 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-main.pngbin0 -> 358052 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/favicon.icobin0 -> 1150 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/logo.pngbin0 -> 13015 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/table-header.pngbin0 -> 309 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/index.php102
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-foot.pngbin0 -> 451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-head.pngbin0 -> 450 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-head.xcfbin0 -> 6114 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-main.pngbin0 -> 92480 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/favicon.icobin0 -> 1406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/logo.jpgbin0 -> 7126 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/table-header.pngbin0 -> 344 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pretty.css525
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/slides.js2846
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/LEEME.txt32
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/images/favicon.icobin0 -> 3638 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-foot.pngbin0 -> 269 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-head.pngbin0 -> 273 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-main.pngbin0 -> 14732 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/dot.pngbin0 -> 670 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/dot2.pngbin0 -> 422 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/h1icon.pngbin0 -> 2999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/link.pngbin0 -> 447 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/logo.pngbin0 -> 15020 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/mail.pngbin0 -> 993 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pretty.css543
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/bkgr.jpgbin0 -> 9069 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/bodybg.gifbin0 -> 10119 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/buzzsaw.gifbin0 -> 5087 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/buzzsaw.pngbin0 -> 4494 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pretty.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/bodybg.gifbin0 -> 1373 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/button.gifbin0 -> 920 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/head.gifbin0 -> 1373 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pretty.css221
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slide0h1.gifbin0 -> 3143 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle.gifbin0 -> 1128 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/syntax.php281
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/script.js207
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/style.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/syntax.php79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/admin.php627
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/images/search.pngbin0 -> 733 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/af/lang.php14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/lang.php53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/lang.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/lang.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/lang.php60
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/lang.php55
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/is/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/is/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/lang.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/lang.php53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/lang.php57
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/lang.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/script.js9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/style.css20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/ajax.js68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/cookie.js112
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/drag.js99
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/edit.js442
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/events.js176
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/helpers.js146
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/index.js116
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/linkwiz.js282
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/media.js351
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/pngbehavior.htc53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/script.js561
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/textselection.js226
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/toolbar.js252
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/tw-sack.js136
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/feed.css63
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/style.css113
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/conf/default.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/conf/metadata.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/design.css796
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/detail.php89
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/footer.html41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/bullet.gifbin0 -> 50 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-cc.gifbin0 -> 1231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-css.pngbin0 -> 299 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-donate.gifbin0 -> 187 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-dw.pngbin0 -> 427 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-php.gifbin0 -> 269 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-rss.pngbin0 -> 280 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-xhtml.pngbin0 -> 321 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/buttonshadow.pngbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/closed.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/favicon.icobin0 -> 7406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/inputshadow.pngbin0 -> 155 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/link_icon.gifbin0 -> 942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/mail_icon.gifbin0 -> 918 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/open.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/sidebar-border.gifbin0 -> 34 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/tocdot2.gifbin0 -> 810 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/windows.gifbin0 -> 223 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/layout.css79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/main.php69
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/main_index.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/media.css205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/media.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediaedit.php88
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediamanager.php44
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediaref.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/print.css238
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/rtl.css119
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar.css189
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar_print.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/style.ini67
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/tplfn_sidebar.php98
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/_admin.css43
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/_linkwiz.css68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/design.css835
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/detail.php89
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/footer.html41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/UWEB.pngbin0 -> 1138 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/UWEBshadow.pngbin0 -> 1123 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/bullet.gifbin0 -> 50 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-cc.gifbin0 -> 1231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-css.pngbin0 -> 299 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-donate.gifbin0 -> 187 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-dw.pngbin0 -> 427 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-php.gifbin0 -> 207 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-rss.pngbin0 -> 280 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-xhtml.pngbin0 -> 321 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/buttonshadow.pngbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/closed.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/favicon.icobin0 -> 7406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/inputshadow.pngbin0 -> 155 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/link_icon.gifbin0 -> 942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/mail_icon.gifbin0 -> 918 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/open.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/tocdot2.gifbin0 -> 810 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/windows.gifbin0 -> 223 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/layout.css79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/main.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/main_index.php121
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/media.css205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/mediamanager.php44
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/print.css238
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/rtl.css119
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/style.ini67
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/index.php68
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/css.php12
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/grouppage.php9
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/index.php13
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/metatags.php5
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/sidebar.php10
-rw-r--r--mod/dokuwiki/views/default/object/dokuwiki.php19
-rw-r--r--mod/dokuwiki/views/default/river/dokuwiki.php17
m---------mod/elggpg0
-rw-r--r--mod/embed/manifest.xml4
-rw-r--r--mod/embed/start.php28
-rw-r--r--mod/embed/views/default/embed/layout.php3
-rw-r--r--mod/embed/views/default/js/embed/embed.php23
m---------mod/etherpad0
-rw-r--r--mod/event_calendar/CHANGES.txt154
-rw-r--r--mod/event_calendar/CONTRIBUTIONS.txt7
-rw-r--r--mod/event_calendar/README.txt89
-rw-r--r--mod/event_calendar/actions/event_calendar/add_personal.php17
-rw-r--r--mod/event_calendar/actions/event_calendar/add_to_group.php10
-rw-r--r--mod/event_calendar/actions/event_calendar/add_to_group_members.php15
-rw-r--r--mod/event_calendar/actions/event_calendar/addtocalendar.php33
-rw-r--r--mod/event_calendar/actions/event_calendar/delete.php21
-rw-r--r--mod/event_calendar/actions/event_calendar/edit.php55
-rw-r--r--mod/event_calendar/actions/event_calendar/join_conference.php20
-rw-r--r--mod/event_calendar/actions/event_calendar/killrequest.php23
-rw-r--r--mod/event_calendar/actions/event_calendar/manage_subscribers.php26
-rw-r--r--mod/event_calendar/actions/event_calendar/modify_full_calendar.php24
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_from_group.php8
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_from_group_members.php15
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_personal.php12
-rw-r--r--mod/event_calendar/actions/event_calendar/request_personal_calendar.php16
-rw-r--r--mod/event_calendar/actions/event_calendar/toggle_personal_calendar.php40
-rw-r--r--mod/event_calendar/activate.php4
-rw-r--r--mod/event_calendar/images/calendar.gifbin0 -> 269 bytes-rw-r--r--mod/event_calendar/images/event_icon.gifbin0 -> 1254 bytes-rw-r--r--mod/event_calendar/images/event_icon_old.gifbin0 -> 1531 bytes-rw-r--r--mod/event_calendar/images/ics.pngbin0 -> 344 bytes-rw-r--r--mod/event_calendar/images/river_icon_event.gifbin0 -> 586 bytes-rw-r--r--mod/event_calendar/languages/ca.php143
-rw-r--r--mod/event_calendar/languages/en.php360
-rw-r--r--mod/event_calendar/languages/es.php215
-rw-r--r--mod/event_calendar/languages/fr.php124
-rw-r--r--mod/event_calendar/languages/ru.php365
-rw-r--r--mod/event_calendar/manifest.xml16
-rw-r--r--mod/event_calendar/models/model.php2518
-rw-r--r--mod/event_calendar/start.php414
-rw-r--r--mod/event_calendar/views/default/css/elements/forms/datepicker_multi.php39
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_footer.php5
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_header.php12
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_item_view.php26
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_view.php34
-rw-r--r--mod/event_calendar/views/default/event_calendar/calendar.php70
-rw-r--r--mod/event_calendar/views/default/event_calendar/calendar_toggle.php18
-rw-r--r--mod/event_calendar/views/default/event_calendar/conference_button.php33
-rw-r--r--mod/event_calendar/views/default/event_calendar/container.php28
-rw-r--r--mod/event_calendar/views/default/event_calendar/css.php264
-rw-r--r--mod/event_calendar/views/default/event_calendar/datetime_edit.php46
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/entity_list.php66
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/gallery.php44
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/gallery_item.php63
-rw-r--r--mod/event_calendar/views/default/event_calendar/filter_menu.php78
-rw-r--r--mod/event_calendar/views/default/event_calendar/forms/add_to_group.php74
-rw-r--r--mod/event_calendar/views/default/event_calendar/full_calendar_view.php200
-rw-r--r--mod/event_calendar/views/default/event_calendar/group_module.php37
-rw-r--r--mod/event_calendar/views/default/event_calendar/groupprofile_calendar.php33
-rw-r--r--mod/event_calendar/views/default/event_calendar/groupprofile_calendar_deprecated.php44
-rw-r--r--mod/event_calendar/views/default/event_calendar/input/date_local.php55
-rw-r--r--mod/event_calendar/views/default/event_calendar/metatags.php2
-rw-r--r--mod/event_calendar/views/default/event_calendar/nav.php38
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_footer.php4
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_header.php15
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_item_view.php27
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_view.php36
-rw-r--r--mod/event_calendar/views/default/event_calendar/personal_manage_section.php20
-rw-r--r--mod/event_calendar/views/default/event_calendar/personal_toggle_js.php20
-rw-r--r--mod/event_calendar/views/default/event_calendar/region_select.php21
-rw-r--r--mod/event_calendar/views/default/event_calendar/reminder_section.php28
-rw-r--r--mod/event_calendar/views/default/event_calendar/repeat_form_element.php32
-rw-r--r--mod/event_calendar/views/default/event_calendar/review_requests.php30
-rw-r--r--mod/event_calendar/views/default/event_calendar/schedule_section.php22
-rw-r--r--mod/event_calendar/views/default/event_calendar/share_section.php26
-rw-r--r--mod/event_calendar/views/default/event_calendar/show_events.php64
-rw-r--r--mod/event_calendar/views/default/event_calendar/strapline.php18
-rw-r--r--mod/event_calendar/views/default/forms/event_calendar/edit.php233
-rw-r--r--mod/event_calendar/views/default/forms/event_calendar/manage_subscribers.php14
-rw-r--r--mod/event_calendar/views/default/fullcalendar/css.php618
-rw-r--r--mod/event_calendar/views/default/fullcalendar/fullcalendar.print.css61
-rw-r--r--mod/event_calendar/views/default/icon/object/event_calendar/small.php3
-rw-r--r--mod/event_calendar/views/default/input/datepicker_inline.php83
-rw-r--r--mod/event_calendar/views/default/input/timepicker.php51
-rw-r--r--mod/event_calendar/views/default/input/timepicker_old.php38
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/event_calendar.php171
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/fullcalendar.min.js114
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/fullcalendar.php5227
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/gcal.js112
-rw-r--r--mod/event_calendar/views/default/object/event_calendar.php115
-rw-r--r--mod/event_calendar/views/default/plugins/event_calendar/settings.php474
-rw-r--r--mod/event_calendar/views/default/river/object/event_calendar/create.php13
-rw-r--r--mod/event_calendar/views/default/river/object/event_calendar/update.php13
-rw-r--r--mod/event_calendar/views/default/widgets/event_calendar/content.php43
-rw-r--r--mod/event_calendar/views/default/widgets/event_calendar/edit.php35
-rw-r--r--mod/event_calendar/views/ical/event_calendar/show_events.php7
-rw-r--r--mod/event_calendar/views/ical/object/event_calendar.php44
-rw-r--r--mod/event_calendar/views/ical/page/default.php17
-rw-r--r--mod/event_calendar/views/ical/page/layouts/default.php2
-rw-r--r--mod/event_calendar/views/rss/event_calendar/show_events.php24
-rw-r--r--mod/event_calendar/views/rss/object/event_calendar.php61
-rw-r--r--mod/externalpages/start.php8
-rw-r--r--mod/externalpages/views/default/expages/wrapper.php2
-rw-r--r--mod/file/actions/file/upload.php52
-rw-r--r--mod/file/pages/file/download.php2
-rw-r--r--mod/file/pages/file/friends.php2
-rw-r--r--mod/file/pages/file/owner.php7
-rw-r--r--mod/file/pages/file/search.php4
-rw-r--r--mod/file/pages/file/view.php5
-rw-r--r--mod/file/pages/file/world.php7
-rw-r--r--mod/file/start.php27
-rw-r--r--mod/file/thumbnail.php2
-rw-r--r--mod/file/views/default/object/file.php5
m---------mod/friendrequest6
-rw-r--r--mod/friendrequest/actions/friendrequest/decline.php12
-rw-r--r--mod/friendrequest/actions/friends/add.php53
-rw-r--r--mod/friendrequest/actions/friends/remove.php36
-rw-r--r--mod/friendrequest/languages/ca.php20
-rw-r--r--mod/friendrequest/languages/en.php31
-rw-r--r--mod/friendrequest/languages/es.php22
-rw-r--r--mod/friendrequest/languages/gl.php31
-rw-r--r--mod/friendrequest/languages/pt.php31
-rw-r--r--mod/friendrequest/languages/sr.php31
-rw-r--r--mod/friendrequest/manifest.xml16
-rw-r--r--mod/friendrequest/start.php151
-rw-r--r--mod/friendrequest/views/default/friendrequest/requests.php47
m---------mod/gifts0
m---------mod/group_alias0
m---------mod/group_operators0
-rw-r--r--mod/groups/actions/discussion/save.php2
-rw-r--r--mod/groups/actions/groups/edit.php179
-rw-r--r--mod/groups/actions/groups/membership/invite.php73
-rw-r--r--mod/groups/icon.php14
-rw-r--r--mod/groups/languages/en.php26
-rw-r--r--mod/groups/lib/discussion.php12
-rw-r--r--mod/groups/lib/groups.php153
-rw-r--r--mod/groups/start.php258
-rw-r--r--mod/groups/topicposts.php4
-rw-r--r--mod/groups/views/default/forms/groups/edit.php87
-rw-r--r--mod/groups/views/default/groups/css.php22
-rw-r--r--mod/groups/views/default/groups/edit.php4
-rw-r--r--mod/groups/views/default/groups/js.php7
-rw-r--r--mod/groups/views/default/groups/profile/summary.php15
-rw-r--r--mod/groups/views/default/groups/sidebar/featured.php2
-rw-r--r--mod/groups/views/default/groups/sidebar/members.php5
-rw-r--r--mod/groups/views/default/groups/sidebar/my_status.php62
-rw-r--r--mod/groups/views/default/object/groupforumtopic.php5
-rw-r--r--mod/groups/views/default/plugins/groups/settings.php18
-rw-r--r--mod/groups/views/rss/groups/profile/layout.php13
-rw-r--r--mod/groups/views/rss/object/groupforumtopic.php2
-rw-r--r--mod/habitorio_theme/graphics/button.pngbin0 -> 1092 bytes-rw-r--r--mod/habitorio_theme/graphics/elgg_sprites.pngbin0 -> 19372 bytes-rw-r--r--mod/habitorio_theme/graphics/login.pngbin0 -> 537 bytes-rw-r--r--mod/habitorio_theme/graphics/logo.pngbin0 -> 3067 bytes-rw-r--r--mod/habitorio_theme/graphics/menu.gifbin0 -> 3008 bytes-rw-r--r--mod/habitorio_theme/graphics/menu.pngbin0 -> 2682 bytes-rw-r--r--mod/habitorio_theme/graphics/people.pngbin0 -> 143134 bytes-rw-r--r--mod/habitorio_theme/graphics/preset1.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset2.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset3.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset4.pngbin0 -> 125 bytes-rw-r--r--mod/habitorio_theme/graphics/preset5.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset6.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset7.pngbin0 -> 125 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_01.pngbin0 -> 5204 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_02.pngbin0 -> 550 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_03.pngbin0 -> 2480 bytes-rw-r--r--mod/habitorio_theme/graphics/search.gifbin0 -> 819 bytes-rw-r--r--mod/habitorio_theme/graphics/search.pngbin0 -> 1589 bytes-rw-r--r--mod/habitorio_theme/graphics/sidebar_background.gifbin0 -> 1355 bytes-rw-r--r--mod/habitorio_theme/graphics/spacer.gifbin0 -> 175 bytes-rw-r--r--mod/habitorio_theme/graphics/topbar.gifbin0 -> 2756 bytes-rw-r--r--mod/habitorio_theme/manifest.xml18
-rw-r--r--mod/habitorio_theme/start.php84
-rw-r--r--mod/habitorio_theme/views/default/css/admin.php1443
-rw-r--r--mod/habitorio_theme/views/default/css/elements/OOCSS_LICENSE30
-rw-r--r--mod/habitorio_theme/views/default/css/elements/buttons.php132
-rw-r--r--mod/habitorio_theme/views/default/css/elements/components.php286
-rw-r--r--mod/habitorio_theme/views/default/css/elements/core.php117
-rw-r--r--mod/habitorio_theme/views/default/css/elements/forms.php298
-rw-r--r--mod/habitorio_theme/views/default/css/elements/grid.php54
-rw-r--r--mod/habitorio_theme/views/default/css/elements/helpers.php160
-rw-r--r--mod/habitorio_theme/views/default/css/elements/icons.php348
-rw-r--r--mod/habitorio_theme/views/default/css/elements/layout.php142
-rw-r--r--mod/habitorio_theme/views/default/css/elements/misc.php62
-rw-r--r--mod/habitorio_theme/views/default/css/elements/modules.php194
-rw-r--r--mod/habitorio_theme/views/default/css/elements/navigation.php559
-rw-r--r--mod/habitorio_theme/views/default/css/elements/reset.php79
-rw-r--r--mod/habitorio_theme/views/default/css/elements/typography.php155
-rw-r--r--mod/habitorio_theme/views/default/css/elgg.php68
-rw-r--r--mod/habitorio_theme/views/default/css/ie.php8
-rw-r--r--mod/habitorio_theme/views/default/css/ie6.php12
-rw-r--r--mod/habitorio_theme/views/default/css/ie7.php65
-rw-r--r--mod/habitorio_theme/views/default/css/lightbox.php371
-rw-r--r--mod/habitorio_theme/views/default/css/walled_garden.php81
-rw-r--r--mod/habitorio_theme/views/default/custom_index/css.php17
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/css.php178
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/leftside.php5
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/rightside.php5
-rw-r--r--mod/habitorio_theme/views/default/page/default.php58
-rw-r--r--mod/habitorio_theme/views/default/page/elements/footer.php12
-rw-r--r--mod/habitorio_theme/views/default/page/elements/header.php22
-rw-r--r--mod/habitorio_theme/views/default/page/elements/header_logo.php21
-rw-r--r--mod/habitorio_theme/views/default/page/elements/messages.php27
-rw-r--r--mod/habitorio_theme/views/default/page/elements/topbar.php25
-rw-r--r--mod/habitorio_theme/views/default/page/layouts/custom_index.php48
-rw-r--r--mod/habitorio_theme/views/default/plugins/purity_theme/settings.php24
-rw-r--r--mod/html5/.gitignore3
-rw-r--r--mod/html5/README7
-rw-r--r--mod/html5/manifest.xml15
-rw-r--r--mod/html5/start.php11
-rw-r--r--mod/html5/vendors/Modernizr-1.5.min.js28
-rw-r--r--mod/html5/vendors/jquery/jquery.placeholder-1.0.1.js58
-rw-r--r--mod/html5/views/default/html/img.php11
-rw-r--r--mod/html5/views/default/html5/css.php2
-rw-r--r--mod/html5/views/default/html5/theme_preview/forms/inputs.php101
-rw-r--r--mod/html5/views/default/input/color.php12
-rw-r--r--mod/html5/views/default/input/datetime-local.php14
-rw-r--r--mod/html5/views/default/input/datetime.php15
-rw-r--r--mod/html5/views/default/input/image.php11
-rw-r--r--mod/html5/views/default/input/month.php16
-rw-r--r--mod/html5/views/default/input/number.php11
-rw-r--r--mod/html5/views/default/input/option.php13
-rw-r--r--mod/html5/views/default/input/range.php13
-rw-r--r--mod/html5/views/default/input/search.php13
-rw-r--r--mod/html5/views/default/input/tel.php12
-rw-r--r--mod/html5/views/default/input/time.php13
-rw-r--r--mod/html5/views/default/input/week.php13
-rw-r--r--mod/html5/views/default/output/friendlytime.php14
-rw-r--r--mod/html5/views/default/page/admin.php68
-rw-r--r--mod/html5/views/default/page/default.php78
-rw-r--r--mod/html5/views/default/page/elements/footer.php23
-rw-r--r--mod/html5/views/default/page/elements/head.php78
-rw-r--r--mod/html5/views/default/page/layouts/admin.php42
-rw-r--r--mod/html5/views/default/page/layouts/one_sidebar.php50
-rw-r--r--mod/html5/views/default/page/layouts/two_sidebar.php45
-rw-r--r--mod/html5/views/default/page/walled_garden.php42
-rw-r--r--mod/html5/views/default/search/search_box.php43
-rw-r--r--mod/htmlawed/manifest.xml6
-rw-r--r--mod/htmlawed/start.php20
-rw-r--r--mod/htmlawed/tests/tags.php47
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawed.php128
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawedTest.php110
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawed_README.htm4172
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawed_README.txt3381
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawed_TESTCASE.txt101
m---------mod/identica6
-rw-r--r--mod/identica/graphics/identica.pngbin0 -> 488 bytes-rw-r--r--mod/identica/graphics/thewire_speech_bubble.gif (renamed from mod/twitter/graphics/thewire_speech_bubble.gif)bin560 -> 560 bytes-rw-r--r--mod/identica/languages/ca.php10
-rw-r--r--mod/identica/languages/en.php16
-rw-r--r--mod/identica/languages/es.php12
-rw-r--r--mod/identica/manifest.xml17
-rw-r--r--mod/identica/start.php16
-rw-r--r--mod/identica/views/default/identica/css.php (renamed from mod/twitter/views/default/twitter/css.php)26
-rw-r--r--mod/identica/views/default/identica/js.php40
-rw-r--r--mod/identica/views/default/js/friendly_time.php50
-rw-r--r--mod/identica/views/default/widgets/identica/content.php30
-rw-r--r--mod/identica/views/default/widgets/identica/edit.php16
m---------mod/infinite_scroll0
m---------mod/languages6
-rw-r--r--mod/languages/README.txt9
-rw-r--r--mod/languages/languages/ca/ca.blog.php54
-rw-r--r--mod/languages/languages/ca/ca.bookmarks.php51
-rw-r--r--mod/languages/languages/ca/ca.categories.php12
-rw-r--r--mod/languages/languages/ca/ca.core.php994
-rw-r--r--mod/languages/languages/ca/ca.custom_index.php11
-rw-r--r--mod/languages/languages/ca/ca.dashboard.php11
-rw-r--r--mod/languages/languages/ca/ca.developers.php47
-rw-r--r--mod/languages/languages/ca/ca.diagnostics.php30
-rw-r--r--mod/languages/languages/ca/ca.embed.php14
-rw-r--r--mod/languages/languages/ca/ca.externalpages.php15
-rw-r--r--mod/languages/languages/ca/ca.file.php74
-rw-r--r--mod/languages/languages/ca/ca.garbagecollector.php17
-rw-r--r--mod/languages/languages/ca/ca.groups.php219
-rw-r--r--mod/languages/languages/ca/ca.invitefriends.php26
-rw-r--r--mod/languages/languages/ca/ca.likes.php34
-rw-r--r--mod/languages/languages/ca/ca.logbrowser20
-rw-r--r--mod/languages/languages/ca/ca.logrotate.php20
-rw-r--r--mod/languages/languages/ca/ca.members.php13
-rw-r--r--mod/languages/languages/ca/ca.messageboard.php43
-rw-r--r--mod/languages/languages/ca/ca.messages.php64
-rw-r--r--mod/languages/languages/ca/ca.notifications.php16
-rw-r--r--mod/languages/languages/ca/ca.pages.php62
-rw-r--r--mod/languages/languages/ca/ca.profile.php8
-rw-r--r--mod/languages/languages/ca/ca.relatedgroups.php11
-rw-r--r--mod/languages/languages/ca/ca.reportedcontent.php34
-rw-r--r--mod/languages/languages/ca/ca.search.php18
-rw-r--r--mod/languages/languages/ca/ca.subgroups.php22
-rw-r--r--mod/languages/languages/ca/ca.tagcloud.php7
-rw-r--r--mod/languages/languages/ca/ca.thewire.php34
-rw-r--r--mod/languages/languages/ca/ca.tinymce.php8
-rw-r--r--mod/languages/languages/ca/ca.twitter.php10
-rw-r--r--mod/languages/languages/ca/ca.uservalidationbyemail.php48
-rw-r--r--mod/languages/languages/da/da.blog.php70
-rw-r--r--mod/languages/languages/da/da.bookmarks.php82
-rw-r--r--mod/languages/languages/da/da.categories.php15
-rw-r--r--mod/languages/languages/da/da.custom_index.php14
-rw-r--r--mod/languages/languages/da/da.developers.php60
-rw-r--r--mod/languages/languages/da/da.diagnostics.php70
-rw-r--r--mod/languages/languages/da/da.embed.php21
-rw-r--r--mod/languages/languages/da/da.event_manager.php302
-rw-r--r--mod/languages/languages/da/da.externalpages.php30
-rw-r--r--mod/languages/languages/da/da.file.php106
-rw-r--r--mod/languages/languages/da/da.garbagecollector.php26
-rw-r--r--mod/languages/languages/da/da.groups.php265
-rw-r--r--mod/languages/languages/da/da.image_captcha.php31
-rw-r--r--mod/languages/languages/da/da.invitefriends.php42
-rw-r--r--mod/languages/languages/da/da.likes.php25
-rw-r--r--mod/languages/languages/da/da.logbrowser.php27
-rw-r--r--mod/languages/languages/da/da.logrotate.php29
-rw-r--r--mod/languages/languages/da/da.market.php148
-rw-r--r--mod/languages/languages/da/da.members.php16
-rw-r--r--mod/languages/languages/da/da.menu_builder.php49
-rw-r--r--mod/languages/languages/da/da.messageboard.php73
-rw-r--r--mod/languages/languages/da/da.messages.php95
-rw-r--r--mod/languages/languages/da/da.notifications.php31
-rw-r--r--mod/languages/languages/da/da.pages.php104
-rw-r--r--mod/languages/languages/da/da.php1343
-rw-r--r--mod/languages/languages/da/da.profile.php13
-rw-r--r--mod/languages/languages/da/da.reportedcontent.php44
-rw-r--r--mod/languages/languages/da/da.river_activity_3C.php142
-rw-r--r--mod/languages/languages/da/da.roles_group_admins.php20
-rw-r--r--mod/languages/languages/da/da.search.php25
-rw-r--r--mod/languages/languages/da/da.tagcloud.php12
-rw-r--r--mod/languages/languages/da/da.tasks.php144
-rw-r--r--mod/languages/languages/da/da.thewire.php60
-rw-r--r--mod/languages/languages/da/da.tidypics.php190
-rw-r--r--mod/languages/languages/da/da.tinymce.php13
-rw-r--r--mod/languages/languages/da/da.twitter.php17
-rw-r--r--mod/languages/languages/da/da.twitter_api.php35
-rw-r--r--mod/languages/languages/da/da.uservalidationbyemail.php63
-rw-r--r--mod/languages/languages/de/de.blog.php50
-rw-r--r--mod/languages/languages/de/de.bookmarks.php46
-rw-r--r--mod/languages/languages/de/de.categories.php12
-rw-r--r--mod/languages/languages/de/de.core.php969
-rw-r--r--mod/languages/languages/de/de.custom_index.php11
-rw-r--r--mod/languages/languages/de/de.dashboard.php11
-rw-r--r--mod/languages/languages/de/de.developers.php43
-rw-r--r--mod/languages/languages/de/de.diagnostics.php39
-rw-r--r--mod/languages/languages/de/de.embed.php14
-rw-r--r--mod/languages/languages/de/de.externalpages.php15
-rw-r--r--mod/languages/languages/de/de.file.php69
-rw-r--r--mod/languages/languages/de/de.garbagecollector.php18
-rw-r--r--mod/languages/languages/de/de.groups.php204
-rw-r--r--mod/languages/languages/de/de.install.php156
-rw-r--r--mod/languages/languages/de/de.invitefriends.php30
-rw-r--r--mod/languages/languages/de/de.likes.php36
-rw-r--r--mod/languages/languages/de/de.logbrowser.php20
-rw-r--r--mod/languages/languages/de/de.logrotate.php22
-rw-r--r--mod/languages/languages/de/de.members.php13
-rw-r--r--mod/languages/languages/de/de.messageboard.php43
-rw-r--r--mod/languages/languages/de/de.messages.php60
-rw-r--r--mod/languages/languages/de/de.notifications.php18
-rw-r--r--mod/languages/languages/de/de.pages.php54
-rw-r--r--mod/languages/languages/de/de.profile.php8
-rw-r--r--mod/languages/languages/de/de.reportedcontent.php44
-rw-r--r--mod/languages/languages/de/de.search.php18
-rw-r--r--mod/languages/languages/de/de.tagcloud.php9
-rw-r--r--mod/languages/languages/de/de.thewire.php36
-rw-r--r--mod/languages/languages/de/de.tinymce.php9
-rw-r--r--mod/languages/languages/de/de.twitter.php12
-rw-r--r--mod/languages/languages/de/de.twitter_api.php60
-rw-r--r--mod/languages/languages/de/de.uservalidationbyemail.php51
-rw-r--r--mod/languages/languages/en/en.core.php39
-rw-r--r--mod/languages/languages/es/es.blog.php57
-rw-r--r--mod/languages/languages/es/es.bookmarks.php55
-rw-r--r--mod/languages/languages/es/es.categories.php12
-rw-r--r--mod/languages/languages/es/es.core.php1001
-rw-r--r--mod/languages/languages/es/es.custom_index.php11
-rw-r--r--mod/languages/languages/es/es.custom_keys.php5
-rw-r--r--mod/languages/languages/es/es.dashboard.php11
-rw-r--r--mod/languages/languages/es/es.developers.php49
-rw-r--r--mod/languages/languages/es/es.diagnostics.php40
-rw-r--r--mod/languages/languages/es/es.embed.php14
-rw-r--r--mod/languages/languages/es/es.externalpages.php15
-rw-r--r--mod/languages/languages/es/es.file.php76
-rw-r--r--mod/languages/languages/es/es.garbagecollector.php18
-rw-r--r--mod/languages/languages/es/es.groups.php213
-rw-r--r--mod/languages/languages/es/es.install.php156
-rw-r--r--mod/languages/languages/es/es.invitefriends.php29
-rw-r--r--mod/languages/languages/es/es.likes.php36
-rw-r--r--mod/languages/languages/es/es.logbrowser.php21
-rw-r--r--mod/languages/languages/es/es.logrotate.php22
-rw-r--r--mod/languages/languages/es/es.members.php13
-rw-r--r--mod/languages/languages/es/es.messageboard.php43
-rw-r--r--mod/languages/languages/es/es.messages.php66
-rw-r--r--mod/languages/languages/es/es.notifications.php18
-rw-r--r--mod/languages/languages/es/es.pages.php62
-rw-r--r--mod/languages/languages/es/es.profile.php8
-rw-r--r--mod/languages/languages/es/es.reportedcontent.php36
-rw-r--r--mod/languages/languages/es/es.search.php18
-rw-r--r--mod/languages/languages/es/es.tagcloud.php9
-rw-r--r--mod/languages/languages/es/es.thewire.php36
-rw-r--r--mod/languages/languages/es/es.tinymce.php9
-rw-r--r--mod/languages/languages/es/es.twitter.php12
-rw-r--r--mod/languages/languages/es/es.twitter_api.php58
-rw-r--r--mod/languages/languages/es/es.uservalidationbyemail.php64
-rw-r--r--mod/languages/languages/eu/eu.blog.php57
-rw-r--r--mod/languages/languages/eu/eu.bookmarks.php53
-rw-r--r--mod/languages/languages/eu/eu.categories.php11
-rw-r--r--mod/languages/languages/eu/eu.core.php996
-rw-r--r--mod/languages/languages/eu/eu.custom_index.php10
-rw-r--r--mod/languages/languages/eu/eu.dashboard.php10
-rw-r--r--mod/languages/languages/eu/eu.developers.php48
-rw-r--r--mod/languages/languages/eu/eu.diagnostics.php39
-rw-r--r--mod/languages/languages/eu/eu.embed.php13
-rw-r--r--mod/languages/languages/eu/eu.externalpages.php14
-rw-r--r--mod/languages/languages/eu/eu.file.php76
-rw-r--r--mod/languages/languages/eu/eu.garbagecollector.php17
-rw-r--r--mod/languages/languages/eu/eu.groups.php213
-rw-r--r--mod/languages/languages/eu/eu.install.php134
-rw-r--r--mod/languages/languages/eu/eu.invitefriends.php29
-rw-r--r--mod/languages/languages/eu/eu.likes.php35
-rw-r--r--mod/languages/languages/eu/eu.logbrowser.php21
-rw-r--r--mod/languages/languages/eu/eu.logrotate.php21
-rw-r--r--mod/languages/languages/eu/eu.members.php12
-rw-r--r--mod/languages/languages/eu/eu.messageboard.php42
-rw-r--r--mod/languages/languages/eu/eu.messages.php65
-rw-r--r--mod/languages/languages/eu/eu.notifications.php17
-rw-r--r--mod/languages/languages/eu/eu.pages.php62
-rw-r--r--mod/languages/languages/eu/eu.profile.php7
-rw-r--r--mod/languages/languages/eu/eu.reportedcontent.php35
-rw-r--r--mod/languages/languages/eu/eu.search.php17
-rw-r--r--mod/languages/languages/eu/eu.tagcloud.php8
-rw-r--r--mod/languages/languages/eu/eu.thewire.php35
-rw-r--r--mod/languages/languages/eu/eu.tinymce.php8
-rw-r--r--mod/languages/languages/eu/eu.twitter.php11
-rw-r--r--mod/languages/languages/eu/eu.twitter_api.php40
-rw-r--r--mod/languages/languages/eu/eu.uservalidationbyemail.php50
-rw-r--r--mod/languages/languages/fr/fr.blog.php69
-rw-r--r--mod/languages/languages/fr/fr.bookmarks.php82
-rw-r--r--mod/languages/languages/fr/fr.categories.php15
-rw-r--r--mod/languages/languages/fr/fr.custom_index.php14
-rw-r--r--mod/languages/languages/fr/fr.dashboard.php14
-rw-r--r--mod/languages/languages/fr/fr.developers.php61
-rw-r--r--mod/languages/languages/fr/fr.diagnostics.php70
-rw-r--r--mod/languages/languages/fr/fr.embed.php21
-rw-r--r--mod/languages/languages/fr/fr.externalpages.php27
-rw-r--r--mod/languages/languages/fr/fr.file.php110
-rw-r--r--mod/languages/languages/fr/fr.garbagecollector.php25
-rw-r--r--mod/languages/languages/fr/fr.groups.php265
-rw-r--r--mod/languages/languages/fr/fr.install.php156
-rw-r--r--mod/languages/languages/fr/fr.invitefriends.php43
-rw-r--r--mod/languages/languages/fr/fr.likes.php44
-rw-r--r--mod/languages/languages/fr/fr.logbrowser.php27
-rw-r--r--mod/languages/languages/fr/fr.logrotate.php28
-rw-r--r--mod/languages/languages/fr/fr.members.php16
-rw-r--r--mod/languages/languages/fr/fr.messageboard.php72
-rw-r--r--mod/languages/languages/fr/fr.messages.php96
-rw-r--r--mod/languages/languages/fr/fr.notifications.php26
-rw-r--r--mod/languages/languages/fr/fr.pages.php104
-rw-r--r--mod/languages/languages/fr/fr.php1310
-rw-r--r--mod/languages/languages/fr/fr.profile.php12
-rw-r--r--mod/languages/languages/fr/fr.reportedcontent.php44
-rw-r--r--mod/languages/languages/fr/fr.search.php21
-rw-r--r--mod/languages/languages/fr/fr.tagcloud.php12
-rw-r--r--mod/languages/languages/fr/fr.thewire.php61
-rw-r--r--mod/languages/languages/fr/fr.tinymce.php14
-rw-r--r--mod/languages/languages/fr/fr.twitter.php7
-rw-r--r--mod/languages/languages/fr/fr.twitter_api.php59
-rw-r--r--mod/languages/languages/fr/fr.uservalidationbyemail.php64
-rw-r--r--mod/languages/languages/gl/gl.blog.php16
-rw-r--r--mod/languages/languages/gl/gl.bookmarks.php40
-rw-r--r--mod/languages/languages/gl/gl.core.php664
-rw-r--r--mod/languages/languages/gl/gl.custom_index.php11
-rw-r--r--mod/languages/languages/gl/gl.embed.php8
-rw-r--r--mod/languages/languages/gl/gl.externalpages.php14
-rw-r--r--mod/languages/languages/gl/gl.file.php61
-rw-r--r--mod/languages/languages/gl/gl.groups.php143
-rw-r--r--mod/languages/languages/gl/gl.messageboard.php36
-rw-r--r--mod/languages/languages/gl/gl.messages.php52
-rw-r--r--mod/languages/languages/gl/gl.pages.php42
-rw-r--r--mod/languages/languages/gl/gl.profile.php8
-rw-r--r--mod/languages/languages/gl/gl.reportedcontent.php7
-rw-r--r--mod/languages/languages/gl/gl.uservalidationbyemail.php8
-rw-r--r--mod/languages/languages/it/it.blog.php12
-rw-r--r--mod/languages/languages/it/it.bookmarks.php31
-rw-r--r--mod/languages/languages/it/it.categories.php10
-rw-r--r--mod/languages/languages/it/it.core.php707
-rw-r--r--mod/languages/languages/it/it.custom_index.php11
-rw-r--r--mod/languages/languages/it/it.file.php53
-rw-r--r--mod/languages/languages/it/it.groups.php141
-rw-r--r--mod/languages/languages/it/it.messageboard.php39
-rw-r--r--mod/languages/languages/it/it.messages.php56
-rw-r--r--mod/languages/languages/it/it.pages.php41
-rw-r--r--mod/languages/languages/it/it.profile.php8
-rw-r--r--mod/languages/languages/it/it.reportedcontent.php7
-rw-r--r--mod/languages/languages/ja/ja.blog.php12
-rw-r--r--mod/languages/languages/ja/ja.bookmarks.php37
-rw-r--r--mod/languages/languages/ja/ja.categories.php11
-rw-r--r--mod/languages/languages/ja/ja.core.php661
-rw-r--r--mod/languages/languages/ja/ja.custom_index.php11
-rw-r--r--mod/languages/languages/ja/ja.embed.php8
-rw-r--r--mod/languages/languages/ja/ja.externalpages.php14
-rw-r--r--mod/languages/languages/ja/ja.file.php61
-rw-r--r--mod/languages/languages/ja/ja.groups.php155
-rw-r--r--mod/languages/languages/ja/ja.messageboard.php41
-rw-r--r--mod/languages/languages/ja/ja.messages.php55
-rw-r--r--mod/languages/languages/ja/ja.pages.php43
-rw-r--r--mod/languages/languages/ja/ja.reportedcontent.php30
-rw-r--r--mod/languages/languages/nl/nl.blog.php50
-rw-r--r--mod/languages/languages/nl/nl.bookmarks.php46
-rw-r--r--mod/languages/languages/nl/nl.categories.php12
-rw-r--r--mod/languages/languages/nl/nl.core.php947
-rw-r--r--mod/languages/languages/nl/nl.custom_index.php11
-rw-r--r--mod/languages/languages/nl/nl.dashboard.php11
-rw-r--r--mod/languages/languages/nl/nl.developers.php43
-rw-r--r--mod/languages/languages/nl/nl.diagnostics.php32
-rw-r--r--mod/languages/languages/nl/nl.embed.php14
-rw-r--r--mod/languages/languages/nl/nl.externalpages.php15
-rw-r--r--mod/languages/languages/nl/nl.file.php69
-rw-r--r--mod/languages/languages/nl/nl.garbagecollector.php18
-rw-r--r--mod/languages/languages/nl/nl.groups.php205
-rw-r--r--mod/languages/languages/nl/nl.invitefriends.php28
-rw-r--r--mod/languages/languages/nl/nl.likes.php31
-rw-r--r--mod/languages/languages/nl/nl.logbrowser.php20
-rw-r--r--mod/languages/languages/nl/nl.logrotate.php18
-rw-r--r--mod/languages/languages/nl/nl.members.php13
-rw-r--r--mod/languages/languages/nl/nl.messageboard.php41
-rw-r--r--mod/languages/languages/nl/nl.messages.php63
-rw-r--r--mod/languages/languages/nl/nl.notifications.php18
-rw-r--r--mod/languages/languages/nl/nl.pages.php54
-rw-r--r--mod/languages/languages/nl/nl.profile.php8
-rw-r--r--mod/languages/languages/nl/nl.reportedcontent.php36
-rw-r--r--mod/languages/languages/nl/nl.search.php18
-rw-r--r--mod/languages/languages/nl/nl.tagcloud.php9
-rw-r--r--mod/languages/languages/nl/nl.thewire.php36
-rw-r--r--mod/languages/languages/nl/nl.tinymce.php9
-rw-r--r--mod/languages/languages/nl/nl.twitter.php12
-rw-r--r--mod/languages/languages/nl/nl.twitter_api.php41
-rw-r--r--mod/languages/languages/nl/nl.uservalidationbyemail.php49
-rw-r--r--mod/languages/languages/pt/pt.blog.php50
-rw-r--r--mod/languages/languages/pt/pt.bookmarks.php46
-rw-r--r--mod/languages/languages/pt/pt.brainstorm.php63
-rw-r--r--mod/languages/languages/pt/pt.categories.php12
-rw-r--r--mod/languages/languages/pt/pt.core.php966
-rw-r--r--mod/languages/languages/pt/pt.custom_index.php11
-rw-r--r--mod/languages/languages/pt/pt.dashboard.php11
-rw-r--r--mod/languages/languages/pt/pt.developers.php43
-rw-r--r--mod/languages/languages/pt/pt.diagnostics.php34
-rw-r--r--mod/languages/languages/pt/pt.embed.php14
-rw-r--r--mod/languages/languages/pt/pt.externalpages.php15
-rw-r--r--mod/languages/languages/pt/pt.file.php69
-rw-r--r--mod/languages/languages/pt/pt.garbagecollector.php17
-rw-r--r--mod/languages/languages/pt/pt.groups.php204
-rw-r--r--mod/languages/languages/pt/pt.install.php132
-rw-r--r--mod/languages/languages/pt/pt.invitefriends.php36
-rw-r--r--mod/languages/languages/pt/pt.likes.php35
-rw-r--r--mod/languages/languages/pt/pt.logbrowser.php20
-rw-r--r--mod/languages/languages/pt/pt.logrotate.php20
-rw-r--r--mod/languages/languages/pt/pt.members.php13
-rw-r--r--mod/languages/languages/pt/pt.messageboard.php43
-rw-r--r--mod/languages/languages/pt/pt.messages.php66
-rw-r--r--mod/languages/languages/pt/pt.moderated_comments.php48
-rw-r--r--mod/languages/languages/pt/pt.notifications.php20
-rw-r--r--mod/languages/languages/pt/pt.pages.php55
-rw-r--r--mod/languages/languages/pt/pt.profile.php8
-rw-r--r--mod/languages/languages/pt/pt.reportedcontent.php36
-rw-r--r--mod/languages/languages/pt/pt.search.php18
-rw-r--r--mod/languages/languages/pt/pt.spam_login_filter.php80
-rw-r--r--mod/languages/languages/pt/pt.speak_freely.php55
-rw-r--r--mod/languages/languages/pt/pt.tagcloud.php9
-rw-r--r--mod/languages/languages/pt/pt.thewire.php37
-rw-r--r--mod/languages/languages/pt/pt.tinymce.php9
-rw-r--r--mod/languages/languages/pt/pt.twitter.php12
-rw-r--r--mod/languages/languages/pt/pt.twitter_api.php43
-rw-r--r--mod/languages/languages/pt/pt.uservalidationbyemail.php51
-rw-r--r--mod/languages/languages/sr/sr.blog.php12
-rw-r--r--mod/languages/languages/sr/sr.core.php389
-rw-r--r--mod/languages/languages/sr/sr.custom_index.php10
-rw-r--r--mod/languages/languages/sr/sr.externalpages.php10
-rw-r--r--mod/languages/languages/sr/sr.file.php7
-rw-r--r--mod/languages/languages/sr/sr.friendrequest.php20
-rw-r--r--mod/languages/languages/sr/sr.groups.php148
-rw-r--r--mod/languages/languages/sr/sr.messageboard.php38
-rw-r--r--mod/languages/languages/sr/sr.messages.php55
-rw-r--r--mod/languages/languages/sr/sr.pages.php7
-rw-r--r--mod/languages/languages/sr/sr.profile.php8
-rw-r--r--mod/languages/languages/sr/sr.reportedcontent.php30
-rw-r--r--mod/languages/languages/th/th.core.php651
-rw-r--r--mod/languages/languages/zh/zh.blog.php69
-rw-r--r--mod/languages/languages/zh/zh.core.php662
-rw-r--r--mod/languages/languages/zh/zh.profile.php8
-rw-r--r--mod/languages/manifest.xml16
-rw-r--r--mod/languages/start.php55
-rw-r--r--mod/languages/views/default/js/languages/ca.php2
-rw-r--r--mod/languages/views/default/js/languages/da.php2
-rw-r--r--mod/languages/views/default/js/languages/de.php2
-rw-r--r--mod/languages/views/default/js/languages/en.php2
-rw-r--r--mod/languages/views/default/js/languages/es.php2
-rw-r--r--mod/languages/views/default/js/languages/eu.php2
-rw-r--r--mod/languages/views/default/js/languages/fr.php2
-rw-r--r--mod/languages/views/default/js/languages/gl.php2
-rw-r--r--mod/languages/views/default/js/languages/it.php2
-rw-r--r--mod/languages/views/default/js/languages/ja.php2
-rw-r--r--mod/languages/views/default/js/languages/nl.php2
-rw-r--r--mod/languages/views/default/js/languages/pt.php2
-rw-r--r--mod/languages/views/default/js/languages/sr.php2
-rw-r--r--mod/languages/views/default/js/languages/th.php2
-rw-r--r--mod/languages/views/default/js/languages/zh.php2
-rw-r--r--mod/lightpics/CONFIG.txt73
-rw-r--r--mod/lightpics/FAQ.txt31
-rw-r--r--mod/lightpics/actions/photos/admin/create_thumbnails.php70
-rw-r--r--mod/lightpics/actions/photos/admin/imtest.php18
-rw-r--r--mod/lightpics/actions/photos/admin/settings.php29
-rw-r--r--mod/lightpics/actions/photos/admin/upgrade.php52
-rw-r--r--mod/lightpics/actions/photos/album/save.php48
-rw-r--r--mod/lightpics/actions/photos/album/set_cover.php23
-rw-r--r--mod/lightpics/actions/photos/album/sort.php21
-rw-r--r--mod/lightpics/actions/photos/batch/edit.php42
-rw-r--r--mod/lightpics/actions/photos/delete.php48
-rw-r--r--mod/lightpics/actions/photos/image/save.php40
-rw-r--r--mod/lightpics/actions/photos/image/upload.php147
-rw-r--r--mod/lightpics/activate.php51
-rw-r--r--mod/lightpics/classes/TidypicsAlbum.php375
-rw-r--r--mod/lightpics/classes/TidypicsImage.php406
-rw-r--r--mod/lightpics/contributions.txt442
-rw-r--r--mod/lightpics/deactivate.php10
-rw-r--r--mod/lightpics/fonts/LiberationSerif-Regular.ttfbin0 -> 172964 bytes-rw-r--r--mod/lightpics/fonts/License.txt13
-rw-r--r--mod/lightpics/graphics/empty_album.pngbin0 -> 1389 bytes-rw-r--r--mod/lightpics/graphics/icons/album.gifbin0 -> 1411 bytes-rw-r--r--mod/lightpics/graphics/icons/general.jpgbin0 -> 7036 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_album.gifbin0 -> 398 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_image.gifbin0 -> 945 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_tag.gifbin0 -> 184 bytes-rw-r--r--mod/lightpics/graphics/image_error_large.pngbin0 -> 2208 bytes-rw-r--r--mod/lightpics/graphics/image_error_small.pngbin0 -> 2351 bytes-rw-r--r--mod/lightpics/graphics/image_error_thumb.pngbin0 -> 759 bytes-rw-r--r--mod/lightpics/graphics/loader.gifbin0 -> 2545 bytes-rw-r--r--mod/lightpics/graphics/spacer.gifbin0 -> 43 bytes-rw-r--r--mod/lightpics/languages/ca.php210
-rw-r--r--mod/lightpics/languages/da.php169
-rw-r--r--mod/lightpics/languages/de.php248
-rw-r--r--mod/lightpics/languages/en.php262
-rw-r--r--mod/lightpics/languages/es.php210
-rw-r--r--mod/lightpics/languages/fr.php140
-rw-r--r--mod/lightpics/languages/he.php135
-rw-r--r--mod/lightpics/languages/it.php113
-rw-r--r--mod/lightpics/languages/pl.php96
-rw-r--r--mod/lightpics/languages/ru.php101
-rw-r--r--mod/lightpics/languages/tr.php86
-rw-r--r--mod/lightpics/lib/exif.php110
-rw-r--r--mod/lightpics/lib/migrate.php301
-rw-r--r--mod/lightpics/lib/resize.php522
-rw-r--r--mod/lightpics/lib/tidypics.php365
-rw-r--r--mod/lightpics/lib/upload.php119
-rw-r--r--mod/lightpics/manifest.xml30
-rw-r--r--mod/lightpics/pages/lists/highestrated.php65
-rw-r--r--mod/lightpics/pages/lists/highestvotecount.php50
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimages.php42
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimagesthismonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimagestoday.php50
-rw-r--r--mod/lightpics/pages/lists/mostrecentimages.php56
-rw-r--r--mod/lightpics/pages/lists/mostviewedimages.php79
-rw-r--r--mod/lightpics/pages/lists/mostviewedimageslastmonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagesthismonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagesthisyear.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagestoday.php50
-rw-r--r--mod/lightpics/pages/lists/recentlycommented.php61
-rw-r--r--mod/lightpics/pages/lists/recentlyviewed.php60
-rw-r--r--mod/lightpics/pages/lists/recentvotes.php52
-rw-r--r--mod/lightpics/pages/photos/album/add.php34
-rw-r--r--mod/lightpics/pages/photos/album/edit.php48
-rw-r--r--mod/lightpics/pages/photos/album/sort.php56
-rw-r--r--mod/lightpics/pages/photos/album/view.php63
-rw-r--r--mod/lightpics/pages/photos/all.php38
-rw-r--r--mod/lightpics/pages/photos/batch/edit.php44
-rw-r--r--mod/lightpics/pages/photos/friends.php34
-rw-r--r--mod/lightpics/pages/photos/image/download.php41
-rw-r--r--mod/lightpics/pages/photos/image/edit.php54
-rw-r--r--mod/lightpics/pages/photos/image/thumbnail.php38
-rw-r--r--mod/lightpics/pages/photos/image/upload.php64
-rw-r--r--mod/lightpics/pages/photos/image/view.php61
-rw-r--r--mod/lightpics/pages/photos/owner.php56
-rw-r--r--mod/lightpics/start.php421
-rw-r--r--mod/lightpics/upgrades/2009082901.php29
-rw-r--r--mod/lightpics/upgrades/2010073101.php27
-rw-r--r--mod/lightpics/upgrades/2010102801.php26
-rw-r--r--mod/lightpics/upgrades/2012020901.php26
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/README.md73
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/cors/postmessage.html75
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/cors/result.html20
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/css/jquery.fileupload-ui.css107
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/css/style.css92
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/img/loading.gifbin0 -> 3897 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/img/progressbar.gifbin0 -> 3323 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/index.html234
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/cors/jquery.postmessage-transport.js117
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/cors/jquery.xdr-transport.js85
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-fp.js219
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-jui.js141
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-ui.js736
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload.js972
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.iframe-transport.js171
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/locale.js29
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/main.js93
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/canvas-to-blob.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/jquery.ui.widget.js282
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/load-image.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/tmpl.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/package.json56
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/app.yaml12
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/app/main.go361
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/resize/resize.go247
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/static/favicon.icobin0 -> 1150 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/static/robots.txt2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/app.yaml16
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/main.py149
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/static/favicon.icobin0 -> 1150 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/static/robots.txt2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/.gitignore2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/package.json41
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/public/files/thumbnail/.gitignore0
-rwxr-xr-xmod/lightpics/vendors/jquery-file-upload/server/node/server.js285
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/tmp/.gitignore0
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/files/.htaccess4
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/index.php46
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/thumbnails/.htaccess0
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/upload.class.php436
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/test/index.html146
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/test/test.js1279
-rw-r--r--mod/lightpics/version.php7
-rw-r--r--mod/lightpics/views/default/admin/settings/photos.php71
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/help.php14
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/image_lib.php38
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/server_config.php14
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/server_info.php120
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/settings.php18
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/thumbnail.php54
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings.php26
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/activity.php31
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/image_lib.php20
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/main.php39
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/thumbnails.php33
-rw-r--r--mod/lightpics/views/default/forms/photos/album/save.php48
-rw-r--r--mod/lightpics/views/default/forms/photos/album/sort.php28
-rw-r--r--mod/lightpics/views/default/forms/photos/basic_upload.php63
-rw-r--r--mod/lightpics/views/default/forms/photos/batch/edit.php33
-rw-r--r--mod/lightpics/views/default/forms/photos/batch/edit/image.php35
-rw-r--r--mod/lightpics/views/default/forms/photos/image/save.php48
-rw-r--r--mod/lightpics/views/default/icon/object/album.php41
-rw-r--r--mod/lightpics/views/default/icon/object/image.php62
-rw-r--r--mod/lightpics/views/default/js/photos/tidypics.php43
-rw-r--r--mod/lightpics/views/default/js/photos/upload.php63
-rw-r--r--mod/lightpics/views/default/object/album.php22
-rw-r--r--mod/lightpics/views/default/object/album/full.php59
-rw-r--r--mod/lightpics/views/default/object/album/gallery.php36
-rw-r--r--mod/lightpics/views/default/object/album/list.php42
-rw-r--r--mod/lightpics/views/default/object/image.php211
-rw-r--r--mod/lightpics/views/default/object/image/full.php62
-rw-r--r--mod/lightpics/views/default/object/image/navigation.php34
-rw-r--r--mod/lightpics/views/default/object/image/summary.php41
-rw-r--r--mod/lightpics/views/default/photos/css.php470
-rw-r--r--mod/lightpics/views/default/photos/group_module.php45
-rw-r--r--mod/lightpics/views/default/photos/sidebar.php18
-rw-r--r--mod/lightpics/views/default/photos/sidebar/exif.php20
-rw-r--r--mod/lightpics/views/default/photos/sidebar/quota.php27
-rw-r--r--mod/lightpics/views/default/river/object/album/create.php40
-rw-r--r--mod/lightpics/views/default/river/object/image/create.php41
-rw-r--r--mod/lightpics/views/default/river/object/tidypics_batch/create.php66
-rw-r--r--mod/lightpics/views/default/widgets/album_view/content.php17
-rw-r--r--mod/lightpics/views/default/widgets/album_view/edit.php25
-rw-r--r--mod/lightpics/views/default/widgets/latest_photos/content.php18
-rw-r--r--mod/lightpics/views/default/widgets/latest_photos/edit.php25
-rw-r--r--mod/lightpics/views/rss/extensions/photos/xmlns.php9
-rw-r--r--mod/lightpics/views/rss/object/album.php17
-rw-r--r--mod/lightpics/views/rss/object/album/full.php19
-rw-r--r--mod/lightpics/views/rss/object/album/summary.php33
-rw-r--r--mod/lightpics/views/rss/object/image.php42
-rw-r--r--mod/likes/actions/likes/delete.php32
-rw-r--r--mod/likes/languages/en.php1
-rw-r--r--mod/likes/views/default/annotation/likes.php10
m---------mod/linkup0
m---------mod/livestream0
-rw-r--r--mod/logbrowser/languages/en.php2
-rw-r--r--mod/logbrowser/views/default/admin/administer_utilities/logbrowser.php15
-rw-r--r--mod/logbrowser/views/default/forms/logbrowser/refine.php24
-rw-r--r--mod/logbrowser/views/default/logbrowser/refine.php2
-rw-r--r--mod/logbrowser/views/default/logbrowser/table.php9
-rw-r--r--mod/logrotate/languages/en.php3
-rw-r--r--mod/logrotate/start.php51
-rw-r--r--mod/logrotate/views/default/plugins/logrotate/settings.php1
m---------mod/magic_topbar0
-rw-r--r--mod/members/pages/members/search.php8
-rw-r--r--mod/messageboard/pages/messageboard/owner.php1
-rw-r--r--mod/messageboard/views/default/river/object/messageboard/create.php23
-rw-r--r--mod/messages/manifest.xml2
-rw-r--r--mod/messages/pages/messages/inbox.php9
-rw-r--r--mod/messages/pages/messages/read.php9
-rw-r--r--mod/messages/pages/messages/sent.php9
-rw-r--r--mod/messages/start.php127
-rw-r--r--mod/messages/views/default/forms/messages/process.php4
m---------mod/minify0
-rw-r--r--mod/notifications/actions/groupsave.php38
-rw-r--r--mod/notifications/actions/save.php11
-rw-r--r--mod/notifications/groups.php25
-rw-r--r--mod/notifications/index.php25
-rw-r--r--mod/notifications/languages/en.php2
-rw-r--r--mod/notifications/start.php26
-rw-r--r--mod/notifications/views/default/forms/notificationsettings/groupsave.php12
-rw-r--r--mod/notifications/views/default/forms/notificationsettings/save.php16
-rw-r--r--mod/notifications/views/default/notifications/subscriptions/collections.php36
-rw-r--r--mod/notifications/views/default/notifications/subscriptions/form.php11
-rw-r--r--mod/notifications/views/default/notifications/subscriptions/forminternals.php20
-rw-r--r--mod/notifications/views/default/notifications/subscriptions/personal.php8
-rw-r--r--mod/oauth_api/start.php24
-rw-r--r--mod/oauth_api/vendors/oauth/LICENSE21
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/INSTALL53
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/init.php127
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl13
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl21
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl41
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/hello.php65
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/index.php37
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/logon.php55
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/oauth.php77
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/register.php28
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php71
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthDiscovery.php226
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthException.php50
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequest.php801
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestLogger.php274
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestSigner.php209
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestVerifier.php262
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequester.php508
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthServer.php232
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthStore.php86
-rw-r--r--mod/oauth_api/vendors/oauth/library/body/OAuthBodyContentDisposition.php129
-rw-r--r--mod/oauth_api/vendors/oauth/library/body/OAuthBodyMultipartFormdata.php143
-rw-r--r--mod/oauth_api/vendors/oauth/library/discovery/xrds_parse.php304
-rw-r--r--mod/oauth_api/vendors/oauth/library/discovery/xrds_parse.txt101
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod.class.php69
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_HMAC_SHA1.php115
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_MD5.php95
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_PLAINTEXT.php80
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_RSA_SHA1.php136
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreAbstract.class.php149
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreAnyMeta.php265
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreMySQL.php1879
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/mysql/install.php32
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/mysql/mysql.sql219
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-fireeagle.xrds78
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-getsatisfaction.xrds73
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-magnolia.xrds81
-rw-r--r--mod/oauth_api/vendors/oauth/test/oauth_test.php188
m---------mod/online0
-rw-r--r--mod/openid_api/classes/OpenID_ElggStore.php420
-rw-r--r--mod/openid_api/lib/openid_consumer.php15
-rw-r--r--mod/openid_api/lib/openid_server.php13
-rw-r--r--mod/openid_api/manifest.xml (renamed from mod/twitter/manifest.xml)15
-rw-r--r--mod/openid_api/start.php22
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID.php563
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php1022
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php610
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php451
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php2234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php122
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php130
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php113
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php606
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php99
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php61
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php618
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php105
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php196
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php111
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php413
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php207
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php920
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php77
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php108
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php300
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php377
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php112
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php557
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php70
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php1765
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php36
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php461
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php249
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php174
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php58
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php245
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php258
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php248
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php352
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php478
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php72
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php382
-rw-r--r--mod/openid_api/vendors/php-openid/COPYING202
-rw-r--r--mod/openid_api/vendors/php-openid/README136
-rw-r--r--mod/openid_client/actions/openid_client/login.php32
-rw-r--r--mod/openid_client/actions/openid_client/register.php35
-rw-r--r--mod/openid_client/classes/ElggOpenIDConsumer.php238
-rw-r--r--mod/openid_client/graphics/openid_icon.pngbin0 -> 733 bytes-rw-r--r--mod/openid_client/languages/en.php28
-rw-r--r--mod/openid_client/lib/helpers.php114
-rw-r--r--mod/openid_client/manifest.xml (renamed from mod/oauth_api/manifest.xml)22
-rw-r--r--mod/openid_client/return.php69
-rw-r--r--mod/openid_client/start.php78
-rw-r--r--mod/openid_client/upgrade.php12
-rw-r--r--mod/openid_client/upgrades/2012100501.php53
-rw-r--r--mod/openid_client/views/default/core/account/login_box.php24
-rw-r--r--mod/openid_client/views/default/core/account/login_dropdown.php31
-rw-r--r--mod/openid_client/views/default/forms/openid_client/login.php43
-rw-r--r--mod/openid_client/views/default/forms/openid_client/register.php71
-rw-r--r--mod/openid_client/views/default/openid_client/css.php13
-rw-r--r--mod/openid_client/views/default/openid_client/icon.php8
-rw-r--r--mod/openid_client/views/default/openid_client/js.php26
-rw-r--r--mod/openid_client/views/default/openid_client/register.php11
-rw-r--r--mod/openid_server/Crypt/RSA.php524
-rw-r--r--mod/openid_server/Crypt/RSA/ErrorHandler.php234
-rw-r--r--mod/openid_server/Crypt/RSA/Key.php314
-rw-r--r--mod/openid_server/Crypt/RSA/KeyPair.php804
-rw-r--r--mod/openid_server/Crypt/RSA/Math/BCMath.php482
-rw-r--r--mod/openid_server/Crypt/RSA/Math/BigInt.php313
-rw-r--r--mod/openid_server/Crypt/RSA/Math/GMP.php361
-rw-r--r--mod/openid_server/Crypt/RSA/MathLoader.php135
-rwxr-xr-xmod/openid_server/actions/admin.php90
-rwxr-xr-xmod/openid_server/actions/autologin.php52
-rwxr-xr-xmod/openid_server/actions/autologout.php48
-rwxr-xr-xmod/openid_server/actions/trust.php93
-rw-r--r--mod/openid_server/languages/ca.php40
-rwxr-xr-xmod/openid_server/languages/en.php47
-rwxr-xr-xmod/openid_server/languages/es.php40
-rw-r--r--mod/openid_server/languages/gl.php40
-rw-r--r--mod/openid_server/languages/pt.php27
-rwxr-xr-xmod/openid_server/lib/actions.php173
-rwxr-xr-xmod/openid_server/lib/common.php164
-rwxr-xr-xmod/openid_server/lib/session.php140
-rwxr-xr-xmod/openid_server/manifest.xml20
-rwxr-xr-xmod/openid_server/openid_server_include.php340
-rwxr-xr-xmod/openid_server/server.php32
-rwxr-xr-xmod/openid_server/start.php65
-rwxr-xr-xmod/openid_server/views/default/forms/openid_server/trust.php34
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/admin.php154
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/autologin.php22
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/autologout.php24
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/trust.php35
-rwxr-xr-xmod/openid_server/views/default/openid_server/metatags.php6
-rw-r--r--mod/openid_server/views/xrds/openid_server/profile.php11
-rw-r--r--mod/openid_server/views/xrds/openid_server/service.php15
m---------mod/opensearch6
-rw-r--r--mod/opensearch/README21
-rw-r--r--mod/opensearch/languages/ca.php26
-rw-r--r--mod/opensearch/languages/en.php28
-rw-r--r--mod/opensearch/languages/es.php23
-rw-r--r--mod/opensearch/languages/eu.php11
-rwxr-xr-xmod/opensearch/languages/pl.php11
-rw-r--r--mod/opensearch/manifest.xml16
-rw-r--r--mod/opensearch/start.php33
-rw-r--r--mod/opensearch/views/default/opensearch/includes.php10
-rw-r--r--mod/opensearch/views/default/plugins/opensearch/settings.php97
-rw-r--r--mod/opensearch/views/opensearch_rss/page/default.php42
-rw-r--r--mod/opensearch/views/opensearch_rss/page/layouts/default.php5
-rw-r--r--mod/opensearch/views/opensearch_rss/search/layout.php5
-rw-r--r--mod/opensearch/views/opensearch_rss/search/list.php27
-rw-r--r--mod/opensearch/views/xml/opensearch/description.php75
-rw-r--r--mod/pages/actions/annotations/page/delete.php20
-rw-r--r--mod/pages/actions/pages/delete.php31
-rw-r--r--mod/pages/actions/pages/edit.php44
-rw-r--r--mod/pages/languages/en.php10
-rw-r--r--mod/pages/lib/pages.php72
-rw-r--r--mod/pages/pages/pages/edit.php13
-rw-r--r--mod/pages/pages/pages/friends.php2
-rw-r--r--mod/pages/pages/pages/history.php11
-rw-r--r--mod/pages/pages/pages/owner.php6
-rw-r--r--mod/pages/pages/pages/view.php7
-rw-r--r--mod/pages/pages/pages/world.php4
-rw-r--r--mod/pages/start.php54
-rw-r--r--mod/pages/upgrades/2012061800.php49
-rw-r--r--mod/pages/views/default/annotation/page.php18
-rw-r--r--mod/pages/views/default/forms/pages/edit.php30
-rw-r--r--mod/pages/views/default/object/page_top.php29
-rw-r--r--mod/pages/views/default/pages/icon.php2
-rw-r--r--mod/pages/views/default/pages/input/parent.php37
-rw-r--r--mod/pages/views/default/pages/sidebar/history.php1
-rw-r--r--mod/pages/views/default/pages/sidebar/navigation.php6
m---------mod/powered0
-rw-r--r--mod/profile/icondirect.php24
-rw-r--r--mod/profile/start.php2
-rw-r--r--mod/profile/views/default/profile/details.php18
-rw-r--r--mod/profile/views/default/profile/metatags.php4
-rw-r--r--mod/profile_widgets/languages/en.php7
-rw-r--r--mod/profile_widgets/languages/es.php7
-rwxr-xr-xmod/profile_widgets/manifest.xml16
-rw-r--r--mod/profile_widgets/start.php13
-rw-r--r--mod/profile_widgets/views/default/widgets/thewirewrite/view.php11
m---------mod/purity_theme7
m---------mod/registrationterms6
-rw-r--r--mod/registrationterms/.gitignore3
-rw-r--r--mod/registrationterms/README.md9
-rw-r--r--mod/registrationterms/languages/ca.php6
-rw-r--r--mod/registrationterms/languages/en.php6
-rw-r--r--mod/registrationterms/manifest.xml25
-rw-r--r--mod/registrationterms/screenshots/register-form.pngbin0 -> 8653 bytes-rw-r--r--mod/registrationterms/start.php18
-rw-r--r--mod/registrationterms/views/default/registrationterms/register.php17
m---------mod/relatedgroups0
-rw-r--r--mod/reportedcontent/views/default/admin/administer_utilities/reportedcontent.php2
-rw-r--r--mod/reportedcontent/views/default/object/reported_content.php20
-rw-r--r--mod/reportedcontent/views/default/widgets/reportedcontent/content.php5
-rw-r--r--mod/river_privacy/CHANGES.txt7
-rw-r--r--mod/river_privacy/README.md4
-rw-r--r--mod/river_privacy/languages/ca.php7
-rw-r--r--mod/river_privacy/languages/en.php13
-rw-r--r--mod/river_privacy/manifest.xml17
-rw-r--r--mod/river_privacy/start.php30
-rw-r--r--mod/river_privacy/views/default/plugins/river_privacy/settings.php17
-rw-r--r--mod/river_privacy/views_override/default/page/components/list.php89
-rw-r--r--mod/search/README.txt2
-rw-r--r--mod/search/pages/search/index.php12
-rw-r--r--mod/search/search_hooks.php197
-rw-r--r--mod/search/start.php6
-rw-r--r--mod/search/views/default/search/comments/entity.php11
-rw-r--r--mod/search/views/default/search/list.php14
-rw-r--r--mod/search/views/default/search/no_results.php2
-rw-r--r--mod/search/views/default/search/search_box.php6
-rw-r--r--mod/search/views/rss/search/comments/entity.php11
m---------mod/simple_faq0
-rw-r--r--mod/simplepie/README19
-rw-r--r--mod/simplepie/actions/simplepie/save_group_feed.php14
-rw-r--r--mod/simplepie/languages/en.php14
-rw-r--r--mod/simplepie/languages/es.php14
-rw-r--r--mod/simplepie/manifest.xml36
-rw-r--r--mod/simplepie/start.php33
-rw-r--r--mod/simplepie/vendors/simplepie.inc15299
-rw-r--r--mod/simplepie/views/default/forms/simplepie/save_group_feed.php39
-rw-r--r--mod/simplepie/views/default/simplepie/css.php17
-rw-r--r--mod/simplepie/views/default/simplepie/group_module.php109
-rw-r--r--mod/simplepie/views/default/widgets/feed_reader/content.php81
-rw-r--r--mod/simplepie/views/default/widgets/feed_reader/edit.php62
m---------mod/spotlight0
m---------mod/subgroups0
m---------mod/suicide0
-rw-r--r--mod/thewire/actions/delete.php2
-rw-r--r--mod/thewire/pages/thewire/everyone.php2
-rw-r--r--mod/thewire/pages/thewire/friends.php2
-rw-r--r--mod/thewire/pages/thewire/owner.php4
-rw-r--r--mod/thewire/pages/thewire/view.php31
-rw-r--r--mod/thewire/start.php23
-rw-r--r--mod/thewire/upgrades/2012122701-fix_entity_class.php8
-rw-r--r--mod/thewire/views/default/js/thewire.php16
-rw-r--r--mod/thewire/views/default/thewire/css.php3
-rw-r--r--mod/thewire/views/default/thewire/profile_status.php4
-rw-r--r--mod/thewire/views/rss/object/thewire.php2
-rw-r--r--mod/tinymce/README.txt10
-rw-r--r--mod/tinymce/activate.php14
-rw-r--r--mod/tinymce/languages/en.php3
-rw-r--r--mod/tinymce/start.php12
-rw-r--r--mod/tinymce/vendor/tinymce/changelog.txt1414
-rw-r--r--mod/tinymce/vendor/tinymce/examples/full.html4
-rw-r--r--mod/tinymce/vendor/tinymce/examples/lists/media_list.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/en.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js21
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js36
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js58
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js4
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js17
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js41
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js10
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js166
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js38
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js101
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js556
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js20
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/css/props.css1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js22
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/js/props.js80
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/props.htm7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/readme.txt19
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js128
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js4
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js17
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js23
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/row.htm30
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css21
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js63
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js20
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js224
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gifbin11790 -> 11982 bytes-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js25
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js674
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js12
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js32
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css5
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css5
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce_src.js9038
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zu.js1
-rw-r--r--mod/tinymce/views/default/js/tinymce.php17
m---------mod/translation_editor0
-rw-r--r--mod/twitter/graphics/twitter16px.pngbin724 -> 0 bytes-rw-r--r--mod/twitter/languages/en.php16
-rw-r--r--mod/twitter/start.php14
-rw-r--r--mod/twitter/views/default/widgets/twitter/content.php31
-rw-r--r--mod/twitter/views/default/widgets/twitter/edit.php16
-rw-r--r--mod/twitter_api/languages/en.php4
-rw-r--r--mod/twitter_api/lib/twitter_api.php89
-rw-r--r--mod/twitter_api/manifest.xml10
-rw-r--r--mod/twitter_api/pages/twitter_api/interstitial.php4
-rw-r--r--mod/twitter_api/start.php42
-rw-r--r--mod/twitter_api/vendors/twitteroauth/OAuth.php391
-rw-r--r--mod/twitter_api/vendors/twitteroauth/README117
-rw-r--r--mod/twitter_api/vendors/twitteroauth/twitterOAuth.php20
-rw-r--r--mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php7
-rw-r--r--mod/twitter_api/views/default/plugins/twitter_api/settings.php15
-rw-r--r--mod/twitter_api/views/default/twitter_api/css.php2
-rw-r--r--mod/twitter_api/views/default/twitter_api/js.php16
-rw-r--r--mod/twitter_api/views/default/twitter_api/login.php2
m---------mod/upgrade-tools0
-rw-r--r--mod/uservalidationbyemail/start.php22
-rw-r--r--mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php2
m---------mod/videolist6
-rw-r--r--mod/videolist/.gitignore15
-rw-r--r--mod/videolist/CHANGES.txt14
-rw-r--r--mod/videolist/actions/videolist/delete.php39
-rw-r--r--mod/videolist/actions/videolist/edit.php107
-rw-r--r--mod/videolist/graphics/_videolist_icon_medium.pngbin0 -> 4391 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_medium.pngbin0 -> 3840 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_small.pngbin0 -> 1960 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_tiny.pngbin0 -> 1295 bytes-rw-r--r--mod/videolist/languages/ca.php40
-rw-r--r--mod/videolist/languages/en.php78
-rw-r--r--mod/videolist/languages/es.php40
-rw-r--r--mod/videolist/languages/fr.php28
-rw-r--r--mod/videolist/languages/gl.php29
-rw-r--r--mod/videolist/languages/pt.php50
-rw-r--r--mod/videolist/lib/Videolist/Platform/Bliptv.php38
-rw-r--r--mod/videolist/lib/Videolist/Platform/Gisstv.php50
-rw-r--r--mod/videolist/lib/Videolist/Platform/Metacafe.php38
-rw-r--r--mod/videolist/lib/Videolist/Platform/Vimeo.php40
-rw-r--r--mod/videolist/lib/Videolist/Platform/Youtube.php49
-rw-r--r--mod/videolist/lib/Videolist/PlatformInterface.php23
-rw-r--r--mod/videolist/lib/videolist.php46
-rw-r--r--mod/videolist/manifest.xml18
-rw-r--r--mod/videolist/pages/videolist/add.php39
-rw-r--r--mod/videolist/pages/videolist/all.php34
-rw-r--r--mod/videolist/pages/videolist/edit.php49
-rw-r--r--mod/videolist/pages/videolist/friends.php33
-rw-r--r--mod/videolist/pages/videolist/owner.php54
-rw-r--r--mod/videolist/pages/videolist/watch.php42
-rw-r--r--mod/videolist/start.php328
-rw-r--r--mod/videolist/thumbnail.php64
-rw-r--r--mod/videolist/upgrades/2012022501.php82
-rw-r--r--mod/videolist/views/default/forms/videolist/edit.php55
-rw-r--r--mod/videolist/views/default/icon/object/videolist_item.php47
-rw-r--r--mod/videolist/views/default/object/videolist_item.php108
-rw-r--r--mod/videolist/views/default/page/elements/videolist_block.php36
-rw-r--r--mod/videolist/views/default/river/object/videolist_item/create.php15
-rw-r--r--mod/videolist/views/default/videolist/css.php23
-rw-r--r--mod/videolist/views/default/videolist/group_module.php43
-rw-r--r--mod/videolist/views/default/videolist/sidebar.php28
-rw-r--r--mod/videolist/views/default/videolist/watch.php8
-rw-r--r--mod/videolist/views/default/videolist/watch/bliptv.php6
-rw-r--r--mod/videolist/views/default/videolist/watch/gisstv.php7
-rw-r--r--mod/videolist/views/default/videolist/watch/metacafe.php6
-rw-r--r--mod/videolist/views/default/videolist/watch/vimeo.php5
-rw-r--r--mod/videolist/views/default/videolist/watch/youtube.php5
-rw-r--r--mod/videolist/views/default/widgets/videolist/content.php32
-rw-r--r--mod/videolist/views/default/widgets/videolist/edit.php24
-rw-r--r--mod/videolist/views/rss/object/videolist_item.php47
-rw-r--r--pages/account/forgotten_password.php11
-rw-r--r--pages/account/login.php14
-rw-r--r--pages/account/register.php11
-rw-r--r--pages/account/reset_password.php11
-rw-r--r--pages/avatar/edit.php5
-rw-r--r--pages/avatar/view.php2
-rw-r--r--pages/river.php1
-rw-r--r--pages/settings/account.php3
-rw-r--r--pages/settings/statistics.php3
-rw-r--r--pages/settings/tools.php5
-rwxr-xr-xsubtree.sh20
-rw-r--r--upgrade.php21
-rw-r--r--vendors/jquery/i18n/jquery-ui-i18n.js1646
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-af.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ar-DZ.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ar.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-az.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-bg.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-bs.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ca.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-cs.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-cy-GB.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-da.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-de.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-el.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-AU.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-GB.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-NZ.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-eo.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-es.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-et.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-eu.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fa.js59
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fo.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fr-CH.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fr.js25
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-gl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-he.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hu.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hy.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-id.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-is.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-it.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ja.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ka.js21
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-kk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-km.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ko.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lb.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lt.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lv.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-mk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ml.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ms.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-nl-BE.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-nl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-no.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pt-BR.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pt.js22
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-rm.js21
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ro.js26
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ru.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sl.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sq.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sr-SR.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sv.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ta.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-th.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-tj.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-tr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-uk.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-vi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-CN.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-HK.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-TW.js23
-rw-r--r--version.php6
-rw-r--r--views/default/admin/appearance/profile_fields.php12
-rw-r--r--views/default/admin/settings/advanced/site_secret.php11
-rw-r--r--views/default/admin/statistics/server/php.php17
-rw-r--r--views/default/admin/users/admins.php12
-rw-r--r--views/default/annotation/generic_comment.php4
-rw-r--r--views/default/core/avatar/upload.php12
-rw-r--r--views/default/core/friends/collection.php2
-rw-r--r--views/default/core/river/filter.php16
-rw-r--r--views/default/core/settings/account/default_access.php24
-rw-r--r--views/default/core/settings/account/email.php24
-rw-r--r--views/default/core/settings/account/language.php29
-rw-r--r--views/default/core/settings/account/name.php29
-rw-r--r--views/default/core/settings/account/notifications.php45
-rw-r--r--views/default/core/settings/account/password.php54
-rw-r--r--views/default/core/settings/statistics/numentities.php65
-rw-r--r--views/default/core/settings/statistics/online.php53
-rw-r--r--views/default/css/admin.php312
-rw-r--r--views/default/css/elements/forms.php43
-rw-r--r--views/default/css/elements/icons.php4
-rw-r--r--views/default/css/elements/layout.php2
-rw-r--r--views/default/css/elements/modules.php2
-rw-r--r--views/default/css/elements/navigation.php7
-rw-r--r--views/default/css/elements/typography.php3
-rw-r--r--views/default/css/ie.php8
-rw-r--r--views/default/css/ie7.php12
-rw-r--r--views/default/forms/admin/site/regenerate_secret.php24
-rw-r--r--views/default/forms/admin/site/update_advanced.php31
-rw-r--r--views/default/forms/plugins/settings/save.php6
-rw-r--r--views/default/forms/profile/edit.php16
-rw-r--r--views/default/forms/profile/fields/add.php2
-rw-r--r--views/default/forms/profile/fields/reset.php12
-rw-r--r--views/default/forms/register.php2
-rw-r--r--views/default/forms/user/passwordreset.php2
-rw-r--r--views/default/icon/default.php30
-rw-r--r--views/default/input/friendspicker.php37
-rw-r--r--views/default/input/longtext.php2
-rw-r--r--views/default/input/plaintext.php2
-rw-r--r--views/default/input/pulldown.php2
-rw-r--r--views/default/input/text.php1
-rw-r--r--views/default/input/userpicker.php8
-rw-r--r--views/default/js/admin.php11
-rw-r--r--views/default/js/elgg.php7
-rw-r--r--views/default/js/initialize_elgg.php1
-rw-r--r--views/default/js/languages.php28
-rw-r--r--views/default/js/lightbox.php4
-rw-r--r--views/default/js/walled_garden.php33
-rw-r--r--views/default/navigation/menu/elements/item.php6
-rw-r--r--views/default/navigation/pagination.php7
-rw-r--r--views/default/object/default.php1
-rw-r--r--views/default/object/elements/full.php4
-rw-r--r--views/default/object/elements/summary.php6
-rw-r--r--views/default/object/plugin/elements/dependencies.php2
-rw-r--r--views/default/object/plugin/full.php28
-rw-r--r--views/default/object/plugin/invalid.php7
-rw-r--r--views/default/object/widget/elements/controls.php4
-rw-r--r--views/default/object/widget/elements/settings.php14
-rw-r--r--views/default/output/access.php2
-rw-r--r--views/default/output/email.php4
-rw-r--r--views/default/output/location.php5
-rw-r--r--views/default/output/longtext.php2
-rw-r--r--views/default/output/tag.php17
-rw-r--r--views/default/output/tagcloud.php14
-rw-r--r--views/default/output/tags.php19
-rw-r--r--views/default/page/components/list.php17
-rw-r--r--views/default/page/default.php12
-rw-r--r--views/default/page/elements/comments.php5
-rw-r--r--views/default/page/elements/head.php6
-rw-r--r--views/default/page/elements/messages.php2
-rw-r--r--views/default/page/layouts/widgets.php1
-rw-r--r--views/default/page/layouts/widgets/add_panel.php9
-rw-r--r--views/default/page/walled_garden.php15
-rw-r--r--views/default/river/elements/body.php2
-rw-r--r--views/default/river/elements/image.php6
-rw-r--r--views/default/river/elements/summary.php7
-rw-r--r--views/default/widgets/control_panel/content.php26
-rw-r--r--views/default/widgets/new_users/content.php3
-rw-r--r--views/default/widgets/online_users/content.php11
-rw-r--r--views/installation/forms/install/template.php2
-rw-r--r--views/installation/install/js_rewrite_check.php12
-rw-r--r--views/installation/install/pages/admin.php2
-rw-r--r--views/installation/install/pages/complete.php2
-rw-r--r--views/installation/install/pages/database.php4
-rw-r--r--views/installation/install/pages/requirements.php8
-rw-r--r--views/installation/install/pages/settings.php2
-rw-r--r--views/installation/install/pages/welcome.php2
-rw-r--r--views/installation/page/elements/messages.php2
-rw-r--r--views/json/export/entity.php5
-rw-r--r--views/json/group/default.php2
-rw-r--r--views/json/object/default.php2
-rw-r--r--views/json/site/default.php2
-rw-r--r--views/json/user/default.php2
-rw-r--r--views/opendd/messages/exceptions/exception.php2
-rw-r--r--views/rss/group/default.php4
-rw-r--r--views/rss/object/default.php2
-rw-r--r--views/rss/page/default.php2
-rw-r--r--views/rss/user/default.php2
-rw-r--r--views/xml/messages/exceptions/exception.php2
8058 files changed, 392789 insertions, 20413 deletions
diff --git a/.gitignore b/.gitignore
index bf64d4a49..2303faa0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,10 @@
+# ignore Elgg configuration
/engine/settings.php
/engine/handlers/views_simplecache/*
/.htaccess
-/.buildpath
-/.settings
-/.project
/mod/*
+
+# don't ignore bundled plugins
!/mod/blog/
!/mod/bookmarks/
!/mod/categories/
@@ -20,6 +20,7 @@
!/mod/htmlawed/
!/mod/invitefriends/
!/mod/likes/
+!/mod/linkup/
!/mod/logbrowser/
!/mod/logrotate/
!/mod/members/
@@ -39,3 +40,18 @@
!/mod/uservalidationbyemail/
!/mod/zaudio/
+# ignore IDE/hidden/testing/OS cache files
+.*
+*~
+/nbproject
+/nb-configuration.xml
+Session.vim
+*.tmproj
+*.tmproject
+tmtags
+Thumbs.db
+Desktop.ini
+/JsTestDriver-*.jar
+
+# don't ignore travis config
+!/.travis.yml
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 658f562a5..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,72 +0,0 @@
-[submodule "mod/videolist"]
- path = mod/videolist
- url = git://gitorious.org/lorea/videolist.git
-[submodule "mod/dokuwiki"]
- path = mod/dokuwiki
- url = git://gitorious.org/lorea/dokuwiki.git
-[submodule "mod/group_operators"]
- path = mod/group_operators
- url = git://gitorious.org/lorea/group_operators.git
-[submodule "mod/powered"]
- path = mod/powered
- url = git://gitorious.org/lorea/powered.git
-[submodule "mod/group_alias"]
- path = mod/group_alias
- url = git://gitorious.org/lorea/group_alias.git
-[submodule "mod/etherpad"]
- path = mod/etherpad
- url = git://gitorious.org/lorea/elggpad.git
-[submodule "mod/spotlight"]
- path = mod/spotlight
- url = git://gitorious.org/lorea/spotlight.git
-[submodule "mod/suicide"]
- path = mod/suicide
- url = git://gitorious.org/lorea/suicide.git
-[submodule "mod/friendrequest"]
- path = mod/friendrequest
- url = git://gitorious.org/lorea/friendrequest.git
-[submodule "mod/admins"]
- path = mod/admins
- url = git://gitorious.org/lorea/admins.git
-[submodule "mod/opensearch"]
- path = mod/opensearch
- url = git://gitorious.org/lorea/opensearch.git
-[submodule "mod/minify"]
- path = mod/minify
- url = git://gitorious.org/lorea/minify.git
-[submodule "mod/magic_topbar"]
- path = mod/magic_topbar
- url = git://gitorious.org/lorea/magic_topbar.git
-[submodule "mod/audio_html5"]
- path = mod/audio_html5
- url = git://gitorious.org/lorea/audio_html5.git
-[submodule "mod/relatedgroups"]
- path = mod/relatedgroups
- url = git://gitorious.org/lorea/relatedgroups.git
-[submodule "mod/subgroups"]
- path = mod/subgroups
- url = git://gitorious.org/lorea/subgroups.git
-[submodule "mod/identica"]
- path = mod/identica
- url = git://gitorious.org/lorea/identica.git
-[submodule "mod/elggpg"]
- path = mod/elggpg
- url = git://gitorious.org/lorea/elggpg.git
-[submodule "mod/languages"]
- path = mod/languages
- url = git://gitorious.org/lorea/languages.git
-[submodule "mod/translation_editor"]
- path = mod/translation_editor
- url = git://gitorious.org/lorea/translation_editor.git
-[submodule "mod/gifts"]
- path = mod/gifts
- url = git://gitorious.org/lorea/gifts.git
-[submodule "mod/online"]
- path = mod/online
- url = git://gitorious.org/lorea/online.git
-[submodule "mod/infinite_scroll"]
- path = mod/infinite_scroll
- url = git://gitorious.org/lorea/infinite_scoll.git
-[submodule "mod/registrationterms"]
- path = mod/registrationterms
- url = git://gitorious.org/lorea/registrationterms.git
diff --git a/.tx/config b/.tx/config
new file mode 100644
index 000000000..b1600d70c
--- /dev/null
+++ b/.tx/config
@@ -0,0 +1,501 @@
+[main]
+host = https://www.transifex.com
+
+[lorea.engine]
+file_filter = languages/<lang>.php
+source_file = languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.blog]
+file_filter = mod/blog/languages/<lang>.php
+source_file = mod/blog/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.bookmarks]
+file_filter = mod/bookmarks/languages/<lang>.php
+source_file = mod/bookmarks/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.categories]
+file_filter = mod/categories/languages/<lang>.php
+source_file = mod/categories/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.ckeditor]
+file_filter = mod/ckeditor/languages/<lang>.php
+source_file = mod/ckeditor/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.custom_index]
+file_filter = mod/custom_index/languages/<lang>.php
+source_file = mod/custom_index/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.dashboard]
+file_filter = mod/dashboard/languages/<lang>.php
+source_file = mod/dashboard/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.developers]
+file_filter = mod/developers/languages/<lang>.php
+source_file = mod/developers/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.diagnostics]
+file_filter = mod/diagnostics/languages/<lang>.php
+source_file = mod/diagnostics/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.embed]
+file_filter = mod/embed/languages/<lang>.php
+source_file = mod/embed/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.externalpages]
+file_filter = mod/externalpages/languages/<lang>.php
+source_file = mod/externalpages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.file]
+file_filter = mod/file/languages/<lang>.php
+source_file = mod/file/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.garbagecollector]
+file_filter = mod/garbagecollector/languages/<lang>.php
+source_file = mod/garbagecollector/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.groups]
+file_filter = mod/groups/languages/<lang>.php
+source_file = mod/groups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.invitefriends]
+file_filter = mod/invitefriends/languages/<lang>.php
+source_file = mod/invitefriends/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.likes]
+file_filter = mod/likes/languages/<lang>.php
+source_file = mod/likes/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.logbrowser]
+file_filter = mod/logbrowser/languages/<lang>.php
+source_file = mod/logbrowser/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.logrotate]
+file_filter = mod/logrotate/languages/<lang>.php
+source_file = mod/logrotate/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.members]
+file_filter = mod/members/languages/<lang>.php
+source_file = mod/members/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.messageboard]
+file_filter = mod/messageboard/languages/<lang>.php
+source_file = mod/messageboard/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.messages]
+file_filter = mod/messages/languages/<lang>.php
+source_file = mod/messages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.notifications]
+file_filter = mod/notifications/languages/<lang>.php
+source_file = mod/notifications/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.pages]
+file_filter = mod/pages/languages/<lang>.php
+source_file = mod/pages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.profile]
+file_filter = mod/profile/languages/<lang>.php
+source_file = mod/profile/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.reportedcontent]
+file_filter = mod/reportedcontent/languages/<lang>.php
+source_file = mod/reportedcontent/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.search]
+file_filter = mod/search/languages/<lang>.php
+source_file = mod/search/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tagcloud]
+file_filter = mod/tagcloud/languages/<lang>.php
+source_file = mod/tagcloud/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.thewire]
+file_filter = mod/thewire/languages/<lang>.php
+source_file = mod/thewire/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.twitter]
+file_filter = mod/twitter/languages/<lang>.php
+source_file = mod/twitter/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.twitter_api]
+file_filter = mod/twitter_api/languages/<lang>.php
+source_file = mod/twitter_api/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.uservalidationbyemail]
+file_filter = mod/uservalidationbyemail/languages/<lang>.php
+source_file = mod/uservalidationbyemail/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.install]
+file_filter = install/languages/<lang>.php
+source_file = install/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.admins]
+file_filter = mod/admins/languages/<lang>.php
+source_file = mod/admins/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.assemblies]
+file_filter = mod/assemblies/languages/<lang>.php
+source_file = mod/assemblies/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elggman]
+file_filter = mod/elggman/languages/<lang>.php
+source_file = mod/elggman/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.autosubscribegroup]
+file_filter = mod/autosubscribegroup/languages/<lang>.php
+source_file = mod/autosubscribegroup/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.beechat]
+file_filter = mod/beechat/languages/<lang>.php
+source_file = mod/beechat/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.captcha]
+file_filter = mod/captcha/languages/<lang>.php
+source_file = mod/captcha/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.cic_theme]
+file_filter = mod/cic_theme/languages/<lang>.php
+source_file = mod/cic_theme/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.colorbox]
+file_filter = mod/colorbox/languages/<lang>.php
+source_file = mod/colorbox/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.crud]
+file_filter = mod/crud/languages/<lang>.php
+source_file = mod/crud/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.curatedgroups]
+file_filter = mod/curatedgroups/languages/<lang>.php
+source_file = mod/curatedgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.custom_index_widgets]
+file_filter = mod/custom_index_widgets/languages/<lang>.php
+source_file = mod/custom_index_widgets/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.dokuwiki]
+file_filter = mod/dokuwiki/languages/<lang>.php
+source_file = mod/dokuwiki/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-activitystreams]
+file_filter = mod/elgg-activitystreams/languages/<lang>.php
+source_file = mod/elgg-activitystreams/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-ostatus]
+file_filter = mod/elgg-ostatus/languages/<lang>.php
+source_file = mod/elgg-ostatus/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elggpg]
+file_filter = mod/elggpg/languages/<lang>.php
+source_file = mod/elggpg/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-push]
+file_filter = mod/elgg-push/languages/<lang>.php
+source_file = mod/elgg-push/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.email_revalidate]
+file_filter = mod/email_revalidate/languages/<lang>.php
+source_file = mod/email_revalidate/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.etherpad]
+file_filter = mod/etherpad/languages/<lang>.php
+source_file = mod/etherpad/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.favorites]
+file_filter = mod/favorites/languages/<lang>.php
+source_file = mod/favorites/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.federated-objects]
+file_filter = mod/federated-objects/languages/<lang>.php
+source_file = mod/federated-objects/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.friendrequest]
+file_filter = mod/friendrequest/languages/<lang>.php
+source_file = mod/friendrequest/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.gifts]
+file_filter = mod/gifts/languages/<lang>.php
+source_file = mod/gifts/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.group_alias]
+file_filter = mod/group_alias/languages/<lang>.php
+source_file = mod/group_alias/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.group_operators]
+file_filter = mod/group_operators/languages/<lang>.php
+source_file = mod/group_operators/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.identica]
+file_filter = mod/identica/languages/<lang>.php
+source_file = mod/identica/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.infinite_scroll]
+file_filter = mod/infinite_scroll/languages/<lang>.php
+source_file = mod/infinite_scroll/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.landing]
+file_filter = mod/landing/languages/<lang>.php
+source_file = mod/landing/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.lightpics]
+file_filter = mod/lightpics/languages/<lang>.php
+source_file = mod/lightpics/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.linkup]
+file_filter = mod/linkup/languages/<lang>.php
+source_file = mod/linkup/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.livestream]
+file_filter = mod/livestream/languages/<lang>.php
+source_file = mod/livestream/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.microthemes]
+file_filter = mod/microthemes/languages/<lang>.php
+source_file = mod/microthemes/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.n1_theme]
+file_filter = mod/n1_theme/languages/<lang>.php
+source_file = mod/n1_theme/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.openid_client]
+file_filter = mod/openid_client/languages/<lang>.php
+source_file = mod/openid_client/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.opensearch]
+file_filter = mod/opensearch/languages/<lang>.php
+source_file = mod/opensearch/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.profile_widgets]
+file_filter = mod/profile_widgets/languages/<lang>.php
+source_file = mod/profile_widgets/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.proposals]
+file_filter = mod/proposals/languages/<lang>.php
+source_file = mod/proposals/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.registrationterms]
+file_filter = mod/registrationterms/languages/<lang>.php
+source_file = mod/registrationterms/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.relatedgroups]
+file_filter = mod/relatedgroups/languages/<lang>.php
+source_file = mod/relatedgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.river_privacy]
+file_filter = mod/river_privacy/languages/<lang>.php
+source_file = mod/river_privacy/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.simple_faq]
+file_filter = mod/simple_faq/languages/<lang>.php
+source_file = mod/simple_faq/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.simplepie]
+file_filter = mod/simplepie/languages/<lang>.php
+source_file = mod/simplepie/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.spotlight]
+file_filter = mod/spotlight/languages/<lang>.php
+source_file = mod/spotlight/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.subgroups]
+file_filter = mod/subgroups/languages/<lang>.php
+source_file = mod/subgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.suicide]
+file_filter = mod/suicide/languages/<lang>.php
+source_file = mod/suicide/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tasks]
+file_filter = mod/tasks/languages/<lang>.php
+source_file = mod/tasks/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.threads]
+file_filter = mod/threads/languages/<lang>.php
+source_file = mod/threads/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tinymce]
+file_filter = mod/tinymce/languages/<lang>.php
+source_file = mod/tinymce/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.uservalidationbyadmin]
+file_filter = mod/uservalidationbyadmin/languages/<lang>.php
+source_file = mod/uservalidationbyadmin/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.videolist]
+file_filter = mod/videolist/languages/<lang>.php
+source_file = mod/videolist/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.openid_server]
+file_filter = mod/openid_server/languages/<lang>.php
+source_file = mod/openid_server/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.event_calendar]
+file_filter = mod/event_calendar/languages/<lang>.php
+source_file = mod/event_calendar/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
diff --git a/CHANGES.txt b/CHANGES.txt
index 11060aa2d..f6974a3ae 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,386 @@
+Version 1.8.18
+(January 11, 2014 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Juho Jaakkola
+ * Steve Clay
+
+ Bugfixes:
+ * Fixes notify_user() broken in 1.8.17
+
+
+Version 1.8.17
+(January 1, 2014 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Ed Lyons
+ * Evan Winslow
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Juho Jaakkola
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Fixes:
+ * Specially-crafted request could return the contents of sensitive files.
+ * Reflected XSS attack was possible against 1.8 systems.
+ * The cryptographic key used for various purposes may have been generated with weak entropy, particularly on Windows.
+
+ Bugfixes:
+ * URLs with non-ASCII usernames again work
+ * Floated images are now properly cleared in content areas
+ * The activity page title now matches the document title
+ * Search again supports multiple comments on the same entity
+ * Blog archive sidebar now reverse chronological
+ * URLs with matching parens can now be auto-linked
+ * Log browser links for users now work
+ * Disabling over 50 objects should no longer result in an infinite loop
+ * Radio/checkbox inputs no longer have border radius (for IE10)
+ * User picker: the Only Friends checkbox again works
+ * Group bookmarklet no longer shown to non-members
+ * Widget reordering fixed when moving across columns
+ * Refuse to deactivate plugins needed as dependencies
+
+ Enhancements:
+ * Group member listings are ordered by name
+ * The system_log table can now store IPv6 addresses
+ * Web services auth_gettoken() now accepts email address
+ * List functions: no need to specify pagination for unlimited queries
+ * Htmlawed was upgraded to 1.1.16
+
+
+Version 1.8.16
+(June 25, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Jeff Tilson
+ * Jerome Bakker
+ * Paweł Sroka
+ * Steve Clay
+
+ Security Fixes:
+ * Fixed avatar removal bug (thanks to Jerome Bakker for the first report of this)
+
+ Bugfixes:
+ * Fixed infinite loop when deleting/disabling an entity with > 50 annotations
+ * Fixed deleting log tables in log rotate plugin
+ * Added full text index for groups if missing
+ * Added workaround for IE8 and jumping user avatar
+ * Fixed pagination for members pages
+ * Fixed several internal cache issues
+ * Plus many more bug fixes
+
+
+Version 1.8.15
+(April 23, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Cash Costello
+ * Ismayil Khayredinov
+ * Jeff Tilson
+ * Juho Jaakkola
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+ * Tom Voorneveld
+
+ Bugfixes:
+ * Not displaying http:// on profiles when website isn't set
+ * Fixed pagination display issue for small screens
+ * Not hiding subpages of top level pages that have been deleted
+ * Stop corrupting JavaScript views with elgg deprecation messages
+ * Fixed out of memory error due to query cache
+ * Fixed bug preventing users authorizing Twitter account access
+ * Fixed friends access level for editing pages
+ * Fixed uploading files within the embed dialog
+
+ Enhancements:
+ * Added browser caching of language JS files
+ * Adding nofollow on user posted URLs for spam deterrence (thanks to Hellekin)
+ * Auto-registering views for simplecache when their URL is requested
+ * Display helpful message for those who have site URL configuration issues
+ * Can revert to a previous revision with pages plugin
+ * Site owners can turn off posting wire messages to Twitter
+ * Search results are sorted by relevance
+
+ Dropped Plugins:
+ * Twitter widget due to changes in Twitter API and terms of service
+ * OAuth API plugin due to conflicts with the Twitter API plugin
+
+
+Version 1.8.14
+(March 12, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Aday Talavera
+ * Brett Profitt
+ * Cash Costello
+ * Ed Lyons
+ * German Bortoli
+ * Hellekin Wolf
+ * iionly
+ * Jerome Bakker
+ * Luciano Lima
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Fixes:
+ * Fixed a XSS vulnerability when accepting URLs on user profiles
+ * Fixed bug that exposed subject lines of messages in inbox
+ * Added requirement for CSRF token for login
+
+ Bugfixes:
+ * Strip html tags from tag input
+ * Fixed several display issues for IE7
+ * Fixed several issues with blog drafts
+ * Fixed repeated token timeout errors
+ * Fixed JavaScript localization for non-English languages
+
+ Enhancements:
+ * Web services fall back to json if the viewtype is invalid
+
+
+Version 1.8.13
+(January 29, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Cash Costello
+ * Juho Jaakkola
+ * Kevin Jardine
+ * Krzysztof Różalski
+ * Steve Clay
+
+ Security Fixes:
+ * Added validation of Twitter usernames in Twitter widget
+
+ Bugfixes:
+ * CLI usages with walled garden fixed
+ * Upgrading from < 1.8 to 1.8 fixed
+ * Default widgets fixed
+ * Quotes in object titles no longer result in "qout" in URLs
+ * List of my groups is ordered now
+ * Language string river:comment:object:default is defined now
+ * Added language string for comments: generic_comment:on
+
+ Enhancements:
+ * Added confirm dialog for resetting profile fields (adds language string profile:resetdefault:confirm)
+
+
+Version 1.8.12
+(January 4th, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Jerome Bakker
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Bugfixes:
+ * Added an AJAX workaround for the rewrite test.
+ * Code cleanup to prevent some notices and warnings.
+ * Removed "original_order" in menu item anchor tags.
+ * Site menu's selected item correctly persists through content pages.
+ * Static caches rewritten and improved to prevent stale data being returned.
+ * Installation: Invalid characters in admin username are handled correctly.
+ * Messages: Fixed inbox link in email notifications.
+ * The Wire: Fixed objects not displaying correctly when upgrading from 1.7.
+
+ Enhancements:
+ * Performance improvements and improved caching in entity loading.
+ * Added upgrade locking to prevent concurrent upgrade attempts.
+ * Replaced xml_to_object() and autop() with GPL / MIT-compatible code.
+ * Error messages (register_error()) only fade after being clicked.
+ * Groups: Added a sidebar entry to display membership status and a link to
+ group notification settings.
+ * Groups: Added pending membership and invitation requests to the sidebar.
+ * Groups: Better redirection for invisible and closed groups.
+ * Search: User profile fields are searched.
+ * Pages: Subpages can be reassigned to new parent pages.
+ * Twitter: Login with twitter supports persistent login and correctly forwards
+ after login.
+
+
+Version 1.8.11
+(December 5th, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Bugfix:
+ * Fixed fatal error in group creation form
+
+
+Version 1.8.10
+(December 4th, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Krzysztof Różalski
+ * Lars Hærvig
+ * Paweł Sroka
+ * RiverVanRain
+ * Sem
+ * Steve Clay
+
+ Security Enhancements:
+ * Cached metadata respects access restrictions to fix problems with profile
+ field display.
+ * Group RSS feeds are restricted to valid entities
+
+ Enhancements:
+ * UX: Added a list of Administrators in the admin area
+ * UX: Limiting message board activity stream entries to excerpts
+ * Performance: Prefetching river entries
+ * Performance: Plugin entities are cached
+
+ Bugfixes:
+ * Removed superfluous commas in JS files to fix IE compatibility.
+ * API: Fixed Twitter API.
+ * Performance: Outputting valid ETags and expires headers.
+
+
+Version 1.8.9
+(November 11, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Evan Winslow
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Enhancements:
+ * Sample CLI installer cannot break site
+ * Removed XSS vulnerabilities in titles and user profiles
+
+ Enhancements:
+ * UX: A group's owner can transfer ownership to another member
+ * UX: Search queries persist in the search box
+ * Several (X)HTML validation improvements
+ * Improved performance via more aggressive entity and metadata caching
+ * BC: 1.7 group profile URLs forward correctly
+
+ Bugfixes:
+ * UX: Titles containing HTML tokens are never mangled
+ * UX: Empty user profile values saved properly
+ * UX: Blog creator always mentioned in activity stream (not user who published it)
+ * UI: Fixed ordering of registered menu items in some cases
+ * UI: Embed dialog does not break file inputs
+ * UI: Datepicker now respects language
+ * UI: More reliable display of access input in widgets
+ * UI: Group edit form is sticky
+ * UI: Site categories are sticky in forms
+ * API: Language fallback works in Javascript
+ * API: Fallback to default viewtype if invalid one given
+ * API: Notices reported for missing language keys
+ * Memcache now safe to use; never bypasses access control
+ * BC: upgrade shows comments consistently in activity stream
+
+
+Version 1.8.8
+(July 11, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Cash Costello
+ * Miguel Rodriguez
+ * Sem
+
+ Enhancements:
+ * Added a delete button on river items for admins
+
+ Bugfixes:
+ * Fixed the significant bug with htmlawed plugin that caused duplicate tags
+
+
+Version 1.8.7
+(July 10, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Cash Costello
+ * Evan Winslow
+ * Ismayil Khayredinov
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Matt Beckett
+ * Miguel Rodriguez
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Enhancements:
+ * Better support for search engine friendly URLs
+ * Upgraded htmlawed (XSS filtering)
+ * Internationalization support for TinyMCE
+ * Public access not available for walled gardens
+ * Better forwarding and messages when they cannot view content because logged out
+
+ Bugfixes:
+ * Fatal errors due to type hints downgraded to warnings
+ * Group discussion reply notifications work again
+ * Sending user to inbox when deleting a message
+ * Fixed location profile information when it is an array
+ * Over 30 other bug fixes.
+
+
+Version 1.8.6
+(June 18, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Cash Costello
+ * Evan Winslow
+ * Ismayil Khayredinov
+ * Jeff Tilson
+ * Jerome Bakker
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Enhancements:
+ * New ajax spinner
+ * Detecting docx, xlsx, and pptx files in file plugin
+ * Showing ajax spinner when uploading file with embed plugin
+
+ Bugfixes:
+ * Fixed some language caching issues.
+ * Users can add sub-pages to another user's page in a group.
+ * Over 30 other bug fixes.
+
+
+Version 1.8.5
+(May 17, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Brett Profitt
+ * Evan Winslow
+ * Sem
+ * Steve Clay
+ * Jeroen Dalsem
+ * Jerome Bakker
+
+ Security Enhancements:
+ * Fixed possible XSS vulnerability if using a crafted URL.
+ * Fixed exploit to bypass new user validation if using a crafted form.
+ * Fixed incorrect caching of access lists that could allow plugins
+ to show private entities to non-admin and non-owning users. (Non-exploitable)
+
+ Bugfixes:
+ * Twitter API: New users are forwarded to the correct page after creating
+ an account with Twitter.
+ * Files: PDF files are downloaded as "inline" to display in the browser.
+ * Fixed possible duplication errors when writing metadata with multiple values.
+ * Fixed possible upgrade issue if using a plugin uses the system_log hooks.
+ * Fixed problems when enabling more than 50 metadata or annotations.
+
+ API:
+ * River entries' timestamps use elgg_view_friendly_time() and can be
+ overridden with the friendly time output view.
+
+
Version 1.8.4
(April 24, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 0163757e7..a8e74d3a4 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -1,6 +1,7 @@
The following have made notable contributions to the Elgg Project.
(List in alphabetical order.)
+Steve Clay - http://www.mrclay.org/, https://twitter.com/mrclay_org
Cash Costello - cash@elgg.org, http://cashcostello.com/
@@ -20,10 +21,10 @@ Tom Read - MITRE http://mitre.org/
Justin Richer - MITRE http://mitre.org/
-Dave Tosh - davidgtosh@gmail.com, http://twitter.com/davetosh
+Dave Tosh - davidgtosh@gmail.com, http://twitter.com/davetosh
Ben Werdmuller - http://benwerd.com/
-Nicholas Whitt - nick.whitt@gmail.com, http://twitter.com/nogoodnick
+Nicholas Whitt - nick.whitt@gmail.com, http://twitter.com/nogoodnick
Evan Winslow - evan@elgg.org, http://evanwinslow.com/
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 76781f25a..262515386 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -6,6 +6,7 @@ The MITRE Corportation (jricher@mitre.org)
Curverider Ltd (info@elgg.com)
Individuals:
+Steve Clay (steve@mrclay.org)
Cash Costello (cash.costello@gmail.com)
Brett Profitt (brett.profitt@gmail.com)
Dave Tosh (davidgtosh@gmail.com)
diff --git a/INSTALL.txt b/INSTALL.txt
index f558a26e2..f4ecbffe1 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -11,7 +11,8 @@ TECHNICAL REQUIREMENTS
Elgg runs on a combination of the Apache web server, MySQL database
system and the PHP interpreted scripting language. This is the most
-popular web server environment in the world.
+popular web server environment in the world. (Elgg can also run on
+other web servers such a nginx and IIS, but requires further configuration).
Due to Elgg's advanced functionality, there are some extra
configuration requirements:
@@ -20,25 +21,17 @@ configuration requirements:
modules:
o mod_rewrite
o PHP
- * MySQL 5+ with sql_mode in standard mode (ie not in traditional
- or any other mode).
- * PHP 5.2+ needs to be installed as an Apache module (not in CGI
- mode or safe mode) with the following libraries:
- o GD (for graphics processing, eg user icon rescaling)
- o JSON (for API functionality)
- o XML (not installed/compiled by default on all systems)
- o Multibyte String support (for internationalisation)
+ * MySQL 5+.
+ * PHP 5.2+ needs to be installed as an Apache module
+ with the following libraries:
+ o GD (for graphics processing such as avatar cropping)
+ o Multibyte String support (for internationalization)
It is recommended that you increase the memory available to PHP
threads beyond the standard 8 or 12M, and increase the maximum
uploaded filesize (which defaults to 2M). In both cases, this can be
found in your php.ini.
- * The following PHP libraries are also recommended for some
- plugins and extra functionality:
- o SOAP
- o DOM
-
INSTALLING ELGG
@@ -104,7 +97,8 @@ If your web server does not have permission to create these files, you
will need to either
1. Change the permissions on the directory where you are installing
- Elgg and the engine directory and try again.
+ Elgg and the engine directory and try again. Remember to change the
+ permissions back to the original values after installation is complete.
2. Copy engine/settings.example.php to engine/settings.php, open
it up in a text editor and fill in your database details. Then
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..a1b3e1cbf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+Lorea
+=====
+
+(Re-)Taking the Networks!
+
+The [lorea](https://lorea.org) code aims at providing individuals and teams with privacy-aware, security-conscious, and user-controlled-data collaborative tools over the Web, and around it.
+
+The main application is based on [Elgg](http://elgg.org), a PHP-based social networking platform. Lorea extends it with plugins to provide better privacy features, including strong encryption, *OStatus-based federation* with other Lorea/Elgg installations and OStatus-compliant projects, etc.
+
+It also integrates other popular technologies such as [DokuWiki](http://www.dokuwiki.org), [Etherpad](http://etherpad.org), [XMPP](http://xmpp.org), etc., and provides *GPG-encrypted mailing-lists* to groups.
+
+### Installation
+
+Our code is divided in two git repositories: elgg and lorea-plugins. You can get it using the following commands.
+
+<pre>
+$ git clone git://gitorious.org/lorea/elgg.git
+$ cd elgg
+$ git remote add lorea-plugins git://gitorious.org/lorea/lorea-plugins.git
+$ git pull lorea-plugins master
+</pre>
+
+You can update the code to the latest release using:
+
+<pre>
+$ git pull origin master
+$ git pull lorea-plugins master
+</pre>
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 3cffcc8c7..000000000
--- a/README.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Elgg
-Copyright (c) 2008-2011 See COPYRIGHT.txt
-
-See CONTRIBUTORS.txt for development credits.
-
-Elgg is managed by the Elgg Foundation, a nonprofit organization that was
-founded to govern, protect, and promote the Elgg open source social network
-engine. The Foundation aims to provide a stable, commercially and
-individually independent organization that moves in the best interest of Elgg
-as an open source project.
-
-The project site can be found at http://elgg.org/
-
-The Elgg project was started in 2004 by:
-Ben Werdmuller <ben@benwerd.com, http://benwerd.com> and
-Dave Tosh <davidgtosh@gmail.com>
-
-Elgg is released under the GNU General Public License (GPL) Version 2 and the
-Massachusetts Institute of Technology (MIT) License. See LICENSE.txt
-in the root of the package you downloaded.
-
-For installation instructions, see INSTALL.txt.
-
-For upgrade instructions, see UPGRADE.txt. \ No newline at end of file
diff --git a/_graphics/ajax_loader.gif b/_graphics/ajax_loader.gif
index 5a9af96d2..b55e148bb 100644
--- a/_graphics/ajax_loader.gif
+++ b/_graphics/ajax_loader.gif
Binary files differ
diff --git a/_graphics/ajax_loader_bw.gif b/_graphics/ajax_loader_bw.gif
index 95bad9128..e195e1fd8 100644
--- a/_graphics/ajax_loader_bw.gif
+++ b/_graphics/ajax_loader_bw.gif
Binary files differ
diff --git a/_graphics/walled_garden/one_column_bottom.png b/_graphics/walled_garden/one_column_bottom.png
index 1dfd7f8ad..bd2296896 100644
--- a/_graphics/walled_garden/one_column_bottom.png
+++ b/_graphics/walled_garden/one_column_bottom.png
Binary files differ
diff --git a/_graphics/walled_garden/one_column_top.png b/_graphics/walled_garden/one_column_top.png
index 429a88b75..dc8de438a 100644
--- a/_graphics/walled_garden/one_column_top.png
+++ b/_graphics/walled_garden/one_column_top.png
Binary files differ
diff --git a/_graphics/walled_garden/two_column_bottom.png b/_graphics/walled_garden/two_column_bottom.png
index 8aeceeeee..21e076991 100644
--- a/_graphics/walled_garden/two_column_bottom.png
+++ b/_graphics/walled_garden/two_column_bottom.png
Binary files differ
diff --git a/_graphics/walled_garden/two_column_top.png b/_graphics/walled_garden/two_column_top.png
index c28b3f630..cd71a4262 100644
--- a/_graphics/walled_garden/two_column_top.png
+++ b/_graphics/walled_garden/two_column_top.png
Binary files differ
diff --git a/actions/admin/plugins/activate.php b/actions/admin/plugins/activate.php
index 286cf5a4f..5234a4ca5 100644
--- a/actions/admin/plugins/activate.php
+++ b/actions/admin/plugins/activate.php
@@ -47,7 +47,8 @@ if (count($activated_guids) === 1) {
$url .= "?$query";
}
$plugin = get_entity($plugin_guids[0]);
- forward("$url#{$plugin->getID()}");
+ $id = $css_id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
+ forward("$url#$id");
} else {
// forward to top of page with a failure so remove any #foo
$url = $_SERVER['HTTP_REFERER'];
diff --git a/actions/admin/plugins/deactivate.php b/actions/admin/plugins/deactivate.php
index e7ce65625..354f4717d 100644
--- a/actions/admin/plugins/deactivate.php
+++ b/actions/admin/plugins/deactivate.php
@@ -46,7 +46,8 @@ if (count($plugin_guids) == 1) {
$url .= "?$query";
}
$plugin = get_entity($plugin_guids[0]);
- forward("$url#{$plugin->getID()}");
+ $id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
+ forward("$url#$id");
} else {
forward(REFERER);
}
diff --git a/actions/admin/site/regenerate_secret.php b/actions/admin/site/regenerate_secret.php
new file mode 100644
index 000000000..3112fb5f3
--- /dev/null
+++ b/actions/admin/site/regenerate_secret.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Generate a new site secret
+ */
+
+init_site_secret();
+elgg_reset_system_cache();
+
+system_message(elgg_echo('admin:site:secret_regenerated'));
+
+forward(REFERER);
diff --git a/actions/admin/site/unlock_upgrade.php b/actions/admin/site/unlock_upgrade.php
new file mode 100644
index 000000000..b625b1d26
--- /dev/null
+++ b/actions/admin/site/unlock_upgrade.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Unlocks the upgrade script
+ */
+
+if (_elgg_upgrade_is_locked()) {
+ _elgg_upgrade_unlock();
+}
+system_message(elgg_echo('upgrade:unlock:success'));
+forward(REFERER);
diff --git a/actions/admin/site/update_advanced.php b/actions/admin/site/update_advanced.php
index 897a2f983..4888b0a8d 100644
--- a/actions/admin/site/update_advanced.php
+++ b/actions/admin/site/update_advanced.php
@@ -14,10 +14,10 @@ if ($site = elgg_get_site_entity()) {
throw new InstallationException(elgg_echo('InvalidParameterException:NonElggSite'));
}
- $site->url = get_input('wwwroot');
+ $site->url = rtrim(get_input('wwwroot', '', false), '/') . '/';
- datalist_set('path', sanitise_filepath(get_input('path')));
- $dataroot = sanitise_filepath(get_input('dataroot'));
+ datalist_set('path', sanitise_filepath(get_input('path', '', false)));
+ $dataroot = sanitise_filepath(get_input('dataroot', '', false));
// check for relative paths
if (stripos(PHP_OS, 'win') === 0) {
@@ -53,8 +53,6 @@ if ($site = elgg_get_site_entity()) {
$user_default_access = (get_input('allow_user_default_access')) ? 1 : 0;
set_config('allow_user_default_access', $user_default_access, $site->getGUID());
- set_config('view', get_input('view'), $site->getGUID());
-
$debug = get_input('debug');
if ($debug) {
set_config('debug', $debug, $site->getGUID());
diff --git a/actions/admin/site/update_basic.php b/actions/admin/site/update_basic.php
index 97d258b65..9765182cc 100644
--- a/actions/admin/site/update_basic.php
+++ b/actions/admin/site/update_basic.php
@@ -16,7 +16,7 @@ if ($site = elgg_get_site_entity()) {
}
$site->description = get_input('sitedescription');
- $site->name = get_input('sitename');
+ $site->name = strip_tags(get_input('sitename'));
$site->email = get_input('siteemail');
$site->save();
diff --git a/actions/avatar/remove.php b/actions/avatar/remove.php
new file mode 100644
index 000000000..9cb40a760
--- /dev/null
+++ b/actions/avatar/remove.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Avatar remove action
+ */
+
+$user_guid = get_input('guid');
+$user = get_user($user_guid);
+
+if (!$user || !$user->canEdit()) {
+ register_error(elgg_echo('avatar:remove:fail'));
+ forward(REFERER);
+}
+
+// Delete all icons from diskspace
+$icon_sizes = elgg_get_config('icon_sizes');
+foreach ($icon_sizes as $name => $size_info) {
+ $file = new ElggFile();
+ $file->owner_guid = $user_guid;
+ $file->setFilename("profile/{$user_guid}{$name}.jpg");
+ $filepath = $file->getFilenameOnFilestore();
+ if (!$file->delete()) {
+ elgg_log("Avatar file remove failed. Remove $filepath manually, please.", 'WARNING');
+ }
+}
+
+// Remove crop coords
+unset($user->x1);
+unset($user->x2);
+unset($user->y1);
+unset($user->y2);
+
+// Remove icon
+unset($user->icontime);
+
+system_message(elgg_echo('avatar:remove:success'));
+forward(REFERER);
diff --git a/actions/avatar/revert.php b/actions/avatar/revert.php
deleted file mode 100644
index 8cff40a68..000000000
--- a/actions/avatar/revert.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Avatar revert action
- */
-
-$guid = get_input('guid');
-$user = get_entity($guid);
-if ($user) {
- unset($user->icontime);
- system_message(elgg_echo('avatar:revert:success'));
-} else {
- register_error(elgg_echo('avatar:revert:fail'));
-}
-
-forward(REFERER);
diff --git a/actions/comments/delete.php b/actions/comments/delete.php
index f8458a152..c6b481da4 100644
--- a/actions/comments/delete.php
+++ b/actions/comments/delete.php
@@ -5,26 +5,14 @@
* @package Elgg
*/
-// Ensure we're logged in
-if (!elgg_is_logged_in()) {
- forward();
-}
-
// Make sure we can get the comment in question
$annotation_id = (int) get_input('annotation_id');
-if ($comment = elgg_get_annotation_from_id($annotation_id)) {
-
- $entity = get_entity($comment->entity_guid);
-
- if ($comment->canEdit()) {
- $comment->delete();
- system_message(elgg_echo("generic_comment:deleted"));
- forward($entity->getURL());
- }
-
+$comment = elgg_get_annotation_from_id($annotation_id);
+if ($comment && $comment->canEdit()) {
+ $comment->delete();
+ system_message(elgg_echo("generic_comment:deleted"));
} else {
- $url = "";
+ register_error(elgg_echo("generic_comment:notdeleted"));
}
-register_error(elgg_echo("generic_comment:notdeleted"));
forward(REFERER); \ No newline at end of file
diff --git a/actions/friends/collections/add.php b/actions/friends/collections/add.php
index 1e2bc1d5c..e63a149f7 100644
--- a/actions/friends/collections/add.php
+++ b/actions/friends/collections/add.php
@@ -6,7 +6,7 @@
* @subpackage Friends.Collections
*/
-$collection_name = get_input('collection_name');
+$collection_name = htmlspecialchars(get_input('collection_name', '', false), ENT_QUOTES, 'UTF-8');
$friends = get_input('friends_collection');
if (!$collection_name) {
@@ -20,8 +20,7 @@ if ($id) {
$result = update_access_collection($id, $friends);
if ($result) {
system_message(elgg_echo("friends:collectionadded"));
- // go to the collections page
- forward("pg/collections/" . get_loggedin_user()->username);
+ forward("collections/" . elgg_get_logged_in_user_entity()->username);
} else {
register_error(elgg_echo("friends:nocollectionname"));
forward(REFERER);
diff --git a/actions/login.php b/actions/login.php
index ea7fb3508..bd7f91299 100644
--- a/actions/login.php
+++ b/actions/login.php
@@ -7,9 +7,8 @@
*/
// set forward url
-if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
+if (!empty($_SESSION['last_forward_from'])) {
$forward_url = $_SESSION['last_forward_from'];
- unset($_SESSION['last_forward_from']);
} elseif (get_input('returntoreferer')) {
$forward_url = REFERER;
} else {
@@ -19,7 +18,7 @@ if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
$username = get_input('username');
$password = get_input('password', null, false);
-$persistent = get_input("persistent", false);
+$persistent = (bool) get_input("persistent");
$result = false;
if (empty($username) || empty($password)) {
@@ -62,5 +61,9 @@ if ($user->language) {
$message = elgg_echo('loginok');
}
+if (isset($_SESSION['last_forward_from'])) {
+ unset($_SESSION['last_forward_from']);
+}
+
system_message($message);
forward($forward_url);
diff --git a/actions/plugins/settings/save.php b/actions/plugins/settings/save.php
index e94127f7c..581a2f9ec 100644
--- a/actions/plugins/settings/save.php
+++ b/actions/plugins/settings/save.php
@@ -3,7 +3,7 @@
* Saves global plugin settings.
*
* This action can be overriden for a specific plugin by creating the
- * settings/<plugin_id>/save action in that plugin.
+ * <plugin_id>/settings/save action in that plugin.
*
* @uses array $_REQUEST['params'] A set of key/value pairs to save to the ElggPlugin entity
* @uses int $_REQUEST['plugin_id'] The ID of the plugin
diff --git a/actions/plugins/usersettings/save.php b/actions/plugins/usersettings/save.php
index 71ad2ad7b..f6b8ab0b6 100644
--- a/actions/plugins/usersettings/save.php
+++ b/actions/plugins/usersettings/save.php
@@ -3,7 +3,7 @@
* Saves user-specific plugin settings.
*
* This action can be overriden for a specific plugin by creating the
- * settings/<plugin_id>/save action in that plugin.
+ * <plugin_id>/usersettings/save action in that plugin.
*
* @uses array $_REQUEST['params'] A set of key/value pairs to save to the ElggPlugin entity
* @uses int $_REQUEST['plugin_id'] The id of the plugin
diff --git a/actions/profile/edit.php b/actions/profile/edit.php
index 8ca60f246..e1f066e82 100644
--- a/actions/profile/edit.php
+++ b/actions/profile/edit.php
@@ -4,6 +4,8 @@
*
*/
+elgg_make_sticky_form('profile:edit');
+
$guid = get_input('guid');
$owner = get_entity($guid);
@@ -25,7 +27,7 @@ if (!is_array($accesslevel)) {
* wrapper for recursive array walk decoding
*/
function profile_array_decoder(&$v) {
- $v = html_entity_decode($v, ENT_COMPAT, 'UTF-8');
+ $v = _elgg_html_decode($v);
}
$profile_fields = elgg_get_config('profile_fields');
@@ -37,7 +39,7 @@ foreach ($profile_fields as $shortname => $valuetype) {
if (is_array($value)) {
array_walk_recursive($value, 'profile_array_decoder');
} else {
- $value = html_entity_decode($value, ENT_COMPAT, 'UTF-8');
+ $value = _elgg_html_decode($value);
}
// limit to reasonable sizes
@@ -48,10 +50,14 @@ foreach ($profile_fields as $shortname => $valuetype) {
forward(REFERER);
}
+ if ($value && $valuetype == 'url' && !preg_match('~^https?\://~i', $value)) {
+ $value = "http://$value";
+ }
+
if ($valuetype == 'tags') {
$value = string_to_tag_array($value);
}
-
+
$input[$shortname] = $value;
}
@@ -71,24 +77,30 @@ if (sizeof($input) > 0) {
foreach ($input as $shortname => $value) {
$options = array(
'guid' => $owner->guid,
- 'metadata_name' => $shortname
+ 'metadata_name' => $shortname,
+ 'limit' => false
);
elgg_delete_metadata($options);
- if (isset($accesslevel[$shortname])) {
- $access_id = (int) $accesslevel[$shortname];
- } else {
- // this should never be executed since the access level should always be set
- $access_id = ACCESS_DEFAULT;
- }
- if (is_array($value)) {
- $i = 0;
- foreach ($value as $interval) {
- $i++;
- $multiple = ($i > 1) ? TRUE : FALSE;
- create_metadata($owner->guid, $shortname, $interval, 'text', $owner->guid, $access_id, $multiple);
+
+ if (!is_null($value) && ($value !== '')) {
+ // only create metadata for non empty values (0 is allowed) to prevent metadata records with empty string values #4858
+
+ if (isset($accesslevel[$shortname])) {
+ $access_id = (int) $accesslevel[$shortname];
+ } else {
+ // this should never be executed since the access level should always be set
+ $access_id = ACCESS_DEFAULT;
+ }
+ if (is_array($value)) {
+ $i = 0;
+ foreach ($value as $interval) {
+ $i++;
+ $multiple = ($i > 1) ? TRUE : FALSE;
+ create_metadata($owner->guid, $shortname, $interval, 'text', $owner->guid, $access_id, $multiple);
+ }
+ } else {
+ create_metadata($owner->getGUID(), $shortname, $value, 'text', $owner->getGUID(), $access_id);
}
- } else {
- create_metadata($owner->getGUID(), $shortname, $value, 'text', $owner->getGUID(), $access_id);
}
}
@@ -97,6 +109,7 @@ if (sizeof($input) > 0) {
// Notify of profile update
elgg_trigger_event('profileupdate', $owner->type, $owner);
+ elgg_clear_sticky_form('profile:edit');
system_message(elgg_echo("profile:saved"));
}
diff --git a/actions/register.php b/actions/register.php
index f23d5b381..73926232c 100644
--- a/actions/register.php
+++ b/actions/register.php
@@ -30,8 +30,6 @@ if (elgg_get_config('allow_registration')) {
$guid = register_user($username, $password, $name, $email, false, $friend_guid, $invitecode);
if ($guid) {
- elgg_clear_sticky_form('register');
-
$new_user = get_entity($guid);
// allow plugins to respond to self registration
@@ -47,13 +45,16 @@ if (elgg_get_config('allow_registration')) {
// @todo should registration be allowed no matter what the plugins return?
if (!elgg_trigger_plugin_hook('register', 'user', $params, TRUE)) {
+ $ia = elgg_set_ignore_access(true);
$new_user->delete();
+ elgg_set_ignore_access($ia);
// @todo this is a generic messages. We could have plugins
// throw a RegistrationException, but that is very odd
// for the plugin hooks system.
throw new RegistrationException(elgg_echo('registerbad'));
}
+ elgg_clear_sticky_form('register');
system_message(elgg_echo("registerok", array(elgg_get_site_entity()->name)));
// if exception thrown, this probably means there is a validation
@@ -76,4 +77,4 @@ if (elgg_get_config('allow_registration')) {
register_error(elgg_echo('registerdisabled'));
}
-forward(REFERER); \ No newline at end of file
+forward(REFERER);
diff --git a/actions/river/delete.php b/actions/river/delete.php
new file mode 100644
index 000000000..0d8297932
--- /dev/null
+++ b/actions/river/delete.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * River item delete action
+ *
+ * @package Elgg
+ * @subpackage Core
+ */
+
+$id = get_input('id', false);
+
+if ($id !== false && elgg_is_admin_logged_in()) {
+ if (elgg_delete_river(array('id' => $id))) {
+ system_message(elgg_echo('river:delete:success'));
+ } else {
+ register_error(elgg_echo('river:delete:fail'));
+ }
+} else {
+ register_error(elgg_echo('river:delete:fail'));
+}
+
+forward(REFERER);
diff --git a/actions/widgets/add.php b/actions/widgets/add.php
index f65d11134..d7b2f291c 100644
--- a/actions/widgets/add.php
+++ b/actions/widgets/add.php
@@ -9,6 +9,7 @@
$owner_guid = get_input('owner_guid');
$handler = get_input('handler');
$context = get_input('context');
+$show_access = (bool)get_input('show_access', true);
$column = get_input('column', 1);
$default_widgets = get_input('default_widgets', 0);
@@ -29,7 +30,7 @@ if (!empty($owner_guid)) {
$widget->move($column, 0);
// send widget html for insertion
- echo elgg_view_entity($widget);
+ echo elgg_view_entity($widget, array('show_access' => $show_access));
//system_message(elgg_echo('widgets:add:success'));
forward(REFERER);
diff --git a/documentation/info/manifest.xml b/documentation/info/manifest.xml
index baa6cc3fa..4fd4be8ce 100644
--- a/documentation/info/manifest.xml
+++ b/documentation/info/manifest.xml
@@ -6,6 +6,9 @@
<blurb>A concise description.</blurb>
<description>This is a longer, more interesting description of my plugin, its features, and other important information.</description>
<website>http://www.elgg.org/</website>
+ <repository>https://github.com/Elgg/Elgg</repository>
+ <bugtracker>https://github.com/Elgg/Elgg/issues</bugtracker>
+ <donations>http://elgg.org/supporter.php</donations>
<copyright>(C) Elgg 2011</copyright>
<license>GNU General Public License version 2</license>
diff --git a/engine/classes/ElggAccess.php b/engine/classes/ElggAccess.php
index 6f8d9bb4b..0aed477fc 100644
--- a/engine/classes/ElggAccess.php
+++ b/engine/classes/ElggAccess.php
@@ -16,6 +16,7 @@ class ElggAccess {
*/
private $ignore_access;
+ // @codingStandardsIgnoreStart
/**
* Get current ignore access setting.
*
@@ -26,6 +27,7 @@ class ElggAccess {
elgg_deprecated_notice('ElggAccess::get_ignore_access() is deprecated by ElggAccess::getIgnoreAccess()', 1.8);
return $this->getIgnoreAccess();
}
+ // @codingStandardsIgnoreEnd
/**
* Get current ignore access setting.
@@ -36,6 +38,7 @@ class ElggAccess {
return $this->ignore_access;
}
+ // @codingStandardsIgnoreStart
/**
* Set ignore access.
*
@@ -49,6 +52,7 @@ class ElggAccess {
elgg_deprecated_notice('ElggAccess::set_ignore_access() is deprecated by ElggAccess::setIgnoreAccess()', 1.8);
return $this->setIgnoreAccess($ignore);
}
+ // @codingStandardsIgnoreEnd
/**
* Set ignore access.
diff --git a/engine/classes/ElggAnnotation.php b/engine/classes/ElggAnnotation.php
index 511b5151f..175e7049d 100644
--- a/engine/classes/ElggAnnotation.php
+++ b/engine/classes/ElggAnnotation.php
@@ -11,6 +11,9 @@
* @package Elgg.Core
* @subpackage DataModel.Annotations
* @link http://docs.elgg.org/DataModel/Annotations
+ *
+ * @property string $value_type
+ * @property string $enabled
*/
class ElggAnnotation extends ElggExtender {
@@ -56,6 +59,8 @@ class ElggAnnotation extends ElggExtender {
* Save this instance
*
* @return int an object id
+ *
+ * @throws IOException
*/
function save() {
if ($this->id > 0) {
diff --git a/engine/classes/ElggAttributeLoader.php b/engine/classes/ElggAttributeLoader.php
new file mode 100644
index 000000000..ffc80b02d
--- /dev/null
+++ b/engine/classes/ElggAttributeLoader.php
@@ -0,0 +1,248 @@
+<?php
+
+/**
+ * Loads ElggEntity attributes from DB or validates those passed in via constructor
+ *
+ * @access private
+ *
+ * @package Elgg.Core
+ * @subpackage DataModel
+ */
+class ElggAttributeLoader {
+
+ /**
+ * @var array names of attributes in all entities
+ */
+ protected static $primary_attr_names = array(
+ 'guid',
+ 'type',
+ 'subtype',
+ 'owner_guid',
+ 'container_guid',
+ 'site_guid',
+ 'access_id',
+ 'time_created',
+ 'time_updated',
+ 'last_action',
+ 'enabled',
+ );
+
+ /**
+ * @var array names of secondary attributes required for the entity
+ */
+ protected $secondary_attr_names = array();
+
+ /**
+ * @var string entity type (not class) required for fetched primaries
+ */
+ protected $required_type;
+
+ /**
+ * @var array
+ */
+ protected $initialized_attributes;
+
+ /**
+ * @var string class of object being loaded
+ */
+ protected $class;
+
+ /**
+ * @var bool should access control be considered when fetching entity?
+ */
+ public $requires_access_control = true;
+
+ /**
+ * @var callable function used to load attributes from {prefix}entities table
+ */
+ public $primary_loader = 'get_entity_as_row';
+
+ /**
+ * @var callable function used to load attributes from secondary table
+ */
+ public $secondary_loader = '';
+
+ /**
+ * @var callable function used to load all necessary attributes
+ */
+ public $full_loader = '';
+
+ /**
+ * Constructor
+ *
+ * @param string $class class of object being loaded
+ * @param string $required_type entity type this is being used to populate
+ * @param array $initialized_attrs attributes after initializeAttributes() has been run
+ * @throws InvalidArgumentException
+ */
+ public function __construct($class, $required_type, array $initialized_attrs) {
+ if (!is_string($class)) {
+ throw new InvalidArgumentException('$class must be a class name.');
+ }
+ $this->class = $class;
+
+ if (!is_string($required_type)) {
+ throw new InvalidArgumentException('$requiredType must be a system entity type.');
+ }
+ $this->required_type = $required_type;
+
+ $this->initialized_attributes = $initialized_attrs;
+ unset($initialized_attrs['tables_split'], $initialized_attrs['tables_loaded']);
+ $all_attr_names = array_keys($initialized_attrs);
+ $this->secondary_attr_names = array_diff($all_attr_names, self::$primary_attr_names);
+ }
+
+ /**
+ * Get primary attributes missing that are missing
+ *
+ * @param stdClass $row Database row
+ * @return array
+ */
+ protected function isMissingPrimaries($row) {
+ return array_diff(self::$primary_attr_names, array_keys($row)) !== array();
+ }
+
+ /**
+ * Get secondary attributes that are missing
+ *
+ * @param stdClass $row Database row
+ * @return array
+ */
+ protected function isMissingSecondaries($row) {
+ return array_diff($this->secondary_attr_names, array_keys($row)) !== array();
+ }
+
+ /**
+ * Check that the type is correct
+ *
+ * @param stdClass $row Database row
+ * @return void
+ * @throws InvalidClassException
+ */
+ protected function checkType($row) {
+ if ($row['type'] !== $this->required_type) {
+ $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($row['guid'], $this->class));
+ throw new InvalidClassException($msg);
+ }
+ }
+
+ /**
+ * Get all required attributes for the entity, validating any that are passed in. Returns empty array
+ * if can't be loaded (Check $failure_reason).
+ *
+ * This function splits loading between "primary" attributes (those in {prefix}entities table) and
+ * "secondary" attributes (e.g. those in {prefix}objects_entity), but can load all at once if a
+ * combined loader is available.
+ *
+ * @param mixed $row a row loaded from DB (array or stdClass) or a GUID
+ * @return array will be empty if failed to load all attributes (access control or entity doesn't exist)
+ *
+ * @throws InvalidArgumentException|LogicException|IncompleteEntityException
+ */
+ public function getRequiredAttributes($row) {
+ if (!is_array($row) && !($row instanceof stdClass)) {
+ // assume row is the GUID
+ $row = array('guid' => $row);
+ }
+ $row = (array) $row;
+ if (empty($row['guid'])) {
+ throw new InvalidArgumentException('$row must be or contain a GUID');
+ }
+
+ // these must be present to support isFullyLoaded()
+ foreach (array('tables_split', 'tables_loaded') as $key) {
+ if (isset($this->initialized_attributes[$key])) {
+ $row[$key] = $this->initialized_attributes[$key];
+ }
+ }
+
+ $was_missing_primaries = $this->isMissingPrimaries($row);
+ $was_missing_secondaries = $this->isMissingSecondaries($row);
+
+ // some types have a function to load all attributes at once, it should be faster
+ if (($was_missing_primaries || $was_missing_secondaries) && is_callable($this->full_loader)) {
+ $fetched = (array) call_user_func($this->full_loader, $row['guid']);
+ if (!$fetched) {
+ return array();
+ }
+ $row = array_merge($row, $fetched);
+ $this->checkType($row);
+ } else {
+ if ($was_missing_primaries) {
+ if (!is_callable($this->primary_loader)) {
+ throw new LogicException('Primary attribute loader must be callable');
+ }
+ if ($this->requires_access_control) {
+ $fetched = (array) call_user_func($this->primary_loader, $row['guid']);
+ } else {
+ $ignoring_access = elgg_set_ignore_access();
+ $fetched = (array) call_user_func($this->primary_loader, $row['guid']);
+ elgg_set_ignore_access($ignoring_access);
+ }
+ if (!$fetched) {
+ return array();
+ }
+ $row = array_merge($row, $fetched);
+ }
+
+ // We must test type before trying to load the secondaries so that InvalidClassException
+ // gets thrown. Otherwise the secondary loader will fail and return false.
+ $this->checkType($row);
+
+ if ($was_missing_secondaries) {
+ if (!is_callable($this->secondary_loader)) {
+ throw new LogicException('Secondary attribute loader must be callable');
+ }
+ $fetched = (array) call_user_func($this->secondary_loader, $row['guid']);
+ if (!$fetched) {
+ if ($row['type'] === 'site') {
+ // A special case is needed for sites: When vanilla ElggEntities are created and
+ // saved, these are stored w/ type "site", but with no sites_entity row. These
+ // are probably only created in the unit tests.
+ // @todo Don't save vanilla ElggEntities with type "site"
+
+ $row = $this->filterAddedColumns($row);
+ $row['guid'] = (int) $row['guid'];
+ return $row;
+ }
+ throw new IncompleteEntityException("Secondary loader failed to return row for {$row['guid']}");
+ }
+ $row = array_merge($row, $fetched);
+ }
+ }
+
+ $row = $this->filterAddedColumns($row);
+
+ // Note: If there are still missing attributes, we're running on a 1.7 or earlier schema. We let
+ // this pass so the upgrades can run.
+
+ // guid needs to be an int https://github.com/elgg/elgg/issues/4111
+ $row['guid'] = (int) $row['guid'];
+
+ return $row;
+ }
+
+ /**
+ * Filter out keys returned by the query which should not appear in the entity's attributes
+ *
+ * @param array $row All columns from the query
+ * @return array Columns acceptable for the entity's attributes
+ */
+ protected function filterAddedColumns($row) {
+ // make an array with keys as acceptable attribute names
+ $acceptable_attrs = self::$primary_attr_names;
+ array_splice($acceptable_attrs, count($acceptable_attrs), 0, $this->secondary_attr_names);
+ $acceptable_attrs = array_combine($acceptable_attrs, $acceptable_attrs);
+
+ // @todo remove these when #4584 is in place
+ $acceptable_attrs['tables_split'] = true;
+ $acceptable_attrs['tables_loaded'] = true;
+
+ foreach ($row as $key => $val) {
+ if (!isset($acceptable_attrs[$key])) {
+ unset($row[$key]);
+ }
+ }
+ return $row;
+ }
+}
diff --git a/engine/classes/ElggAutoP.php b/engine/classes/ElggAutoP.php
new file mode 100644
index 000000000..05842d1b2
--- /dev/null
+++ b/engine/classes/ElggAutoP.php
@@ -0,0 +1,336 @@
+<?php
+
+/**
+ * Create wrapper P and BR elements in HTML depending on newlines. Useful when
+ * users use newlines to signal line and paragraph breaks. In all cases output
+ * should be well-formed markup.
+ *
+ * In DIV elements, Ps are only added when there would be at
+ * least two of them.
+ *
+ * @package Elgg.Core
+ * @subpackage Output
+ */
+class ElggAutoP {
+
+ public $encoding = 'UTF-8';
+
+ /**
+ * @var DOMDocument
+ */
+ protected $_doc = null;
+
+ /**
+ * @var DOMXPath
+ */
+ protected $_xpath = null;
+
+ protected $_blocks = 'address article area aside blockquote caption col colgroup dd
+ details div dl dt fieldset figure figcaption footer form h1 h2 h3 h4 h5 h6 header
+ hr hgroup legend map math menu nav noscript p pre section select style summary
+ table tbody td tfoot th thead tr ul ol option li';
+
+ /**
+ * @var array
+ */
+ protected $_inlines = 'a abbr audio b button canvas caption cite code command datalist
+ del dfn em embed i iframe img input ins kbd keygen label map mark meter object
+ output progress q rp rt ruby s samp script select small source span strong style
+ sub sup textarea time var video wbr';
+
+ /**
+ * Descend into these elements to add Ps
+ *
+ * @var array
+ */
+ protected $_descendList = 'article aside blockquote body details div footer form
+ header section';
+
+ /**
+ * Add Ps inside these elements
+ *
+ * @var array
+ */
+ protected $_alterList = 'article aside blockquote body details div footer header
+ section';
+
+ /** @var string */
+ protected $_unique = '';
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->_blocks = preg_split('@\\s+@', $this->_blocks);
+ $this->_descendList = preg_split('@\\s+@', $this->_descendList);
+ $this->_alterList = preg_split('@\\s+@', $this->_alterList);
+ $this->_inlines = preg_split('@\\s+@', $this->_inlines);
+ $this->_unique = md5(__FILE__);
+ }
+
+ /**
+ * Intance of class for singleton pattern.
+ * @var ElggAutoP
+ */
+ private static $instance;
+
+ /**
+ * Singleton pattern.
+ * @return ElggAutoP
+ */
+ public static function getInstance() {
+ $className = __CLASS__;
+ if (!(self::$instance instanceof $className)) {
+ self::$instance = new $className();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Create wrapper P and BR elements in HTML depending on newlines. Useful when
+ * users use newlines to signal line and paragraph breaks. In all cases output
+ * should be well-formed markup.
+ *
+ * In DIV, LI, TD, and TH elements, Ps are only added when their would be at
+ * least two of them.
+ *
+ * @param string $html snippet
+ * @return string|false output or false if parse error occurred
+ */
+ public function process($html) {
+ // normalize whitespace
+ $html = str_replace(array("\r\n", "\r"), "\n", $html);
+
+ // allows preserving entities untouched
+ $html = str_replace('&', $this->_unique . 'AMP', $html);
+
+ $this->_doc = new DOMDocument();
+
+ // parse to DOM, suppressing loadHTML warnings
+ // http://www.php.net/manual/en/domdocument.loadhtml.php#95463
+ libxml_use_internal_errors(true);
+
+ // Do not load entities. May be unnecessary, better safe than sorry
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ if (!$this->_doc->loadHTML("<html><meta http-equiv='content-type' "
+ . "content='text/html; charset={$this->encoding}'><body>{$html}</body>"
+ . "</html>")) {
+
+ libxml_disable_entity_loader($disable_load_entities);
+ return false;
+ }
+
+ libxml_disable_entity_loader($disable_load_entities);
+
+ $this->_xpath = new DOMXPath($this->_doc);
+ // start processing recursively at the BODY element
+ $nodeList = $this->_xpath->query('//body[1]');
+ $this->addParagraphs($nodeList->item(0));
+
+ // serialize back to HTML
+ $html = $this->_doc->saveHTML();
+
+ // Note: we create <autop> elements, which will later be converted to paragraphs
+
+ // split AUTOPs into multiples at /\n\n+/
+ $html = preg_replace('/(' . $this->_unique . 'NL){2,}/', '</autop><autop>', $html);
+ $html = str_replace(array($this->_unique . 'BR', $this->_unique . 'NL', '<br>'),
+ '<br />',
+ $html);
+ $html = str_replace('<br /></autop>', '</autop>', $html);
+
+ // re-parse so we can handle new AUTOP elements
+
+ // Do not load entities. May be unnecessary, better safe than sorry
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ if (!$this->_doc->loadHTML($html)) {
+ libxml_disable_entity_loader($disable_load_entities);
+ return false;
+ }
+
+ libxml_disable_entity_loader($disable_load_entities);
+
+ // must re-create XPath object after DOM load
+ $this->_xpath = new DOMXPath($this->_doc);
+
+ // strip AUTOPs that only have comments/whitespace
+ foreach ($this->_xpath->query('//autop') as $autop) {
+ /* @var DOMElement $autop */
+ $hasContent = false;
+ if (trim($autop->textContent) !== '') {
+ $hasContent = true;
+ } else {
+ foreach ($autop->childNodes as $node) {
+ if ($node->nodeType === XML_ELEMENT_NODE) {
+ $hasContent = true;
+ break;
+ }
+ }
+ }
+ if (!$hasContent) {
+ // mark to be later replaced w/ preg_replace (faster than moving nodes out)
+ $autop->setAttribute("r", "1");
+ }
+ }
+
+ // If a DIV contains a single AUTOP, remove it
+ foreach ($this->_xpath->query('//div') as $el) {
+ /* @var DOMElement $el */
+ $autops = $this->_xpath->query('./autop', $el);
+ if ($autops->length === 1) {
+ $firstAutop = $autops->item(0);
+ /* @var DOMElement $firstAutop */
+ $firstAutop->setAttribute("r", "1");
+ }
+ }
+
+ $html = $this->_doc->saveHTML();
+
+ // trim to the contents of BODY
+ $bodyStart = strpos($html, '<body>');
+ $bodyEnd = strpos($html, '</body>', $bodyStart + 6);
+ $html = substr($html, $bodyStart + 6, $bodyEnd - $bodyStart - 6);
+
+ // strip AUTOPs that should be removed
+ $html = preg_replace('@<autop r="1">(.*?)</autop>@', '\\1', $html);
+
+ // commit to converting AUTOPs to Ps
+ $html = str_replace('<autop>', "\n<p>", $html);
+ $html = str_replace('</autop>', "</p>\n", $html);
+
+ $html = str_replace('<br>', '<br />', $html);
+ $html = str_replace($this->_unique . 'AMP', '&', $html);
+ return $html;
+ }
+
+ /**
+ * Add P and BR elements as necessary
+ *
+ * @param DOMElement $el DOM element
+ * @return void
+ */
+ protected function addParagraphs(DOMElement $el) {
+ // no need to call recursively, just queue up
+ $elsToProcess = array($el);
+ $inlinesToProcess = array();
+ while ($el = array_shift($elsToProcess)) {
+ // if true, we can alter all child nodes, if not, we'll just call
+ // addParagraphs on each element in the descendInto list
+ $alterInline = in_array($el->nodeName, $this->_alterList);
+
+ // inside affected elements, we want to trim leading whitespace from
+ // the first text node
+ $ltrimFirstTextNode = true;
+
+ // should we open a new AUTOP element to move inline elements into?
+ $openP = true;
+ $autop = null;
+
+ // after BR, ignore a newline
+ $isFollowingBr = false;
+
+ $node = $el->firstChild;
+ while (null !== $node) {
+ if ($alterInline) {
+ if ($openP) {
+ $openP = false;
+ // create a P to move inline content into (this may be removed later)
+ $autop = $el->insertBefore($this->_doc->createElement('autop'), $node);
+ }
+ }
+
+ $isElement = ($node->nodeType === XML_ELEMENT_NODE);
+ if ($isElement) {
+ $isBlock = in_array($node->nodeName, $this->_blocks);
+ } else {
+ $isBlock = false;
+ }
+
+ if ($alterInline) {
+ $isText = ($node->nodeType === XML_TEXT_NODE);
+ $isLastInline = (! $node->nextSibling
+ || ($node->nextSibling->nodeType === XML_ELEMENT_NODE
+ && in_array($node->nextSibling->nodeName, $this->_blocks)));
+ if ($isElement) {
+ $isFollowingBr = ($node->nodeName === 'br');
+ }
+
+ if ($isText) {
+ $nodeText = $node->nodeValue;
+ if ($ltrimFirstTextNode) {
+ $nodeText = ltrim($nodeText);
+ $ltrimFirstTextNode = false;
+ }
+ if ($isFollowingBr && preg_match('@^[ \\t]*\\n[ \\t]*@', $nodeText, $m)) {
+ // if a user ends a line with <br>, don't add a second BR
+ $nodeText = substr($nodeText, strlen($m[0]));
+ }
+ if ($isLastInline) {
+ $nodeText = rtrim($nodeText);
+ }
+ $nodeText = str_replace("\n", $this->_unique . 'NL', $nodeText);
+ $tmpNode = $node;
+ $node = $node->nextSibling; // move loop to next node
+
+ // alter node in place, then move into AUTOP
+ $tmpNode->nodeValue = $nodeText;
+ $autop->appendChild($tmpNode);
+
+ continue;
+ }
+ }
+ if ($isBlock || ! $node->nextSibling) {
+ if ($isBlock) {
+ if (in_array($node->nodeName, $this->_descendList)) {
+ $elsToProcess[] = $node;
+ //$this->addParagraphs($node);
+ }
+ }
+ $openP = true;
+ $ltrimFirstTextNode = true;
+ }
+ if ($alterInline) {
+ if (! $isBlock) {
+ $tmpNode = $node;
+ if ($isElement && false !== strpos($tmpNode->textContent, "\n")) {
+ $inlinesToProcess[] = $tmpNode;
+ }
+ $node = $node->nextSibling;
+ $autop->appendChild($tmpNode);
+ continue;
+ }
+ }
+
+ $node = $node->nextSibling;
+ }
+ }
+
+ // handle inline nodes
+ // no need to recurse, just queue up
+ while ($el = array_shift($inlinesToProcess)) {
+ $ignoreLeadingNewline = false;
+ foreach ($el->childNodes as $node) {
+ if ($node->nodeType === XML_ELEMENT_NODE) {
+ if ($node->nodeValue === 'BR') {
+ $ignoreLeadingNewline = true;
+ } else {
+ $ignoreLeadingNewline = false;
+ if (false !== strpos($node->textContent, "\n")) {
+ $inlinesToProcess[] = $node;
+ }
+ }
+ continue;
+ } elseif ($node->nodeType === XML_TEXT_NODE) {
+ $text = $node->nodeValue;
+ if ($text[0] === "\n" && $ignoreLeadingNewline) {
+ $text = substr($text, 1);
+ $ignoreLeadingNewline = false;
+ }
+ $node->nodeValue = str_replace("\n", $this->_unique . 'BR', $text);
+ }
+ }
+ }
+ }
+}
diff --git a/engine/classes/ElggBatch.php b/engine/classes/ElggBatch.php
index 0cb13eb32..d810ea066 100644
--- a/engine/classes/ElggBatch.php
+++ b/engine/classes/ElggBatch.php
@@ -16,7 +16,7 @@
*
* Results from the callback are stored in callbackResult. If the callback
* returns only booleans, callbackResults will be the combined result of
- * all calls.
+ * all calls. If no entities are processed, callbackResults will be null.
*
* If the callback returns anything else, callbackresult will be an indexed
* array of whatever the callback returns. If returning error handling
@@ -150,6 +150,20 @@ class ElggBatch
private $incrementOffset = true;
/**
+ * Entities that could not be instantiated during a fetch
+ *
+ * @var stdClass[]
+ */
+ private $incompleteEntities = array();
+
+ /**
+ * Total number of incomplete entities fetched
+ *
+ * @var int
+ */
+ private $totalIncompletes = 0;
+
+ /**
* Batches operations on any elgg_get_*() or compatible function that supports
* an options array.
*
@@ -222,16 +236,22 @@ class ElggBatch
}
/**
+ * Tell the process that an entity was incomplete during a fetch
+ *
+ * @param stdClass $row
+ *
+ * @access private
+ */
+ public function reportIncompleteEntity(stdClass $row) {
+ $this->incompleteEntities[] = $row;
+ }
+
+ /**
* Fetches the next chunk of results
*
* @return bool
*/
private function getNextResultsChunk() {
- // reset memory caches after first chunk load
- if ($this->chunkIndex > 0) {
- global $DB_QUERY_CACHE, $ENTITY_CACHE;
- $DB_QUERY_CACHE = $ENTITY_CACHE = array();
- }
// always reset results.
$this->results = array();
@@ -265,27 +285,47 @@ class ElggBatch
if ($this->incrementOffset) {
$offset = $this->offset + $this->retrievedResults;
} else {
- $offset = $this->offset;
+ $offset = $this->offset + $this->totalIncompletes;
}
$current_options = array(
'limit' => $limit,
- 'offset' => $offset
+ 'offset' => $offset,
+ '__ElggBatch' => $this,
);
$options = array_merge($this->options, $current_options);
- $getter = $this->getter;
- if (is_string($getter)) {
- $this->results = $getter($options);
- } else {
- $this->results = call_user_func_array($getter, array($options));
+ $this->incompleteEntities = array();
+ $this->results = call_user_func_array($this->getter, array($options));
+
+ $num_results = count($this->results);
+ $num_incomplete = count($this->incompleteEntities);
+
+ $this->totalIncompletes += $num_incomplete;
+
+ if ($this->incompleteEntities) {
+ // pad the front of the results with nulls representing the incompletes
+ array_splice($this->results, 0, 0, array_pad(array(), $num_incomplete, null));
+ // ...and skip past them
+ reset($this->results);
+ for ($i = 0; $i < $num_incomplete; $i++) {
+ next($this->results);
+ }
}
if ($this->results) {
$this->chunkIndex++;
- $this->resultIndex = 0;
- $this->retrievedResults += count($this->results);
+
+ // let the system know we've jumped past the nulls
+ $this->resultIndex = $num_incomplete;
+
+ $this->retrievedResults += ($num_results + $num_incomplete);
+ if ($num_results == 0) {
+ // This fetch was *all* incompletes! We need to fetch until we can either
+ // offer at least one row to iterate over, or give up.
+ return $this->getNextResultsChunk();
+ }
return true;
} else {
return false;
@@ -296,7 +336,8 @@ class ElggBatch
* Increment the offset from the original options array? Setting to
* false is required for callbacks that delete rows.
*
- * @param bool $increment
+ * @param bool $increment Set to false when deleting data
+ * @return void
*/
public function setIncrementOffset($increment = true) {
$this->incrementOffset = (bool) $increment;
diff --git a/engine/classes/ElggCache.php b/engine/classes/ElggCache.php
index 4317f4be9..909eab39b 100644
--- a/engine/classes/ElggCache.php
+++ b/engine/classes/ElggCache.php
@@ -21,6 +21,7 @@ abstract class ElggCache implements ArrayAccess {
$this->variables = array();
}
+ // @codingStandardsIgnoreStart
/**
* Set a cache variable.
*
@@ -35,6 +36,7 @@ abstract class ElggCache implements ArrayAccess {
elgg_deprecated_notice('ElggCache::set_variable() is deprecated by ElggCache::setVariable()', 1.8);
$this->setVariable($variable, $value);
}
+ // @codingStandardsIgnoreEnd
/**
* Set a cache variable.
@@ -52,6 +54,7 @@ abstract class ElggCache implements ArrayAccess {
$this->variables[$variable] = $value;
}
+ // @codingStandardsIgnoreStart
/**
* Get variables for this cache.
*
@@ -65,6 +68,7 @@ abstract class ElggCache implements ArrayAccess {
elgg_deprecated_notice('ElggCache::get_variable() is deprecated by ElggCache::getVariable()', 1.8);
return $this->getVariable($variable);
}
+ // @codingStandardsIgnoreEnd
/**
* Get variables for this cache.
diff --git a/engine/classes/ElggCrypto.php b/engine/classes/ElggCrypto.php
new file mode 100644
index 000000000..317d371e4
--- /dev/null
+++ b/engine/classes/ElggCrypto.php
@@ -0,0 +1,208 @@
+<?php
+/**
+ * ElggCrypto
+ *
+ * @package Elgg.Core
+ * @subpackage Crypto
+ *
+ * @access private
+ */
+class ElggCrypto {
+
+ /**
+ * Character set for temp passwords (no risk of embedded profanity/glyphs that look similar)
+ */
+ const CHARS_PASSWORD = 'bcdfghjklmnpqrstvwxyz2346789';
+
+ /**
+ * Generate a string of highly randomized bytes (over the full 8-bit range).
+ *
+ * @param int $length Number of bytes needed
+ * @return string Random bytes
+ *
+ * @author George Argyros <argyros.george@gmail.com>
+ * @copyright 2012, George Argyros. All rights reserved.
+ * @license Modified BSD
+ * @link https://github.com/GeorgeArgyros/Secure-random-bytes-in-PHP/blob/master/srand.php Original
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the <organization> nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL GEORGE ARGYROS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ public function getRandomBytes($length) {
+ /**
+ * Our primary choice for a cryptographic strong randomness function is
+ * openssl_random_pseudo_bytes.
+ */
+ $SSLstr = '4'; // http://xkcd.com/221/
+ if (function_exists('openssl_random_pseudo_bytes')
+ && (version_compare(PHP_VERSION, '5.3.4') >= 0 || substr(PHP_OS, 0, 3) !== 'WIN')) {
+ $SSLstr = openssl_random_pseudo_bytes($length, $strong);
+ if ($strong) {
+ return $SSLstr;
+ }
+ }
+
+ /**
+ * If mcrypt extension is available then we use it to gather entropy from
+ * the operating system's PRNG. This is better than reading /dev/urandom
+ * directly since it avoids reading larger blocks of data than needed.
+ * Older versions of mcrypt_create_iv may be broken or take too much time
+ * to finish so we only use this function with PHP 5.3.7 and above.
+ * @see https://bugs.php.net/bug.php?id=55169
+ */
+ if (function_exists('mcrypt_create_iv')
+ && (version_compare(PHP_VERSION, '5.3.7') >= 0 || substr(PHP_OS, 0, 3) !== 'WIN')) {
+ $str = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
+ if ($str !== false) {
+ return $str;
+ }
+ }
+
+ /**
+ * No build-in crypto randomness function found. We collect any entropy
+ * available in the PHP core PRNGs along with some filesystem info and memory
+ * stats. To make this data cryptographically strong we add data either from
+ * /dev/urandom or if its unavailable, we gather entropy by measuring the
+ * time needed to compute a number of SHA-1 hashes.
+ */
+ $str = '';
+ $bits_per_round = 2; // bits of entropy collected in each clock drift round
+ $msec_per_round = 400; // expected running time of each round in microseconds
+ $hash_len = 20; // SHA-1 Hash length
+ $total = $length; // total bytes of entropy to collect
+
+ $handle = @fopen('/dev/urandom', 'rb');
+ if ($handle && function_exists('stream_set_read_buffer')) {
+ @stream_set_read_buffer($handle, 0);
+ }
+
+ do {
+ $bytes = ($total > $hash_len) ? $hash_len : $total;
+ $total -= $bytes;
+
+ //collect any entropy available from the PHP system and filesystem
+ $entropy = rand() . uniqid(mt_rand(), true) . $SSLstr;
+ $entropy .= implode('', @fstat(@fopen(__FILE__, 'r')));
+ $entropy .= memory_get_usage() . getmypid();
+ $entropy .= serialize($_ENV) . serialize($_SERVER);
+ if (function_exists('posix_times')) {
+ $entropy .= serialize(posix_times());
+ }
+ if (function_exists('zend_thread_id')) {
+ $entropy .= zend_thread_id();
+ }
+
+ if ($handle) {
+ $entropy .= @fread($handle, $bytes);
+ } else {
+ // Measure the time that the operations will take on average
+ for ($i = 0; $i < 3; $i++) {
+ $c1 = microtime(true);
+ $var = sha1(mt_rand());
+ for ($j = 0; $j < 50; $j++) {
+ $var = sha1($var);
+ }
+ $c2 = microtime(true);
+ $entropy .= $c1 . $c2;
+ }
+
+ // Based on the above measurement determine the total rounds
+ // in order to bound the total running time.
+ $rounds = (int) ($msec_per_round * 50 / (int) (($c2 - $c1) * 1000000));
+
+ // Take the additional measurements. On average we can expect
+ // at least $bits_per_round bits of entropy from each measurement.
+ $iter = $bytes * (int) (ceil(8 / $bits_per_round));
+
+ for ($i = 0; $i < $iter; $i++) {
+ $c1 = microtime();
+ $var = sha1(mt_rand());
+ for ($j = 0; $j < $rounds; $j++) {
+ $var = sha1($var);
+ }
+ $c2 = microtime();
+ $entropy .= $c1 . $c2;
+ }
+ }
+
+ // We assume sha1 is a deterministic extractor for the $entropy variable.
+ $str .= sha1($entropy, true);
+
+ } while ($length > strlen($str));
+
+ if ($handle) {
+ @fclose($handle);
+ }
+
+ return substr($str, 0, $length);
+ }
+
+ /**
+ * Generate a random string of specified length.
+ *
+ * Uses supplied character list for generating the new string.
+ * If no character list provided - uses Base64 URL character set.
+ *
+ * @param int $length Desired length of the string
+ * @param string|null $chars Characters to be chosen from randomly. If not given, the Base64 URL
+ * charset will be used.
+ *
+ * @return string The random string
+ *
+ * @throws InvalidArgumentException
+ *
+ * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ *
+ * @see https://github.com/zendframework/zf2/blob/master/library/Zend/Math/Rand.php#L179
+ */
+ public static function getRandomString($length, $chars = null) {
+ if ($length < 1) {
+ throw new InvalidArgumentException('Length should be >= 1');
+ }
+
+ if (empty($chars)) {
+ $numBytes = ceil($length * 0.75);
+ $bytes = self::getRandomBytes($numBytes);
+ $string = substr(rtrim(base64_encode($bytes), '='), 0, $length);
+
+ // Base64 URL
+ return strtr($string, '+/', '-_');
+ }
+
+ $listLen = strlen($chars);
+
+ if ($listLen == 1) {
+ return str_repeat($chars, $length);
+ }
+
+ $bytes = self::getRandomBytes($length);
+ $pos = 0;
+ $result = '';
+ for ($i = 0; $i < $length; $i++) {
+ $pos = ($pos + ord($bytes[$i])) % $listLen;
+ $result .= $chars[$pos];
+ }
+
+ return $result;
+ }
+}
diff --git a/engine/classes/ElggData.php b/engine/classes/ElggData.php
index 3470ee1cf..4f843cde4 100644
--- a/engine/classes/ElggData.php
+++ b/engine/classes/ElggData.php
@@ -5,6 +5,9 @@
*
* @package Elgg.Core
* @subpackage DataModel
+ *
+ * @property int $owner_guid
+ * @property int $time_created
*/
abstract class ElggData implements
Loggable, // Can events related to this object class be logged
@@ -23,6 +26,7 @@ abstract class ElggData implements
*/
protected $attributes = array();
+ // @codingStandardsIgnoreStart
/**
* Initialise the attributes array.
*
@@ -33,16 +37,15 @@ abstract class ElggData implements
* Passing false returns false. Core constructors always pass false.
* Does nothing either way since attributes are initialized by the time
* this is called.
- * @return false|void False is
+ * @return void
* @deprecated 1.8 Use initializeAttributes()
*/
protected function initialise_attributes($pre18_api = true) {
if ($pre18_api) {
elgg_deprecated_notice('initialise_attributes() is deprecated by initializeAttributes()', 1.8);
- } else {
- return false;
}
}
+ // @codingStandardsIgnoreEnd
/**
* Initialize the attributes array.
@@ -111,7 +114,7 @@ abstract class ElggData implements
* @param string $name The attribute to set
* @param mixed $value The value to set it to
*
- * @return The success of your set funtion?
+ * @return bool The success of your set function?
*/
abstract protected function set($name, $value);
@@ -195,7 +198,7 @@ abstract class ElggData implements
*
* @see Iterator::current()
*
- * @return void
+ * @return mixed
*/
public function current() {
return current($this->attributes);
@@ -206,7 +209,7 @@ abstract class ElggData implements
*
* @see Iterator::key()
*
- * @return void
+ * @return string
*/
public function key() {
return key($this->attributes);
@@ -228,7 +231,7 @@ abstract class ElggData implements
*
* @see Iterator::valid()
*
- * @return void
+ * @return bool
*/
public function valid() {
return $this->valid;
@@ -266,12 +269,13 @@ abstract class ElggData implements
*
* @param mixed $key Name
*
- * @return void
+ * @return mixed
*/
public function offsetGet($key) {
if (array_key_exists($key, $this->attributes)) {
return $this->attributes[$key];
}
+ return null;
}
/**
diff --git a/engine/classes/ElggDiskFilestore.php b/engine/classes/ElggDiskFilestore.php
index f00376481..6e2354012 100644
--- a/engine/classes/ElggDiskFilestore.php
+++ b/engine/classes/ElggDiskFilestore.php
@@ -60,6 +60,7 @@ class ElggDiskFilestore extends ElggFilestore {
$path = substr($fullname, 0, $ls);
$name = substr($fullname, $ls);
+ // @todo $name is unused, remove it or do we need to fix something?
// Try and create the directory
try {
@@ -108,7 +109,7 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param resource $f File pointer resource
* @param int $length The number of bytes to read
- * @param inf $offset The number of bytes to start after
+ * @param int $offset The number of bytes to start after
*
* @return mixed Contents of file or false on fail.
*/
@@ -193,25 +194,33 @@ class ElggDiskFilestore extends ElggFilestore {
}
/**
- * Returns the filename as saved on disk for an ElggFile object
+ * Get the filename as saved on disk for an ElggFile object
+ *
+ * Returns an empty string if no filename set
*
* @param ElggFile $file File object
*
* @return string The full path of where the file is stored
+ * @throws InvalidParameterException
*/
public function getFilenameOnFilestore(ElggFile $file) {
- $owner = $file->getOwnerEntity();
- if (!$owner) {
- $owner = elgg_get_logged_in_user_entity();
+ $owner_guid = $file->getOwnerGuid();
+ if (!$owner_guid) {
+ $owner_guid = elgg_get_logged_in_user_guid();
}
- if (!$owner) {
+ if (!$owner_guid) {
$msg = elgg_echo('InvalidParameterException:MissingOwner',
array($file->getFilename(), $file->guid));
throw new InvalidParameterException($msg);
}
- return $this->dir_root . $this->makefileMatrix($owner->guid) . $file->getFilename();
+ $filename = $file->getFilename();
+ if (!$filename) {
+ return '';
+ }
+
+ return $this->dir_root . $this->makeFileMatrix($owner_guid) . $filename;
}
/**
@@ -219,7 +228,7 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param ElggFile $file File object
*
- * @return mixed
+ * @return string
*/
public function grabFile(ElggFile $file) {
return file_get_contents($file->getFilenameOnFilestore());
@@ -233,6 +242,9 @@ class ElggDiskFilestore extends ElggFilestore {
* @return bool
*/
public function exists(ElggFile $file) {
+ if (!$file->getFilename()) {
+ return false;
+ }
return file_exists($this->getFilenameOnFilestore($file));
}
@@ -246,12 +258,13 @@ class ElggDiskFilestore extends ElggFilestore {
*/
public function getSize($prefix = '', $container_guid) {
if ($container_guid) {
- return get_dir_size($this->dir_root . $this->makefileMatrix($container_guid) . $prefix);
+ return get_dir_size($this->dir_root . $this->makeFileMatrix($container_guid) . $prefix);
} else {
return false;
}
}
+ // @codingStandardsIgnoreStart
/**
* Create a directory $dirroot
*
@@ -266,6 +279,7 @@ class ElggDiskFilestore extends ElggFilestore {
return $this->makeDirectoryRoot($dirroot);
}
+ // @codingStandardsIgnoreEnd
/**
* Create a directory $dirroot
@@ -285,6 +299,7 @@ class ElggDiskFilestore extends ElggFilestore {
return true;
}
+ // @codingStandardsIgnoreStart
/**
* Multibyte string tokeniser.
*
@@ -315,30 +330,31 @@ class ElggDiskFilestore extends ElggFilestore {
} else {
return str_split($string);
}
-
- return false;
}
+ // @codingStandardsIgnoreEnd
+ // @codingStandardsIgnoreStart
/**
* Construct a file path matrix for an entity.
*
* @param int $identifier The guide of the entity to store the data under.
*
- * @return str The path where the entity's data will be stored.
+ * @return string The path where the entity's data will be stored.
* @deprecated 1.8 Use ElggDiskFilestore::makeFileMatrix()
*/
protected function make_file_matrix($identifier) {
elgg_deprecated_notice('ElggDiskFilestore::make_file_matrix() is deprecated by ::makeFileMatrix()', 1.8);
- return $this->makefileMatrix($identifier);
+ return $this->makeFileMatrix($identifier);
}
+ // @codingStandardsIgnoreEnd
/**
* Construct a file path matrix for an entity.
*
* @param int $guid The guide of the entity to store the data under.
*
- * @return str The path where the entity's data will be stored.
+ * @return string The path where the entity's data will be stored.
*/
protected function makeFileMatrix($guid) {
$entity = get_entity($guid);
@@ -352,6 +368,7 @@ class ElggDiskFilestore extends ElggFilestore {
return "$time_created/$entity->guid/";
}
+ // @codingStandardsIgnoreStart
/**
* Construct a filename matrix.
*
@@ -363,13 +380,14 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param int $guid The entity to contrust a matrix for
*
- * @return str The
+ * @return string The
*/
protected function user_file_matrix($guid) {
elgg_deprecated_notice('ElggDiskFilestore::user_file_matrix() is deprecated by ::makeFileMatrix()', 1.8);
return $this->makeFileMatrix($guid);
}
+ // @codingStandardsIgnoreEnd
/**
* Returns a list of attributes to save to the database when saving
diff --git a/engine/classes/ElggEntity.php b/engine/classes/ElggEntity.php
index dc38dafbe..a563f6fad 100644
--- a/engine/classes/ElggEntity.php
+++ b/engine/classes/ElggEntity.php
@@ -24,8 +24,7 @@
*
* @package Elgg.Core
* @subpackage DataModel.Entities
- * @link http://docs.elgg.org/DataModel/ElggEntity
- *
+ *
* @property string $type object, user, group, or site (read-only after save)
* @property string $subtype Further clarifies the nature of the entity (read-only after save)
* @property int $guid The unique identifier for this entity (read only)
@@ -35,6 +34,7 @@
* @property int $access_id Specifies the visibility level of this entity
* @property int $time_created A UNIX timestamp of when the entity was created (read-only, set on first save)
* @property int $time_updated A UNIX timestamp of when the entity was last updated (automatically updated on save)
+ * @property-read string $enabled
*/
abstract class ElggEntity extends ElggData implements
Notable, // Calendar interface
@@ -201,8 +201,11 @@ abstract class ElggEntity extends ElggData implements
/**
* Sets the value of a property.
*
- * If $name is defined in $this->attributes that value is set, otherwise it will
- * set the appropriate item of metadata.
+ * If $name is defined in $this->attributes that value is set, otherwise it is
+ * saved as metadata.
+ *
+ * @warning Metadata set this way will inherit the entity's owner and access ID. If you want
+ * to set metadata with a different owner, use create_metadata().
*
* @warning It is important that your class populates $this->attributes with keys
* for all base attributes, anything not in their gets set as METADATA.
@@ -246,29 +249,53 @@ abstract class ElggEntity extends ElggData implements
* @return mixed The value, or NULL if not found.
*/
public function getMetaData($name) {
- if ((int) ($this->guid) == 0) {
+ $guid = $this->getGUID();
+
+ if (! $guid) {
if (isset($this->temp_metadata[$name])) {
- return $this->temp_metadata[$name];
+ // md is returned as an array only if more than 1 entry
+ if (count($this->temp_metadata[$name]) == 1) {
+ return $this->temp_metadata[$name][0];
+ } else {
+ return $this->temp_metadata[$name];
+ }
} else {
return null;
}
}
+ // upon first cache miss, just load/cache all the metadata and retry.
+ // if this works, the rest of this function may not be needed!
+ $cache = elgg_get_metadata_cache();
+ if ($cache->isKnown($guid, $name)) {
+ return $cache->load($guid, $name);
+ } else {
+ $cache->populateFromEntities(array($guid));
+ // in case ignore_access was on, we have to check again...
+ if ($cache->isKnown($guid, $name)) {
+ return $cache->load($guid, $name);
+ }
+ }
+
$md = elgg_get_metadata(array(
- 'guid' => $this->getGUID(),
+ 'guid' => $guid,
'metadata_name' => $name,
'limit' => 0,
));
+ $value = null;
+
if ($md && !is_array($md)) {
- return $md->value;
+ $value = $md->value;
} elseif (count($md) == 1) {
- return $md[0]->value;
+ $value = $md[0]->value;
} else if ($md && is_array($md)) {
- return metadata_array_to_values($md);
+ $value = metadata_array_to_values($md);
}
- return null;
+ $cache->save($guid, $name, $value);
+
+ return $value;
}
/**
@@ -291,80 +318,77 @@ abstract class ElggEntity extends ElggData implements
/**
* Set a piece of metadata.
*
- * @tip Plugin authors should use the magic methods.
+ * Plugin authors should use the magic methods or create_metadata().
+ *
+ * @warning The metadata will inherit the parent entity's owner and access ID.
+ * If you want to write metadata with a different owner, use create_metadata().
*
* @access private
*
* @param string $name Name of the metadata
- * @param mixed $value Value of the metadata
+ * @param mixed $value Value of the metadata (doesn't support assoc arrays)
* @param string $value_type Types supported: integer and string. Will auto-identify if not set
* @param bool $multiple Allow multiple values for a single name (doesn't support assoc arrays)
*
* @return bool
*/
- public function setMetaData($name, $value, $value_type = "", $multiple = false) {
- $delete_first = false;
- // if multiple is set that always means don't delete.
- // if multiple isn't set it means override. set it to true on arrays for the foreach.
- if (!$multiple) {
- $delete_first = true;
- $multiple = is_array($value);
- }
+ public function setMetaData($name, $value, $value_type = null, $multiple = false) {
- if (!$this->guid) {
- // real metadata only returns as an array if there are multiple elements
- if (is_array($value) && count($value) == 1) {
- $value = $value[0];
- }
-
- $value_is_array = is_array($value);
-
- if (!isset($this->temp_metadata[$name]) || $delete_first) {
- // need to remove the indexes because real metadata doesn't have them.
- if ($value_is_array) {
- $this->temp_metadata[$name] = array_values($value);
- } else {
- $this->temp_metadata[$name] = $value;
- }
- } else {
- // multiple is always true at this point.
- // if we're setting multiple and temp isn't array, it needs to be.
- if (!is_array($this->temp_metadata[$name])) {
- $this->temp_metadata[$name] = array($this->temp_metadata[$name]);
- }
-
- if ($value_is_array) {
- $this->temp_metadata[$name] = array_merge($this->temp_metadata[$name], array_values($value));
- } else {
- $this->temp_metadata[$name][] = $value;
- }
- }
+ // normalize value to an array that we will loop over
+ // remove indexes if value already an array.
+ if (is_array($value)) {
+ $value = array_values($value);
} else {
- if ($delete_first) {
+ $value = array($value);
+ }
+
+ // saved entity. persist md to db.
+ if ($this->guid) {
+ // if overwriting, delete first.
+ if (!$multiple) {
$options = array(
'guid' => $this->getGUID(),
'metadata_name' => $name,
'limit' => 0
);
- // @todo this doesn't check if it exists so we can't handle failed deletes
- // is it worth the overhead of more SQL calls to check?
- elgg_delete_metadata($options);
- }
- // save into real metadata
- if (!is_array($value)) {
- $value = array($value);
+ // @todo in 1.9 make this return false if can't add metadata
+ // https://github.com/elgg/elgg/issues/4520
+ //
+ // need to remove access restrictions right now to delete
+ // because this is the expected behavior
+ $ia = elgg_set_ignore_access(true);
+ if (false === elgg_delete_metadata($options)) {
+ return false;
+ }
+ elgg_set_ignore_access($ia);
}
- foreach ($value as $v) {
- $result = create_metadata($this->getGUID(), $name, $v, $value_type,
- $this->getOwnerGUID(), $this->getAccessId(), $multiple);
- if (!$result) {
+ // add new md
+ $result = true;
+ foreach ($value as $value_tmp) {
+ // at this point $value should be appended because it was cleared above if needed.
+ $md_id = create_metadata($this->getGUID(), $name, $value_tmp, $value_type,
+ $this->getOwnerGUID(), $this->getAccessId(), true);
+ if (!$md_id) {
return false;
}
}
- }
- return true;
+ return $result;
+ } else {
+ // unsaved entity. store in temp array
+ // returning single entries instead of an array of 1 element is decided in
+ // getMetaData(), just like pulling from the db.
+ //
+ // if overwrite, delete first
+ if (!$multiple || !isset($this->temp_metadata[$name])) {
+ $this->temp_metadata[$name] = array();
+ }
+
+ // add new md
+ $this->temp_metadata[$name] = array_merge($this->temp_metadata[$name], $value);
+ return true;
+ }
}
/**
@@ -575,7 +599,6 @@ abstract class ElggEntity extends ElggData implements
* @param mixed $value Value of private setting
*
* @return bool
- * @link http://docs.elgg.org/DataModel/Entities/PrivateSettings
*/
function setPrivateSetting($name, $value) {
if ((int) $this->guid > 0) {
@@ -734,8 +757,6 @@ abstract class ElggEntity extends ElggData implements
* @param string $vartype The type of annotation value
*
* @return bool
- *
- * @link http://docs.elgg.org/DataModel/Annotations
*/
function annotate($name, $value, $access_id = ACCESS_PRIVATE, $owner_id = 0, $vartype = "") {
if ((int) $this->guid > 0) {
@@ -919,7 +940,7 @@ abstract class ElggEntity extends ElggData implements
* @param ElggMetadata $metadata The piece of metadata to specifically check
* @param int $user_guid The user GUID, optionally (default: logged in user)
*
- * @return true|false
+ * @return bool
*/
function canEditMetadata($metadata = null, $user_guid = 0) {
return can_edit_entity_metadata($this->getGUID(), $user_guid, $metadata);
@@ -943,7 +964,7 @@ abstract class ElggEntity extends ElggData implements
*
* @tip Can be overridden by registering for the permissions_check:comment,
* <entity type> plugin hook.
- *
+ *
* @param int $user_guid User guid (default is logged in user)
*
* @return bool
@@ -1005,7 +1026,7 @@ abstract class ElggEntity extends ElggData implements
/**
* Returns the guid.
*
- * @return int GUID
+ * @return int|null GUID
*/
public function getGUID() {
return $this->get('guid');
@@ -1243,21 +1264,29 @@ abstract class ElggEntity extends ElggData implements
/**
* Save an entity.
*
- * @return bool/int
+ * @return bool|int
* @throws IOException
*/
public function save() {
- $guid = (int) $this->guid;
+ $guid = $this->getGUID();
if ($guid > 0) {
- cache_entity($this);
- return update_entity(
- $this->get('guid'),
+ // See #5600. This ensures the lower level can_edit_entity() check will use a
+ // fresh entity from the DB so it sees the persisted owner_guid
+ _elgg_disable_caching_for_entity($guid);
+
+ $ret = update_entity(
+ $guid,
$this->get('owner_guid'),
$this->get('access_id'),
$this->get('container_guid'),
$this->get('time_created')
);
+
+ _elgg_enable_caching_for_entity($guid);
+ _elgg_cache_entity($this);
+
+ return $ret;
} else {
// Create a new entity (nb: using attribute array directly
// 'cos set function does something special!)
@@ -1299,10 +1328,7 @@ abstract class ElggEntity extends ElggData implements
$this->attributes['subtype'] = get_subtype_id($this->attributes['type'],
$this->attributes['subtype']);
- // Cache object handle
- if ($this->attributes['guid']) {
- cache_entity($this);
- }
+ _elgg_cache_entity($this);
return $this->attributes['guid'];
}
@@ -1339,12 +1365,12 @@ abstract class ElggEntity extends ElggData implements
$this->attributes['tables_loaded']++;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
+ // guid needs to be an int https://github.com/elgg/elgg/issues/4111
$this->attributes['guid'] = (int)$this->attributes['guid'];
// Cache object handle
if ($this->attributes['guid']) {
- cache_entity($this);
+ _elgg_cache_entity($this);
}
return true;
@@ -1650,9 +1676,11 @@ abstract class ElggEntity extends ElggData implements
/**
* Import data from an parsed ODD xml data array.
*
- * @param array $data XML data
+ * @param ODD $data XML data
*
* @return true
+ *
+ * @throws InvalidParameterException
*/
public function import(ODD $data) {
if (!($data instanceof ODDEntity)) {
@@ -1714,8 +1742,6 @@ abstract class ElggEntity extends ElggData implements
* @return array
*/
public function getTags($tag_names = NULL) {
- global $CONFIG;
-
if ($tag_names && !is_array($tag_names)) {
$tag_names = array($tag_names);
}
diff --git a/engine/classes/ElggExtender.php b/engine/classes/ElggExtender.php
index d94bad837..25aba354f 100644
--- a/engine/classes/ElggExtender.php
+++ b/engine/classes/ElggExtender.php
@@ -171,7 +171,7 @@ abstract class ElggExtender extends ElggData {
public function export() {
$uuid = get_uuid_from_object($this);
- $meta = new ODDMetadata($uuid, guid_to_uuid($this->entity_guid), $this->attributes['name'],
+ $meta = new ODDMetaData($uuid, guid_to_uuid($this->entity_guid), $this->attributes['name'],
$this->attributes['value'], $this->attributes['type'], guid_to_uuid($this->owner_guid));
$meta->setAttribute('published', date("r", $this->time_created));
diff --git a/engine/classes/ElggFile.php b/engine/classes/ElggFile.php
index f21621ffd..23080834b 100644
--- a/engine/classes/ElggFile.php
+++ b/engine/classes/ElggFile.php
@@ -93,6 +93,7 @@ class ElggFile extends ElggObject {
$container_guid = $this->container_guid;
}
$fs = $this->getFilestore();
+ // @todo add getSize() to ElggFilestore
return $fs->getSize($prefix, $container_guid);
}
@@ -127,9 +128,11 @@ class ElggFile extends ElggObject {
* @param mixed $default A default. Useful to pass what the browser thinks it is.
* @since 1.7.12
*
+ * @note If $file is provided, this may be called statically
+ *
* @return mixed Detected type on success, false on failure.
*/
- static function detectMimeType($file = null, $default = null) {
+ public function detectMimeType($file = null, $default = null) {
if (!$file) {
if (isset($this) && $this->filename) {
$file = $this->filename;
@@ -178,6 +181,8 @@ class ElggFile extends ElggObject {
* @param string $mode Either read/write/append
*
* @return resource File handler
+ *
+ * @throws IOException|InvalidParameterException
*/
public function open($mode) {
if (!$this->getFilename()) {
@@ -270,9 +275,14 @@ class ElggFile extends ElggObject {
*/
public function delete() {
$fs = $this->getFilestore();
- if ($fs->delete($this)) {
- return parent::delete();
+
+ $result = $fs->delete($this);
+
+ if ($this->getGUID() && $result) {
+ $result = parent::delete();
}
+
+ return $result;
}
/**
@@ -285,6 +295,7 @@ class ElggFile extends ElggObject {
public function seek($position) {
$fs = $this->getFilestore();
+ // @todo add seek() to ElggFilestore
return $fs->seek($this->handle, $position);
}
@@ -347,6 +358,8 @@ class ElggFile extends ElggObject {
* a filestore as recorded in metadata or the system default.
*
* @return ElggFilestore
+ *
+ * @throws ClassNotFoundException
*/
protected function getFilestore() {
// Short circuit if already set.
@@ -359,7 +372,6 @@ class ElggFile extends ElggObject {
// need to get all filestore::* metadata because the rest are "parameters" that
// get passed to filestore::setParameters()
if ($this->guid) {
- $db_prefix = elgg_get_config('dbprefix');
$options = array(
'guid' => $this->guid,
'where' => array("n.string LIKE 'filestore::%'"),
@@ -388,6 +400,7 @@ class ElggFile extends ElggObject {
$this->filestore = new $filestore();
$this->filestore->setParameters($parameters);
+ // @todo explain why $parameters will always be set here (PhpStorm complains)
}
// this means the entity hasn't been saved so fallback to default
diff --git a/engine/classes/ElggFileCache.php b/engine/classes/ElggFileCache.php
index 34178d452..94143f777 100644
--- a/engine/classes/ElggFileCache.php
+++ b/engine/classes/ElggFileCache.php
@@ -13,6 +13,8 @@ class ElggFileCache extends ElggCache {
* @param string $cache_path The cache path.
* @param int $max_age Maximum age in seconds, 0 if no limit.
* @param int $max_size Maximum size of cache in seconds, 0 if no limit.
+ *
+ * @throws ConfigurationException
*/
function __construct($cache_path, $max_age = 0, $max_size = 0) {
$this->setVariable("cache_path", $cache_path);
@@ -24,6 +26,7 @@ class ElggFileCache extends ElggCache {
}
}
+ // @codingStandardsIgnoreStart
/**
* Create and return a handle to a file.
*
@@ -39,6 +42,7 @@ class ElggFileCache extends ElggCache {
return $this->createFile($filename, $rw);
}
+ // @codingStandardsIgnoreEnd
/**
* Create and return a handle to a file.
@@ -70,6 +74,7 @@ class ElggFileCache extends ElggCache {
return fopen($path . $filename, $rw);
}
+ // @codingStandardsIgnoreStart
/**
* Create a sanitised filename for the file.
*
@@ -84,6 +89,7 @@ class ElggFileCache extends ElggCache {
return $filename;
}
+ // @codingStandardsIgnoreEnd
/**
* Create a sanitised filename for the file.
diff --git a/engine/classes/ElggGroup.php b/engine/classes/ElggGroup.php
index f7f67bf41..7e69b7a84 100644
--- a/engine/classes/ElggGroup.php
+++ b/engine/classes/ElggGroup.php
@@ -16,8 +16,6 @@ class ElggGroup extends ElggEntity
* Sets the type to group.
*
* @return void
- *
- * @deprecated 1.8 Use initializeAttributes
*/
protected function initializeAttributes() {
parent::initializeAttributes();
@@ -34,7 +32,7 @@ class ElggGroup extends ElggEntity
* @param mixed $guid If an int, load that GUID.
* If an entity table db row, then will load the rest of the data.
*
- * @throws Exception if there was a problem creating the group.
+ * @throws IOException|InvalidParameterException if there was a problem creating the group.
*/
function __construct($guid = null) {
$this->initializeAttributes();
@@ -50,21 +48,18 @@ class ElggGroup extends ElggEntity
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggGroup? Use a copy constructor
} else if ($guid instanceof ElggGroup) {
+ // $guid is an ElggGroup so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggGroup constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggGroup = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo why separate from else
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggGroup'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load entity
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -222,6 +217,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function getObjects($subtype = "", $limit = 10, $offset = 0) {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", $limit, $offset, false);
}
@@ -235,6 +231,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function getFriendsObjects($subtype = "", $limit = 10, $offset = 0) {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", $limit, $offset, false);
}
@@ -246,6 +243,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function countObjects($subtype = "") {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", 10, 0, true);
}
@@ -286,7 +284,7 @@ class ElggGroup extends ElggEntity
*
* @return bool
*/
- public function isMember($user = 0) {
+ public function isMember($user = null) {
if (!($user instanceof ElggUser)) {
$user = elgg_get_logged_in_user_entity();
}
@@ -326,37 +324,18 @@ class ElggGroup extends ElggEntity
* @return bool
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'group', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_group_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'group') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_group_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -373,7 +352,12 @@ class ElggGroup extends ElggEntity
}
// Now save specific stuff
- return create_group_entity($this->get('guid'), $this->get('name'), $this->get('description'));
+
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_group_entity($this->get('guid'), $this->get('name'), $this->get('description'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
// EXPORTABLE INTERFACE ////////////////////////////////////////////////////////////
diff --git a/engine/classes/ElggGroupItemVisibility.php b/engine/classes/ElggGroupItemVisibility.php
new file mode 100644
index 000000000..2c7e2abb4
--- /dev/null
+++ b/engine/classes/ElggGroupItemVisibility.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * Determines if otherwise visible items should be hidden from a user due to group
+ * policy or visibility.
+ *
+ * @class ElggGroupItemVisibility
+ * @package Elgg.Core
+ * @subpackage Groups
+ *
+ * @access private
+ */
+class ElggGroupItemVisibility {
+
+ const REASON_MEMBERSHIP = 'membershiprequired';
+ const REASON_LOGGEDOUT = 'loggedinrequired';
+ const REASON_NOACCESS = 'noaccess';
+
+ /**
+ * @var bool
+ */
+ public $shouldHideItems = false;
+
+ /**
+ * @var string
+ */
+ public $reasonHidden = '';
+
+ /**
+ * Determine visibility of items within a container for the current user
+ *
+ * @param int $container_guid GUID of a container (may/may not be a group)
+ *
+ * @return ElggGroupItemVisibility
+ *
+ * @todo Make this faster, considering it must run for every river item.
+ */
+ static public function factory($container_guid) {
+ // cache because this may be called repeatedly during river display, and
+ // due to need to check group visibility, cache will be disabled for some
+ // get_entity() calls
+ static $cache = array();
+
+ $ret = new ElggGroupItemVisibility();
+
+ if (!$container_guid) {
+ return $ret;
+ }
+
+ $user = elgg_get_logged_in_user_entity();
+ $user_guid = $user ? $user->guid : 0;
+
+ $container_guid = (int) $container_guid;
+
+ $cache_key = "$container_guid|$user_guid";
+ if (empty($cache[$cache_key])) {
+ // compute
+
+ $container = get_entity($container_guid);
+ $is_visible = (bool) $container;
+
+ if (!$is_visible) {
+ // see if it *really* exists...
+ $prev_access = elgg_set_ignore_access();
+ $container = get_entity($container_guid);
+ elgg_set_ignore_access($prev_access);
+ }
+
+ if ($container && $container instanceof ElggGroup) {
+ /* @var ElggGroup $container */
+
+ if ($is_visible) {
+ if (!$container->isPublicMembership()) {
+ if ($user) {
+ if (!$container->isMember($user) && !$user->isAdmin()) {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_MEMBERSHIP;
+ }
+ } else {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_LOGGEDOUT;
+ }
+ }
+ } else {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_NOACCESS;
+ }
+ }
+ $cache[$cache_key] = $ret;
+ }
+ return $cache[$cache_key];
+ }
+}
diff --git a/engine/classes/ElggLRUCache.php b/engine/classes/ElggLRUCache.php
new file mode 100644
index 000000000..f51af2ed7
--- /dev/null
+++ b/engine/classes/ElggLRUCache.php
@@ -0,0 +1,181 @@
+<?php
+
+/**
+ * Least Recently Used Cache
+ *
+ * A fixed sized cache that removes the element used last when it reaches its
+ * size limit.
+ *
+ * Based on https://github.com/cash/LRUCache
+ *
+ * @access private
+ *
+ * @package Elgg.Core
+ * @subpackage Cache
+ */
+class ElggLRUCache implements ArrayAccess {
+ /** @var int */
+ protected $maximumSize;
+
+ /**
+ * The front of the array contains the LRU element
+ *
+ * @var array
+ */
+ protected $data = array();
+
+ /**
+ * Create a LRU Cache
+ *
+ * @param int $size The size of the cache
+ * @throws InvalidArgumentException
+ */
+ public function __construct($size) {
+ if (!is_int($size) || $size <= 0) {
+ throw new InvalidArgumentException();
+ }
+ $this->maximumSize = $size;
+ }
+
+ /**
+ * Get the value cached with this key
+ *
+ * @param int|string $key The key. Strings that are ints are cast to ints.
+ * @param mixed $default The value to be returned if key not found. (Optional)
+ * @return mixed
+ */
+ public function get($key, $default = null) {
+ if (isset($this->data[$key])) {
+ $this->recordAccess($key);
+ return $this->data[$key];
+ } else {
+ return $default;
+ }
+ }
+
+ /**
+ * Add something to the cache
+ *
+ * @param int|string $key The key. Strings that are ints are cast to ints.
+ * @param mixed $value The value to cache
+ * @return void
+ */
+ public function set($key, $value) {
+ if (isset($this->data[$key])) {
+ $this->data[$key] = $value;
+ $this->recordAccess($key);
+ } else {
+ $this->data[$key] = $value;
+ if ($this->size() > $this->maximumSize) {
+ // remove least recently used element (front of array)
+ reset($this->data);
+ unset($this->data[key($this->data)]);
+ }
+ }
+ }
+
+ /**
+ * Get the number of elements in the cache
+ *
+ * @return int
+ */
+ public function size() {
+ return count($this->data);
+ }
+
+ /**
+ * Does the cache contain an element with this key
+ *
+ * @param int|string $key The key
+ * @return boolean
+ */
+ public function containsKey($key) {
+ return isset($this->data[$key]);
+ }
+
+ /**
+ * Remove the element with this key.
+ *
+ * @param int|string $key The key
+ * @return mixed Value or null if not set
+ */
+ public function remove($key) {
+ if (isset($this->data[$key])) {
+ $value = $this->data[$key];
+ unset($this->data[$key]);
+ return $value;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Clear the cache
+ *
+ * @return void
+ */
+ public function clear() {
+ $this->data = array();
+ }
+
+ /**
+ * Moves the element from current position to end of array
+ *
+ * @param int|string $key The key
+ * @return void
+ */
+ protected function recordAccess($key) {
+ $value = $this->data[$key];
+ unset($this->data[$key]);
+ $this->data[$key] = $value;
+ }
+
+ /**
+ * Assigns a value for the specified key
+ *
+ * @see ArrayAccess::offsetSet()
+ *
+ * @param int|string $key The key to assign the value to.
+ * @param mixed $value The value to set.
+ * @return void
+ */
+ public function offsetSet($key, $value) {
+ $this->set($key, $value);
+ }
+
+ /**
+ * Get the value for specified key
+ *
+ * @see ArrayAccess::offsetGet()
+ *
+ * @param int|string $key The key to retrieve.
+ * @return mixed
+ */
+ public function offsetGet($key) {
+ return $this->get($key);
+ }
+
+ /**
+ * Unsets a key.
+ *
+ * @see ArrayAccess::offsetUnset()
+ *
+ * @param int|string $key The key to unset.
+ * @return void
+ */
+ public function offsetUnset($key) {
+ $this->remove($key);
+ }
+
+ /**
+ * Does key exist?
+ *
+ * @see ArrayAccess::offsetExists()
+ *
+ * @param int|string $key A key to check for.
+ * @return boolean
+ */
+ public function offsetExists($key) {
+ return $this->containsKey($key);
+ }
+}
diff --git a/engine/classes/ElggMemcache.php b/engine/classes/ElggMemcache.php
index f27b017d0..91d50ab89 100644
--- a/engine/classes/ElggMemcache.php
+++ b/engine/classes/ElggMemcache.php
@@ -32,6 +32,8 @@ class ElggMemcache extends ElggSharedMemoryCache {
*
* @param string $namespace The namespace for this cache to write to -
* note, namespaces of the same name are shared!
+ *
+ * @throws ConfigurationException
*/
function __construct($namespace = 'default') {
global $CONFIG;
@@ -40,7 +42,7 @@ class ElggMemcache extends ElggSharedMemoryCache {
// Do we have memcache?
if (!class_exists('Memcache')) {
- throw new ConfigurationException(elgg_echo('memcache:notinstalled'));
+ throw new ConfigurationException('PHP memcache module not installed, you must install php5-memcache');
}
// Create memcache object
@@ -48,7 +50,7 @@ class ElggMemcache extends ElggSharedMemoryCache {
// Now add servers
if (!$CONFIG->memcache_servers) {
- throw new ConfigurationException(elgg_echo('memcache:noservers'));
+ throw new ConfigurationException('No memcache servers defined, please populate the $CONFIG->memcache_servers variable');
}
if (is_callable(array($this->memcache, 'addServer'))) {
@@ -85,7 +87,7 @@ class ElggMemcache extends ElggSharedMemoryCache {
// Get version
$this->version = $this->memcache->getVersion();
if (version_compare($this->version, ElggMemcache::$MINSERVERVERSION, '<')) {
- $msg = elgg_echo('memcache:versiontoolow',
+ $msg = vsprintf('Memcache needs at least version %s to run, you are running %s',
array(ElggMemcache::$MINSERVERVERSION,
$this->version
));
diff --git a/engine/classes/ElggMenuBuilder.php b/engine/classes/ElggMenuBuilder.php
index de0017599..b463143d8 100644
--- a/engine/classes/ElggMenuBuilder.php
+++ b/engine/classes/ElggMenuBuilder.php
@@ -8,6 +8,9 @@
*/
class ElggMenuBuilder {
+ /**
+ * @var ElggMenuItem[]
+ */
protected $menu = array();
protected $selected = null;
@@ -15,7 +18,7 @@ class ElggMenuBuilder {
/**
* ElggMenuBuilder constructor
*
- * @param array $menu Array of ElggMenuItem objects
+ * @param ElggMenuItem[] $menu Array of ElggMenuItem objects
*/
public function __construct(array $menu) {
$this->menu = $menu;
@@ -107,6 +110,7 @@ class ElggMenuBuilder {
$children = array();
// divide base nodes from children
foreach ($section as $menu_item) {
+ /* @var ElggMenuItem $menu_item */
$parent_name = $menu_item->getParentName();
if (!$parent_name) {
$parents[$menu_item->getName()] = $menu_item;
@@ -118,13 +122,16 @@ class ElggMenuBuilder {
// attach children to parents
$iteration = 0;
$current_gen = $parents;
+ $next_gen = null;
while (count($children) && $iteration < 5) {
foreach ($children as $index => $menu_item) {
$parent_name = $menu_item->getParentName();
if (array_key_exists($parent_name, $current_gen)) {
$next_gen[$menu_item->getName()] = $menu_item;
- $current_gen[$parent_name]->addChild($menu_item);
- $menu_item->setParent($current_gen[$parent_name]);
+ if (!in_array($menu_item, $current_gen[$parent_name]->getData('children'))) {
+ $current_gen[$parent_name]->addChild($menu_item);
+ $menu_item->setParent($current_gen[$parent_name]);
+ }
unset($children[$index]);
}
}
@@ -158,7 +165,7 @@ class ElggMenuBuilder {
// scan looking for a selected item
foreach ($this->menu as $menu_item) {
if ($menu_item->getHref()) {
- if (elgg_http_url_is_identical(full_url(), $menu_item->getHref())) {
+ if (elgg_http_url_is_identical(current_page_url(), $menu_item->getHref())) {
$menu_item->setSelected(true);
return $menu_item;
}
@@ -204,6 +211,9 @@ class ElggMenuBuilder {
// sort each section
foreach ($this->menu as $index => $section) {
+ foreach ($section as $key => $node) {
+ $section[$key]->setData('original_order', $key);
+ }
usort($section, $sort_callback);
$this->menu[$index] = $section;
@@ -213,12 +223,12 @@ class ElggMenuBuilder {
array_push($stack, $root);
while (!empty($stack)) {
$node = array_pop($stack);
+ /* @var ElggMenuItem $node */
$node->sortChildren($sort_callback);
$children = $node->getChildren();
if ($children) {
$stack = array_merge($stack, $children);
}
- $p = count($stack);
}
}
}
@@ -227,42 +237,55 @@ class ElggMenuBuilder {
/**
* Compare two menu items by their display text
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
*/
public static function compareByText($a, $b) {
- $a = $a->getText();
- $b = $b->getText();
+ $at = $a->getText();
+ $bt = $b->getText();
- return strnatcmp($a, $b);
+ $result = strnatcmp($at, $bt);
+ if ($result === 0) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $result;
}
/**
* Compare two menu items by their identifiers
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
*/
public static function compareByName($a, $b) {
- $a = $a->getName();
- $b = $b->getName();
+ $an = $a->getName();
+ $bn = $b->getName();
- return strcmp($a, $b);
+ $result = strcmp($an, $bn);
+ if ($result === 0) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $result;
}
/**
* Compare two menu items by their priority
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
+ *
+ * @todo change name to compareByPriority
*/
public static function compareByWeight($a, $b) {
- $a = $a->getWeight();
- $b = $b->getWeight();
+ $aw = $a->getWeight();
+ $bw = $b->getWeight();
- return $a > $b;
+ if ($aw == $bw) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $aw - $bw;
}
}
diff --git a/engine/classes/ElggMenuItem.php b/engine/classes/ElggMenuItem.php
index 4bc9144d4..81ce6c099 100644
--- a/engine/classes/ElggMenuItem.php
+++ b/engine/classes/ElggMenuItem.php
@@ -542,6 +542,9 @@ class ElggMenuItem {
* @return void
*/
public function sortChildren($sortFunction) {
+ foreach ($this->data['children'] as $key => $node) {
+ $this->data['children'][$key]->data['original_order'] = $key;
+ }
usort($this->data['children'], $sortFunction);
}
diff --git a/engine/classes/ElggMetadata.php b/engine/classes/ElggMetadata.php
index 634a122e5..3a8e2d817 100644
--- a/engine/classes/ElggMetadata.php
+++ b/engine/classes/ElggMetadata.php
@@ -6,6 +6,10 @@
*
* @package Elgg.Core
* @subpackage Metadata
+ *
+ * @property string $value_type
+ * @property int $owner_guid
+ * @property string $enabled
*/
class ElggMetadata extends ElggExtender {
@@ -26,8 +30,6 @@ class ElggMetadata extends ElggExtender {
* Construct a metadata object
*
* @param mixed $id ID of metadata or a database row as stdClass object
- *
- * @return void
*/
function __construct($id = null) {
$this->initializeAttributes();
@@ -54,7 +56,7 @@ class ElggMetadata extends ElggExtender {
*
* @param int $user_guid The GUID of the user (defaults to currently logged in user)
*
- * @return true|false Depending on permissions
+ * @return bool Depending on permissions
*/
function canEdit($user_guid = 0) {
if ($entity = get_entity($this->get('entity_guid'))) {
@@ -64,9 +66,11 @@ class ElggMetadata extends ElggExtender {
}
/**
- * Save matadata object
+ * Save metadata object
+ *
+ * @return int|bool the metadata object id or true if updated
*
- * @return int the metadata object id
+ * @throws IOException
*/
function save() {
if ($this->id > 0) {
@@ -89,7 +93,13 @@ class ElggMetadata extends ElggExtender {
* @return bool
*/
function delete() {
- return elgg_delete_metastring_based_object_by_id($this->id, 'metadata');
+ $success = elgg_delete_metastring_based_object_by_id($this->id, 'metadata');
+ if ($success) {
+ // we mark unknown here because this deletes only one value
+ // under this name, and there may be others remaining.
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
@@ -99,17 +109,27 @@ class ElggMetadata extends ElggExtender {
* @since 1.8
*/
function disable() {
- return elgg_set_metastring_based_object_enabled_by_id($this->id, 'no', 'metadata');
+ $success = elgg_set_metastring_based_object_enabled_by_id($this->id, 'no', 'metadata');
+ if ($success) {
+ // we mark unknown here because this disables only one value
+ // under this name, and there may be others remaining.
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
- * Disable the metadata
+ * Enable the metadata
*
* @return bool
* @since 1.8
*/
function enable() {
- return elgg_set_metastring_based_object_enabled_by_id($this->id, 'yes', 'metadata');
+ $success = elgg_set_metastring_based_object_enabled_by_id($this->id, 'yes', 'metadata');
+ if ($success) {
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
diff --git a/engine/classes/ElggObject.php b/engine/classes/ElggObject.php
index b4bae6825..aeaa3ba5c 100644
--- a/engine/classes/ElggObject.php
+++ b/engine/classes/ElggObject.php
@@ -66,21 +66,18 @@ class ElggObject extends ElggEntity {
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggObject? Use a copy constructor
} else if ($guid instanceof ElggObject) {
+ // $guid is an ElggObject so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggObject constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggObject = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo remove - do not need separate exception
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggObject'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -99,37 +96,18 @@ class ElggObject extends ElggEntity {
* @throws InvalidClassException
*/
protected function load($guid) {
- // Load data from entity table if needed
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'object', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_object_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'object') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_object_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -148,8 +126,12 @@ class ElggObject extends ElggEntity {
}
// Save ElggObject-specific attributes
- return create_object_entity($this->get('guid'), $this->get('title'),
- $this->get('description'), $this->get('container_guid'));
+
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_object_entity($this->get('guid'), $this->get('title'), $this->get('description'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
/**
@@ -223,7 +205,7 @@ class ElggObject extends ElggEntity {
// must be member of group
if (elgg_instanceof($this->getContainerEntity(), 'group')) {
- if (!$this->getContainerEntity()->canWriteToContainer(get_user($user_guid))) {
+ if (!$this->getContainerEntity()->canWriteToContainer($user_guid)) {
return false;
}
}
diff --git a/engine/classes/ElggPAM.php b/engine/classes/ElggPAM.php
index 0681a909b..f07095fc1 100644
--- a/engine/classes/ElggPAM.php
+++ b/engine/classes/ElggPAM.php
@@ -53,11 +53,17 @@ class ElggPAM {
foreach ($_PAM_HANDLERS[$this->policy] as $k => $v) {
$handler = $v->handler;
+ if (!is_callable($handler)) {
+ continue;
+ }
+ /* @var callable $handler */
+
$importance = $v->importance;
try {
// Execute the handler
- $result = $handler($credentials);
+ // @todo don't assume $handler is a global function
+ $result = call_user_func($handler, $credentials);
if ($result) {
$authenticated = true;
} elseif ($result === false) {
diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php
index 33f14ae37..545b9a53c 100644
--- a/engine/classes/ElggPlugin.php
+++ b/engine/classes/ElggPlugin.php
@@ -36,8 +36,9 @@ class ElggPlugin extends ElggObject {
* @warning Unlike other ElggEntity objects, you cannot null instantiate
* ElggPlugin. You must point it to an actual plugin GUID or location.
*
- * @param mixed $plugin The GUID of the ElggPlugin object or the path of
- * the plugin to load.
+ * @param mixed $plugin The GUID of the ElggPlugin object or the path of the plugin to load.
+ *
+ * @throws PluginException
*/
public function __construct($plugin) {
if (!$plugin) {
@@ -76,6 +77,8 @@ class ElggPlugin extends ElggObject {
// load the rest of the plugin
parent::__construct($existing_guid);
}
+
+ _elgg_cache_plugin_by_id($this);
}
/**
@@ -142,7 +145,7 @@ class ElggPlugin extends ElggObject {
/**
* Sets the location of this plugin.
*
- * @param path $id The path to the plugin's dir.
+ * @param string $id The path to the plugin's dir.
* @return bool
*/
public function setID($id) {
@@ -296,20 +299,15 @@ class ElggPlugin extends ElggObject {
$private_settings = get_data($q);
- if ($private_settings) {
- $return = array();
+ $return = array();
+ if ($private_settings) {
foreach ($private_settings as $setting) {
- $name = substr($setting->name, $ps_prefix_len);
- $value = $setting->value;
-
- $return[$name] = $value;
+ $return[$setting->name] = $setting->value;
}
-
- return $return;
}
- return false;
+ return $return;
}
/**
@@ -350,11 +348,14 @@ class ElggPlugin extends ElggObject {
*/
public function unsetAllSettings() {
$db_prefix = get_config('dbprefix');
- $ps_prefix = elgg_namespace_plugin_private_setting('setting', '');
+
+ $us_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID());
+ $is_prefix = elgg_namespace_plugin_private_setting('internal', '', $this->getID());
$q = "DELETE FROM {$db_prefix}private_settings
WHERE entity_guid = $this->guid
- AND name NOT LIKE '$ps_prefix%'";
+ AND name NOT LIKE '$us_prefix%'
+ AND name NOT LIKE '$is_prefix%'";
return delete_data($q);
}
@@ -420,20 +421,18 @@ class ElggPlugin extends ElggObject {
$private_settings = get_data($q);
- if ($private_settings) {
- $return = array();
+ $return = array();
+ if ($private_settings) {
foreach ($private_settings as $setting) {
$name = substr($setting->name, $ps_prefix_len);
$value = $setting->value;
$return[$name] = $value;
}
-
- return $return;
}
- return false;
+ return $return;
}
/**
@@ -546,7 +545,7 @@ class ElggPlugin extends ElggObject {
* Returns if the plugin is complete, meaning has all required files
* and Elgg can read them and they make sense.
*
- * @todo bad name? This could be confused with isValid() from ElggPackage.
+ * @todo bad name? This could be confused with isValid() from ElggPluginPackage.
*
* @return bool
*/
@@ -597,6 +596,8 @@ class ElggPlugin extends ElggObject {
* Checks if this plugin can be activated on the current
* Elgg installation.
*
+ * @todo remove $site_guid param or implement it
+ *
* @param mixed $site_guid Optional site guid
* @return bool
*/
@@ -647,8 +648,8 @@ class ElggPlugin extends ElggObject {
// Note: this will not run re-run the init hooks!
if ($return) {
if ($this->canReadFile('activate.php')) {
- $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES
- | ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
+ $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES |
+ ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
$this->start($flags);
diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php
index 7aa702d47..6912c2b08 100644
--- a/engine/classes/ElggPluginManifest.php
+++ b/engine/classes/ElggPluginManifest.php
@@ -130,7 +130,7 @@ class ElggPluginManifest {
}
// see if we need to construct the xml object.
- if ($manifest instanceof XmlElement) {
+ if ($manifest instanceof ElggXMLElement) {
$manifest_obj = $manifest;
} else {
if (substr(trim($manifest), 0, 1) == '<') {
@@ -264,7 +264,7 @@ class ElggPluginManifest {
/**
* Returns the license
*
- * @return sting
+ * @return string
*/
public function getLicense() {
// license vs licence. Use license.
@@ -276,6 +276,32 @@ class ElggPluginManifest {
}
}
+ /**
+ * Returns the repository url
+ *
+ * @return string
+ */
+ public function getRepositoryURL() {
+ return $this->parser->getAttribute('repository');
+ }
+
+ /**
+ * Returns the bug tracker page
+ *
+ * @return string
+ */
+ public function getBugTrackerURL() {
+ return $this->parser->getAttribute('bugtracker');
+ }
+
+ /**
+ * Returns the donations page
+ *
+ * @return string
+ */
+ public function getDonationsPageURL() {
+ return $this->parser->getAttribute('donations');
+ }
/**
* Returns the version of the plugin.
@@ -319,12 +345,26 @@ class ElggPluginManifest {
* @return array
*/
public function getCategories() {
+ $bundled_plugins = array('blog', 'bookmarks', 'categories',
+ 'custom_index', 'dashboard', 'developers', 'diagnostics',
+ 'embed', 'externalpages', 'file', 'garbagecollector',
+ 'groups', 'htmlawed', 'invitefriends', 'likes',
+ 'logbrowser', 'logrotate', 'members', 'messageboard',
+ 'messages', 'notifications', 'oauth_api', 'pages', 'profile',
+ 'reportedcontent', 'search', 'tagcloud', 'thewire', 'tinymce',
+ 'twitter', 'twitter_api', 'uservalidationbyemail', 'zaudio',
+ );
+
$cats = $this->parser->getAttribute('category');
if (!$cats) {
$cats = array();
}
+ if (in_array('bundled', $cats) && !in_array($this->getPluginID(), $bundled_plugins)) {
+ unset($cats[array_search('bundled', $cats)]);
+ }
+
return $cats;
}
@@ -442,7 +482,7 @@ class ElggPluginManifest {
* Normalizes a dependency array using the defined structs.
* Can be used with either requires or suggests.
*
- * @param array $dep An dependency array.
+ * @param array $dep A dependency array.
* @return array The normalized deps array.
*/
private function normalizeDep($dep) {
@@ -486,8 +526,10 @@ class ElggPluginManifest {
break;
}
}
-
break;
+ default:
+ // unrecognized so we just return the raw dependency
+ return $dep;
}
$normalized_dep = $this->buildStruct($struct, $dep);
diff --git a/engine/classes/ElggPluginManifestParser.php b/engine/classes/ElggPluginManifestParser.php
index b0480d4d8..af152b561 100644
--- a/engine/classes/ElggPluginManifestParser.php
+++ b/engine/classes/ElggPluginManifestParser.php
@@ -53,10 +53,10 @@ abstract class ElggPluginManifestParser {
/**
* Loads the manifest XML to be parsed.
*
- * @param XmlElement $xml The Manifest XML object to be parsed
- * @param object $caller The object calling this parser.
+ * @param ElggXmlElement $xml The Manifest XML object to be parsed
+ * @param object $caller The object calling this parser.
*/
- public function __construct(XmlElement $xml, $caller) {
+ public function __construct(ElggXMLElement $xml, $caller) {
$this->manifestObject = $xml;
$this->caller = $caller;
}
diff --git a/engine/classes/ElggPluginManifestParser18.php b/engine/classes/ElggPluginManifestParser18.php
index 554e28c02..3b753f17b 100644
--- a/engine/classes/ElggPluginManifestParser18.php
+++ b/engine/classes/ElggPluginManifestParser18.php
@@ -13,10 +13,10 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
* @var array
*/
protected $validAttributes = array(
- 'name', 'author', 'version', 'blurb', 'description',
- 'website', 'copyright', 'license', 'requires', 'suggests',
- 'screenshot', 'category', 'conflicts', 'provides',
- 'activate_on_install'
+ 'name', 'author', 'version', 'blurb', 'description','website',
+ 'repository', 'bugtracker', 'donations', 'copyright', 'license',
+ 'requires', 'suggests', 'conflicts', 'provides',
+ 'screenshot', 'category', 'activate_on_install'
);
/**
@@ -46,6 +46,9 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
case 'website':
case 'copyright':
case 'license':
+ case 'repository':
+ case 'bugtracker':
+ case 'donations':
case 'activate_on_install':
$parsed[$element->name] = $element->content;
break;
diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php
index 2dc4bdb3d..37eb4bf4d 100644
--- a/engine/classes/ElggPluginPackage.php
+++ b/engine/classes/ElggPluginPackage.php
@@ -100,7 +100,6 @@ class ElggPluginPackage {
* @param string $plugin The ID (directory name) or full path of the plugin.
* @param bool $validate Automatically run isValid()?
*
- * @return true
* @throws PluginException
*/
public function __construct($plugin, $validate = true) {
@@ -213,6 +212,7 @@ class ElggPluginPackage {
return false;
}
+ // Note: $conflicts and $requires are not unused. They're called dynamically
$conflicts = $this->getManifest()->getConflicts();
$requires = $this->getManifest()->getRequires();
$provides = $this->getManifest()->getProvides();
@@ -294,6 +294,7 @@ class ElggPluginPackage {
return true;
}
+ $this->errorMsg = elgg_echo('unknown_error');
return false;
}
@@ -330,8 +331,10 @@ class ElggPluginPackage {
* @return bool|array
*/
public function checkDependencies($full_report = false) {
+ // Note: $conflicts and $requires are not unused. They're called dynamically
$requires = $this->getManifest()->getRequires();
$conflicts = $this->getManifest()->getConflicts();
+
$enabled_plugins = elgg_get_plugins('active');
$this_id = $this->getID();
$report = array();
@@ -368,6 +371,7 @@ class ElggPluginPackage {
$check_types = array('requires', 'conflicts');
if ($full_report) {
+ // Note: $suggests is not unused. It's called dynamically
$suggests = $this->getManifest()->getSuggests();
$check_types[] = 'suggests';
}
diff --git a/engine/classes/ElggPriorityList.php b/engine/classes/ElggPriorityList.php
index 8a3b836a8..416df885c 100644
--- a/engine/classes/ElggPriorityList.php
+++ b/engine/classes/ElggPriorityList.php
@@ -89,7 +89,7 @@
* return true;
* }
*
- * @package Elgg.Core
+ * @package Elgg.Core
* @subpackage Helpers
*/
class ElggPriorityList
@@ -126,7 +126,9 @@ class ElggPriorityList
* maintains its priority and the new element is to the next available
* slot, taking into consideration all previously registered elements.
* Negative elements are accepted.
+ * @param bool $exact unused
* @return int The priority of the added element.
+ * @todo remove $exact or implement it. Note we use variable name strict below.
*/
public function add($element, $priority = null, $exact = false) {
if ($priority !== null && !is_numeric($priority)) {
@@ -146,7 +148,8 @@ class ElggPriorityList
* @warning The element must have the same attributes / values. If using $strict, it must have
* the same types. array(10) will fail in strict against array('10') (str vs int).
*
- * @param type $element
+ * @param mixed $element The element to remove from the list
+ * @param bool $strict Whether to check the type of the element match
* @return bool
*/
public function remove($element, $strict = false) {
@@ -162,10 +165,10 @@ class ElggPriorityList
/**
* Move an existing element to a new priority.
*
- * @param mixed $current_priority
- * @param int $new_priority
- *
- * @return int The new priority.
+ * @param mixed $element The element to move
+ * @param int $new_priority The new priority for the element
+ * @param bool $strict Whether to check the type of the element match
+ * @return bool
*/
public function move($element, $new_priority, $strict = false) {
$new_priority = (int) $new_priority;
@@ -200,12 +203,12 @@ class ElggPriorityList
*
* If no user function is provided the elements are sorted by priority registered.
*
- * The callback function should accept the array of elements as the first argument and should
- * return a sorted array.
+ * The callback function should accept the array of elements as the first
+ * argument and should return a sorted array.
*
* This function can be called multiple times.
*
- * @param type $callback
+ * @param callback $callback The callback for sorting. Numeric sorting is the default.
* @return bool
*/
public function sort($callback = null) {
@@ -268,7 +271,7 @@ class ElggPriorityList
/**
* Returns the element at $priority.
*
- * @param int $priority
+ * @param int $priority The priority
* @return mixed The element or false on fail.
*/
public function getElement($priority) {
@@ -351,7 +354,12 @@ class ElggPriorityList
return ($key !== NULL && $key !== FALSE);
}
- // Countable
+ /**
+ * Countable interface
+ *
+ * @see Countable::count()
+ * @return int
+ */
public function count() {
return count($this->elements);
}
diff --git a/engine/classes/ElggRelationship.php b/engine/classes/ElggRelationship.php
index efc0f7eff..d2e88882a 100644
--- a/engine/classes/ElggRelationship.php
+++ b/engine/classes/ElggRelationship.php
@@ -71,6 +71,7 @@ class ElggRelationship extends ElggData implements
* Save the relationship
*
* @return int the relationship id
+ * @throws IOException
*/
public function save() {
if ($this->id > 0) {
@@ -145,7 +146,7 @@ class ElggRelationship extends ElggData implements
* @param ODD $data ODD data
* @return bool
- * @throws ImportException
+ * @throws ImportException|InvalidParameterException
*/
public function import(ODD $data) {
if (!($data instanceof ODDRelationship)) {
@@ -179,6 +180,8 @@ class ElggRelationship extends ElggData implements
return true;
}
}
+
+ return false;
}
// SYSTEM LOG INTERFACE ////////////////////////////////////////////////////////////
diff --git a/engine/classes/ElggSession.php b/engine/classes/ElggSession.php
index 13a33736c..9750f063e 100644
--- a/engine/classes/ElggSession.php
+++ b/engine/classes/ElggSession.php
@@ -54,7 +54,7 @@ class ElggSession implements ArrayAccess {
*
* @param mixed $key Name
*
- * @return void
+ * @return mixed
*/
function offsetGet($key) {
if (!ElggSession::$__localcache) {
@@ -98,7 +98,7 @@ class ElggSession implements ArrayAccess {
*
* @param int $offset Offset
*
- * @return int
+ * @return bool
*/
function offsetExists($offset) {
if (isset(ElggSession::$__localcache[$offset])) {
@@ -112,6 +112,8 @@ class ElggSession implements ArrayAccess {
if ($this->offsetGet($offset)) {
return true;
}
+
+ return false;
}
@@ -132,10 +134,10 @@ class ElggSession implements ArrayAccess {
* @param string $key Name
* @param mixed $value Value
*
- * @return mixed
+ * @return void
*/
function set($key, $value) {
- return $this->offsetSet($key, $value);
+ $this->offsetSet($key, $value);
}
/**
@@ -143,9 +145,9 @@ class ElggSession implements ArrayAccess {
*
* @param string $key Name
*
- * @return bool
+ * @return void
*/
function del($key) {
- return $this->offsetUnset($key);
+ $this->offsetUnset($key);
}
}
diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php
index 6d07778a9..dd996fe98 100644
--- a/engine/classes/ElggSite.php
+++ b/engine/classes/ElggSite.php
@@ -77,28 +77,24 @@ class ElggSite extends ElggEntity {
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggSite? Use a copy constructor
} else if ($guid instanceof ElggSite) {
+ // $guid is an ElggSite so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggSite constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggSite = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo remove and just use else clause
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggSite'));
-
- // See if this is a URL
} else if (strpos($guid, "http") !== false) {
+ // url so retrieve by url
$guid = get_site_by_url($guid);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -117,37 +113,18 @@ class ElggSite extends ElggEntity {
* @throws InvalidClassException
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'site', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_site_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'site') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_site_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -381,14 +358,31 @@ class ElggSite extends ElggEntity {
public function checkWalledGarden() {
global $CONFIG;
- if ($CONFIG->walled_garden && !elgg_is_logged_in()) {
- // hook into the index system call at the highest priority
- elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1);
+ // command line calls should not invoke the walled garden check
+ if (PHP_SAPI === 'cli') {
+ return;
+ }
- if (!$this->isPublicPage()) {
- $_SESSION['last_forward_from'] = current_page_url();
- register_error(elgg_echo('loggedinrequired'));
- forward();
+ if ($CONFIG->walled_garden) {
+ if ($CONFIG->default_access == ACCESS_PUBLIC) {
+ $CONFIG->default_access = ACCESS_LOGGED_IN;
+ }
+ elgg_register_plugin_hook_handler(
+ 'access:collections:write',
+ 'user',
+ '_elgg_walled_garden_remove_public_access');
+
+ if (!elgg_is_logged_in()) {
+ // hook into the index system call at the highest priority
+ elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1);
+
+ if (!$this->isPublicPage()) {
+ if (!elgg_is_xhr()) {
+ $_SESSION['last_forward_from'] = current_page_url();
+ }
+ register_error(elgg_echo('loggedinrequired'));
+ forward();
+ }
}
}
}
@@ -423,6 +417,7 @@ class ElggSite extends ElggEntity {
// default public pages
$defaults = array(
'walled_garden/.*',
+ 'login',
'action/login',
'register',
'action/register',
@@ -446,8 +441,6 @@ class ElggSite extends ElggEntity {
// include a hook for plugin authors to include public pages
$plugins = elgg_trigger_plugin_hook('public_pages', 'walled_garden', NULL, array());
- // lookup admin-specific public pages
-
// allow public pages
foreach (array_merge($defaults, $plugins) as $public) {
$pattern = "`^{$CONFIG->url}$public/*$`i";
diff --git a/engine/classes/ElggStaticVariableCache.php b/engine/classes/ElggStaticVariableCache.php
index 787d35a32..9c14fdfba 100644
--- a/engine/classes/ElggStaticVariableCache.php
+++ b/engine/classes/ElggStaticVariableCache.php
@@ -11,7 +11,7 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
/**
* The cache.
*
- * @var unknown_type
+ * @var array
*/
private static $__cache;
@@ -21,8 +21,8 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
* This function creates a variable cache in a static variable in
* memory, optionally with a given namespace (to avoid overlap).
*
- * @param string $namespace The namespace for this cache to write to
- * note, namespaces of the same name are shared!
+ * @param string $namespace The namespace for this cache to write to.
+ * @warning namespaces of the same name are shared!
*/
function __construct($namespace = 'default') {
$this->setNamespace($namespace);
@@ -80,7 +80,7 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
}
/**
- * This was probably meant to delete everything?
+ * Clears the cache for a particular namespace
*
* @return void
*/
diff --git a/engine/classes/ElggTranslit.php b/engine/classes/ElggTranslit.php
new file mode 100644
index 000000000..b4bf87797
--- /dev/null
+++ b/engine/classes/ElggTranslit.php
@@ -0,0 +1,269 @@
+<?php
+/**
+ * Elgg Transliterate
+ *
+ * For creating "friendly titles" for URLs
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * and is licensed under the LGPL. For more information, see
+ * <http://www.doctrine-project.org>.
+ *
+ * @package Elgg.Core
+ * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
+ * @author Jonathan H. Wage <jonwage@gmail.com>
+ * @author Steve Clay <steve@mrclay.org>
+ *
+ * @access private Plugin authors should not use this directly
+ */
+class ElggTranslit {
+
+ /**
+ * Create a version of a string for embedding in a URL
+ *
+ * @param string $string A UTF-8 string
+ * @param string $separator The character to separate words with
+ * @return string
+ */
+ static public function urlize($string, $separator = '-') {
+ // Iñtërnâtiônàlizætiøn, AND 日本語!
+
+ // try to force combined chars because the translit map and others expect it
+ if (self::hasNormalizerSupport()) {
+ $nfc = normalizer_normalize($string);
+ if (is_string($nfc)) {
+ $string = $nfc;
+ }
+ }
+ // Internationalization, AND 日本語!
+ $string = self::transliterateAscii($string);
+
+ // allow HTML tags in titles
+ $string = preg_replace('~<([a-zA-Z][^>]*)>~', ' $1 ', $string);
+
+ // more substitutions
+ // @todo put these somewhere else
+ $string = strtr($string, array(
+ // currency
+ "\xE2\x82\xAC" /* € */ => ' E ',
+ "\xC2\xA3" /* £ */ => ' GBP ',
+ ));
+
+ // remove all ASCII except 0-9a-zA-Z, hyphen, underscore, and whitespace
+ // note: "x" modifier did not work with this pattern.
+ $string = preg_replace('~['
+ . '\x00-\x08' // control chars
+ . '\x0b\x0c' // vert tab, form feed
+ . '\x0e-\x1f' // control chars
+ . '\x21-\x2c' // ! ... ,
+ . '\x2e\x2f' // . slash
+ . '\x3a-\x40' // : ... @
+ . '\x5b-\x5e' // [ ... ^
+ . '\x60' // `
+ . '\x7b-\x7f' // { ... DEL
+ . ']~', '', $string);
+ $string = strtr($string, '', '');
+
+ // internationalization, and 日本語!
+ // note: not using elgg_strtolower to keep this class portable
+ $string = is_callable('mb_strtolower')
+ ? mb_strtolower($string, 'UTF-8')
+ : strtolower($string);
+
+ // split by ASCII chars not in 0-9a-zA-Z
+ // note: we cannot use [^0-9a-zA-Z] because that matches multibyte chars.
+ // note: "x" modifier did not work with this pattern.
+ $pattern = '~['
+ . '\x00-\x2f' // controls ... slash
+ . '\x3a-\x40' // : ... @
+ . '\x5b-\x60' // [ ... `
+ . '\x7b-\x7f' // { ... DEL
+ . ']+~x';
+
+ // ['internationalization', 'and', '日本語']
+ $words = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY);
+
+ // ['internationalization', 'and', '%E6%97%A5%E6%9C%AC%E8%AA%9E']
+ $words = array_map('urlencode', $words);
+
+ // internationalization-and-%E6%97%A5%E6%9C%AC%E8%AA%9E
+ return implode($separator, $words);
+ }
+
+ /**
+ * Transliterate Western multibyte chars to ASCII
+ *
+ * @param string $utf8 a UTF-8 string
+ * @return string
+ */
+ static public function transliterateAscii($utf8) {
+ static $map = null;
+ if (!preg_match('/[\x80-\xff]/', $utf8)) {
+ return $utf8;
+ }
+ if (null === $map) {
+ $map = self::getAsciiTranslitMap();
+ }
+ return strtr($utf8, $map);
+ }
+
+ /**
+ * Get array of UTF-8 (NFC) character replacements.
+ *
+ * @return array
+ */
+ static public function getAsciiTranslitMap() {
+ return array(
+ // Decompositions for Latin-1 Supplement
+ "\xC2\xAA" /* ª */ => 'a', "\xC2\xBA" /* º */ => 'o', "\xC3\x80" /* À */ => 'A',
+ "\xC3\x81" /* à */ => 'A', "\xC3\x82" /* Â */ => 'A', "\xC3\x83" /* Ã */ => 'A',
+ "\xC3\x84" /* Ä */ => 'A', "\xC3\x85" /* Å */ => 'A', "\xC3\x86" /* Æ */ => 'AE',
+ "\xC3\x87" /* Ç */ => 'C', "\xC3\x88" /* È */ => 'E', "\xC3\x89" /* É */ => 'E',
+ "\xC3\x8A" /* Ê */ => 'E', "\xC3\x8B" /* Ë */ => 'E', "\xC3\x8C" /* Ì */ => 'I',
+ "\xC3\x8D" /* Ã */ => 'I', "\xC3\x8E" /* ÃŽ */ => 'I', "\xC3\x8F" /* Ã */ => 'I',
+ "\xC3\x90" /* à */ => 'D', "\xC3\x91" /* Ñ */ => 'N', "\xC3\x92" /* Ò */ => 'O',
+ "\xC3\x93" /* Ó */ => 'O', "\xC3\x94" /* Ô */ => 'O', "\xC3\x95" /* Õ */ => 'O',
+ "\xC3\x96" /* Ö */ => 'O', "\xC3\x99" /* Ù */ => 'U', "\xC3\x9A" /* Ú */ => 'U',
+ "\xC3\x9B" /* Û */ => 'U', "\xC3\x9C" /* Ü */ => 'U', "\xC3\x9D" /* à */ => 'Y',
+ "\xC3\x9E" /* Þ */ => 'TH', "\xC3\x9F" /* ß */ => 'ss', "\xC3\xA0" /* à */ => 'a',
+ "\xC3\xA1" /* á */ => 'a', "\xC3\xA2" /* â */ => 'a', "\xC3\xA3" /* ã */ => 'a',
+ "\xC3\xA4" /* ä */ => 'a', "\xC3\xA5" /* å */ => 'a', "\xC3\xA6" /* æ */ => 'ae',
+ "\xC3\xA7" /* ç */ => 'c', "\xC3\xA8" /* è */ => 'e', "\xC3\xA9" /* é */ => 'e',
+ "\xC3\xAA" /* ê */ => 'e', "\xC3\xAB" /* ë */ => 'e', "\xC3\xAC" /* ì */ => 'i',
+ "\xC3\xAD" /* í */ => 'i', "\xC3\xAE" /* î */ => 'i', "\xC3\xAF" /* ï */ => 'i',
+ "\xC3\xB0" /* ð */ => 'd', "\xC3\xB1" /* ñ */ => 'n', "\xC3\xB2" /* ò */ => 'o',
+ "\xC3\xB3" /* ó */ => 'o', "\xC3\xB4" /* ô */ => 'o', "\xC3\xB5" /* õ */ => 'o',
+ "\xC3\xB6" /* ö */ => 'o', "\xC3\xB8" /* ø */ => 'o', "\xC3\xB9" /* ù */ => 'u',
+ "\xC3\xBA" /* ú */ => 'u', "\xC3\xBB" /* û */ => 'u', "\xC3\xBC" /* ü */ => 'u',
+ "\xC3\xBD" /* ý */ => 'y', "\xC3\xBE" /* þ */ => 'th', "\xC3\xBF" /* ÿ */ => 'y',
+ "\xC3\x98" /* Ø */ => 'O',
+ // Decompositions for Latin Extended-A
+ "\xC4\x80" /* Ä€ */ => 'A', "\xC4\x81" /* Ä */ => 'a', "\xC4\x82" /* Ä‚ */ => 'A',
+ "\xC4\x83" /* ă */ => 'a', "\xC4\x84" /* Ą */ => 'A', "\xC4\x85" /* ą */ => 'a',
+ "\xC4\x86" /* Ć */ => 'C', "\xC4\x87" /* ć */ => 'c', "\xC4\x88" /* Ĉ */ => 'C',
+ "\xC4\x89" /* ĉ */ => 'c', "\xC4\x8A" /* Ċ */ => 'C', "\xC4\x8B" /* ċ */ => 'c',
+ "\xC4\x8C" /* ÄŒ */ => 'C', "\xC4\x8D" /* Ä */ => 'c', "\xC4\x8E" /* ÄŽ */ => 'D',
+ "\xC4\x8F" /* Ä */ => 'd', "\xC4\x90" /* Ä */ => 'D', "\xC4\x91" /* Ä‘ */ => 'd',
+ "\xC4\x92" /* Ä’ */ => 'E', "\xC4\x93" /* Ä“ */ => 'e', "\xC4\x94" /* Ä” */ => 'E',
+ "\xC4\x95" /* Ä• */ => 'e', "\xC4\x96" /* Ä– */ => 'E', "\xC4\x97" /* Ä— */ => 'e',
+ "\xC4\x98" /* Ę */ => 'E', "\xC4\x99" /* ę */ => 'e', "\xC4\x9A" /* Ě */ => 'E',
+ "\xC4\x9B" /* Ä› */ => 'e', "\xC4\x9C" /* Äœ */ => 'G', "\xC4\x9D" /* Ä */ => 'g',
+ "\xC4\x9E" /* Äž */ => 'G', "\xC4\x9F" /* ÄŸ */ => 'g', "\xC4\xA0" /* Ä  */ => 'G',
+ "\xC4\xA1" /* ġ */ => 'g', "\xC4\xA2" /* Ģ */ => 'G', "\xC4\xA3" /* ģ */ => 'g',
+ "\xC4\xA4" /* Ĥ */ => 'H', "\xC4\xA5" /* ĥ */ => 'h', "\xC4\xA6" /* Ħ */ => 'H',
+ "\xC4\xA7" /* ħ */ => 'h', "\xC4\xA8" /* Ĩ */ => 'I', "\xC4\xA9" /* ĩ */ => 'i',
+ "\xC4\xAA" /* Ī */ => 'I', "\xC4\xAB" /* ī */ => 'i', "\xC4\xAC" /* Ĭ */ => 'I',
+ "\xC4\xAD" /* ĭ */ => 'i', "\xC4\xAE" /* Į */ => 'I', "\xC4\xAF" /* į */ => 'i',
+ "\xC4\xB0" /* İ */ => 'I', "\xC4\xB1" /* ı */ => 'i', "\xC4\xB2" /* IJ */ => 'IJ',
+ "\xC4\xB3" /* ij */ => 'ij', "\xC4\xB4" /* Ĵ */ => 'J', "\xC4\xB5" /* ĵ */ => 'j',
+ "\xC4\xB6" /* Ķ */ => 'K', "\xC4\xB7" /* ķ */ => 'k', "\xC4\xB8" /* ĸ */ => 'k',
+ "\xC4\xB9" /* Ĺ */ => 'L', "\xC4\xBA" /* ĺ */ => 'l', "\xC4\xBB" /* Ļ */ => 'L',
+ "\xC4\xBC" /* ļ */ => 'l', "\xC4\xBD" /* Ľ */ => 'L', "\xC4\xBE" /* ľ */ => 'l',
+ "\xC4\xBF" /* Ŀ */ => 'L', "\xC5\x80" /* ŀ */ => 'l', "\xC5\x81" /* Š*/ => 'L',
+ "\xC5\x82" /* ł */ => 'l', "\xC5\x83" /* Ń */ => 'N', "\xC5\x84" /* ń */ => 'n',
+ "\xC5\x85" /* Ņ */ => 'N', "\xC5\x86" /* ņ */ => 'n', "\xC5\x87" /* Ň */ => 'N',
+ "\xC5\x88" /* ň */ => 'n', "\xC5\x89" /* ʼn */ => 'N', "\xC5\x8A" /* Ŋ */ => 'n',
+ "\xC5\x8B" /* ŋ */ => 'N', "\xC5\x8C" /* Ō */ => 'O', "\xC5\x8D" /* Š*/ => 'o',
+ "\xC5\x8E" /* ÅŽ */ => 'O', "\xC5\x8F" /* Å */ => 'o', "\xC5\x90" /* Å */ => 'O',
+ "\xC5\x91" /* Å‘ */ => 'o', "\xC5\x92" /* Å’ */ => 'OE', "\xC5\x93" /* Å“ */ => 'oe',
+ "\xC5\x94" /* Å” */ => 'R', "\xC5\x95" /* Å• */ => 'r', "\xC5\x96" /* Å– */ => 'R',
+ "\xC5\x97" /* ŗ */ => 'r', "\xC5\x98" /* Ř */ => 'R', "\xC5\x99" /* ř */ => 'r',
+ "\xC5\x9A" /* Ś */ => 'S', "\xC5\x9B" /* ś */ => 's', "\xC5\x9C" /* Ŝ */ => 'S',
+ "\xC5\x9D" /* Å */ => 's', "\xC5\x9E" /* Åž */ => 'S', "\xC5\x9F" /* ÅŸ */ => 's',
+ "\xC5\xA0" /* Š */ => 'S', "\xC5\xA1" /* š */ => 's', "\xC5\xA2" /* Ţ */ => 'T',
+ "\xC5\xA3" /* ţ */ => 't', "\xC5\xA4" /* Ť */ => 'T', "\xC5\xA5" /* ť */ => 't',
+ "\xC5\xA6" /* Ŧ */ => 'T', "\xC5\xA7" /* ŧ */ => 't', "\xC5\xA8" /* Ũ */ => 'U',
+ "\xC5\xA9" /* ũ */ => 'u', "\xC5\xAA" /* Ū */ => 'U', "\xC5\xAB" /* ū */ => 'u',
+ "\xC5\xAC" /* Ŭ */ => 'U', "\xC5\xAD" /* ŭ */ => 'u', "\xC5\xAE" /* Ů */ => 'U',
+ "\xC5\xAF" /* ů */ => 'u', "\xC5\xB0" /* Ű */ => 'U', "\xC5\xB1" /* ű */ => 'u',
+ "\xC5\xB2" /* Ų */ => 'U', "\xC5\xB3" /* ų */ => 'u', "\xC5\xB4" /* Ŵ */ => 'W',
+ "\xC5\xB5" /* ŵ */ => 'w', "\xC5\xB6" /* Ŷ */ => 'Y', "\xC5\xB7" /* ŷ */ => 'y',
+ "\xC5\xB8" /* Ÿ */ => 'Y', "\xC5\xB9" /* Ź */ => 'Z', "\xC5\xBA" /* ź */ => 'z',
+ "\xC5\xBB" /* Ż */ => 'Z', "\xC5\xBC" /* ż */ => 'z', "\xC5\xBD" /* Ž */ => 'Z',
+ "\xC5\xBE" /* ž */ => 'z', "\xC5\xBF" /* ſ */ => 's',
+ // Decompositions for Latin Extended-B
+ "\xC8\x98" /* Ș */ => 'S', "\xC8\x99" /* ș */ => 's',
+ "\xC8\x9A" /* Èš */ => 'T', "\xC8\x9B" /* È› */ => 't',
+ // unmarked
+ "\xC6\xA0" /* Æ  */ => 'O', "\xC6\xA1" /* Æ¡ */ => 'o',
+ "\xC6\xAF" /* Ư */ => 'U', "\xC6\xB0" /* ư */ => 'u',
+ // grave accent
+ "\xE1\xBA\xA6" /* Ầ */ => 'A', "\xE1\xBA\xA7" /* ầ */ => 'a',
+ "\xE1\xBA\xB0" /* Ằ */ => 'A', "\xE1\xBA\xB1" /* ằ */ => 'a',
+ "\xE1\xBB\x80" /* Ề */ => 'E', "\xE1\xBB\x81" /* Ỡ*/ => 'e',
+ "\xE1\xBB\x92" /* Ồ */ => 'O', "\xE1\xBB\x93" /* ồ */ => 'o',
+ "\xE1\xBB\x9C" /* Ờ */ => 'O', "\xE1\xBB\x9D" /* Ỡ*/ => 'o',
+ "\xE1\xBB\xAA" /* Ừ */ => 'U', "\xE1\xBB\xAB" /* ừ */ => 'u',
+ "\xE1\xBB\xB2" /* Ỳ */ => 'Y', "\xE1\xBB\xB3" /* ỳ */ => 'y',
+ // hook
+ "\xE1\xBA\xA2" /* Ả */ => 'A', "\xE1\xBA\xA3" /* ả */ => 'a',
+ "\xE1\xBA\xA8" /* Ẩ */ => 'A', "\xE1\xBA\xA9" /* ẩ */ => 'a',
+ "\xE1\xBA\xB2" /* Ẳ */ => 'A', "\xE1\xBA\xB3" /* ẳ */ => 'a',
+ "\xE1\xBA\xBA" /* Ẻ */ => 'E', "\xE1\xBA\xBB" /* ẻ */ => 'e',
+ "\xE1\xBB\x82" /* Ể */ => 'E', "\xE1\xBB\x83" /* ể */ => 'e',
+ "\xE1\xBB\x88" /* Ỉ */ => 'I', "\xE1\xBB\x89" /* ỉ */ => 'i',
+ "\xE1\xBB\x8E" /* Ỏ */ => 'O', "\xE1\xBB\x8F" /* Ỡ*/ => 'o',
+ "\xE1\xBB\x94" /* Ổ */ => 'O', "\xE1\xBB\x95" /* ổ */ => 'o',
+ "\xE1\xBB\x9E" /* Ở */ => 'O', "\xE1\xBB\x9F" /* ở */ => 'o',
+ "\xE1\xBB\xA6" /* Ủ */ => 'U', "\xE1\xBB\xA7" /* ủ */ => 'u',
+ "\xE1\xBB\xAC" /* Ử */ => 'U', "\xE1\xBB\xAD" /* ử */ => 'u',
+ "\xE1\xBB\xB6" /* á»¶ */ => 'Y', "\xE1\xBB\xB7" /* á»· */ => 'y',
+ // tilde
+ "\xE1\xBA\xAA" /* Ẫ */ => 'A', "\xE1\xBA\xAB" /* ẫ */ => 'a',
+ "\xE1\xBA\xB4" /* Ẵ */ => 'A', "\xE1\xBA\xB5" /* ẵ */ => 'a',
+ "\xE1\xBA\xBC" /* Ẽ */ => 'E', "\xE1\xBA\xBD" /* ẽ */ => 'e',
+ "\xE1\xBB\x84" /* Ễ */ => 'E', "\xE1\xBB\x85" /* ễ */ => 'e',
+ "\xE1\xBB\x96" /* á»– */ => 'O', "\xE1\xBB\x97" /* á»— */ => 'o',
+ "\xE1\xBB\xA0" /* Ỡ */ => 'O', "\xE1\xBB\xA1" /* ỡ */ => 'o',
+ "\xE1\xBB\xAE" /* Ữ */ => 'U', "\xE1\xBB\xAF" /* ữ */ => 'u',
+ "\xE1\xBB\xB8" /* Ỹ */ => 'Y', "\xE1\xBB\xB9" /* ỹ */ => 'y',
+ // acute accent
+ "\xE1\xBA\xA4" /* Ấ */ => 'A', "\xE1\xBA\xA5" /* ấ */ => 'a',
+ "\xE1\xBA\xAE" /* Ắ */ => 'A', "\xE1\xBA\xAF" /* ắ */ => 'a',
+ "\xE1\xBA\xBE" /* Ế */ => 'E', "\xE1\xBA\xBF" /* ế */ => 'e',
+ "\xE1\xBB\x90" /* Ỡ*/ => 'O', "\xE1\xBB\x91" /* ố */ => 'o',
+ "\xE1\xBB\x9A" /* Ớ */ => 'O', "\xE1\xBB\x9B" /* ớ */ => 'o',
+ "\xE1\xBB\xA8" /* Ứ */ => 'U', "\xE1\xBB\xA9" /* ứ */ => 'u',
+ // dot below
+ "\xE1\xBA\xA0" /* Ạ */ => 'A', "\xE1\xBA\xA1" /* ạ */ => 'a',
+ "\xE1\xBA\xAC" /* Ậ */ => 'A', "\xE1\xBA\xAD" /* ậ */ => 'a',
+ "\xE1\xBA\xB6" /* Ặ */ => 'A', "\xE1\xBA\xB7" /* ặ */ => 'a',
+ "\xE1\xBA\xB8" /* Ẹ */ => 'E', "\xE1\xBA\xB9" /* ẹ */ => 'e',
+ "\xE1\xBB\x86" /* Ệ */ => 'E', "\xE1\xBB\x87" /* ệ */ => 'e',
+ "\xE1\xBB\x8A" /* Ị */ => 'I', "\xE1\xBB\x8B" /* ị */ => 'i',
+ "\xE1\xBB\x8C" /* Ọ */ => 'O', "\xE1\xBB\x8D" /* Ỡ*/ => 'o',
+ "\xE1\xBB\x98" /* Ộ */ => 'O', "\xE1\xBB\x99" /* ộ */ => 'o',
+ "\xE1\xBB\xA2" /* Ợ */ => 'O', "\xE1\xBB\xA3" /* ợ */ => 'o',
+ "\xE1\xBB\xA4" /* Ụ */ => 'U', "\xE1\xBB\xA5" /* ụ */ => 'u',
+ "\xE1\xBB\xB0" /* á»° */ => 'U', "\xE1\xBB\xB1" /* á»± */ => 'u',
+ "\xE1\xBB\xB4" /* Ỵ */ => 'Y', "\xE1\xBB\xB5" /* ỵ */ => 'y',
+ );
+ }
+
+ /**
+ * Tests that "normalizer_normalize" exists and works
+ *
+ * @return bool
+ */
+ static public function hasNormalizerSupport() {
+ static $ret = null;
+ if (null === $ret) {
+ $form_c = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
+ $form_d = "A\xCC\x8A"; // A followed by 'COMBINING RING ABOVE' (U+030A)
+ $ret = (function_exists('normalizer_normalize')
+ && $form_c === normalizer_normalize($form_d));
+ }
+ return $ret;
+ }
+}
diff --git a/engine/classes/ElggUser.php b/engine/classes/ElggUser.php
index d7bb89265..6163f9b62 100644
--- a/engine/classes/ElggUser.php
+++ b/engine/classes/ElggUser.php
@@ -40,6 +40,9 @@ class ElggUser extends ElggEntity
$this->attributes['code'] = NULL;
$this->attributes['banned'] = "no";
$this->attributes['admin'] = 'no';
+ $this->attributes['prev_last_action'] = NULL;
+ $this->attributes['last_login'] = NULL;
+ $this->attributes['prev_last_login'] = NULL;
$this->attributes['tables_split'] = 2;
}
@@ -65,30 +68,26 @@ class ElggUser extends ElggEntity
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // See if this is a username
} else if (is_string($guid)) {
+ // $guid is a username
$user = get_user_by_username($guid);
if ($user) {
foreach ($user->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
}
-
- // Is $guid is an ElggUser? Use a copy constructor
} else if ($guid instanceof ElggUser) {
+ // $guid is an ElggUser so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggUser constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggUser = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo why have a special case here
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggUser'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load entity
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -106,37 +105,17 @@ class ElggUser extends ElggEntity
* @return bool
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
-
- // Check the type
- if ($this->attributes['type'] != 'user') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'user', $this->attributes);
+ $attr_loader->secondary_loader = 'get_user_entity_as_row';
- // Load missing data
- $row = get_user_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -153,9 +132,13 @@ class ElggUser extends ElggEntity
}
// Now save specific stuff
- return create_user_entity($this->get('guid'), $this->get('name'), $this->get('username'),
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_user_entity($this->get('guid'), $this->get('name'), $this->get('username'),
$this->get('password'), $this->get('salt'), $this->get('email'), $this->get('language'),
$this->get('code'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
/**
diff --git a/engine/classes/ElggVolatileMetadataCache.php b/engine/classes/ElggVolatileMetadataCache.php
new file mode 100644
index 000000000..4acda7cee
--- /dev/null
+++ b/engine/classes/ElggVolatileMetadataCache.php
@@ -0,0 +1,355 @@
+<?php
+/**
+ * ElggVolatileMetadataCache
+ * In memory cache of known metadata values stored by entity.
+ *
+ * @package Elgg.Core
+ * @subpackage Cache
+ *
+ * @access private
+ */
+class ElggVolatileMetadataCache {
+
+ /**
+ * The cached values (or null for known to be empty). If the portion of the cache
+ * is synchronized, missing values are assumed to indicate that values do not
+ * exist in storage, otherwise, we don't know what's there.
+ *
+ * @var array
+ */
+ protected $values = array();
+
+ /**
+ * Does the cache know that it contains all names fetch-able from storage?
+ * The keys are entity GUIDs and either the value exists (true) or it's not set.
+ *
+ * @var array
+ */
+ protected $isSynchronized = array();
+
+ /**
+ * @var null|bool
+ */
+ protected $ignoreAccess = null;
+
+ /**
+ * Cache metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param array $values The metadata values to cache
+ * @return void
+ */
+ public function saveAll($entity_guid, array $values) {
+ if (!$this->getIgnoreAccess()) {
+ $this->values[$entity_guid] = $values;
+ $this->isSynchronized[$entity_guid] = true;
+ }
+ }
+
+ /**
+ * Get the metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return array
+ */
+ public function loadAll($entity_guid) {
+ if (isset($this->values[$entity_guid])) {
+ return $this->values[$entity_guid];
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * Declare that there may be fetch-able metadata names in storage that this
+ * cache doesn't know about
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return void
+ */
+ public function markOutOfSync($entity_guid) {
+ unset($this->isSynchronized[$entity_guid]);
+ }
+
+ /**
+ * Have all the metadata for this entity been cached?
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return bool
+ */
+ public function isSynchronized($entity_guid) {
+ return isset($this->isSynchronized[$entity_guid]);
+ }
+
+ /**
+ * Cache a piece of metadata
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @param array|int|string|null $value The metadata value. null means it is
+ * known that there is no fetch-able
+ * metadata under this name
+ * @param bool $allow_multiple Can the metadata be an array
+ * @return void
+ */
+ public function save($entity_guid, $name, $value, $allow_multiple = false) {
+ if ($this->getIgnoreAccess()) {
+ // we don't know if what gets saves here will be available to user once
+ // access control returns, hence it's best to forget :/
+ $this->markUnknown($entity_guid, $name);
+ } else {
+ if ($allow_multiple) {
+ if ($this->isKnown($entity_guid, $name)) {
+ $existing = $this->load($entity_guid, $name);
+ if ($existing !== null) {
+ $existing = (array) $existing;
+ $existing[] = $value;
+ $value = $existing;
+ }
+ } else {
+ // we don't know whether there are unknown values, so it's
+ // safest to leave that assumption
+ $this->markUnknown($entity_guid, $name);
+ return;
+ }
+ }
+ $this->values[$entity_guid][$name] = $value;
+ }
+ }
+
+ /**
+ * Warning: You should always call isKnown() beforehand to verify that this
+ * function's return value should be trusted (otherwise a null return value
+ * is ambiguous).
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return array|string|int|null null = value does not exist
+ */
+ public function load($entity_guid, $name) {
+ if (isset($this->values[$entity_guid]) && array_key_exists($name, $this->values[$entity_guid])) {
+ return $this->values[$entity_guid][$name];
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Forget about this metadata entry. We don't want to try to guess what the
+ * next fetch from storage will return
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return void
+ */
+ public function markUnknown($entity_guid, $name) {
+ unset($this->values[$entity_guid][$name]);
+ $this->markOutOfSync($entity_guid);
+ }
+
+ /**
+ * If true, load() will return an accurate value for this name
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return bool
+ */
+ public function isKnown($entity_guid, $name) {
+ if (isset($this->isSynchronized[$entity_guid])) {
+ return true;
+ } else {
+ return (isset($this->values[$entity_guid]) && array_key_exists($name, $this->values[$entity_guid]));
+ }
+
+ }
+
+ /**
+ * Declare that metadata under this name is known to be not fetch-able from storage
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return array
+ */
+ public function markEmpty($entity_guid, $name) {
+ $this->values[$entity_guid][$name] = null;
+ }
+
+ /**
+ * Forget about all metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return void
+ */
+ public function clear($entity_guid) {
+ $this->values[$entity_guid] = array();
+ $this->markOutOfSync($entity_guid);
+ }
+
+ /**
+ * Clear entire cache and mark all entities as out of sync
+ *
+ * @return void
+ */
+ public function flush() {
+ $this->values = array();
+ $this->isSynchronized = array();
+ }
+
+ /**
+ * Use this value instead of calling elgg_get_ignore_access(). By default that
+ * function will be called.
+ *
+ * This setting makes this component a little more loosely-coupled.
+ *
+ * @param bool $ignore Whether to ignore access or not
+ * @return void
+ */
+ public function setIgnoreAccess($ignore) {
+ $this->ignoreAccess = (bool) $ignore;
+ }
+
+ /**
+ * Tell the cache to call elgg_get_ignore_access() to determing access status.
+ *
+ * @return void
+ */
+ public function unsetIgnoreAccess() {
+ $this->ignoreAccess = null;
+ }
+
+ /**
+ * Get the ignore access value
+ *
+ * @return bool
+ */
+ protected function getIgnoreAccess() {
+ if (null === $this->ignoreAccess) {
+ return elgg_get_ignore_access();
+ } else {
+ return $this->ignoreAccess;
+ }
+ }
+
+ /**
+ * Invalidate based on options passed to the global *_metadata functions
+ *
+ * @param string $action Action performed on metadata. "delete", "disable", or "enable"
+ * @param array $options Options passed to elgg_(delete|disable|enable)_metadata
+ * "guid" if given, invalidation will be limited to this entity
+ * "metadata_name" if given, invalidation will be limited to metadata with this name
+ * @return void
+ */
+ public function invalidateByOptions($action, array $options) {
+ // remove as little as possible, optimizing for common cases
+ if (empty($options['guid'])) {
+ // safest to clear everything unless we want to make this even more complex :(
+ $this->flush();
+ } else {
+ if (empty($options['metadata_name'])) {
+ // safest to clear the whole entity
+ $this->clear($options['guid']);
+ } else {
+ switch ($action) {
+ case 'delete':
+ $this->markEmpty($options['guid'], $options['metadata_name']);
+ break;
+ default:
+ $this->markUnknown($options['guid'], $options['metadata_name']);
+ }
+ }
+ }
+ }
+
+ /**
+ * Populate the cache from a set of entities
+ *
+ * @param int|array $guids Array of or single GUIDs
+ * @return void
+ */
+ public function populateFromEntities($guids) {
+ if (empty($guids)) {
+ return;
+ }
+ if (!is_array($guids)) {
+ $guids = array($guids);
+ }
+ $guids = array_unique($guids);
+
+ // could be useful at some point in future
+ //$guids = $this->filterMetadataHeavyEntities($guids);
+
+ $db_prefix = elgg_get_config('dbprefix');
+ $options = array(
+ 'guids' => $guids,
+ 'limit' => 0,
+ 'callback' => false,
+ 'joins' => array(
+ "JOIN {$db_prefix}metastrings v ON n_table.value_id = v.id",
+ "JOIN {$db_prefix}metastrings n ON n_table.name_id = n.id",
+ ),
+ 'selects' => array('n.string AS name', 'v.string AS value'),
+ 'order_by' => 'n_table.entity_guid, n_table.time_created ASC',
+
+ // @todo don't know why this is necessary
+ 'wheres' => array(get_access_sql_suffix('n_table')),
+ );
+ $data = elgg_get_metadata($options);
+
+ // build up metadata for each entity, save when GUID changes (or data ends)
+ $last_guid = null;
+ $metadata = array();
+ $last_row_idx = count($data) - 1;
+ foreach ($data as $i => $row) {
+ $name = $row->name;
+ $value = ($row->value_type === 'text') ? $row->value : (int) $row->value;
+ $guid = $row->entity_guid;
+ if ($guid !== $last_guid) {
+ if ($last_guid) {
+ $this->saveAll($last_guid, $metadata);
+ }
+ $metadata = array();
+ }
+ if (isset($metadata[$name])) {
+ $metadata[$name] = (array) $metadata[$name];
+ $metadata[$name][] = $value;
+ } else {
+ $metadata[$name] = $value;
+ }
+ if (($i == $last_row_idx)) {
+ $this->saveAll($guid, $metadata);
+ }
+ $last_guid = $guid;
+ }
+ }
+
+ /**
+ * Filter out entities whose concatenated metadata values (INTs casted as string)
+ * exceed a threshold in characters. This could be used to avoid overpopulating the
+ * cache if RAM usage becomes an issue.
+ *
+ * @param array $guids GUIDs of entities to examine
+ * @param int $limit Limit in characters of all metadata (with ints casted to strings)
+ * @return array
+ */
+ public function filterMetadataHeavyEntities(array $guids, $limit = 1024000) {
+ $db_prefix = elgg_get_config('dbprefix');
+
+ $options = array(
+ 'guids' => $guids,
+ 'limit' => 0,
+ 'callback' => false,
+ 'joins' => "JOIN {$db_prefix}metastrings v ON n_table.value_id = v.id",
+ 'selects' => array('SUM(LENGTH(v.string)) AS bytes'),
+ 'order_by' => 'n_table.entity_guid, n_table.time_created ASC',
+ 'group_by' => 'n_table.entity_guid',
+ );
+ $data = elgg_get_metadata($options);
+ // don't cache if metadata for entity is over 10MB (or rolled INT)
+ foreach ($data as $row) {
+ if ($row->bytes > $limit || $row->bytes < 0) {
+ array_splice($guids, array_search($row->entity_guid, $guids), 1);
+ }
+ }
+ return $guids;
+ }
+}
diff --git a/engine/classes/ElggWidget.php b/engine/classes/ElggWidget.php
index 99708f66a..66191bf47 100644
--- a/engine/classes/ElggWidget.php
+++ b/engine/classes/ElggWidget.php
@@ -7,6 +7,11 @@
*
* @package Elgg.Core
* @subpackage Widgets
+ *
+ * @property-read string $handler internal, do not use
+ * @property-read string $column internal, do not use
+ * @property-read string $order internal, do not use
+ * @property-read string $context internal, do not use
*/
class ElggWidget extends ElggObject {
@@ -141,10 +146,15 @@ class ElggWidget extends ElggObject {
}
}
+ $bottom_rank = count($widgets);
+ if ($column == $this->column) {
+ $bottom_rank--;
+ }
+
if ($rank == 0) {
// top of the column
$this->order = reset($widgets)->order - 10;
- } elseif ($rank == (count($widgets) - 1)) {
+ } elseif ($rank == $bottom_rank) {
// bottom of the column of active widgets
$this->order = end($widgets)->order + 10;
} else {
diff --git a/engine/classes/ElggXMLElement.php b/engine/classes/ElggXMLElement.php
new file mode 100644
index 000000000..cbd3fc5ce
--- /dev/null
+++ b/engine/classes/ElggXMLElement.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * A parser for XML that uses SimpleXMLElement
+ *
+ * @package Elgg.Core
+ * @subpackage XML
+ */
+class ElggXMLElement {
+ /**
+ * @var SimpleXMLElement
+ */
+ private $_element;
+
+ /**
+ * Creates an ElggXMLParser from a string or existing SimpleXMLElement
+ *
+ * @param string|SimpleXMLElement $xml The XML to parse
+ */
+ public function __construct($xml) {
+ if ($xml instanceof SimpleXMLElement) {
+ $this->_element = $xml;
+ } else {
+ // do not load entities
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ $this->_element = new SimpleXMLElement($xml);
+
+ libxml_disable_entity_loader($disable_load_entities);
+ }
+ }
+
+ /**
+ * @return string The name of the element
+ */
+ public function getName() {
+ return $this->_element->getName();
+ }
+
+ /**
+ * @return string[] The attributes
+ */
+ public function getAttributes() {
+ //include namespace declarations as attributes
+ $xmlnsRaw = $this->_element->getNamespaces();
+ $xmlns = array();
+ foreach ($xmlnsRaw as $key => $val) {
+ $label = 'xmlns' . ($key ? ":$key" : $key);
+ $xmlns[$label] = $val;
+ }
+ //get attributes and merge with namespaces
+ $attrRaw = $this->_element->attributes();
+ $attr = array();
+ foreach ($attrRaw as $key => $val) {
+ $attr[$key] = $val;
+ }
+ $attr = array_merge((array) $xmlns, (array) $attr);
+ $result = array();
+ foreach ($attr as $key => $val) {
+ $result[$key] = (string) $val;
+ }
+ return $result;
+ }
+
+ /**
+ * @return string CData
+ */
+ public function getContent() {
+ return (string) $this->_element;
+ }
+
+ /**
+ * @return ElggXMLElement[] Child elements
+ */
+ public function getChildren() {
+ $children = $this->_element->children();
+ $result = array();
+ foreach ($children as $val) {
+ $result[] = new ElggXMLElement($val);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Override ->
+ *
+ * @param string $name Property name
+ * @return mixed
+ */
+ function __get($name) {
+ switch ($name) {
+ case 'name':
+ return $this->getName();
+ break;
+ case 'attributes':
+ return $this->getAttributes();
+ break;
+ case 'content':
+ return $this->getContent();
+ break;
+ case 'children':
+ return $this->getChildren();
+ break;
+ }
+ return null;
+ }
+
+ /**
+ * Override isset
+ *
+ * @param string $name Property name
+ * @return boolean
+ */
+ function __isset($name) {
+ switch ($name) {
+ case 'name':
+ return $this->getName() !== null;
+ break;
+ case 'attributes':
+ return $this->getAttributes() !== null;
+ break;
+ case 'content':
+ return $this->getContent() !== null;
+ break;
+ case 'children':
+ return $this->getChildren() !== null;
+ break;
+ }
+ return false;
+ }
+}
diff --git a/engine/classes/IncompleteEntityException.php b/engine/classes/IncompleteEntityException.php
new file mode 100644
index 000000000..8c86edcc6
--- /dev/null
+++ b/engine/classes/IncompleteEntityException.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * IncompleteEntityException
+ * Thrown when constructing an entity that is missing its secondary entity table
+ *
+ * @package Elgg.Core
+ * @subpackage Exception
+ * @access private
+ */
+class IncompleteEntityException extends Exception {}
diff --git a/engine/classes/ODDMetaData.php b/engine/classes/ODDMetaData.php
index 58862e0fb..09b653582 100644
--- a/engine/classes/ODDMetaData.php
+++ b/engine/classes/ODDMetaData.php
@@ -10,12 +10,12 @@ class ODDMetaData extends ODD {
/**
* New ODD metadata
*
- * @param unknown_type $uuid Unique ID
- * @param unknown_type $entity_uuid Another unique ID
- * @param unknown_type $name Name
- * @param unknown_type $value Value
- * @param unknown_type $type Type
- * @param unknown_type $owner_uuid Owner ID
+ * @param string $uuid Unique ID
+ * @param string $entity_uuid Another unique ID
+ * @param string $name Name
+ * @param string $value Value
+ * @param string $type Type
+ * @param string $owner_uuid Owner ID
*/
function __construct($uuid, $entity_uuid, $name, $value, $type = "", $owner_uuid = "") {
parent::__construct();
@@ -31,7 +31,7 @@ class ODDMetaData extends ODD {
/**
* Returns 'metadata'
*
- * @return 'metadata'
+ * @return string 'metadata'
*/
protected function getTagName() {
return "metadata";
diff --git a/engine/classes/ODDRelationship.php b/engine/classes/ODDRelationship.php
index 2906b1c73..8b1fe217b 100644
--- a/engine/classes/ODDRelationship.php
+++ b/engine/classes/ODDRelationship.php
@@ -10,9 +10,9 @@ class ODDRelationship extends ODD {
/**
* New ODD Relationship
*
- * @param unknown_type $uuid1 First UUID
- * @param unknown_type $type Type of telationship
- * @param unknown_type $uuid2 Second UUId
+ * @param string $uuid1 First UUID
+ * @param string $type Type of telationship
+ * @param string $uuid2 Second UUId
*/
function __construct($uuid1, $type, $uuid2) {
parent::__construct();
@@ -25,7 +25,7 @@ class ODDRelationship extends ODD {
/**
* Returns 'relationship'
*
- * @return 'relationship'
+ * @return string 'relationship'
*/
protected function getTagName() {
return "relationship";
diff --git a/engine/handlers/cache_handler.php b/engine/handlers/cache_handler.php
index b332ec379..36fc665bb 100644
--- a/engine/handlers/cache_handler.php
+++ b/engine/handlers/cache_handler.php
@@ -64,7 +64,7 @@ $ts = $matches[4];
// If is the same ETag, content didn't changed.
$etag = $ts;
-if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") {
header("HTTP/1.1 304 Not Modified");
exit;
}
@@ -80,23 +80,26 @@ switch ($type) {
break;
}
-header('Expires: ' . date('r', strtotime("+6 months")), true);
+header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true);
header("Pragma: public", true);
header("Cache-Control: public", true);
-header("ETag: $etag");
+header("ETag: \"$etag\"");
$filename = $dataroot . 'views_simplecache/' . md5($viewtype . $view);
if (file_exists($filename)) {
- $contents = file_get_contents($filename);
+ readfile($filename);
} else {
// someone trying to access a non-cached file or a race condition with cache flushing
mysql_close($mysql_dblink);
require_once(dirname(dirname(__FILE__)) . "/start.php");
- elgg_regenerate_simplecache();
+
+ global $CONFIG;
+ if (!in_array($view, $CONFIG->views->simplecache)) {
+ header("HTTP/1.1 404 Not Found");
+ exit;
+ }
elgg_set_viewtype($viewtype);
- $contents = elgg_view($view);
+ echo elgg_view($view);
}
-
-echo $contents;
diff --git a/engine/lib/access.php b/engine/lib/access.php
index 6be252c6a..de0693ea8 100644
--- a/engine/lib/access.php
+++ b/engine/lib/access.php
@@ -12,6 +12,26 @@
*/
/**
+ * Return an ElggCache static variable cache for the access caches
+ *
+ * @staticvar ElggStaticVariableCache $access_cache
+ * @return \ElggStaticVariableCache
+ * @access private
+ */
+function _elgg_get_access_cache() {
+ /**
+ * A default filestore cache using the dataroot.
+ */
+ static $access_cache;
+
+ if (!$access_cache) {
+ $access_cache = new ElggStaticVariableCache('access');
+ }
+
+ return $access_cache;
+}
+
+/**
* Return a string of access_ids for $user_id appropriate for inserting into an SQL IN clause.
*
* @uses get_access_array
@@ -29,10 +49,10 @@
*/
function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
global $CONFIG, $init_finished;
- static $access_list;
-
- if (!isset($access_list) || !$init_finished) {
- $access_list = array();
+ $cache = _elgg_get_access_cache();
+
+ if ($flush) {
+ $cache->clear();
}
if ($user_id == 0) {
@@ -45,13 +65,20 @@ function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (isset($access_list[$user_id]) && $flush == false) {
- return $access_list[$user_id];
- }
+ $hash = $user_id . $site_id . 'get_access_list';
- $access_list[$user_id] = "(" . implode(",", get_access_array($user_id, $site_id, $flush)) . ")";
+ if ($cache[$hash]) {
+ return $cache[$hash];
+ }
+
+ $access_array = get_access_array($user_id, $site_id, $flush);
+ $access = "(" . implode(",", $access_array) . ")";
- return $access_list[$user_id];
+ if ($init_finished) {
+ $cache[$hash] = $access;
+ }
+
+ return $access;
}
/**
@@ -79,12 +106,10 @@ function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
global $CONFIG, $init_finished;
- // @todo everything from the db is cached.
- // this cache might be redundant. But db cache is flushed on every db write.
- static $access_array;
+ $cache = _elgg_get_access_cache();
- if (!isset($access_array) || (!isset($init_finished)) || (!$init_finished)) {
- $access_array = array();
+ if ($flush) {
+ $cache->clear();
}
if ($user_id == 0) {
@@ -98,35 +123,41 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (empty($access_array[$user_id]) || $flush == true) {
- $tmp_access_array = array(ACCESS_PUBLIC);
+ $hash = $user_id . $site_id . 'get_access_array';
+
+ if ($cache[$hash]) {
+ $access_array = $cache[$hash];
+ } else {
+ $access_array = array(ACCESS_PUBLIC);
// The following can only return sensible data if the user is logged in.
if (elgg_is_logged_in()) {
- $tmp_access_array[] = ACCESS_LOGGED_IN;
+ $access_array[] = ACCESS_LOGGED_IN;
// Get ACL memberships
$query = "SELECT am.access_collection_id"
. " FROM {$CONFIG->dbprefix}access_collection_membership am"
. " LEFT JOIN {$CONFIG->dbprefix}access_collections ag ON ag.id = am.access_collection_id"
- . " WHERE am.user_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
+ . " WHERE am.user_guid = $user_id AND (ag.site_guid = $site_id OR ag.site_guid = 0)";
- if ($collections = get_data($query)) {
+ $collections = get_data($query);
+ if ($collections) {
foreach ($collections as $collection) {
if (!empty($collection->access_collection_id)) {
- $tmp_access_array[] = (int)$collection->access_collection_id;
+ $access_array[] = (int)$collection->access_collection_id;
}
}
}
// Get ACLs owned.
$query = "SELECT ag.id FROM {$CONFIG->dbprefix}access_collections ag ";
- $query .= "WHERE ag.owner_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
+ $query .= "WHERE ag.owner_guid = $user_id AND (ag.site_guid = $site_id OR ag.site_guid = 0)";
- if ($collections = get_data($query)) {
+ $collections = get_data($query);
+ if ($collections) {
foreach ($collections as $collection) {
if (!empty($collection->id)) {
- $tmp_access_array[] = (int)$collection->id;
+ $access_array[] = (int)$collection->id;
}
}
}
@@ -134,21 +165,21 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
$ignore_access = elgg_check_access_overrides($user_id);
if ($ignore_access == true) {
- $tmp_access_array[] = ACCESS_PRIVATE;
+ $access_array[] = ACCESS_PRIVATE;
}
-
- $access_array[$user_id] = $tmp_access_array;
- } else {
- // No user id logged in so we can only access public info
- $tmp_return = $tmp_access_array;
}
- } else {
- $tmp_access_array = $access_array[$user_id];
+ if ($init_finished) {
+ $cache[$hash] = $access_array;
+ }
}
- $options = array('user_id' => $user_id, 'site_id' => $site_id);
- return elgg_trigger_plugin_hook('access:collections:read', 'user', $options, $tmp_access_array);
+ $options = array(
+ 'user_id' => $user_id,
+ 'site_id' => $site_id
+ );
+
+ return elgg_trigger_plugin_hook('access:collections:read', 'user', $options, $access_array);
}
/**
@@ -394,9 +425,12 @@ function has_access_to_entity($entity, $user = null) {
* @link http://docs.elgg.org/Access
*/
function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) {
- global $CONFIG;
- //@todo this is probably not needed since caching happens at the DB level.
- static $access_array;
+ global $CONFIG, $init_finished;
+ $cache = _elgg_get_access_cache();
+
+ if ($flush) {
+ $cache->clear();
+ }
if ($user_id == 0) {
$user_id = elgg_get_logged_in_user_guid();
@@ -409,37 +443,41 @@ function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (empty($access_array[$user_id]) || $flush == true) {
- $query = "SELECT ag.* FROM {$CONFIG->dbprefix}access_collections ag ";
- $query .= " WHERE (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
- $query .= " AND (ag.owner_guid = {$user_id})";
- // ACCESS_PRIVATE through ACCESS_PUBLIC take 0 through 2
- // @todo this AND clause is unnecessary because of id starts at 3 for table
- $query .= " AND ag.id >= 3";
+ $hash = $user_id . $site_id . 'get_write_access_array';
- $tmp_access_array = array(
+ if ($cache[$hash]) {
+ $access_array = $cache[$hash];
+ } else {
+ // @todo is there such a thing as public write access?
+ $access_array = array(
ACCESS_PRIVATE => elgg_echo("PRIVATE"),
ACCESS_FRIENDS => elgg_echo("access:friends:label"),
ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"),
ACCESS_PUBLIC => elgg_echo("PUBLIC")
);
+
+ $query = "SELECT ag.* FROM {$CONFIG->dbprefix}access_collections ag ";
+ $query .= " WHERE (ag.site_guid = $site_id OR ag.site_guid = 0)";
+ $query .= " AND (ag.owner_guid = $user_id)";
+
$collections = get_data($query);
if ($collections) {
foreach ($collections as $collection) {
- $tmp_access_array[$collection->id] = $collection->name;
+ $access_array[$collection->id] = $collection->name;
}
}
- $access_array[$user_id] = $tmp_access_array;
- } else {
- $tmp_access_array = $access_array[$user_id];
+ if ($init_finished) {
+ $cache[$hash] = $access_array;
+ }
}
- $options = array('user_id' => $user_id, 'site_id' => $site_id);
- $tmp_access_array = elgg_trigger_plugin_hook('access:collections:write', 'user',
- $options, $tmp_access_array);
-
- return $tmp_access_array;
+ $options = array(
+ 'user_id' => $user_id,
+ 'site_id' => $site_id
+ );
+ return elgg_trigger_plugin_hook('access:collections:write', 'user',
+ $options, $access_array);
}
/**
@@ -469,7 +507,7 @@ function can_edit_access_collection($collection_id, $user_guid = null) {
return false;
}
- $write_access = get_write_access_array($user->getGUID(), null, true);
+ $write_access = get_write_access_array($user->getGUID(), 0, true);
// don't ignore access when checking users.
if ($user_guid) {
@@ -553,8 +591,6 @@ function create_access_collection($name, $owner_guid = 0, $site_guid = 0) {
* @see remove_user_from_access_collection()
*/
function update_access_collection($collection_id, $members) {
- global $CONFIG;
-
$acl = get_access_collection($collection_id);
if (!$acl) {
@@ -870,6 +906,8 @@ function get_readable_access_level($entity_access_id) {
* @tip Use this to access entities in automated scripts
* when no user is logged in.
*
+ * @note This clears the access cache.
+ *
* @warning This will not show disabled entities.
* Use {@link access_show_hidden_entities()} to access disabled entities.
*
@@ -881,6 +919,8 @@ function get_readable_access_level($entity_access_id) {
* @see elgg_get_ignore_access()
*/
function elgg_set_ignore_access($ignore = true) {
+ $cache = _elgg_get_access_cache();
+ $cache->clear();
$elgg_access = elgg_get_access_object();
return $elgg_access->setIgnoreAccess($ignore);
}
@@ -946,7 +986,8 @@ function elgg_get_access_object() {
*
* @global bool $init_finished
* @access private
- * @todo investigate why this is needed
+ * @todo This is required to tell the access system to start caching because
+ * calls are made while in ignore access mode and before the user is logged in.
*/
$init_finished = false;
@@ -974,6 +1015,10 @@ function access_init() {
*
* Returns true to override the access system or null if no change is needed.
*
+ * @param string $hook
+ * @param string $type
+ * @param bool $value
+ * @param array $params
* @return true|null
* @access private
*/
@@ -1006,16 +1051,25 @@ function elgg_override_permissions($hook, $type, $value, $params) {
/**
* Runs unit tests for the entities object.
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $value
+ * @param array $params
+ * @return array
+ *
* @access private
*/
function access_test($hook, $type, $value, $params) {
global $CONFIG;
+
$value[] = $CONFIG->path . 'engine/tests/api/access_collections.php';
return $value;
}
-// This function will let us know when 'init' has finished
-elgg_register_event_handler('init', 'system', 'access_init', 9999);
+// Tell the access functions the system has booted, plugins are loaded,
+// and the user is logged in so it can start caching
+elgg_register_event_handler('ready', 'system', 'access_init');
// For overrided permissions
elgg_register_plugin_hook_handler('permissions_check', 'all', 'elgg_override_permissions');
diff --git a/engine/lib/actions.php b/engine/lib/actions.php
index c6613e6d6..8047914ac 100644
--- a/engine/lib/actions.php
+++ b/engine/lib/actions.php
@@ -65,61 +65,43 @@ function action($action, $forwarder = "") {
// @todo REMOVE THESE ONCE #1509 IS IN PLACE.
// Allow users to disable plugins without a token in order to
// remove plugins that are incompatible.
- // Login and logout are for convenience.
+ // Logout for convenience.
// file/download (see #2010)
$exceptions = array(
'admin/plugins/disable',
'logout',
- 'login',
'file/download',
);
if (!in_array($action, $exceptions)) {
- // All actions require a token.
- action_gatekeeper();
+ action_gatekeeper($action);
}
$forwarder = str_replace(elgg_get_site_url(), "", $forwarder);
$forwarder = str_replace("http://", "", $forwarder);
$forwarder = str_replace("@", "", $forwarder);
-
if (substr($forwarder, 0, 1) == "/") {
$forwarder = substr($forwarder, 1);
}
- if (isset($CONFIG->actions[$action])) {
- if (elgg_is_admin_logged_in() || ($CONFIG->actions[$action]['access'] !== 'admin')) {
- if (elgg_is_logged_in() || ($CONFIG->actions[$action]['access'] === 'public')) {
-
- // Trigger action event
- // @todo This is only called before the primary action is called.
- $event_result = true;
- $event_result = elgg_trigger_plugin_hook('action', $action, null, $event_result);
-
- // Include action
- // Event_result being false doesn't produce an error
- // since i assume this will be handled in the hook itself.
- // @todo make this better!
- if ($event_result) {
- if (!include($CONFIG->actions[$action]['file'])) {
- register_error(elgg_echo('actionnotfound', array($action)));
- }
- }
- } else {
- register_error(elgg_echo('actionloggedout'));
+ if (!isset($CONFIG->actions[$action])) {
+ register_error(elgg_echo('actionundefined', array($action)));
+ } elseif (!elgg_is_admin_logged_in() && ($CONFIG->actions[$action]['access'] === 'admin')) {
+ register_error(elgg_echo('actionunauthorized'));
+ } elseif (!elgg_is_logged_in() && ($CONFIG->actions[$action]['access'] !== 'public')) {
+ register_error(elgg_echo('actionloggedout'));
+ } else {
+ // Returning falsy doesn't produce an error
+ // We assume this will be handled in the hook itself.
+ if (elgg_trigger_plugin_hook('action', $action, null, true)) {
+ if (!include($CONFIG->actions[$action]['file'])) {
+ register_error(elgg_echo('actionnotfound', array($action)));
}
- } else {
- register_error(elgg_echo('actionunauthorized'));
}
- } else {
- register_error(elgg_echo('actionundefined', array($action)));
}
- if (!empty($forwarder)) {
- forward($forwarder);
- } else {
- forward(REFERER);
- }
+ $forwarder = empty($forwarder) ? REFERER : $forwarder;
+ forward($forwarder);
}
/**
@@ -205,6 +187,26 @@ function elgg_unregister_action($action) {
}
/**
+ * Is the token timestamp within acceptable range?
+ *
+ * @param int $ts timestamp from the CSRF token
+ *
+ * @return bool
+ */
+function _elgg_validate_token_timestamp($ts) {
+ $action_token_timeout = elgg_get_config('action_token_timeout');
+ // default is 2 hours
+ $timeout = ($action_token_timeout !== null) ? $action_token_timeout : 2;
+
+ $hour = 60 * 60;
+ $timeout = $timeout * $hour;
+ $now = time();
+
+ // Validate time to ensure its not crazy
+ return ($timeout == 0 || ($ts > $now - $timeout) && ($ts < $now + $timeout));
+}
+
+/**
* Validate an action token.
*
* Calls to actions will automatically validate tokens. If tokens are not
@@ -222,8 +224,6 @@ function elgg_unregister_action($action) {
* @access private
*/
function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL) {
- global $CONFIG;
-
if (!$token) {
$token = get_input('__elgg_token');
}
@@ -232,29 +232,18 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
$ts = get_input('__elgg_ts');
}
- if (!isset($CONFIG->action_token_timeout)) {
- // default to 2 hours
- $timeout = 2;
- } else {
- $timeout = $CONFIG->action_token_timeout;
- }
-
$session_id = session_id();
if (($token) && ($ts) && ($session_id)) {
// generate token, check with input and forward if invalid
- $generated_token = generate_action_token($ts);
+ $required_token = generate_action_token($ts);
// Validate token
- if ($token == $generated_token) {
- $hour = 60 * 60;
- $timeout = $timeout * $hour;
- $now = time();
-
- // Validate time to ensure its not crazy
- if ($timeout == 0 || ($ts > $now - $timeout) && ($ts < $now + $timeout)) {
+ if ($token == $required_token) {
+
+ if (_elgg_validate_token_timestamp($ts)) {
// We have already got this far, so unless anything
- // else says something to the contry we assume we're ok
+ // else says something to the contrary we assume we're ok
$returnval = true;
$returnval = elgg_trigger_plugin_hook('action_gatekeeper:permissions:check', 'all', array(
@@ -268,13 +257,34 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
register_error(elgg_echo('actiongatekeeper:pluginprevents'));
}
} else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:timeerror'));
+ // this is necessary because of #5133
+ if (elgg_is_xhr()) {
+ register_error(elgg_echo('js:security:token_refresh_failed', array(elgg_get_site_url())));
+ } else {
+ register_error(elgg_echo('actiongatekeeper:timeerror'));
+ }
}
} else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:tokeninvalid'));
+ // this is necessary because of #5133
+ if (elgg_is_xhr()) {
+ register_error(elgg_echo('js:security:token_refresh_failed', array(elgg_get_site_url())));
+ } else {
+ register_error(elgg_echo('actiongatekeeper:tokeninvalid'));
+ }
+ }
+ } else {
+ if (! empty($_SERVER['CONTENT_LENGTH']) && empty($_POST)) {
+ // The size of $_POST or uploaded file has exceed the size limit
+ $error_msg = elgg_trigger_plugin_hook('action_gatekeeper:upload_exceeded_msg', 'all', array(
+ 'post_size' => $_SERVER['CONTENT_LENGTH'],
+ 'visible_errors' => $visibleerrors,
+ ), elgg_echo('actiongatekeeper:uploadexceeded'));
+ } else {
+ $error_msg = elgg_echo('actiongatekeeper:missingfields');
+ }
+ if ($visibleerrors) {
+ register_error($error_msg);
}
- } else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:missingfields'));
}
return FALSE;
@@ -289,12 +299,33 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
* This function verifies form input for security features (like a generated token),
* and forwards if they are invalid.
*
+ * @param string $action The action being performed
+ *
* @return mixed True if valid or redirects.
* @access private
*/
-function action_gatekeeper() {
- if (validate_action_token()) {
- return TRUE;
+function action_gatekeeper($action) {
+ if ($action === 'login') {
+ if (validate_action_token(false)) {
+ return true;
+ }
+
+ $token = get_input('__elgg_token');
+ $ts = (int)get_input('__elgg_ts');
+ if ($token && _elgg_validate_token_timestamp($ts)) {
+ // The tokens are present and the time looks valid: this is probably a mismatch due to the
+ // login form being on a different domain.
+ register_error(elgg_echo('actiongatekeeper:crosssitelogin'));
+
+
+ forward('login', 'csrf');
+ }
+
+ // let the validator send an appropriate msg
+ validate_action_token();
+
+ } elseif (validate_action_token()) {
+ return true;
}
forward(REFERER, 'csrf');
@@ -333,16 +364,19 @@ function generate_action_token($timestamp) {
}
/**
- * Initialise the site secret hash.
+ * Initialise the site secret (32 bytes: "z" to indicate format + 186-bit key in Base64 URL).
*
* Used during installation and saves as a datalist.
*
+ * Note: Old secrets were hex encoded.
+ *
* @return mixed The site secret hash or false
* @access private
* @todo Move to better file.
*/
function init_site_secret() {
- $secret = md5(rand() . microtime());
+ $secret = 'z' . ElggCrypto::getRandomString(31);
+
if (datalist_set('__site_secret__', $secret)) {
return $secret;
}
@@ -369,6 +403,26 @@ function get_site_secret() {
}
/**
+ * Get the strength of the site secret
+ *
+ * @return string "strong", "moderate", or "weak"
+ * @access private
+ */
+function _elgg_get_site_secret_strength() {
+ $secret = get_site_secret();
+ if ($secret[0] !== 'z') {
+ $rand_max = getrandmax();
+ if ($rand_max < pow(2, 16)) {
+ return 'weak';
+ }
+ if ($rand_max < pow(2, 32)) {
+ return 'moderate';
+ }
+ }
+ return 'strong';
+}
+
+/**
* Check if an action is registered and its script exists.
*
* @param string $action Action name
diff --git a/engine/lib/admin.php b/engine/lib/admin.php
index 928101fc5..f36f29668 100644
--- a/engine/lib/admin.php
+++ b/engine/lib/admin.php
@@ -134,11 +134,11 @@ function elgg_delete_admin_notice($id) {
}
/**
- * List all admin messages.
+ * Get admin notices. An admin must be logged in since the notices are private.
*
* @param int $limit Limit
*
- * @return array List of admin notices
+ * @return array Array of admin notices
* @since 1.8.0
*/
function elgg_get_admin_notices($limit = 10) {
@@ -158,11 +158,13 @@ function elgg_get_admin_notices($limit = 10) {
* @since 1.8.0
*/
function elgg_admin_notice_exists($id) {
+ $old_ia = elgg_set_ignore_access(true);
$notice = elgg_get_entities_from_metadata(array(
'type' => 'object',
'subtype' => 'admin_notice',
'metadata_name_value_pair' => array('name' => 'admin_notice_id', 'value' => $id)
));
+ elgg_set_ignore_access($old_ia);
return ($notice) ? TRUE : FALSE;
}
@@ -233,6 +235,8 @@ function admin_init() {
elgg_register_action('admin/site/update_basic', '', 'admin');
elgg_register_action('admin/site/update_advanced', '', 'admin');
elgg_register_action('admin/site/flush_cache', '', 'admin');
+ elgg_register_action('admin/site/unlock_upgrade', '', 'admin');
+ elgg_register_action('admin/site/regenerate_secret', '', 'admin');
elgg_register_action('admin/menu/save', '', 'admin');
@@ -244,6 +248,7 @@ function admin_init() {
elgg_register_action('profile/fields/delete', '', 'admin');
elgg_register_action('profile/fields/reorder', '', 'admin');
+ elgg_register_simplecache_view('css/admin');
elgg_register_simplecache_view('js/admin');
$url = elgg_get_simplecache_url('js', 'admin');
elgg_register_js('elgg.admin', $url);
@@ -267,8 +272,9 @@ function admin_init() {
// users
elgg_register_admin_menu_item('administer', 'users', null, 20);
elgg_register_admin_menu_item('administer', 'online', 'users', 10);
- elgg_register_admin_menu_item('administer', 'newest', 'users', 20);
- elgg_register_admin_menu_item('administer', 'add', 'users', 30);
+ elgg_register_admin_menu_item('administer', 'admins', 'users', 20);
+ elgg_register_admin_menu_item('administer', 'newest', 'users', 30);
+ elgg_register_admin_menu_item('administer', 'add', 'users', 40);
// configure
// plugins
@@ -286,6 +292,7 @@ function admin_init() {
elgg_register_admin_menu_item('configure', 'settings', null, 100);
elgg_register_admin_menu_item('configure', 'basic', 'settings', 10);
elgg_register_admin_menu_item('configure', 'advanced', 'settings', 20);
+ elgg_register_admin_menu_item('configure', 'advanced/site_secret', 'settings', 25);
elgg_register_admin_menu_item('configure', 'menu_items', 'appearance', 30);
elgg_register_admin_menu_item('configure', 'profile_fields', 'appearance', 40);
// default widgets is added via an event handler elgg_default_widgets_init() in widgets.php
@@ -343,7 +350,7 @@ function elgg_admin_add_plugin_settings_menu() {
$active_plugins = elgg_get_plugins('active');
if (!$active_plugins) {
// nothing added because no items
- return FALSE;
+ return;
}
foreach ($active_plugins as $plugin) {
@@ -377,6 +384,7 @@ function elgg_admin_add_plugin_settings_menu() {
*/
function elgg_admin_sort_page_menu($hook, $type, $return, $params) {
$configure_items = $return['configure'];
+ /* @var ElggMenuItem[] $configure_items */
foreach ($configure_items as $menu_item) {
if ($menu_item->getName() == 'settings') {
$settings = $menu_item;
@@ -384,6 +392,7 @@ function elgg_admin_sort_page_menu($hook, $type, $return, $params) {
}
// keep the basic and advanced settings at the top
+ /* @var ElggMenuItem $settings */
$children = $settings->getChildren();
$site_settings = array_splice($children, 0, 2);
usort($children, array('ElggMenuBuilder', 'compareByText'));
@@ -420,7 +429,7 @@ function admin_pagesetup() {
elgg_register_menu_item('admin_footer', array(
'name' => 'community_forums',
'text' => elgg_echo('admin:footer:community_forums'),
- 'href' => 'http://community.elgg.org/pg/groups/world/',
+ 'href' => 'http://community.elgg.org/groups/all/',
));
elgg_register_menu_item('admin_footer', array(
@@ -463,14 +472,18 @@ function admin_page_handler($page) {
$vars = array('page' => $page);
// special page for plugin settings since we create the form for them
- if ($page[0] == 'plugin_settings' && isset($page[1]) &&
- (elgg_view_exists("settings/{$page[1]}/edit") || elgg_view_exists("plugins/{$page[1]}/settings"))) {
+ if ($page[0] == 'plugin_settings') {
+ if (isset($page[1]) && (elgg_view_exists("settings/{$page[1]}/edit") ||
+ elgg_view_exists("plugins/{$page[1]}/settings"))) {
- $view = 'admin/plugin_settings';
- $plugin = elgg_get_plugin_from_id($page[1]);
- $vars['plugin'] = $plugin;
+ $view = 'admin/plugin_settings';
+ $plugin = elgg_get_plugin_from_id($page[1]);
+ $vars['plugin'] = $plugin;
- $title = elgg_echo("admin:{$page[0]}");
+ $title = elgg_echo("admin:{$page[0]}");
+ } else {
+ forward('', '404');
+ }
} else {
$view = 'admin/' . implode('/', $page);
$title = elgg_echo("admin:{$page[0]}");
@@ -549,7 +562,7 @@ function admin_plugin_screenshot_page_handler($pages) {
* * COPYRIGHT.txt
* * LICENSE.txt
*
- * @param type $page
+ * @param array $pages
* @return bool
* @access private
*/
@@ -571,7 +584,7 @@ function admin_markdown_page_handler($pages) {
if (!$plugin) {
$error = elgg_echo('admin:plugins:markdown:unknown_plugin');
$body = elgg_view_layout('admin', array('content' => $error, 'title' => $error));
- echo elgg_view_page($title, $body, 'admin');
+ echo elgg_view_page($error, $body, 'admin');
return true;
}
@@ -612,7 +625,11 @@ function admin_markdown_page_handler($pages) {
/**
* Adds default admin widgets to the admin dashboard.
*
- * @return void
+ * @param string $event
+ * @param string $type
+ * @param ElggUser $user
+ *
+ * @return null|true
* @access private
*/
function elgg_add_admin_widgets($event, $type, $user) {
@@ -634,6 +651,7 @@ function elgg_add_admin_widgets($event, $type, $user) {
$guid = elgg_create_widget($user->getGUID(), $handler, 'admin');
if ($guid) {
$widget = get_entity($guid);
+ /* @var ElggWidget $widget */
$widget->move($column, $position);
}
}
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
index f32dee0f0..5e9b530de 100644
--- a/engine/lib/annotations.php
+++ b/engine/lib/annotations.php
@@ -17,6 +17,7 @@
*/
function row_to_elggannotation($row) {
if (!($row instanceof stdClass)) {
+ // @todo should throw in this case?
return $row;
}
@@ -30,7 +31,7 @@ function row_to_elggannotation($row) {
*
* @param int $id The id of the annotation object being retrieved.
*
- * @return false|ElggAnnotation
+ * @return ElggAnnotation|false
*/
function elgg_get_annotation_from_id($id) {
return elgg_get_metastring_based_object_from_id($id, 'annotations');
@@ -95,8 +96,6 @@ $owner_guid = 0, $access_id = ACCESS_PRIVATE) {
$entity = get_entity($entity_guid);
if (elgg_trigger_event('annotate', $entity->type, $entity)) {
- system_log($entity, 'annotate');
-
// If ok then add it
$result = insert_data("INSERT into {$CONFIG->dbprefix}annotations
(entity_guid, name_id, value_id, value_type, owner_guid, time_created, access_id) VALUES
@@ -197,10 +196,22 @@ function update_annotation($annotation_id, $name, $value, $value_type, $owner_gu
* for the proper use of the "calculation" option.
*
*
- * @return mixed
+ * @return ElggAnnotation[]|mixed
* @since 1.8.0
*/
function elgg_get_annotations(array $options = array()) {
+
+ // @todo remove support for count shortcut - see #4393
+ if (isset($options['__egefac']) && $options['__egefac']) {
+ unset($options['__egefac']);
+ } else {
+ // support shortcut of 'count' => true for 'annotation_calculation' => 'count'
+ if (isset($options['count']) && $options['count']) {
+ $options['annotation_calculation'] = 'count';
+ unset($options['count']);
+ }
+ }
+
$options['metastring_type'] = 'annotations';
return elgg_get_metastring_based_objects($options);
}
@@ -213,7 +224,7 @@ function elgg_get_annotations(array $options = array()) {
* annotation_name(s), annotation_value(s), or guid(s) must be set.
*
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed Null if the metadata name is invalid. Bool on success or fail.
+ * @return bool|null true on success, false on failure, null if no annotations to delete.
* @since 1.8.0
*/
function elgg_delete_annotations(array $options) {
@@ -222,7 +233,7 @@ function elgg_delete_annotations(array $options) {
}
$options['metastring_type'] = 'annotations';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback');
+ return elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback', false);
}
/**
@@ -231,16 +242,20 @@ function elgg_delete_annotations(array $options) {
* @warning Unlike elgg_get_annotations() this will not accept an empty options array!
*
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no annotations disabled.
* @since 1.8.0
*/
function elgg_disable_annotations(array $options) {
if (!elgg_is_valid_options_for_batch_operation($options, 'annotations')) {
return false;
}
+
+ // if we can see hidden (disabled) we need to use the offset
+ // otherwise we risk an infinite loop if there are more than 50
+ $inc_offset = access_get_show_hidden_status();
$options['metastring_type'] = 'annotations';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback');
+ return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', $inc_offset);
}
/**
@@ -248,8 +263,11 @@ function elgg_disable_annotations(array $options) {
*
* @warning Unlike elgg_get_annotations() this will not accept an empty options array!
*
+ * @warning In order to enable annotations, you must first use
+ * {@link access_show_hidden_entities()}.
+ *
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata enabled.
* @since 1.8.0
*/
function elgg_enable_annotations(array $options) {
@@ -318,8 +336,6 @@ function elgg_list_annotations($options) {
*
* annotation_owner_guids => NULL|ARR guids for annotaiton owners
*
- * annotation_ids => NULL|ARR Annotation IDs
- *
* @return mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
@@ -338,8 +354,6 @@ function elgg_get_entities_from_annotations(array $options = array()) {
'annotation_owner_guids' => ELGG_ENTITIES_ANY_VALUE,
- 'annotation_ids' => ELGG_ENTITIES_ANY_VALUE,
-
'order_by' => 'maxtime desc',
'group_by' => 'a.entity_guid'
);
@@ -347,12 +361,13 @@ function elgg_get_entities_from_annotations(array $options = array()) {
$options = array_merge($defaults, $options);
$singulars = array('annotation_name', 'annotation_value',
- 'annotation_name_value_pair', 'annotation_owner_guid', 'annotation_id');
+ 'annotation_name_value_pair', 'annotation_owner_guid');
$options = elgg_normalise_plural_options_array($options, $singulars);
+ $options = elgg_entities_get_metastrings_options('annotation', $options);
- if (!$options = elgg_entities_get_metastrings_options('annotation', $options)) {
- return FALSE;
+ if (!$options) {
+ return false;
}
// special sorting for annotations
@@ -408,8 +423,8 @@ function elgg_list_entities_from_annotations($options = array()) {
function elgg_get_entities_from_annotation_calculation($options) {
$db_prefix = elgg_get_config('dbprefix');
$defaults = array(
- 'calculation' => 'sum',
- 'order_by' => 'annotation_calculation desc'
+ 'calculation' => 'sum',
+ 'order_by' => 'annotation_calculation desc'
);
$options = array_merge($defaults, $options);
@@ -429,6 +444,10 @@ function elgg_get_entities_from_annotation_calculation($options) {
$options['callback'] = 'entity_row_to_elggstar';
+ // see #4393
+ // @todo remove after the 'count' shortcut is removed from elgg_get_annotations()
+ $options['__egefac'] = true;
+
return elgg_get_annotations($options);
}
@@ -442,23 +461,30 @@ function elgg_get_entities_from_annotation_calculation($options) {
* @return string
*/
function elgg_list_entities_from_annotation_calculation($options) {
+ $defaults = array(
+ 'calculation' => 'sum',
+ 'order_by' => 'annotation_calculation desc'
+ );
+ $options = array_merge($defaults, $options);
+
return elgg_list_entities($options, 'elgg_get_entities_from_annotation_calculation');
}
/**
- * Handler called by trigger_plugin_hook on the "export" event.
+ * Export the annotations for the specified entity
*
* @param string $hook 'export'
- * @param string $entity_type 'all'
+ * @param string $type 'all'
* @param mixed $returnvalue Default return value
- * @param mixed $params List of params to export
+ * @param mixed $params Parameters determining what annotations to export
*
* @elgg_plugin_hook export all
*
- * @return mixed
+ * @return array
+ * @throws InvalidParameterException
* @access private
*/
-function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $params) {
+function export_annotation_plugin_hook($hook, $type, $returnvalue, $params) {
// Sanity check values
if ((!is_array($params)) && (!isset($params['guid']))) {
throw new InvalidParameterException(elgg_echo('InvalidParameterException:GUIDNotForExport'));
@@ -469,12 +495,12 @@ function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $param
}
$guid = (int)$params['guid'];
- $name = $params['name'];
+ $options = array('guid' => $guid, 'limit' => 0);
+ if (isset($params['name'])) {
+ $options['annotation_name'] = $params['name'];
+ }
- $result = elgg_get_annotations(array(
- 'guid' => $guid,
- 'limit' => 0
- ));
+ $result = elgg_get_annotations($options);
if ($result) {
foreach ($result as $r) {
@@ -519,15 +545,16 @@ function elgg_annotation_exists($entity_guid, $annotation_type, $owner_guid = NU
return FALSE;
}
- $entity_guid = (int)$entity_guid;
- $annotation_type = sanitise_string($annotation_type);
+ $entity_guid = sanitize_int($entity_guid);
+ $owner_guid = sanitize_int($owner_guid);
+ $annotation_type = sanitize_string($annotation_type);
- $sql = "select a.id" .
- " FROM {$CONFIG->dbprefix}annotations a, {$CONFIG->dbprefix}metastrings m " .
- " WHERE a.owner_guid={$owner_guid} AND a.entity_guid={$entity_guid} " .
- " AND a.name_id=m.id AND m.string='{$annotation_type}'";
+ $sql = "SELECT a.id FROM {$CONFIG->dbprefix}annotations a" .
+ " JOIN {$CONFIG->dbprefix}metastrings m ON a.name_id = m.id" .
+ " WHERE a.owner_guid = $owner_guid AND a.entity_guid = $entity_guid" .
+ " AND m.string = '$annotation_type'";
- if ($check_annotation = get_data_row($sql)) {
+ if (get_data_row($sql)) {
return TRUE;
}
@@ -546,6 +573,7 @@ function elgg_comment_url_handler(ElggAnnotation $comment) {
if ($entity) {
return $entity->getURL() . '#item-annotation-' . $comment->id;
}
+ return "";
}
/**
@@ -562,6 +590,12 @@ function elgg_register_annotation_url_handler($extender_name = "all", $function_
/**
* Register annotation unit tests
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $value
+ * @param array $params
+ * @return array
* @access private
*/
function annotations_test($hook, $type, $value, $params) {
diff --git a/engine/lib/cache.php b/engine/lib/cache.php
index c117b9ec9..3116c1a9b 100644
--- a/engine/lib/cache.php
+++ b/engine/lib/cache.php
@@ -125,7 +125,7 @@ function elgg_get_filepath_cache() {
* @access private
*/
function elgg_filepath_cache_reset() {
- return elgg_reset_system_cache();
+ elgg_reset_system_cache();
}
/**
* @access private
@@ -143,13 +143,13 @@ function elgg_filepath_cache_load($type) {
* @access private
*/
function elgg_enable_filepath_cache() {
- return elgg_enable_system_cache();
+ elgg_enable_system_cache();
}
/**
* @access private
*/
function elgg_disable_filepath_cache() {
- return elgg_disable_system_cache();
+ elgg_disable_system_cache();
}
/* Simplecache */
@@ -208,6 +208,7 @@ function elgg_get_simplecache_url($type, $view) {
global $CONFIG;
$lastcache = (int)$CONFIG->lastcache;
$viewtype = elgg_get_viewtype();
+ elgg_register_simplecache_view("$type/$view");// see #5302
if (elgg_is_simplecache_enabled()) {
$url = elgg_get_site_url() . "cache/$type/$viewtype/$view.$lastcache.$type";
} else {
@@ -222,7 +223,7 @@ function elgg_get_simplecache_url($type, $view) {
/**
* Regenerates the simple cache.
*
- * @warning This does not invalidate the cache, but actively resets it.
+ * @warning This does not invalidate the cache, but actively rebuilds it.
*
* @param string $viewtype Optional viewtype to regenerate. Defaults to all valid viewtypes.
*
@@ -442,8 +443,9 @@ function _elgg_cache_init() {
}
if ($CONFIG->system_cache_enabled && !$CONFIG->i18n_loaded_from_cache) {
+ reload_all_translations();
foreach ($CONFIG->translations as $lang => $map) {
- elgg_save_system_cache("$lang.php", serialize($map));
+ elgg_save_system_cache("$lang.lang", serialize($map));
}
}
}
diff --git a/engine/lib/calendar.php b/engine/lib/calendar.php
index 9a06c5292..e6f95934c 100644
--- a/engine/lib/calendar.php
+++ b/engine/lib/calendar.php
@@ -39,6 +39,8 @@ function get_day_end($day = null, $month = null, $year = null) {
/**
* Return the notable entities for a given time period.
*
+ * @todo this function also accepts an array(type => subtypes) for 3rd arg. Should we document this?
+ *
* @param int $start_time The start time as a unix timestamp.
* @param int $end_time The end time as a unix timestamp.
* @param string $type The type of entity (eg "user", "object" etc)
diff --git a/engine/lib/configuration.php b/engine/lib/configuration.php
index 9bf1529d6..55e5bbd36 100644
--- a/engine/lib/configuration.php
+++ b/engine/lib/configuration.php
@@ -36,6 +36,7 @@ function elgg_get_site_url($site_guid = 0) {
if (!$site instanceof ElggSite) {
return false;
}
+ /* @var ElggSite $site */
return $site->url;
}
@@ -91,23 +92,29 @@ function elgg_get_config($name, $site_guid = 0) {
return $CONFIG->$name;
}
- if ($site_guid === NULL) {
+ if ($site_guid === null) {
// installation wide setting
$value = datalist_get($name);
} else {
- // site specific setting
- if ($site_guid == 0) {
- $site_guid = (int) $CONFIG->site_id;
+ // hit DB only if we're not sure if value exists or not
+ if (!isset($CONFIG->site_config_loaded)) {
+ // site specific setting
+ if ($site_guid == 0) {
+ $site_guid = (int) $CONFIG->site_id;
+ }
+ $value = get_config($name, $site_guid);
+ } else {
+ $value = null;
}
- $value = get_config($name, $site_guid);
}
- if ($value !== false) {
- $CONFIG->$name = $value;
- return $value;
+ // @todo document why we don't cache false
+ if ($value === false) {
+ return null;
}
- return null;
+ $CONFIG->$name = $value;
+ return $value;
}
/**
@@ -132,7 +139,7 @@ function elgg_set_config($name, $value) {
/**
* Save a configuration setting
*
- * @param string $name Configuration name (cannot be greater than 32 characters)
+ * @param string $name Configuration name (cannot be greater than 255 characters)
* @param mixed $value Configuration value. Should be string for installation setting
* @param int $site_guid NULL for installation setting, 0 for default site
*
@@ -167,7 +174,7 @@ function elgg_save_config($name, $value, $site_guid = 0) {
/**
* Check that installation has completed and the database is populated.
*
- * @throws InstallationException
+ * @throws InstallationException|DatabaseException
* @return void
* @access private
*/
@@ -175,7 +182,7 @@ function verify_installation() {
global $CONFIG;
if (isset($CONFIG->installed)) {
- return $CONFIG->installed;
+ return;
}
try {
@@ -221,9 +228,9 @@ function datalist_get($name) {
$name = trim($name);
- // cannot store anything longer than 32 characters in db, so catch here
- if (elgg_strlen($name) > 32) {
- elgg_log("The name length for configuration variables cannot be greater than 32", "ERROR");
+ // cannot store anything longer than 255 characters in db, so catch here
+ if (elgg_strlen($name) > 255) {
+ elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
}
@@ -280,7 +287,7 @@ function datalist_get($name) {
function datalist_set($name, $value) {
global $CONFIG, $DATALIST_CACHE;
- // cannot store anything longer than 32 characters in db, so catch before we set
+ // cannot store anything longer than 255 characters in db, so catch before we set
if (elgg_strlen($name) > 255) {
elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
@@ -326,7 +333,7 @@ function datalist_set($name, $value) {
* This will cause the run once function to be run on all installations. To perform
* additional upgrades, create new functions for each release.
*
- * @warning The function name cannot be longer than 32 characters long due to
+ * @warning The function name cannot be longer than 255 characters long due to
* the current schema for the datalist table.
*
* @internal A datalist entry $functioname is created with the value of time().
@@ -401,7 +408,7 @@ function unset_config($name, $site_guid = 0) {
* @param string $value Its value
* @param int $site_guid Optionally, the GUID of the site (current site is assumed by default)
*
- * @return 0
+ * @return bool
* @todo The config table doens't have numeric primary keys so insert_data returns 0.
* @todo Use "INSERT ... ON DUPLICATE KEY UPDATE" instead of trying to delete then add.
* @see unset_config()
@@ -413,9 +420,9 @@ function set_config($name, $value, $site_guid = 0) {
$name = trim($name);
- // cannot store anything longer than 32 characters in db, so catch before we set
- if (elgg_strlen($name) > 32) {
- elgg_log("The name length for configuration variables cannot be greater than 32", "ERROR");
+ // cannot store anything longer than 255 characters in db, so catch before we set
+ if (elgg_strlen($name) > 255) {
+ elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
}
@@ -476,10 +483,12 @@ function get_config($name, $site_guid = 0) {
break;
}
+ // @todo these haven't really been implemented in Elgg 1.8. Complete in 1.9.
// show dep message
if ($new_name) {
+ // $msg = "Config value $name has been renamed as $new_name";
$name = $new_name;
- elgg_deprecated_notice($msg, $dep_version);
+ // elgg_deprecated_notice($msg, $dep_version);
}
// decide from where to return the value
@@ -556,6 +565,8 @@ function _elgg_load_site_config() {
$CONFIG->url = $CONFIG->wwwroot;
get_all_config();
+ // gives hint to elgg_get_config function how to approach missing values
+ $CONFIG->site_config_loaded = true;
}
/**
diff --git a/engine/lib/cron.php b/engine/lib/cron.php
index f7a032f4a..4f3d05b93 100644
--- a/engine/lib/cron.php
+++ b/engine/lib/cron.php
@@ -26,11 +26,10 @@ function cron_init() {
* @param array $page Pages
*
* @return bool
+ * @throws CronException
* @access private
*/
function cron_page_handler($page) {
- global $CONFIG;
-
if (!isset($page[0])) {
forward();
}
@@ -51,7 +50,6 @@ function cron_page_handler($page) {
$params['time'] = time();
// Data to return to
- $std_out = "";
$old_stdout = "";
ob_start();
diff --git a/engine/lib/database.php b/engine/lib/database.php
index cc2b99f6a..a7949788d 100644
--- a/engine/lib/database.php
+++ b/engine/lib/database.php
@@ -12,15 +12,19 @@
/**
* Query cache for all queries.
*
- * Each query and its results are stored in this array as:
+ * Each query and its results are stored in this cache as:
* <code>
- * $DB_QUERY_CACHE[$query] => array(result1, result2, ... resultN)
+ * $DB_QUERY_CACHE[query hash] => array(result1, result2, ... resultN)
* </code>
+ * @see elgg_query_runner() for details on the hash.
*
- * @global array $DB_QUERY_CACHE
+ * @warning Elgg used to set this as an empty array to turn off the cache
+ *
+ * @global ElggLRUCache|null $DB_QUERY_CACHE
+ * @access private
*/
global $DB_QUERY_CACHE;
-$DB_QUERY_CACHE = array();
+$DB_QUERY_CACHE = null;
/**
* Queries to be executed upon shutdown.
@@ -38,6 +42,7 @@ $DB_QUERY_CACHE = array();
* </code>
*
* @global array $DB_DELAYED_QUERIES
+ * @access private
*/
global $DB_DELAYED_QUERIES;
$DB_DELAYED_QUERIES = array();
@@ -48,7 +53,8 @@ $DB_DELAYED_QUERIES = array();
* Each database link created with establish_db_link($name) is stored in
* $dblink as $dblink[$name] => resource. Use get_db_link($name) to retrieve it.
*
- * @global array $dblink
+ * @global resource[] $dblink
+ * @access private
*/
global $dblink;
$dblink = array();
@@ -59,6 +65,7 @@ $dblink = array();
* Each call to the database increments this counter.
*
* @global integer $dbcalls
+ * @access private
*/
global $dbcalls;
$dbcalls = 0;
@@ -72,11 +79,12 @@ $dbcalls = 0;
* resource. eg "read", "write", or "readwrite".
*
* @return void
+ * @throws DatabaseException
* @access private
*/
function establish_db_link($dblinkname = "readwrite") {
// Get configuration, and globalise database link
- global $CONFIG, $dblink, $DB_QUERY_CACHE, $dbcalls;
+ global $CONFIG, $dblink, $DB_QUERY_CACHE;
if ($dblinkname != "readwrite" && isset($CONFIG->db[$dblinkname])) {
if (is_array($CONFIG->db[$dblinkname])) {
@@ -120,7 +128,8 @@ function establish_db_link($dblinkname = "readwrite") {
// Set up cache if global not initialized and query cache not turned off
if ((!$DB_QUERY_CACHE) && (!$db_cache_off)) {
- $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache');
+ // @todo if we keep this cache in 1.9, expose the size as a config parameter
+ $DB_QUERY_CACHE = new ElggLRUCache(200);
}
}
@@ -134,7 +143,7 @@ function establish_db_link($dblinkname = "readwrite") {
* @access private
*/
function setup_db_connections() {
- global $CONFIG, $dblink;
+ global $CONFIG;
if (!empty($CONFIG->db->split)) {
establish_db_link('read');
@@ -197,7 +206,7 @@ function db_delayedexecution_shutdown_hook() {
*
* @param string $dblinktype The type of link we want: "read", "write" or "readwrite".
*
- * @return object Database link
+ * @return resource Database link
* @access private
*/
function get_db_link($dblinktype) {
@@ -216,7 +225,7 @@ function get_db_link($dblinktype) {
/**
* Execute an EXPLAIN for $query.
*
- * @param str $query The query to explain
+ * @param string $query The query to explain
* @param mixed $link The database link resource to user.
*
* @return mixed An object of the query's result, or FALSE
@@ -240,19 +249,23 @@ function explain_query($query, $link) {
* {@link $dbcalls} is incremented and the query is saved into the {@link $DB_QUERY_CACHE}.
*
* @param string $query The query
- * @param link $dblink The DB link
+ * @param resource $dblink The DB link
*
- * @return The result of mysql_query()
+ * @return resource result of mysql_query()
* @throws DatabaseException
* @access private
*/
function execute_query($query, $dblink) {
- global $CONFIG, $dbcalls;
+ global $dbcalls;
if ($query == NULL) {
throw new DatabaseException(elgg_echo('DatabaseException:InvalidQuery'));
}
+ if (!is_resource($dblink)) {
+ throw new DatabaseException(elgg_echo('DatabaseException:InvalidDBLink'));
+ }
+
$dbcalls++;
$result = mysql_query($query, $dblink);
@@ -271,7 +284,7 @@ function execute_query($query, $dblink) {
* the raw result from {@link mysql_query()}.
*
* @param string $query The query to execute
- * @param resource $dblink The database link to use or the link type (read | write)
+ * @param resource|string $dblink The database link to use or the link type (read | write)
* @param string $handler A callback function to pass the results array to
*
* @return true
@@ -382,20 +395,18 @@ function get_data_row($query, $callback = "") {
* @access private
*/
function elgg_query_runner($query, $callback = null, $single = false) {
- global $CONFIG, $DB_QUERY_CACHE;
+ global $DB_QUERY_CACHE;
// Since we want to cache results of running the callback, we need to
// need to namespace the query with the callback and single result request.
- // http://trac.elgg.org/ticket/4049
+ // https://github.com/elgg/elgg/issues/4049
$hash = (string)$callback . (int)$single . $query;
// Is cached?
if ($DB_QUERY_CACHE) {
- $cached_query = $DB_QUERY_CACHE[$hash];
-
- if ($cached_query !== FALSE) {
+ if (isset($DB_QUERY_CACHE[$hash])) {
elgg_log("DB query $query results returned from cache (hash: $hash)", 'NOTICE');
- return $cached_query;
+ return $DB_QUERY_CACHE[$hash];
}
}
@@ -406,7 +417,7 @@ function elgg_query_runner($query, $callback = null, $single = false) {
// test for callback once instead of on each iteration.
// @todo check profiling to see if this needs to be broken out into
- // explicit cases instead of checking in the interation.
+ // explicit cases instead of checking in the iteration.
$is_callable = is_callable($callback);
while ($row = mysql_fetch_object($result)) {
if ($is_callable) {
@@ -447,18 +458,12 @@ function elgg_query_runner($query, $callback = null, $single = false) {
* @access private
*/
function insert_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- }
-
- elgg_log("Query cache invalidated", 'NOTICE');
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return mysql_insert_id($dblink);
@@ -468,7 +473,7 @@ function insert_data($query) {
}
/**
- * Update a row in the database.
+ * Update the database.
*
* @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.
*
@@ -478,17 +483,12 @@ function insert_data($query) {
* @access private
*/
function update_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- elgg_log("Query cache invalidated", 'NOTICE');
- }
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return TRUE;
@@ -498,7 +498,7 @@ function update_data($query) {
}
/**
- * Remove a row from the database.
+ * Remove data from the database.
*
* @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.
*
@@ -508,17 +508,12 @@ function update_data($query) {
* @access private
*/
function delete_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- elgg_log("Query cache invalidated", 'NOTICE');
- }
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return mysql_affected_rows($dblink);
@@ -527,6 +522,22 @@ function delete_data($query) {
return FALSE;
}
+/**
+ * Invalidate the query cache
+ *
+ * @access private
+ */
+function _elgg_invalidate_query_cache() {
+ global $DB_QUERY_CACHE;
+ if ($DB_QUERY_CACHE instanceof ElggLRUCache) {
+ $DB_QUERY_CACHE->clear();
+ elgg_log("Query cache invalidated", 'NOTICE');
+ } elseif ($DB_QUERY_CACHE) {
+ // In case someone sets the cache to an array and primes it with data
+ $DB_QUERY_CACHE = array();
+ elgg_log("Query cache invalidated", 'NOTICE');
+ }
+}
/**
* Return tables matching the database prefix {@link $CONFIG->dbprefix}% in the currently
@@ -634,7 +645,7 @@ function run_sql_script($scriptlocation) {
$statement = str_replace("prefix_", $CONFIG->dbprefix, $statement);
if (!empty($statement)) {
try {
- $result = update_data($statement);
+ update_data($statement);
} catch (DatabaseException $e) {
$errors[] = $e->getMessage();
}
@@ -657,7 +668,7 @@ function run_sql_script($scriptlocation) {
/**
* Format a query string for logging
- *
+ *
* @param string $query Query string
* @return string
* @access private
diff --git a/engine/lib/deprecated-1.7.php b/engine/lib/deprecated-1.7.php
index 519eea89d..ee95b5611 100644
--- a/engine/lib/deprecated-1.7.php
+++ b/engine/lib/deprecated-1.7.php
@@ -1137,6 +1137,7 @@ function make_register_object($register_name, $register_value, $children_array =
* @param int $guid GUID
*
* @return 1
+ * @deprecated 1.7
*/
function delete_object_entity($guid) {
system_message(elgg_echo('deprecatedfunction', array('delete_user_entity')));
@@ -1154,6 +1155,7 @@ function delete_object_entity($guid) {
* @param int $guid User GUID
*
* @return 1
+ * @deprecated 1.7
*/
function delete_user_entity($guid) {
system_message(elgg_echo('deprecatedfunction', array('delete_user_entity')));
diff --git a/engine/lib/deprecated-1.8.php b/engine/lib/deprecated-1.8.php
index 4b9d41543..91068d047 100644
--- a/engine/lib/deprecated-1.8.php
+++ b/engine/lib/deprecated-1.8.php
@@ -87,7 +87,7 @@ function list_entities_from_access_id($access_id, $entity_type = "", $entity_sub
elgg_deprecated_notice("All list_entities* functions were deprecated in 1.8. Use elgg_list_entities* instead.", 1.8);
echo elgg_list_entities_from_access_id(array('access_id' => $access_id,
- 'types' => $entity_type, 'subtypes' => $entity_subtype, 'owner_guids' => $owner_guid,
+ 'type' => $entity_type, 'subtype' => $entity_subtype, 'owner_guids' => $owner_guid,
'limit' => $limit, 'full_view' => $fullview, 'list_type_toggle' => $listtypetoggle,
'pagination' => $pagination,));
}
@@ -1314,8 +1314,8 @@ function list_entities_from_metadata($meta_name, $meta_value = "", $entity_type
$options = array(
'metadata_name' => $meta_name,
'metadata_value' => $meta_value,
- 'types' => $entity_type,
- 'subtypes' => $entity_subtype,
+ 'type' => $entity_type,
+ 'subtype' => $entity_subtype,
'limit' => $limit,
'offset' => $offset,
'count' => TRUE,
@@ -2120,8 +2120,8 @@ $fullview = true, $listtypetoggle = false, $pagination = true, $order_by = '') {
'relationship' => $relationship,
'relationship_guid' => $relationship_guid,
'inverse_relationship' => $inverse_relationship,
- 'types' => $type,
- 'subtypes' => $subtype,
+ 'type' => $type,
+ 'subtype' => $subtype,
'owner_guid' => $owner_guid,
'order_by' => $order_by,
'limit' => $limit,
@@ -2566,9 +2566,9 @@ $owner_guid = "", $owner_relationship = "") {
'relationship' => $owner_relationship,
'relationship_guid' => $owner_guid[0],
'inverse_relationship' => FALSE,
- 'types' => 'user',
- 'subtypes' => $subtype,
- 'limit' => 9999))
+ 'type' => 'user',
+ 'subtype' => $subtype,
+ 'limit' => false))
) {
$friendsarray = array();
@@ -2721,8 +2721,8 @@ function get_site_collections($site_guid, $subtype = "", $limit = 10, $offset =
'relationship' => 'member_of_site',
'relationship_guid' => $site_guid,
'inverse_relationship' => TRUE,
- 'types' => 'collection',
- 'subtypes' => $subtype,
+ 'type' => 'collection',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -3414,6 +3414,7 @@ function list_annotations($entity_guid, $name = "", $limit = 25, $asc = true) {
* @param unknown_type $timeupper
* @param unknown_type $calculation
* @internal Don't use this at all.
+ * @deprecated 1.8 Use elgg_get_annotations()
*/
function elgg_deprecated_annotation_calculation($entity_guid = 0, $entity_type = "", $entity_subtype = "",
$name = "", $value = "", $value_type = "", $owner_guid = 0, $timelower = 0,
@@ -4667,6 +4668,7 @@ function display_widget(ElggObject $widget) {
*
* @param ElggEntity $entity
* @return int Number of comments
+ * @deprecated 1.8 Use ElggEntity->countComments()
*/
function elgg_count_comments($entity) {
elgg_deprecated_notice('elgg_count_comments() is deprecated by ElggEntity->countComments()', 1.8);
@@ -4772,3 +4774,47 @@ function default_page_handler($page, $handler) {
return FALSE;
}
+
+/**
+ * Invalidate this class's entry in the cache.
+ *
+ * @param int $guid The entity guid
+ *
+ * @return void
+ * @access private
+ * @deprecated 1.8
+ */
+function invalidate_cache_for_entity($guid) {
+ elgg_deprecated_notice('invalidate_cache_for_entity() is a private function and should not be used.', 1.8);
+ _elgg_invalidate_cache_for_entity($guid);
+}
+
+/**
+ * Cache an entity.
+ *
+ * Stores an entity in $ENTITY_CACHE;
+ *
+ * @param ElggEntity $entity Entity to cache
+ *
+ * @return void
+ * @access private
+ * @deprecated 1.8
+ */
+function cache_entity(ElggEntity $entity) {
+ elgg_deprecated_notice('cache_entity() is a private function and should not be used.', 1.8);
+ _elgg_cache_entity($entity);
+}
+
+/**
+ * Retrieve a entity from the cache.
+ *
+ * @param int $guid The guid
+ *
+ * @return ElggEntity|bool false if entity not cached, or not fully loaded
+ * @access private
+ * @deprecated 1.8
+ */
+function retrieve_cached_entity($guid) {
+ elgg_deprecated_notice('retrieve_cached_entity() is a private function and should not be used.', 1.8);
+ return _elgg_retrieve_cached_entity($guid);
+}
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index b55958a6c..34111c69d 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -93,10 +93,17 @@ function elgg_register_library($name, $location) {
* @return void
* @throws InvalidParameterException
* @since 1.8.0
+ * @todo return boolean in 1.9 to indicate whether the library has been loaded
*/
function elgg_load_library($name) {
global $CONFIG;
+ static $loaded_libraries = array();
+
+ if (in_array($name, $loaded_libraries)) {
+ return;
+ }
+
if (!isset($CONFIG->libraries)) {
$CONFIG->libraries = array();
}
@@ -113,6 +120,8 @@ function elgg_load_library($name) {
);
throw new InvalidParameterException($error);
}
+
+ $loaded_libraries[] = $name;
}
/**
@@ -124,12 +133,11 @@ function elgg_load_library($name) {
* @param string $location URL to forward to browser to. Can be path relative to the network's URL.
* @param string $reason Short explanation for why we're forwarding
*
- * @return False False if headers have been sent. Terminates execution if forwarding.
+ * @return false False if headers have been sent. Terminates execution if forwarding.
+ * @throws SecurityException
*/
function forward($location = "", $reason = 'system') {
- global $CONFIG;
-
- if (!headers_sent()) {
+ if (!headers_sent($file, $line)) {
if ($location === REFERER) {
$location = $_SERVER['HTTP_REFERER'];
}
@@ -148,7 +156,7 @@ function forward($location = "", $reason = 'system') {
exit;
}
} else {
- throw new SecurityException(elgg_echo('SecurityException:ForwardFailedToRedirect'));
+ throw new SecurityException(elgg_echo('SecurityException:ForwardFailedToRedirect', array($file, $line)));
}
}
@@ -384,7 +392,7 @@ function elgg_load_external_file($type, $name) {
$item->url = '';
$item->location = '';
- $priority = $CONFIG->externals[$type]->add($item);
+ $CONFIG->externals[$type]->add($item);
$CONFIG->externals_map[$type][$name] = $item;
}
}
@@ -528,7 +536,7 @@ function sanitise_filepath($path, $append_slash = TRUE) {
* @param string $register Types of message: "error", "success" (default: success)
* @param bool $count Count the number of messages (default: false)
*
- * @return true|false|array Either the array of messages, or a response regarding
+ * @return bool|array Either the array of messages, or a response regarding
* whether the message addition was successful.
* @todo Clean up. Separate registering messages and retrieving them.
*/
@@ -562,7 +570,7 @@ function system_messages($message = null, $register = "success", $count = false)
return sizeof($_SESSION['msg'][$register]);
} else {
$count = 0;
- foreach ($_SESSION['msg'] as $register => $submessages) {
+ foreach ($_SESSION['msg'] as $submessages) {
$count += sizeof($submessages);
}
return $count;
@@ -671,7 +679,7 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
global $CONFIG;
if (empty($event) || empty($object_type)) {
- return FALSE;
+ return false;
}
if (!isset($CONFIG->events)) {
@@ -684,8 +692,8 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
$CONFIG->events[$event][$object_type] = array();
}
- if (!is_callable($callback)) {
- return FALSE;
+ if (!is_callable($callback, true)) {
+ return false;
}
$priority = max((int) $priority, 0);
@@ -695,7 +703,7 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
}
$CONFIG->events[$event][$object_type][$priority] = $callback;
ksort($CONFIG->events[$event][$object_type]);
- return TRUE;
+ return true;
}
/**
@@ -710,9 +718,12 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
*/
function elgg_unregister_event_handler($event, $object_type, $callback) {
global $CONFIG;
- foreach ($CONFIG->events[$event][$object_type] as $key => $event_callback) {
- if ($event_callback == $callback) {
- unset($CONFIG->events[$event][$object_type][$key]);
+
+ if (isset($CONFIG->events[$event]) && isset($CONFIG->events[$event][$object_type])) {
+ foreach ($CONFIG->events[$event][$object_type] as $key => $event_callback) {
+ if ($event_callback == $callback) {
+ unset($CONFIG->events[$event][$object_type][$key]);
+ }
}
}
}
@@ -735,7 +746,7 @@ function elgg_unregister_event_handler($event, $object_type, $callback) {
* @tip When referring to events, the preferred syntax is "event, type".
*
* @internal Only rarely should events be changed, added, or removed in core.
- * When making changes to events, be sure to first create a ticket in trac.
+ * When making changes to events, be sure to first create a ticket on Github.
*
* @internal @tip Think of $object_type as the primary namespace element, and
* $event as the secondary namespace.
@@ -770,14 +781,14 @@ function elgg_trigger_event($event, $object_type, $object = null) {
foreach ($events as $callback_list) {
if (is_array($callback_list)) {
foreach ($callback_list as $callback) {
- if (call_user_func_array($callback, $args) === FALSE) {
- return FALSE;
+ if (is_callable($callback) && (call_user_func_array($callback, $args) === false)) {
+ return false;
}
}
}
}
- return TRUE;
+ return true;
}
/**
@@ -836,7 +847,7 @@ function elgg_trigger_event($event, $object_type, $object = null) {
*
* @param string $hook The name of the hook
* @param string $type The type of the hook
- * @param callback $callback The name of a valid function or an array with object and method
+ * @param callable $callback The name of a valid function or an array with object and method
* @param int $priority The priority - 500 is default, lower numbers called first
*
* @return bool
@@ -850,7 +861,7 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
global $CONFIG;
if (empty($hook) || empty($type)) {
- return FALSE;
+ return false;
}
if (!isset($CONFIG->hooks)) {
@@ -863,8 +874,8 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
$CONFIG->hooks[$hook][$type] = array();
}
- if (!is_callable($callback)) {
- return FALSE;
+ if (!is_callable($callback, true)) {
+ return false;
}
$priority = max((int) $priority, 0);
@@ -874,7 +885,7 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
}
$CONFIG->hooks[$hook][$type][$priority] = $callback;
ksort($CONFIG->hooks[$hook][$type]);
- return TRUE;
+ return true;
}
/**
@@ -882,16 +893,19 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
*
* @param string $hook The name of the hook
* @param string $entity_type The name of the type of entity (eg "user", "object" etc)
- * @param callback $callback The PHP callback to be removed
+ * @param callable $callback The PHP callback to be removed
*
* @return void
* @since 1.8.0
*/
function elgg_unregister_plugin_hook_handler($hook, $entity_type, $callback) {
global $CONFIG;
- foreach ($CONFIG->hooks[$hook][$entity_type] as $key => $hook_callback) {
- if ($hook_callback == $callback) {
- unset($CONFIG->hooks[$hook][$entity_type][$key]);
+
+ if (isset($CONFIG->hooks[$hook]) && isset($CONFIG->hooks[$hook][$entity_type])) {
+ foreach ($CONFIG->hooks[$hook][$entity_type] as $key => $hook_callback) {
+ if ($hook_callback == $callback) {
+ unset($CONFIG->hooks[$hook][$entity_type][$key]);
+ }
}
}
}
@@ -970,10 +984,12 @@ function elgg_trigger_plugin_hook($hook, $type, $params = null, $returnvalue = n
foreach ($hooks as $callback_list) {
if (is_array($callback_list)) {
foreach ($callback_list as $hookcallback) {
- $args = array($hook, $type, $returnvalue, $params);
- $temp_return_value = call_user_func_array($hookcallback, $args);
- if (!is_null($temp_return_value)) {
- $returnvalue = $temp_return_value;
+ if (is_callable($hookcallback)) {
+ $args = array($hook, $type, $returnvalue, $params);
+ $temp_return_value = call_user_func_array($hookcallback, $args);
+ if (!is_null($temp_return_value)) {
+ $returnvalue = $temp_return_value;
+ }
}
}
}
@@ -1052,7 +1068,9 @@ function _elgg_php_exception_handler($exception) {
* @param array $vars An array that points to the active symbol table where error occurred
*
* @return true
+ * @throws Exception
* @access private
+ * @todo Replace error_log calls with elgg_log calls.
*/
function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
$error = date("Y-m-d H:i:s (T)") . ": \"$errmsg\" in file $filename (line $linenum)";
@@ -1068,7 +1086,12 @@ function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
case E_WARNING :
case E_USER_WARNING :
- error_log("PHP WARNING: $error");
+ case E_RECOVERABLE_ERROR: // (e.g. type hint violation)
+
+ // check if the error wasn't suppressed by the error control operator (@)
+ if (error_reporting()) {
+ error_log("PHP WARNING: $error");
+ }
break;
default:
@@ -1092,8 +1115,8 @@ function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
*
* @note No messages will be displayed unless debugging has been enabled.
*
- * @param str $message User message
- * @param str $level NOTICE | WARNING | ERROR | DEBUG
+ * @param string $message User message
+ * @param string $level NOTICE | WARNING | ERROR | DEBUG
*
* @return bool
* @since 1.7.0
@@ -1171,6 +1194,11 @@ function elgg_dump($value, $to_screen = TRUE, $level = 'NOTICE') {
$to_screen = FALSE;
}
+ // Do not want to write to JS or CSS pages
+ if (elgg_in_context('js') || elgg_in_context('css')) {
+ $to_screen = FALSE;
+ }
+
if ($to_screen == TRUE) {
echo '<pre>';
print_r($value);
@@ -1263,7 +1291,7 @@ function elgg_deprecated_notice($msg, $dep_version, $backtrace_level = 1) {
$msg .= implode("<br /> -> ", $stack);
- elgg_dump($msg, elgg_is_admin_logged_in(), 'WARNING');
+ elgg_log($msg, 'WARNING');
return true;
}
@@ -1278,8 +1306,6 @@ function elgg_deprecated_notice($msg, $dep_version, $backtrace_level = 1) {
* @return string The current page URL.
*/
function current_page_url() {
- global $CONFIG;
-
$url = parse_url(elgg_get_site_url());
$page = $url['scheme'] . "://";
@@ -1324,7 +1350,7 @@ function full_url() {
"" : (":" . $_SERVER["SERVER_PORT"]);
// This is here to prevent XSS in poorly written browsers used by 80% of the population.
- // {@trac [5813]}
+ // https://github.com/Elgg/Elgg/commit/0c947e80f512cb0a482b1864fd0a6965c8a0cd4a
$quotes = array('\'', '"');
$encoded = array('%27', '%22');
@@ -1340,7 +1366,7 @@ function full_url() {
* @param array $parts Associative array of URL components like parse_url() returns
* @param bool $html_encode HTML Encode the url?
*
- * @return str Full URL
+ * @return string Full URL
* @since 1.7.0
*/
function elgg_http_build_url(array $parts, $html_encode = TRUE) {
@@ -1371,10 +1397,10 @@ function elgg_http_build_url(array $parts, $html_encode = TRUE) {
* add tokens to the action. The form view automatically handles
* tokens.
*
- * @param str $url Full action URL
- * @param bool $html_encode HTML encode the url? (default: false)
+ * @param string $url Full action URL
+ * @param bool $html_encode HTML encode the url? (default: false)
*
- * @return str URL with action tokens
+ * @return string URL with action tokens
* @since 1.7.0
* @link http://docs.elgg.org/Tutorials/Actions
*/
@@ -1426,17 +1452,17 @@ function elgg_http_remove_url_query_element($url, $element) {
}
$url_array['query'] = http_build_query($query);
- $string = elgg_http_build_url($url_array);
+ $string = elgg_http_build_url($url_array, false);
return $string;
}
/**
* Adds an element or elements to a URL's query string.
*
- * @param str $url The URL
- * @param array $elements Key/value pairs to add to the URL
+ * @param string $url The URL
+ * @param array $elements Key/value pairs to add to the URL
*
- * @return str The new URL with the query strings added
+ * @return string The new URL with the query strings added
* @since 1.7.0
*/
function elgg_http_add_url_query_elements($url, array $elements) {
@@ -1473,8 +1499,6 @@ function elgg_http_add_url_query_elements($url, array $elements) {
* @since 1.8.0
*/
function elgg_http_url_is_identical($url1, $url2, $ignore_params = array('offset', 'limit')) {
- global $CONFIG;
-
// if the server portion is missing but it starts with / then add the url in.
// @todo use elgg_normalize_url()
if (elgg_substr($url1, 0, 1) == '/') {
@@ -1573,10 +1597,14 @@ function elgg_http_url_is_identical($url1, $url2, $ignore_params = array('offset
* @param bool $strict Return array key if it's set, even if empty. If false,
* return $default if the array key is unset or empty.
*
- * @return void
+ * @return mixed
* @since 1.8.0
*/
-function elgg_extract($key, array $array, $default = NULL, $strict = true) {
+function elgg_extract($key, array $array, $default = null, $strict = true) {
+ if (!is_array($array)) {
+ return $default;
+ }
+
if ($strict) {
return (isset($array[$key])) ? $array[$key] : $default;
} else {
@@ -1609,7 +1637,7 @@ $sort_type = SORT_LOCALE_STRING) {
$sort = array();
- foreach ($array as $k => $v) {
+ foreach ($array as $v) {
if (isset($v[$element])) {
$sort[] = strtolower($v[$element]);
} else {
@@ -1628,7 +1656,7 @@ $sort_type = SORT_LOCALE_STRING) {
*
* @param string $ini_get_arg The INI setting
*
- * @return true|false Depending on whether it's on or off
+ * @return bool Depending on whether it's on or off
*/
function ini_get_bool($ini_get_arg) {
$temp = strtolower(ini_get($ini_get_arg));
@@ -1644,7 +1672,7 @@ function ini_get_bool($ini_get_arg) {
*
* @tip Use this for arithmetic when determining if a file can be uploaded.
*
- * @param str $setting The php.ini setting
+ * @param string $setting The php.ini setting
*
* @return int
* @since 1.7.0
@@ -1659,8 +1687,10 @@ function elgg_get_ini_setting_in_bytes($setting) {
switch($last) {
case 'g':
$val *= 1024;
+ // fallthrough intentional
case 'm':
$val *= 1024;
+ // fallthrough intentional
case 'k':
$val *= 1024;
}
@@ -1817,7 +1847,7 @@ function elgg_ajax_page_handler($page) {
*
* @param array $page The page array
*
- * @return void
+ * @return bool
* @elgg_pagehandler css
* @access private
*/
@@ -1873,7 +1903,7 @@ function elgg_cacheable_view_page_handler($page, $type) {
header("Content-type: $content_type");
// @todo should js be cached when simple cache turned off
- //header('Expires: ' . date('r', time() + 864000));
+ //header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+10 days")), true);
//header("Pragma: public");
//header("Cache-Control: public");
//header("Content-Length: " . strlen($return));
@@ -1881,6 +1911,7 @@ function elgg_cacheable_view_page_handler($page, $type) {
echo $return;
return true;
}
+ return false;
}
/**
@@ -2014,10 +2045,20 @@ function elgg_is_valid_options_for_batch_operation($options, $type) {
*
* @link http://docs.elgg.org/Tutorials/WalledGarden
* @elgg_plugin_hook index system
+ *
+ * @param string $hook The name of the hook
+ * @param string $type The type of hook
+ * @param bool $value Has a plugin already rendered an index page?
+ * @param array $params Array of parameters (should be empty)
* @return bool
* @access private
*/
-function elgg_walled_garden_index() {
+function elgg_walled_garden_index($hook, $type, $value, $params) {
+ if ($value) {
+ // do not create a second index page so return
+ return;
+ }
+
elgg_load_css('elgg.walled_garden');
elgg_load_js('elgg.walled_garden');
@@ -2082,6 +2123,22 @@ function elgg_walled_garden() {
}
/**
+ * Remove public access for walled gardens
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $accesses
+ * @return array
+ * @access private
+ */
+function _elgg_walled_garden_remove_public_access($hook, $type, $accesses) {
+ if (isset($accesses[ACCESS_PUBLIC])) {
+ unset($accesses[ACCESS_PUBLIC]);
+ }
+ return $accesses;
+}
+
+/**
* Boots the engine
*
* 1. sets error handlers
@@ -2104,11 +2161,13 @@ function _elgg_engine_boot() {
_elgg_load_application_config();
- register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/");
-
_elgg_load_site_config();
+ _elgg_session_boot();
+
_elgg_load_cache();
+
+ _elgg_load_translations();
}
/**
@@ -2137,6 +2196,7 @@ function elgg_init() {
elgg_register_js('jquery.easing', 'vendors/jquery/jquery.easing.1.3.packed.js');
elgg_register_js('elgg.avatar_cropper', 'js/lib/ui.avatar_cropper.js');
elgg_register_js('jquery.imgareaselect', 'vendors/jquery/jquery.imgareaselect-0.9.8/scripts/jquery.imgareaselect.min.js');
+ elgg_register_js('elgg.ui.river', 'js/lib/ui.river.js');
elgg_register_css('jquery.imgareaselect', 'vendors/jquery/jquery.imgareaselect-0.9.8/css/imgareaselect-deprecated.css');
@@ -2173,7 +2233,7 @@ function elgg_init() {
* @param array $params empty
*
* @elgg_plugin_hook unit_tests system
- * @return void
+ * @return array
* @access private
*/
function elgg_api_test($hook, $type, $value, $params) {
@@ -2185,7 +2245,10 @@ function elgg_api_test($hook, $type, $value, $params) {
}
/**#@+
- * Controlls access levels on ElggEntity entities, metadata, and annotations.
+ * Controls access levels on ElggEntity entities, metadata, and annotations.
+ *
+ * @warning ACCESS_DEFAULT is a place holder for the input/access view. Do not
+ * use it when saving an entity.
*
* @var int
*/
@@ -2219,7 +2282,7 @@ define('ELGG_ENTITIES_NO_VALUE', 0);
* referring page.
*
* @see forward
- * @var unknown_type
+ * @var int -1
*/
define('REFERRER', -1);
diff --git a/engine/lib/entities.php b/engine/lib/entities.php
index 4875b2c2f..4fcf1c657 100644
--- a/engine/lib/entities.php
+++ b/engine/lib/entities.php
@@ -17,13 +17,50 @@ global $ENTITY_CACHE;
$ENTITY_CACHE = array();
/**
- * Cache subtypes and related class names once loaded.
+ * GUIDs of entities banned from the entity cache (during this request)
*
- * @global array $SUBTYPE_CACHE
+ * @global array $ENTITY_CACHE_DISABLED_GUIDS
+ * @access private
+ */
+global $ENTITY_CACHE_DISABLED_GUIDS;
+$ENTITY_CACHE_DISABLED_GUIDS = array();
+
+/**
+ * Cache subtypes and related class names.
+ *
+ * @global array|null $SUBTYPE_CACHE array once populated from DB, initially null
* @access private
*/
global $SUBTYPE_CACHE;
-$SUBTYPE_CACHE = NULL;
+$SUBTYPE_CACHE = null;
+
+/**
+ * Remove this entity from the entity cache and make sure it is not re-added
+ *
+ * @param int $guid The entity guid
+ *
+ * @access private
+ * @todo this is a workaround until #5604 can be implemented
+ */
+function _elgg_disable_caching_for_entity($guid) {
+ global $ENTITY_CACHE_DISABLED_GUIDS;
+
+ _elgg_invalidate_cache_for_entity($guid);
+ $ENTITY_CACHE_DISABLED_GUIDS[$guid] = true;
+}
+
+/**
+ * Allow this entity to be stored in the entity cache
+ *
+ * @param int $guid The entity guid
+ *
+ * @access private
+ */
+function _elgg_enable_caching_for_entity($guid) {
+ global $ENTITY_CACHE_DISABLED_GUIDS;
+
+ unset($ENTITY_CACHE_DISABLED_GUIDS[$guid]);
+}
/**
* Invalidate this class's entry in the cache.
@@ -33,12 +70,14 @@ $SUBTYPE_CACHE = NULL;
* @return void
* @access private
*/
-function invalidate_cache_for_entity($guid) {
+function _elgg_invalidate_cache_for_entity($guid) {
global $ENTITY_CACHE;
$guid = (int)$guid;
unset($ENTITY_CACHE[$guid]);
+
+ elgg_get_metadata_cache()->clear($guid);
}
/**
@@ -49,60 +88,59 @@ function invalidate_cache_for_entity($guid) {
* @param ElggEntity $entity Entity to cache
*
* @return void
- * @see retrieve_cached_entity()
- * @see invalidate_cache_for_entity()
+ * @see _elgg_retrieve_cached_entity()
+ * @see _elgg_invalidate_cache_for_entity()
* @access private
+ * @todo Use an ElggCache object
*/
-function cache_entity(ElggEntity $entity) {
- global $ENTITY_CACHE;
+function _elgg_cache_entity(ElggEntity $entity) {
+ global $ENTITY_CACHE, $ENTITY_CACHE_DISABLED_GUIDS;
- $ENTITY_CACHE[$entity->guid] = $entity;
-}
+ // Don't cache non-plugin entities while access control is off, otherwise they could be
+ // exposed to users who shouldn't see them when control is re-enabled.
+ if (!($entity instanceof ElggPlugin) && elgg_get_ignore_access()) {
+ return;
+ }
-/**
- * Retrieve a entity from the cache.
- *
- * @param int $guid The guid
- *
- * @return void
- * @see cache_entity()
- * @see invalidate_cache_for_entity()
- * @access private
- */
-function retrieve_cached_entity($guid) {
- global $ENTITY_CACHE;
+ $guid = $entity->getGUID();
+ if (isset($ENTITY_CACHE_DISABLED_GUIDS[$guid])) {
+ return;
+ }
- $guid = (int)$guid;
+ // Don't store too many or we'll have memory problems
+ // @todo Pick a less arbitrary limit
+ if (count($ENTITY_CACHE) > 256) {
+ $random_guid = array_rand($ENTITY_CACHE);
- if (isset($ENTITY_CACHE[$guid])) {
- if ($ENTITY_CACHE[$guid]->isFullyLoaded()) {
- return $ENTITY_CACHE[$guid];
- }
+ unset($ENTITY_CACHE[$random_guid]);
+
+ // Purge separate metadata cache. Original idea was to do in entity destructor, but that would
+ // have caused a bunch of unnecessary purges at every shutdown. Doing it this way we have no way
+ // to know that the expunged entity will be GCed (might be another reference living), but that's
+ // OK; the metadata will reload if necessary.
+ elgg_get_metadata_cache()->clear($random_guid);
}
- return false;
+ $ENTITY_CACHE[$guid] = $entity;
}
/**
- * As retrieve_cached_entity, but returns the result as a stdClass
- * (compatible with load functions that expect a database row.)
+ * Retrieve a entity from the cache.
*
* @param int $guid The guid
*
- * @return mixed
- * @todo unused
+ * @return ElggEntity|bool false if entity not cached, or not fully loaded
+ * @see _elgg_cache_entity()
+ * @see _elgg_invalidate_cache_for_entity()
* @access private
*/
-function retrieve_cached_entity_row($guid) {
- $obj = retrieve_cached_entity($guid);
- if ($obj) {
- $tmp = new stdClass;
+function _elgg_retrieve_cached_entity($guid) {
+ global $ENTITY_CACHE;
- foreach ($obj as $k => $v) {
- $tmp->$k = $v;
+ if (isset($ENTITY_CACHE[$guid])) {
+ if ($ENTITY_CACHE[$guid]->isFullyLoaded()) {
+ return $ENTITY_CACHE[$guid];
}
-
- return $tmp;
}
return false;
@@ -133,29 +171,23 @@ function retrieve_cached_entity_row($guid) {
* @access private
*/
function get_subtype_id($type, $subtype) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
+ global $SUBTYPE_CACHE;
- if ($subtype == "") {
- return FALSE;
+ if (!$subtype) {
+ return false;
}
- // @todo use the cache before hitting database
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes
- where type='$type' and subtype='$subtype'");
-
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
- $SUBTYPE_CACHE[$result->id] = $result;
+ // use the cache before hitting database
+ $result = _elgg_retrieve_cached_subtype($type, $subtype);
+ if ($result !== null) {
return $result->id;
}
- return FALSE;
+ return false;
}
/**
@@ -163,35 +195,67 @@ function get_subtype_id($type, $subtype) {
*
* @param int $subtype_id Subtype ID
*
- * @return string Subtype name
+ * @return string|false Subtype name, false if subtype not found
* @link http://docs.elgg.org/DataModel/Entities/Subtypes
* @see get_subtype_from_id()
* @access private
*/
function get_subtype_from_id($subtype_id) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $subtype_id = (int)$subtype_id;
+ global $SUBTYPE_CACHE;
if (!$subtype_id) {
return false;
}
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
if (isset($SUBTYPE_CACHE[$subtype_id])) {
return $SUBTYPE_CACHE[$subtype_id]->subtype;
}
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id");
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
+ return false;
+}
- $SUBTYPE_CACHE[$subtype_id] = $result;
- return $result->subtype;
+/**
+ * Retrieve subtype from the cache.
+ *
+ * @param string $type
+ * @param string $subtype
+ * @return stdClass|null
+ *
+ * @access private
+ */
+function _elgg_retrieve_cached_subtype($type, $subtype) {
+ global $SUBTYPE_CACHE;
+
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
}
- return false;
+ foreach ($SUBTYPE_CACHE as $obj) {
+ if ($obj->type === $type && $obj->subtype === $subtype) {
+ return $obj;
+ }
+ }
+ return null;
+}
+
+/**
+ * Fetch all suptypes from DB to local cache.
+ *
+ * @access private
+ */
+function _elgg_populate_subtype_cache() {
+ global $CONFIG, $SUBTYPE_CACHE;
+
+ $results = get_data("SELECT * FROM {$CONFIG->dbprefix}entity_subtypes");
+
+ $SUBTYPE_CACHE = array();
+ foreach ($results as $row) {
+ $SUBTYPE_CACHE[$row->id] = $row;
+ }
}
/**
@@ -210,25 +274,19 @@ function get_subtype_from_id($subtype_id) {
* @access private
*/
function get_subtype_class($type, $subtype) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
-
- // @todo use the cache before going to the database
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes
- where type='$type' and subtype='$subtype'");
+ global $SUBTYPE_CACHE;
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
-
- $SUBTYPE_CACHE[$result->id] = $result;
- return $result->class;
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
+ // use the cache before going to the database
+ $obj = _elgg_retrieve_cached_subtype($type, $subtype);
+ if ($obj) {
+ return $obj->class;
}
- return NULL;
+ return null;
}
/**
@@ -242,29 +300,21 @@ function get_subtype_class($type, $subtype) {
* @access private
*/
function get_subtype_class_from_id($subtype_id) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $subtype_id = (int)$subtype_id;
+ global $SUBTYPE_CACHE;
if (!$subtype_id) {
- return false;
+ return null;
}
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
if (isset($SUBTYPE_CACHE[$subtype_id])) {
return $SUBTYPE_CACHE[$subtype_id]->class;
}
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id");
-
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
- $SUBTYPE_CACHE[$subtype_id] = $result;
- return $result->class;
- }
-
- return NULL;
+ return null;
}
/**
@@ -290,21 +340,32 @@ function get_subtype_class_from_id($subtype_id) {
* @see get_entity()
*/
function add_subtype($type, $subtype, $class = "") {
- global $CONFIG;
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
- $class = sanitise_string($class);
+ global $CONFIG, $SUBTYPE_CACHE;
- // Short circuit if no subtype is given
- if ($subtype == "") {
+ if (!$subtype) {
return 0;
}
$id = get_subtype_id($type, $subtype);
- if ($id == 0) {
- return insert_data("insert into {$CONFIG->dbprefix}entity_subtypes"
- . " (type, subtype, class) values ('$type','$subtype','$class')");
+ if (!$id) {
+ // In cache we store non-SQL-escaped strings because that's what's returned by query
+ $cache_obj = (object) array(
+ 'type' => $type,
+ 'subtype' => $subtype,
+ 'class' => $class,
+ );
+
+ $type = sanitise_string($type);
+ $subtype = sanitise_string($subtype);
+ $class = sanitise_string($class);
+
+ $id = insert_data("INSERT INTO {$CONFIG->dbprefix}entity_subtypes"
+ . " (type, subtype, class) VALUES ('$type', '$subtype', '$class')");
+
+ // add entry to cache
+ $cache_obj->id = $id;
+ $SUBTYPE_CACHE[$id] = $cache_obj;
}
return $id;
@@ -313,6 +374,10 @@ function add_subtype($type, $subtype, $class = "") {
/**
* Removes a registered ElggEntity type, subtype, and classname.
*
+ * @warning You do not want to use this function. If you want to unregister
+ * a class for a subtype, use update_subtype(). Using this function will
+ * permanently orphan all the objects created with the specified subtype.
+ *
* @param string $type Type
* @param string $subtype Subtype
*
@@ -331,7 +396,7 @@ function remove_subtype($type, $subtype) {
}
/**
- * Update a registered ElggEntity type, subtype, and classname
+ * Update a registered ElggEntity type, subtype, and class name
*
* @param string $type Type
* @param string $subtype Subtype
@@ -340,18 +405,33 @@ function remove_subtype($type, $subtype) {
* @return bool
*/
function update_subtype($type, $subtype, $class = '') {
- global $CONFIG;
+ global $CONFIG, $SUBTYPE_CACHE;
- if (!$id = get_subtype_id($type, $subtype)) {
- return FALSE;
+ $id = get_subtype_id($type, $subtype);
+ if (!$id) {
+ return false;
+ }
+
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
}
+
+ $unescaped_class = $class;
+
$type = sanitise_string($type);
$subtype = sanitise_string($subtype);
-
- return update_data("UPDATE {$CONFIG->dbprefix}entity_subtypes
+ $class = sanitise_string($class);
+
+ $success = update_data("UPDATE {$CONFIG->dbprefix}entity_subtypes
SET type = '$type', subtype = '$subtype', class = '$class'
WHERE id = $id
");
+
+ if ($success && isset($SUBTYPE_CACHE[$id])) {
+ $SUBTYPE_CACHE[$id]->class = $unescaped_class;
+ }
+
+ return $success;
}
/**
@@ -369,7 +449,7 @@ function update_subtype($type, $subtype, $class = '') {
* @param int $time_created The time creation timestamp
*
* @return bool
- * @link http://docs.elgg.org/DataModel/Entities
+ * @throws InvalidParameterException
* @access private
*/
function update_entity($guid, $owner_guid, $access_id, $container_guid = null, $time_created = null) {
@@ -392,6 +472,10 @@ function update_entity($guid, $owner_guid, $access_id, $container_guid = null, $
$time_created = (int) $time_created;
}
+ if ($access_id == ACCESS_DEFAULT) {
+ throw new InvalidParameterException('ACCESS_DEFAULT is not a valid access level. See its documentation in elgglib.h');
+ }
+
if ($entity && $entity->canEdit()) {
if (elgg_trigger_event('update', $entity->type, $entity)) {
$ret = update_data("UPDATE {$CONFIG->dbprefix}entities
@@ -468,6 +552,7 @@ function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'al
// If still not approved, see if the user is a member of the group
// @todo this should be moved to the groups plugin/library
if (!$return && $user && $container instanceof ElggGroup) {
+ /* @var ElggGroup $container */
if ($container->isMember($user)) {
$return = true;
}
@@ -517,7 +602,6 @@ $container_guid = 0) {
$type = sanitise_string($type);
$subtype_id = add_subtype($type, $subtype);
$owner_guid = (int)$owner_guid;
- $access_id = (int)$access_id;
$time = time();
if ($site_guid == 0) {
$site_guid = $CONFIG->site_guid;
@@ -526,6 +610,10 @@ $container_guid = 0) {
if ($container_guid == 0) {
$container_guid = $owner_guid;
}
+ $access_id = (int)$access_id;
+ if ($access_id == ACCESS_DEFAULT) {
+ throw new InvalidParameterException('ACCESS_DEFAULT is not a valid access level. See its documentation in elgglib.h');
+ }
$user_guid = elgg_get_logged_in_user_guid();
if (!can_write_to_container($user_guid, $owner_guid, $type, $subtype)) {
@@ -583,12 +671,14 @@ function get_entity_as_row($guid) {
*
* @param stdClass $row The row of the entry in the entities table.
*
- * @return object|false
+ * @return ElggEntity|false
* @link http://docs.elgg.org/DataModel/Entities
* @see get_entity_as_row()
* @see add_subtype()
* @see get_entity()
* @access private
+ *
+ * @throws ClassException|InstallationException
*/
function entity_row_to_elggstar($row) {
if (!($row instanceof stdClass)) {
@@ -666,29 +756,59 @@ function entity_row_to_elggstar($row) {
* @link http://docs.elgg.org/DataModel/Entities
*/
function get_entity($guid) {
- static $newentity_cache;
- $new_entity = false;
+ // This should not be a static local var. Notice that cache writing occurs in a completely
+ // different instance outside this function.
+ // @todo We need a single Memcache instance with a shared pool of namespace wrappers. This function would pull an instance from the pool.
+ static $shared_cache;
- // We could also use: if (!(int) $guid) { return FALSE },
+ // We could also use: if (!(int) $guid) { return FALSE },
// but that evaluates to a false positive for $guid = TRUE.
// This is a bit slower, but more thorough.
if (!is_numeric($guid) || $guid === 0 || $guid === '0') {
- return FALSE;
+ return false;
+ }
+
+ // Check local cache first
+ $new_entity = _elgg_retrieve_cached_entity($guid);
+ if ($new_entity) {
+ return $new_entity;
}
- if ((!$newentity_cache) && (is_memcache_available())) {
- $newentity_cache = new ElggMemcache('new_entity_cache');
+ // Check shared memory cache, if available
+ if (null === $shared_cache) {
+ if (is_memcache_available()) {
+ $shared_cache = new ElggMemcache('new_entity_cache');
+ } else {
+ $shared_cache = false;
+ }
}
- if ($newentity_cache) {
- $new_entity = $newentity_cache->load($guid);
+ // until ACLs in memcache, DB query is required to determine access
+ $entity_row = get_entity_as_row($guid);
+ if (!$entity_row) {
+ return false;
}
- if ($new_entity) {
- return $new_entity;
+ if ($shared_cache) {
+ $cached_entity = $shared_cache->load($guid);
+ // @todo store ACLs in memcache https://github.com/elgg/elgg/issues/3018#issuecomment-13662617
+ if ($cached_entity) {
+ // @todo use ACL and cached entity access_id to determine if user can see it
+ return $cached_entity;
+ }
+ }
+
+ // don't let incomplete entities cause fatal exceptions
+ try {
+ $new_entity = entity_row_to_elggstar($entity_row);
+ } catch (IncompleteEntityException $e) {
+ return false;
}
- return entity_row_to_elggstar(get_entity_as_row($guid));
+ if ($new_entity) {
+ _elgg_cache_entity($new_entity);
+ }
+ return $new_entity;
}
/**
@@ -813,6 +933,8 @@ function elgg_get_entities(array $options = array()) {
'joins' => array(),
'callback' => 'entity_row_to_elggstar',
+
+ '__ElggBatch' => null,
);
$options = array_merge($defaults, $options);
@@ -915,11 +1037,11 @@ function elgg_get_entities(array $options = array()) {
}
if (!$options['count']) {
- if ($options['group_by'] = sanitise_string($options['group_by'])) {
+ if ($options['group_by']) {
$query .= " GROUP BY {$options['group_by']}";
}
- if ($options['order_by'] = sanitise_string($options['order_by'])) {
+ if ($options['order_by']) {
$query .= " ORDER BY {$options['order_by']}";
}
@@ -929,7 +1051,32 @@ function elgg_get_entities(array $options = array()) {
$query .= " LIMIT $offset, $limit";
}
- $dt = get_data($query, $options['callback']);
+ if ($options['callback'] === 'entity_row_to_elggstar') {
+ $dt = _elgg_fetch_entities_from_sql($query, $options['__ElggBatch']);
+ } else {
+ $dt = get_data($query, $options['callback']);
+ }
+
+ if ($dt) {
+ // populate entity and metadata caches
+ $guids = array();
+ foreach ($dt as $item) {
+ // A custom callback could result in items that aren't ElggEntity's, so check for them
+ if ($item instanceof ElggEntity) {
+ _elgg_cache_entity($item);
+ // plugins usually have only settings
+ if (!$item instanceof ElggPlugin) {
+ $guids[] = $item->guid;
+ }
+ }
+ }
+ // @todo Without this, recursive delete fails. See #4568
+ reset($dt);
+
+ if ($guids) {
+ elgg_get_metadata_cache()->populateFromEntities($guids);
+ }
+ }
return $dt;
} else {
$total = get_data_row($query);
@@ -938,6 +1085,104 @@ function elgg_get_entities(array $options = array()) {
}
/**
+ * Return entities from an SQL query generated by elgg_get_entities.
+ *
+ * @param string $sql
+ * @param ElggBatch $batch
+ * @return ElggEntity[]
+ *
+ * @access private
+ * @throws LogicException
+ */
+function _elgg_fetch_entities_from_sql($sql, ElggBatch $batch = null) {
+ static $plugin_subtype;
+ if (null === $plugin_subtype) {
+ $plugin_subtype = get_subtype_id('object', 'plugin');
+ }
+
+ // Keys are types, values are columns that, if present, suggest that the secondary
+ // table is already JOINed
+ $types_to_optimize = array(
+ 'object' => 'title',
+ 'user' => 'password',
+ 'group' => 'name',
+ );
+
+ $rows = get_data($sql);
+
+ // guids to look up in each type
+ $lookup_types = array();
+ // maps GUIDs to the $rows key
+ $guid_to_key = array();
+
+ if (isset($rows[0]->type, $rows[0]->subtype)
+ && $rows[0]->type === 'object'
+ && $rows[0]->subtype == $plugin_subtype) {
+ // Likely the entire resultset is plugins, which have already been optimized
+ // to JOIN the secondary table. In this case we allow retrieving from cache,
+ // but abandon the extra queries.
+ $types_to_optimize = array();
+ }
+
+ // First pass: use cache where possible, gather GUIDs that we're optimizing
+ foreach ($rows as $i => $row) {
+ if (empty($row->guid) || empty($row->type)) {
+ throw new LogicException('Entity row missing guid or type');
+ }
+ if ($entity = _elgg_retrieve_cached_entity($row->guid)) {
+ $rows[$i] = $entity;
+ continue;
+ }
+ if (isset($types_to_optimize[$row->type])) {
+ // check if row already looks JOINed.
+ if (isset($row->{$types_to_optimize[$row->type]})) {
+ // Row probably already contains JOINed secondary table. Don't make another query just
+ // to pull data that's already there
+ continue;
+ }
+ $lookup_types[$row->type][] = $row->guid;
+ $guid_to_key[$row->guid] = $i;
+ }
+ }
+ // Do secondary queries and merge rows
+ if ($lookup_types) {
+ $dbprefix = elgg_get_config('dbprefix');
+
+ foreach ($lookup_types as $type => $guids) {
+ $set = "(" . implode(',', $guids) . ")";
+ $sql = "SELECT * FROM {$dbprefix}{$type}s_entity WHERE guid IN $set";
+ $secondary_rows = get_data($sql);
+ if ($secondary_rows) {
+ foreach ($secondary_rows as $secondary_row) {
+ $key = $guid_to_key[$secondary_row->guid];
+ // cast to arrays to merge then cast back
+ $rows[$key] = (object)array_merge((array)$rows[$key], (array)$secondary_row);
+ }
+ }
+ }
+ }
+ // Second pass to finish conversion
+ foreach ($rows as $i => $row) {
+ if ($row instanceof ElggEntity) {
+ continue;
+ } else {
+ try {
+ $rows[$i] = entity_row_to_elggstar($row);
+ } catch (IncompleteEntityException $e) {
+ // don't let incomplete entities throw fatal errors
+ unset($rows[$i]);
+
+ // report incompletes to the batch process that spawned this query
+ if ($batch) {
+ $batch->reportIncompleteEntity($row);
+ }
+ }
+ }
+ }
+ return $rows;
+}
+
+/**
* Returns SQL where clause for type and subtype on main entity table
*
* @param string $table Entity table prefix as defined in SELECT...FROM entities $table
@@ -1006,13 +1251,24 @@ function elgg_get_entity_type_subtype_where_sql($table, $types, $subtypes, $pair
$subtype_ids = array();
if ($subtypes) {
foreach ($subtypes as $subtype) {
- // check that the subtype is valid (with ELGG_ENTITIES_NO_VALUE being a valid subtype)
- if (ELGG_ENTITIES_NO_VALUE === $subtype || $subtype_id = get_subtype_id($type, $subtype)) {
- $subtype_ids[] = (ELGG_ENTITIES_NO_VALUE === $subtype) ? ELGG_ENTITIES_NO_VALUE : $subtype_id;
- } else {
- $valid_subtypes_count--;
- elgg_log("Type-subtype '$type:$subtype' does not exist!", 'NOTICE');
+ // check that the subtype is valid
+ if (!$subtype && ELGG_ENTITIES_NO_VALUE === $subtype) {
+ // subtype value is 0
+ $subtype_ids[] = ELGG_ENTITIES_NO_VALUE;
+ } elseif (!$subtype) {
+ // subtype is ignored.
+ // this handles ELGG_ENTITIES_ANY_VALUE, '', and anything falsy that isn't 0
continue;
+ } else {
+ $subtype_id = get_subtype_id($type, $subtype);
+
+ if ($subtype_id) {
+ $subtype_ids[] = $subtype_id;
+ } else {
+ $valid_subtypes_count--;
+ elgg_log("Type-subtype '$type:$subtype' does not exist!", 'NOTICE');
+ continue;
+ }
}
}
@@ -1103,7 +1359,7 @@ function elgg_get_entity_type_subtype_where_sql($table, $types, $subtypes, $pair
* best to provide in table.column format.
* @param NULL|array $guids Array of GUIDs.
*
- * @return false|str
+ * @return false|string
* @since 1.8.0
* @access private
*/
@@ -1152,7 +1408,7 @@ function elgg_get_guid_based_where_sql($column, $guids) {
* @param NULL|int $time_updated_upper Time updated upper limit
* @param NULL|int $time_updated_lower Time updated lower limit
*
- * @return FALSE|str FALSE on fail, string on success.
+ * @return FALSE|string FALSE on fail, string on success.
* @since 1.7.0
* @access private
*/
@@ -1217,8 +1473,10 @@ function elgg_list_entities(array $options = array(), $getter = 'elgg_get_entiti
global $autofeed;
$autofeed = true;
+ $offset_key = isset($options['offset_key']) ? $options['offset_key'] : 'offset';
+
$defaults = array(
- 'offset' => (int) max(get_input('offset', 0), 0),
+ 'offset' => (int) max(get_input($offset_key, 0), 0),
'limit' => (int) max(get_input('limit', 10), 0),
'full_view' => TRUE,
'list_type_toggle' => FALSE,
@@ -1248,13 +1506,15 @@ function elgg_list_entities(array $options = array(), $getter = 'elgg_get_entiti
*
* @tip Use this to generate a list of archives by month for when entities were added or updated.
*
+ * @todo document how to pass in array for $subtype
+ *
* @warning Months are returned in the form YYYYMM.
*
* @param string $type The type of entity
* @param string $subtype The subtype of entity
- * @param int $container_guid The container GUID that the entinties belong to
+ * @param int $container_guid The container GUID that the entities belong to
* @param int $site_guid The site GUID
- * @param str $order_by Order_by SQL order by clause
+ * @param string $order_by Order_by SQL order by clause
*
* @return array|false Either an array months as YYYYMM, or false on failure
*/
@@ -1402,6 +1662,7 @@ function disable_entity($guid, $reason = "", $recursive = true) {
$entity->disableMetadata();
$entity->disableAnnotations();
+ _elgg_invalidate_cache_for_entity($guid);
$res = update_data("UPDATE {$CONFIG->dbprefix}entities
SET enabled = 'no'
@@ -1417,8 +1678,8 @@ function disable_entity($guid, $reason = "", $recursive = true) {
/**
* Enable an entity.
*
- * @warning In order to enable an entity using ElggEntity::enable(),
- * you must first use {@link access_show_hidden_entities()}.
+ * @warning In order to enable an entity, you must first use
+ * {@link access_show_hidden_entities()}.
*
* @param int $guid GUID of entity to enable
* @param bool $recursive Recursively enable all entities disabled with the entity?
@@ -1452,6 +1713,7 @@ function enable_entity($guid, $recursive = true) {
'relationship' => 'disabled_with',
'relationship_guid' => $entity->guid,
'inverse_relationship' => true,
+ 'limit' => 0,
));
foreach ($disabled_with_it as $e) {
@@ -1498,7 +1760,7 @@ function delete_entity($guid, $recursive = true) {
// delete cache
if (isset($ENTITY_CACHE[$guid])) {
- invalidate_cache_for_entity($guid);
+ _elgg_invalidate_cache_for_entity($guid);
}
// If memcache is available then delete this entry from the cache
@@ -1545,6 +1807,10 @@ function delete_entity($guid, $recursive = true) {
elgg_set_ignore_access($ia);
}
+ $entity_disable_override = access_get_show_hidden_status();
+ access_show_hidden_entities(true);
+ $ia = elgg_set_ignore_access(true);
+
// Now delete the entity itself
$entity->deleteMetadata();
$entity->deleteOwnedMetadata();
@@ -1552,6 +1818,9 @@ function delete_entity($guid, $recursive = true) {
$entity->deleteOwnedAnnotations();
$entity->deleteRelationships();
+ access_show_hidden_entities($entity_disable_override);
+ elgg_set_ignore_access($ia);
+
elgg_delete_river(array('subject_guid' => $guid));
elgg_delete_river(array('object_guid' => $guid));
remove_all_private_settings($guid);
@@ -1597,7 +1866,7 @@ function delete_entity($guid, $recursive = true) {
* @param string $returnvalue Return value from previous hook
* @param array $params The parameters, passed 'guid' and 'varname'
*
- * @return void
+ * @return ElggMetadata|null
* @elgg_plugin_hook_handler volatile metadata
* @todo investigate more.
* @access private
@@ -1642,6 +1911,8 @@ function volatile_data_export_plugin_hook($hook, $entity_type, $returnvalue, $pa
* @elgg_event_handler export all
* @return mixed
* @access private
+ *
+ * @throws InvalidParameterException|InvalidClassException
*/
function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
// Sanity check values
@@ -1684,6 +1955,8 @@ function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
* @return ElggEntity the unsaved entity which should be populated by items.
* @todo Remove this.
* @access private
+ *
+ * @throws ClassException|InstallationException|ImportException
*/
function oddentity_to_elggentity(ODDEntity $element) {
$class = $element->getAttribute('class');
@@ -1695,7 +1968,7 @@ function oddentity_to_elggentity(ODDEntity $element) {
if (!$tmp) {
// Construct new class with owner from session
$classname = get_subtype_class($class, $subclass);
- if ($classname != "") {
+ if ($classname) {
if (class_exists($classname)) {
$tmp = new $classname();
@@ -1755,11 +2028,13 @@ function oddentity_to_elggentity(ODDEntity $element) {
* @elgg_plugin_hook_handler import all
* @todo document
* @access private
+ *
+ * @throws ImportException
*/
function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
$element = $params['element'];
- $tmp = NULL;
+ $tmp = null;
if ($element instanceof ODDEntity) {
$tmp = oddentity_to_elggentity($element);
@@ -1767,7 +2042,7 @@ function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
if ($tmp) {
// Make sure its saved
if (!$tmp->save()) {
- elgg_echo('ImportException:ProblemSaving', array($element->getAttribute('uuid')));
+ $msg = elgg_echo('ImportException:ProblemSaving', array($element->getAttribute('uuid')));
throw new ImportException($msg);
}
@@ -1801,8 +2076,6 @@ function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
* @link http://docs.elgg.org/Entities/AccessControl
*/
function can_edit_entity($entity_guid, $user_guid = 0) {
- global $CONFIG;
-
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
if (!$user) {
@@ -1855,7 +2128,7 @@ function can_edit_entity_metadata($entity_guid, $user_guid = 0, $metadata = null
$return = null;
- if ($metadata->owner_guid == 0) {
+ if ($metadata && ($metadata->owner_guid == 0)) {
$return = true;
}
if (is_null($return)) {
@@ -1926,7 +2199,7 @@ function get_entity_url($entity_guid) {
* @param string $entity_subtype The entity subtype
* @param string $function_name The function to register
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see get_entity_url()
* @see ElggEntity::getURL()
* @since 1.8.0
@@ -1934,7 +2207,7 @@ function get_entity_url($entity_guid) {
function elgg_register_entity_url_handler($entity_type, $entity_subtype, $function_name) {
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -1962,7 +2235,7 @@ function elgg_register_entity_url_handler($entity_type, $entity_subtype, $functi
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype to register (may be blank)
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see get_registered_entity_types()
* @link http://docs.elgg.org/Search
* @link http://docs.elgg.org/Tutorials/Search
@@ -1999,7 +2272,7 @@ function elgg_register_entity_type($type, $subtype = null) {
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype to register (may be blank)
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see elgg_register_entity_type()
*/
function unregister_entity_type($type, $subtype) {
@@ -2066,7 +2339,7 @@ function get_registered_entity_types($type = null) {
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype (may be blank)
*
- * @return true|false Depending on whether or not the type has been registered
+ * @return bool Depending on whether or not the type has been registered
*/
function is_registered_entity_type($type, $subtype = null) {
global $CONFIG;
@@ -2196,6 +2469,7 @@ function elgg_instanceof($entity, $type = NULL, $subtype = NULL, $class = NULL)
$return = ($entity instanceof ElggEntity);
if ($type) {
+ /* @var ElggEntity $entity */
$return = $return && ($entity->getType() == $type);
}
@@ -2255,18 +2529,25 @@ function update_entity_last_action($guid, $posted = NULL) {
function entities_gc() {
global $CONFIG;
- $tables = array ('sites_entity', 'objects_entity', 'groups_entity', 'users_entity');
+ $tables = array(
+ 'site' => 'sites_entity',
+ 'object' => 'objects_entity',
+ 'group' => 'groups_entity',
+ 'user' => 'users_entity'
+ );
- foreach ($tables as $table) {
- delete_data("DELETE from {$CONFIG->dbprefix}{$table}
- where guid NOT IN (SELECT guid from {$CONFIG->dbprefix}entities)");
+ foreach ($tables as $type => $table) {
+ delete_data("DELETE FROM {$CONFIG->dbprefix}{$table}
+ WHERE guid NOT IN (SELECT guid FROM {$CONFIG->dbprefix}entities)");
+ delete_data("DELETE FROM {$CONFIG->dbprefix}entities
+ WHERE type = '$type' AND guid NOT IN (SELECT guid FROM {$CONFIG->dbprefix}{$table})");
}
}
/**
* Runs unit tests for the entity objects.
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/export.php b/engine/lib/export.php
index ae9be95ce..ecc894e63 100644
--- a/engine/lib/export.php
+++ b/engine/lib/export.php
@@ -11,7 +11,7 @@
*
* @param mixed $object The object either an ElggEntity, ElggRelationship or ElggExtender
*
- * @return the UUID or false
+ * @return string|false the UUID or false
*/
function get_uuid_from_object($object) {
if ($object instanceof ElggEntity) {
@@ -40,8 +40,6 @@ function get_uuid_from_object($object) {
* @return string
*/
function guid_to_uuid($guid) {
- global $CONFIG;
-
return elgg_get_site_url() . "export/opendd/$guid/";
}
@@ -53,8 +51,6 @@ function guid_to_uuid($guid) {
* @return bool
*/
function is_uuid_this_domain($uuid) {
- global $CONFIG;
-
if (strpos($uuid, elgg_get_site_url()) === 0) {
return true;
}
@@ -67,7 +63,7 @@ function is_uuid_this_domain($uuid) {
*
* @param string $uuid A unique ID
*
- * @return mixed
+ * @return ElggEntity|false
*/
function get_entity_from_uuid($uuid) {
$uuid = sanitise_string($uuid);
@@ -117,18 +113,19 @@ function _process_element(ODD $odd) {
global $IMPORTED_DATA, $IMPORTED_OBJECT_COUNTER;
// See if anyone handles this element, return true if it is.
+ $to_be_serialised = null;
if ($odd) {
$handled = elgg_trigger_plugin_hook("import", "all", array("element" => $odd), $to_be_serialised);
- }
- // If not, then see if any of its sub elements are handled
- if ($handled) {
- // Increment validation counter
- $IMPORTED_OBJECT_COUNTER ++;
- // Return the constructed object
- $IMPORTED_DATA[] = $handled;
+ // If not, then see if any of its sub elements are handled
+ if ($handled) {
+ // Increment validation counter
+ $IMPORTED_OBJECT_COUNTER ++;
+ // Return the constructed object
+ $IMPORTED_DATA[] = $handled;
- return true;
+ return true;
+ }
}
return false;
@@ -167,7 +164,7 @@ function exportAsArray($guid) {
*
* @param int $guid The GUID.
*
- * @return xml
+ * @return string XML
* @see ElggEntity for an example of its usage.
* @access private
*/
@@ -184,7 +181,7 @@ function export($guid) {
* @param string $xml XML string
*
* @return bool
- * @throws Exception if there was a problem importing the data.
+ * @throws ImportException if there was a problem importing the data.
* @access private
*/
function import($xml) {
diff --git a/engine/lib/extender.php b/engine/lib/extender.php
index ffd3c1357..8323bd3ce 100644
--- a/engine/lib/extender.php
+++ b/engine/lib/extender.php
@@ -86,6 +86,7 @@ function oddmetadata_to_elggextender(ElggEntity $entity, ODDMetaData $element) {
* @return null
* @elgg_plugin_hook_handler volatile metadata
* @todo investigate more.
+ * @throws ImportException
* @access private
*/
function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params) {
@@ -94,6 +95,7 @@ function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
$tmp = NULL;
if ($element instanceof ODDMetaData) {
+ /* @var ODDMetaData $element */
// Recall entity
$entity_uuid = $element->getAttribute('entity_uuid');
$entity = get_entity_from_uuid($entity_uuid);
@@ -105,6 +107,7 @@ function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
// Save
if (!$entity->save()) {
+ $attr_name = $element->getAttribute('name');
$msg = elgg_echo('ImportException:ProblemUpdatingMeta', array($attr_name, $entity_uuid));
throw new ImportException($msg);
}
@@ -120,42 +123,49 @@ function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
* @param string $type 'metadata' or 'annotation'
* @param int $user_guid The GUID of the user
*
- * @return true|false
+ * @return bool
*/
function can_edit_extender($extender_id, $type, $user_guid = 0) {
- if (!elgg_is_logged_in()) {
- return false;
+ // @todo Since Elgg 1.0, Elgg has returned false from can_edit_extender()
+ // if no user was logged in. This breaks the access override. This is a
+ // temporary work around. This function needs to be rewritten in Elgg 1.9
+ if (!elgg_check_access_overrides($user_guid)) {
+ if (!elgg_is_logged_in()) {
+ return false;
+ }
}
$user_guid = (int)$user_guid;
- $user = get_entity($user_guid);
+ $user = get_user($user_guid);
if (!$user) {
$user = elgg_get_logged_in_user_entity();
+ $user_guid = elgg_get_logged_in_user_guid();
}
$functionname = "elgg_get_{$type}_from_id";
if (is_callable($functionname)) {
- $extender = $functionname($extender_id);
+ $extender = call_user_func($functionname, $extender_id);
} else {
return false;
}
- if (!is_a($extender, "ElggExtender")) {
+ if (!($extender instanceof ElggExtender)) {
return false;
}
+ /* @var ElggExtender $extender */
// If the owner is the specified user, great! They can edit.
- if ($extender->getOwnerGUID() == $user->getGUID()) {
+ if ($extender->getOwnerGUID() == $user_guid) {
return true;
}
// If the user can edit the entity this is attached to, great! They can edit.
- if (can_edit_entity($extender->entity_guid, $user->getGUID())) {
+ if (can_edit_entity($extender->entity_guid, $user_guid)) {
return true;
}
- // Trigger plugin hooks
- $params = array('entity' => $entity, 'user' => $user);
+ // Trigger plugin hook - note that $user may be null
+ $params = array('entity' => $extender->getEntity(), 'user' => $user);
return elgg_trigger_plugin_hook('permissions_check', $type, $params, false);
}
@@ -174,7 +184,7 @@ function elgg_register_extender_url_handler($extender_type, $extender_name, $fun
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -227,7 +237,7 @@ function get_extender_url(ElggExtender $extender) {
if ($url == "") {
$nameid = $extender->id;
if ($type == 'volatile') {
- $nameid == $extender->name;
+ $nameid = $extender->name;
}
$url = "export/$view/$guid/$type/$nameid/";
}
diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php
index 86f6d9baa..a3c7ba439 100644
--- a/engine/lib/filestore.php
+++ b/engine/lib/filestore.php
@@ -149,6 +149,12 @@ $x1 = 0, $y1 = 0, $x2 = 0, $y2 = 0, $upscale = FALSE) {
return FALSE;
}
+ // color transparencies white (default is black)
+ imagefilledrectangle(
+ $new_image, 0, 0, $params['newwidth'], $params['newheight'],
+ imagecolorallocate($new_image, 255, 255, 255)
+ );
+
$rtn_code = imagecopyresampled( $new_image,
$original_image,
0,
@@ -302,8 +308,6 @@ function get_image_resize_parameters($width, $height, $options) {
function file_delete($guid) {
if ($file = get_entity($guid)) {
if ($file->canEdit()) {
- $container = get_entity($file->container_guid);
-
$thumbnail = $file->thumbnail;
$smallthumb = $file->smallthumb;
$largethumb = $file->largethumb;
@@ -377,7 +381,7 @@ function file_get_general_file_type($mimetype) {
/**
* Delete a directory and all its contents
*
- * @param str $directory Directory to delete
+ * @param string $directory Directory to delete
*
* @return bool
*/
@@ -494,7 +498,7 @@ function filestore_init() {
/**
* Unit tests for files
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/group.php b/engine/lib/group.php
index feb1f1e7f..6ded8a825 100644
--- a/engine/lib/group.php
+++ b/engine/lib/group.php
@@ -33,6 +33,7 @@ function get_group_entity_as_row($guid) {
* @param string $description Description
*
* @return bool
+ * @access private
*/
function create_group_entity($guid, $name, $description) {
global $CONFIG;
@@ -169,7 +170,7 @@ function get_group_members($group_guid, $limit = 10, $offset = 0, $site_guid = 0
'relationship' => 'member',
'relationship_guid' => $group_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
+ 'type' => 'user',
'limit' => $limit,
'offset' => $offset,
'count' => $count,
@@ -239,56 +240,52 @@ function leave_group($group_guid, $user_guid) {
*/
function get_users_membership($user_guid) {
$options = array(
+ 'type' => 'group',
'relationship' => 'member',
'relationship_guid' => $user_guid,
- 'inverse_relationship' => FALSE
+ 'inverse_relationship' => false,
+ 'limit' => false,
);
return elgg_get_entities_from_relationship($options);
}
/**
- * Checks access to a group.
+ * May the current user access item(s) on this page? If the page owner is a group,
+ * membership, visibility, and logged in status are taken into account.
*
* @param boolean $forward If set to true (default), will forward the page;
* if set to false, will return true or false.
*
- * @return true|false If $forward is set to false.
+ * @return bool If $forward is set to false.
*/
function group_gatekeeper($forward = true) {
- $allowed = true;
- $url = '';
-
- if ($group = elgg_get_page_owner_entity()) {
- if ($group instanceof ElggGroup) {
- $url = $group->getURL();
- if (!$group->isPublicMembership()) {
- // closed group so must be member or an admin
-
- if (!elgg_is_logged_in()) {
- $allowed = false;
- if ($forward == true) {
- $_SESSION['last_forward_from'] = current_page_url();
- register_error(elgg_echo('loggedinrequired'));
- forward('', 'login');
- }
- } else if (!$group->isMember(elgg_get_logged_in_user_entity())) {
- $allowed = false;
- }
- // Admin override
- if (elgg_is_admin_logged_in()) {
- $allowed = true;
- }
- }
- }
+ $page_owner_guid = elgg_get_page_owner_guid();
+ if (!$page_owner_guid) {
+ return true;
}
+ $visibility = ElggGroupItemVisibility::factory($page_owner_guid);
- if ($forward && $allowed == false) {
- register_error(elgg_echo('membershiprequired'));
- forward($url, 'member');
+ if (!$visibility->shouldHideItems) {
+ return true;
+ }
+ if ($forward) {
+ // only forward to group if user can see it
+ $group = get_entity($page_owner_guid);
+ $forward_url = $group ? $group->getURL() : '';
+
+ if (!elgg_is_logged_in()) {
+ $_SESSION['last_forward_from'] = current_page_url();
+ $forward_reason = 'login';
+ } else {
+ $forward_reason = 'member';
+ }
+
+ register_error(elgg_echo($visibility->reasonHidden));
+ forward($forward_url, $forward_reason);
}
- return $allowed;
+ return false;
}
/**
diff --git a/engine/lib/input.php b/engine/lib/input.php
index dda8211b6..80b0b8766 100644
--- a/engine/lib/input.php
+++ b/engine/lib/input.php
@@ -60,8 +60,8 @@ function get_input($variable, $default = NULL, $filter_result = TRUE) {
*
* Note: this function does not handle nested arrays (ex: form input of param[m][n])
*
- * @param string $variable The name of the variable
- * @param string $value The value of the variable
+ * @param string $variable The name of the variable
+ * @param string|string[] $value The value of the variable
*
* @return void
*/
@@ -226,6 +226,8 @@ function elgg_clear_sticky_value($form_name, $variable) {
/**
* Page handler for autocomplete endpoint.
*
+ * @todo split this into functions/objects, this is way too big
+ *
* /livesearch?q=<query>
*
* Other options include:
@@ -233,6 +235,7 @@ function elgg_clear_sticky_value($form_name, $variable) {
* match_owner int 0/1
* limit int default is 10
*
+ * @param array $page
* @return string JSON string is returned and then exit
* @access private
*/
@@ -265,10 +268,8 @@ function input_livesearch_page_handler($page) {
}
if (get_input('match_owner', false)) {
- $owner_guid = $user->getGUID();
$owner_where = 'AND e.owner_guid = ' . $user->getGUID();
} else {
- $owner_guid = null;
$owner_where = '';
}
@@ -283,13 +284,15 @@ function input_livesearch_page_handler($page) {
WHERE e.guid = ue.guid
AND e.enabled = 'yes'
AND ue.banned = 'no'
- AND (ue.name LIKE '$q%' OR ue.username LIKE '$q%')
+ AND (ue.name LIKE '$q%' OR ue.name LIKE '% $q%' OR ue.username LIKE '$q%')
LIMIT $limit
";
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggUser $entity */
if (!$entity) {
continue;
}
@@ -333,12 +336,14 @@ function input_livesearch_page_handler($page) {
WHERE e.guid = ge.guid
AND e.enabled = 'yes'
$owner_where
- AND (ge.name LIKE '$q%' OR ge.description LIKE '%$q%')
+ AND (ge.name LIKE '$q%' OR ge.name LIKE '% $q%' OR ge.description LIKE '% $q%')
LIMIT $limit
";
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggGroup $entity */
if (!$entity) {
continue;
}
@@ -379,13 +384,15 @@ function input_livesearch_page_handler($page) {
AND e.guid = ue.guid
AND e.enabled = 'yes'
AND ue.banned = 'no'
- AND (ue.name LIKE '$q%' OR ue.username LIKE '$q%')
+ AND (ue.name LIKE '$q%' OR ue.name LIKE '% $q%' OR ue.username LIKE '$q%')
LIMIT $limit
";
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggUser $entity */
if (!$entity) {
continue;
}
diff --git a/engine/lib/languages.php b/engine/lib/languages.php
index bf6829a39..61ba91ddb 100644
--- a/engine/lib/languages.php
+++ b/engine/lib/languages.php
@@ -8,6 +8,65 @@
*/
/**
+ * Given a message key, returns an appropriately translated full-text string
+ *
+ * @param string $message_key The short message code
+ * @param array $args An array of arguments to pass through vsprintf().
+ * @param string $language Optionally, the standard language code
+ * (defaults to site/user default, then English)
+ *
+ * @return string Either the translated string, the English string,
+ * or the original language string.
+ */
+function elgg_echo($message_key, $args = array(), $language = "") {
+ global $CONFIG;
+
+ static $CURRENT_LANGUAGE;
+
+ // old param order is deprecated
+ if (!is_array($args)) {
+ elgg_deprecated_notice(
+ 'As of Elgg 1.8, the 2nd arg to elgg_echo() is an array of string replacements and the 3rd arg is the language.',
+ 1.8
+ );
+
+ $language = $args;
+ $args = array();
+ }
+
+ if (!isset($CONFIG->translations)) {
+ // this means we probably had an exception before translations were initialized
+ register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/");
+ }
+
+ if (!$CURRENT_LANGUAGE) {
+ $CURRENT_LANGUAGE = get_language();
+ }
+ if (!$language) {
+ $language = $CURRENT_LANGUAGE;
+ }
+
+ if (isset($CONFIG->translations[$language][$message_key])) {
+ $string = $CONFIG->translations[$language][$message_key];
+ } else if (isset($CONFIG->translations["en"][$message_key])) {
+ $string = $CONFIG->translations["en"][$message_key];
+ $lang = $CONFIG->translations["en"][$language];
+ elgg_log(sprintf('Missing %s translation for "%s" language key', $lang, $message_key), 'NOTICE');
+ } else {
+ $string = $message_key;
+ elgg_log(sprintf('Missing English translation for "%s" language key', $message_key), 'NOTICE');
+ }
+
+ // only pass through if we have arguments to allow backward compatibility
+ // with manual sprintf() calls.
+ if ($args) {
+ $string = vsprintf($string, $args);
+ }
+
+ return $string;
+}
+
+/**
* Add a translation.
*
* Translations are arrays in the Zend Translation array format, eg:
@@ -18,7 +77,7 @@
* @param string $country_code Standard country code (eg 'en', 'nl', 'es')
* @param array $language_array Formatted array of strings
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function add_translation($country_code, $language_array) {
global $CONFIG;
@@ -45,8 +104,6 @@ function add_translation($country_code, $language_array) {
* @return string The language code for the site/user or "en" if not set
*/
function get_current_language() {
- global $CONFIG;
-
$language = get_language();
if (!$language) {
@@ -83,55 +140,36 @@ function get_language() {
}
/**
- * Given a message shortcode, returns an appropriately translated full-text string
- *
- * @param string $message_key The short message code
- * @param array $args An array of arguments to pass through vsprintf().
- * @param string $language Optionally, the standard language code
- * (defaults to site/user default, then English)
- *
- * @return string Either the translated string, the English string,
- * or the original language string.
+ * @access private
*/
-function elgg_echo($message_key, $args = array(), $language = "") {
+function _elgg_load_translations() {
global $CONFIG;
- static $CURRENT_LANGUAGE;
-
- // old param order is deprecated
- if (!is_array($args)) {
- elgg_deprecated_notice(
- 'As of Elgg 1.8, the 2nd arg to elgg_echo() is an array of string replacements and the 3rd arg is the language.',
- 1.8
- );
-
- $language = $args;
- $args = array();
- }
+ if ($CONFIG->system_cache_enabled) {
+ $loaded = true;
+ $languages = array_unique(array('en', get_current_language()));
+ foreach ($languages as $language) {
+ $data = elgg_load_system_cache("$language.lang");
+ if ($data) {
+ add_translation($language, unserialize($data));
+ } else {
+ $loaded = false;
+ }
+ }
- if (!$CURRENT_LANGUAGE) {
- $CURRENT_LANGUAGE = get_language();
- }
- if (!$language) {
- $language = $CURRENT_LANGUAGE;
+ if ($loaded) {
+ $CONFIG->i18n_loaded_from_cache = true;
+ // this is here to force
+ $CONFIG->language_paths[dirname(dirname(dirname(__FILE__))) . "/languages/"] = true;
+ return;
+ }
}
- if (isset($CONFIG->translations[$language][$message_key])) {
- $string = $CONFIG->translations[$language][$message_key];
- } else if (isset($CONFIG->translations["en"][$message_key])) {
- $string = $CONFIG->translations["en"][$message_key];
- } else {
- $string = $message_key;
- }
+ // load core translations from languages directory
+ register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/");
+}
- // only pass through if we have arguments to allow backward compatibility
- // with manual sprintf() calls.
- if ($args) {
- $string = vsprintf($string, $args);
- }
- return $string;
-}
/**
* When given a full path, finds translation files and loads them
@@ -140,21 +178,14 @@ function elgg_echo($message_key, $args = array(), $language = "") {
* @param bool $load_all If true all languages are loaded, if
* false only the current language + en are loaded
*
- * @return void
+ * @return bool success
*/
function register_translations($path, $load_all = false) {
global $CONFIG;
- static $load_from_cache;
- static $cache_loaded_langs;
- if (!isset($load_from_cache)) {
- $load_from_cache = $CONFIG->system_cache_enabled;
- $cache_loaded_langs = array();
- }
-
$path = sanitise_filepath($path);
- // Make a note of this path just in case we need to register this language later
+ // Make a note of this path just incase we need to register this language later
if (!isset($CONFIG->language_paths)) {
$CONFIG->language_paths = array();
}
@@ -162,6 +193,7 @@ function register_translations($path, $load_all = false) {
// Get the current language based on site defaults and user preference
$current_language = get_current_language();
+ elgg_log("Translations loaded from: $path");
// only load these files unless $load_all is true.
$load_language_files = array(
@@ -171,32 +203,6 @@ function register_translations($path, $load_all = false) {
$load_language_files = array_unique($load_language_files);
- if ($load_from_cache && !$load_all) {
- // load language files from cache
- $data = array();
- foreach ($load_language_files as $lang_file) {
- $lang = substr($lang_file, 0, strpos($lang_file, '.'));
- if (!isset($cache_loaded_langs[$lang])) {
- $data[$lang] = elgg_load_system_cache($lang_file);
- if ($data[$lang]) {
- $cache_loaded_langs[$lang] = true;
- } else {
- // this language file not cached yet
- $load_from_cache = false;
- }
- }
- }
-
- // are we still suppose to load from cache
- if ($load_from_cache) {
- foreach ($data as $lang => $map) {
- add_translation($lang, unserialize($map));
- }
- $CONFIG->i18n_loaded_from_cache = true;
- return true;
- }
- }
-
$handle = opendir($path);
if (!$handle) {
elgg_log("Could not open language path: $path", 'ERROR');
@@ -218,34 +224,43 @@ function register_translations($path, $load_all = false) {
}
}
- elgg_log("Translations loaded from: $path");
-
- // make sure caching code saves language data if system cache is on
- $CONFIG->i18n_loaded_from_cache = false;
-
return $return;
}
/**
* Reload all translations from all registered paths.
*
- * This is only called by functions which need to know all possible translations, namely the
- * statistic gathering ones.
+ * This is only called by functions which need to know all possible translations.
*
* @todo Better on demand loading based on language_paths array
*
- * @return bool
+ * @return void
*/
function reload_all_translations() {
global $CONFIG;
static $LANG_RELOAD_ALL_RUN;
if ($LANG_RELOAD_ALL_RUN) {
- return null;
+ return;
}
- foreach ($CONFIG->language_paths as $path => $dummy) {
- register_translations($path, true);
+ if ($CONFIG->i18n_loaded_from_cache) {
+ $cache = elgg_get_system_cache();
+ $cache_dir = $cache->getVariable("cache_path");
+ $filenames = elgg_get_file_list($cache_dir, array(), array(), array(".lang"));
+ foreach ($filenames as $filename) {
+ if (preg_match('/([a-z]+)\.[^.]+$/', $filename, $matches)) {
+ $language = $matches[1];
+ $data = elgg_load_system_cache("$language.lang");
+ if ($data) {
+ add_translation($language, unserialize($data));
+ }
+ }
+ }
+ } else {
+ foreach ($CONFIG->language_paths as $path => $dummy) {
+ register_translations($path, true);
+ }
}
$LANG_RELOAD_ALL_RUN = true;
@@ -337,14 +352,3 @@ function get_missing_language_keys($language) {
return false;
}
-
-/**
- * Initialize the language library
- * @access private
- */
-function elgg_languages_init() {
- $lang = get_current_language();
- elgg_register_simplecache_view("cache/js/languages/$lang");
-}
-
-elgg_register_event_handler('init', 'system', 'elgg_languages_init');
diff --git a/engine/lib/location.php b/engine/lib/location.php
index 5b889509b..1534c7d7b 100644
--- a/engine/lib/location.php
+++ b/engine/lib/location.php
@@ -101,7 +101,7 @@ function elgg_get_entities_from_location(array $options = array()) {
$long_min = $long - $long_distance;
$long_max = $long + $long_distance;
- $where = array();
+ $wheres = array();
$wheres[] = "lat_name.string='geo:lat'";
$wheres[] = "lat_value.string >= $lat_min";
$wheres[] = "lat_value.string <= $lat_max";
@@ -139,7 +139,7 @@ function elgg_get_entities_from_location(array $options = array()) {
/**
* Returns a viewable list of entities from location
*
- * @param array $options
+ * @param array $options Options array
*
* @see elgg_list_entities()
* @see elgg_get_entities_from_location()
diff --git a/engine/lib/mb_wrapper.php b/engine/lib/mb_wrapper.php
index c2f5503e0..68fa69005 100644
--- a/engine/lib/mb_wrapper.php
+++ b/engine/lib/mb_wrapper.php
@@ -11,7 +11,7 @@ if (is_callable('mb_internal_encoding')) {
* NOTE: This differs from parse_str() by returning the results
* instead of placing them in the local scope!
*
- * @param str $str The string
+ * @param string $str The string
*
* @return array
* @since 1.7.0
diff --git a/engine/lib/memcache.php b/engine/lib/memcache.php
index f79fba4a9..79b87e850 100644
--- a/engine/lib/memcache.php
+++ b/engine/lib/memcache.php
@@ -35,3 +35,23 @@ function is_memcache_available() {
return $memcache_available;
}
+
+/**
+ * Invalidate an entity in memcache
+ *
+ * @param int $entity_guid The GUID of the entity to invalidate
+ *
+ * @return void
+ * @access private
+ */
+function _elgg_invalidate_memcache_for_entity($entity_guid) {
+ static $newentity_cache;
+
+ if ((!$newentity_cache) && (is_memcache_available())) {
+ $newentity_cache = new ElggMemcache('new_entity_cache');
+ }
+
+ if ($newentity_cache) {
+ $newentity_cache->delete($entity_guid);
+ }
+} \ No newline at end of file
diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php
index 34a36d86e..fdb1b85f6 100644
--- a/engine/lib/metadata.php
+++ b/engine/lib/metadata.php
@@ -12,7 +12,7 @@
*
* @param stdClass $row An object from the database
*
- * @return stdClass or ElggMetadata
+ * @return stdClass|ElggMetadata
* @access private
*/
function row_to_elggmetadata($row) {
@@ -30,7 +30,7 @@ function row_to_elggmetadata($row) {
*
* @param int $id The id of the metadata object being retrieved.
*
- * @return false|ElggMetadata
+ * @return ElggMetadata|false FALSE if not found
*/
function elgg_get_metadata_from_id($id) {
return elgg_get_metastring_based_object_from_id($id, 'metadata');
@@ -64,7 +64,7 @@ function elgg_delete_metadata_by_id($id) {
* @param int $access_id Default is ACCESS_PRIVATE
* @param bool $allow_multiple Allow multiple values for one key. Default is FALSE
*
- * @return int/bool id of metadata or FALSE if failure
+ * @return int|false id of metadata or FALSE if failure
*/
function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_guid = 0,
$access_id = ACCESS_PRIVATE, $allow_multiple = false) {
@@ -90,8 +90,6 @@ function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_g
$access_id = (int)$access_id;
- $id = false;
-
$query = "SELECT * from {$CONFIG->dbprefix}metadata"
. " WHERE entity_guid = $entity_guid and name_id=" . add_metastring($name) . " limit 1";
@@ -106,34 +104,33 @@ function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_g
} else {
// Support boolean types
if (is_bool($value)) {
- if ($value) {
- $value = 1;
- } else {
- $value = 0;
- }
+ $value = (int) $value;
}
// Add the metastrings
- $value = add_metastring($value);
- if (!$value) {
+ $value_id = add_metastring($value);
+ if (!$value_id) {
return false;
}
- $name = add_metastring($name);
- if (!$name) {
+ $name_id = add_metastring($name);
+ if (!$name_id) {
return false;
}
// If ok then add it
$query = "INSERT into {$CONFIG->dbprefix}metadata"
. " (entity_guid, name_id, value_id, value_type, owner_guid, time_created, access_id)"
- . " VALUES ($entity_guid, '$name','$value','$value_type', $owner_guid, $time, $access_id)";
+ . " VALUES ($entity_guid, '$name_id','$value_id','$value_type', $owner_guid, $time, $access_id)";
$id = insert_data($query);
if ($id !== false) {
$obj = elgg_get_metadata_from_id($id);
if (elgg_trigger_event('create', 'metadata', $obj)) {
+
+ elgg_get_metadata_cache()->save($entity_guid, $name, $value, $allow_multiple);
+
return $id;
} else {
elgg_delete_metadata_by_id($id);
@@ -175,6 +172,7 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
}
if ($metabyname_memcache) {
+ // @todo fix memcache (name_id is not a property of ElggMetadata)
$metabyname_memcache->delete("{$md->entity_guid}:{$md->name_id}");
}
@@ -187,35 +185,32 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
$access_id = (int)$access_id;
- $access = get_access_sql_suffix();
-
// Support boolean types (as integers)
if (is_bool($value)) {
- if ($value) {
- $value = 1;
- } else {
- $value = 0;
- }
+ $value = (int) $value;
}
// Add the metastring
- $value = add_metastring($value);
- if (!$value) {
+ $value_id = add_metastring($value);
+ if (!$value_id) {
return false;
}
- $name = add_metastring($name);
- if (!$name) {
+ $name_id = add_metastring($name);
+ if (!$name_id) {
return false;
}
// If ok then add it
$query = "UPDATE {$CONFIG->dbprefix}metadata"
- . " set name_id='$name', value_id='$value', value_type='$value_type', access_id=$access_id,"
+ . " set name_id='$name_id', value_id='$value_id', value_type='$value_type', access_id=$access_id,"
. " owner_guid=$owner_guid where id=$id";
$result = update_data($query);
if ($result !== false) {
+
+ elgg_get_metadata_cache()->save($md->entity_guid, $name, $value);
+
// @todo this event tells you the metadata has been updated, but does not
// let you do anything about it. What is needed is a plugin hook before
// the update that passes old and new values.
@@ -234,7 +229,7 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
* associative arrays and there is no guarantee on the ordering in the array.
*
* @param int $entity_guid The entity to attach the metadata to
- * @param string $name_and_values Associative array - a value can be a string, number, bool
+ * @param array $name_and_values Associative array - a value can be a string, number, bool
* @param string $value_type 'text', 'integer', or '' for automatic detection
* @param int $owner_guid GUID of entity that owns the metadata
* @param int $access_id Default is ACCESS_PRIVATE
@@ -282,10 +277,18 @@ $access_id = ACCESS_PRIVATE, $allow_multiple = false) {
* all metadata that match the query instead of returning
* ElggMetadata objects.
*
- * @return mixed
+ * @return ElggMetadata[]|mixed
* @since 1.8.0
*/
function elgg_get_metadata(array $options = array()) {
+
+ // @todo remove support for count shortcut - see #4393
+ // support shortcut of 'count' => true for 'metadata_calculation' => 'count'
+ if (isset($options['count']) && $options['count']) {
+ $options['metadata_calculation'] = 'count';
+ unset($options['count']);
+ }
+
$options['metastring_type'] = 'metadata';
return elgg_get_metastring_based_objects($options);
}
@@ -298,16 +301,20 @@ function elgg_get_metadata(array $options = array()) {
* metadata_name(s), metadata_value(s), or guid(s) must be set.
*
* @param array $options An options array. {@see elgg_get_metadata()}
- * @return mixed Null if the metadata name is invalid. Bool on success or fail.
+ * @return bool|null true on success, false on failure, null if no metadata to delete.
* @since 1.8.0
*/
function elgg_delete_metadata(array $options) {
if (!elgg_is_valid_options_for_batch_operation($options, 'metadata')) {
return false;
}
-
$options['metastring_type'] = 'metadata';
- $result = elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback');
+ $result = elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback', false);
+
+ // This moved last in case an object's constructor sets metadata. Currently the batch
+ // delete process has to create the entity to delete its metadata. See #5214
+ elgg_get_metadata_cache()->invalidateByOptions('delete', $options);
+
return $result;
}
@@ -317,7 +324,7 @@ function elgg_delete_metadata(array $options) {
* @warning Unlike elgg_get_metadata() this will not accept an empty options array!
*
* @param array $options An options array. {@See elgg_get_metadata()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata disabled.
* @since 1.8.0
*/
function elgg_disable_metadata(array $options) {
@@ -325,8 +332,14 @@ function elgg_disable_metadata(array $options) {
return false;
}
+ elgg_get_metadata_cache()->invalidateByOptions('disable', $options);
+
+ // if we can see hidden (disabled) we need to use the offset
+ // otherwise we risk an infinite loop if there are more than 50
+ $inc_offset = access_get_show_hidden_status();
+
$options['metastring_type'] = 'metadata';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback');
+ return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', $inc_offset);
}
/**
@@ -334,8 +347,11 @@ function elgg_disable_metadata(array $options) {
*
* @warning Unlike elgg_get_metadata() this will not accept an empty options array!
*
+ * @warning In order to enable metadata, you must first use
+ * {@link access_show_hidden_entities()}.
+ *
* @param array $options An options array. {@See elgg_get_metadata()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata enabled.
* @since 1.8.0
*/
function elgg_enable_metadata(array $options) {
@@ -343,6 +359,8 @@ function elgg_enable_metadata(array $options) {
return false;
}
+ elgg_get_metadata_cache()->invalidateByOptions('enable', $options);
+
$options['metastring_type'] = 'metadata';
return elgg_batch_metastring_based_objects($options, 'elgg_batch_enable_callback');
}
@@ -356,13 +374,24 @@ function elgg_enable_metadata(array $options) {
* options available to elgg_get_entities(). Supports
* the singular option shortcut.
*
- * NB: Using metadata_names and metadata_values results in a
+ * @note Using metadata_names and metadata_values results in a
* "names IN (...) AND values IN (...)" clause. This is subtly
* differently than default multiple metadata_name_value_pairs, which use
* "(name = value) AND (name = value)" clauses.
*
* When in doubt, use name_value_pairs.
*
+ * To ask for entities that do not have a metadata value, use a custom
+ * where clause like this:
+ *
+ * $options['wheres'][] = "NOT EXISTS (
+ * SELECT 1 FROM {$dbprefix}metadata md
+ * WHERE md.entity_guid = e.guid
+ * AND md.name_id = $name_metastring_id
+ * AND md.value_id = $value_metastring_id)";
+ *
+ * Note the metadata name and value has been denormalized in the above example.
+ *
* @see elgg_get_entities
*
* @param array $options Array in format:
@@ -377,9 +406,11 @@ function elgg_enable_metadata(array $options) {
* 'operand' => '=',
* 'case_sensitive' => TRUE
* )
- * Currently if multiple values are sent via
+ * Currently if multiple values are sent via
* an array (value => array('value1', 'value2')
* the pair's operand will be forced to "IN".
+ * If passing "IN" as the operand and a string as the value,
+ * the value must be a properly quoted and escaped string.
*
* metadata_name_value_pairs_operator => NULL|STR The operator to use for combining
* (name = value) OPERATOR (name = value); default AND
@@ -395,7 +426,7 @@ function elgg_enable_metadata(array $options) {
*
* metadata_owner_guids => NULL|ARR guids for metadata owners
*
- * @return mixed If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
function elgg_get_entities_from_metadata(array $options = array()) {
@@ -433,18 +464,18 @@ function elgg_get_entities_from_metadata(array $options = array()) {
* This function is reused for annotations because the tables are
* exactly the same.
*
- * @param string $e_table Entities table name
- * @param string $n_table Normalized metastrings table name (Where entities,
+ * @param string $e_table Entities table name
+ * @param string $n_table Normalized metastrings table name (Where entities,
* values, and names are joined. annotations / metadata)
- * @param arr|null $names Array of names
- * @param arr|null $values Array of values
- * @param arr|null $pairs Array of names / values / operands
- * @param and|or $pair_operator Operator to use to join the where clauses for pairs
- * @param bool $case_sensitive Case sensitive metadata names?
- * @param arr|null $order_by_metadata Array of names / direction
- * @param arr|null $owner_guids Array of owner GUIDs
- *
- * @return FALSE|array False on fail, array('joins', 'wheres')
+ * @param array|null $names Array of names
+ * @param array|null $values Array of values
+ * @param array|null $pairs Array of names / values / operands
+ * @param string $pair_operator ("AND" or "OR") Operator to use to join the where clauses for pairs
+ * @param bool $case_sensitive Case sensitive metadata names?
+ * @param array|null $order_by_metadata Array of names / direction
+ * @param array|null $owner_guids Array of owner GUIDs
+ *
+ * @return false|array False on fail, array('joins', 'wheres')
* @since 1.7.0
* @access private
*/
@@ -591,6 +622,8 @@ $owner_guids = NULL) {
// if the operand is IN don't quote it because quoting should be done already.
if (is_numeric($pair['value'])) {
$value = sanitise_string($pair['value']);
+ } else if (is_bool($pair['value'])) {
+ $value = (int) $pair['value'];
} else if (is_array($pair['value'])) {
$values_array = array();
@@ -716,6 +749,8 @@ function elgg_list_entities_from_metadata($options) {
*
* @return array
* @access private
+ *
+ * @throws InvalidParameterException
*/
function export_metadata_plugin_hook($hook, $entity_type, $returnvalue, $params) {
// Sanity check values
@@ -727,15 +762,13 @@ function export_metadata_plugin_hook($hook, $entity_type, $returnvalue, $params)
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonArrayReturnValue'));
}
- $guid = (int)$params['guid'];
- $name = $params['name'];
-
$result = elgg_get_metadata(array(
- 'guid' => $guid,
- 'limit' => 0
+ 'guid' => (int)$params['guid'],
+ 'limit' => 0,
));
if ($result) {
+ /* @var ElggMetadata[] $result */
foreach ($result as $r) {
$returnvalue[] = $r->export();
}
@@ -757,10 +790,10 @@ function string_to_tag_array($string) {
$ar = explode(",", $string);
$ar = array_map('trim', $ar);
$ar = array_filter($ar, 'is_not_null');
+ $ar = array_map('strip_tags', $ar);
return $ar;
}
return false;
-
}
/**
@@ -873,6 +906,50 @@ function elgg_register_metadata_url_handler($extender_name, $function) {
return elgg_register_extender_url_handler('metadata', $extender_name, $function);
}
+/**
+ * Get the global metadata cache instance
+ *
+ * @return ElggVolatileMetadataCache
+ *
+ * @access private
+ */
+function elgg_get_metadata_cache() {
+ global $CONFIG;
+ if (empty($CONFIG->local_metadata_cache)) {
+ $CONFIG->local_metadata_cache = new ElggVolatileMetadataCache();
+ }
+ return $CONFIG->local_metadata_cache;
+}
+
+/**
+ * Invalidate the metadata cache based on options passed to various *_metadata functions
+ *
+ * @param string $action Action performed on metadata. "delete", "disable", or "enable"
+ * @param array $options Options passed to elgg_(delete|disable|enable)_metadata
+ * @return void
+ */
+function elgg_invalidate_metadata_cache($action, array $options) {
+ // remove as little as possible, optimizing for common cases
+ $cache = elgg_get_metadata_cache();
+ if (empty($options['guid'])) {
+ // safest to clear everything unless we want to make this even more complex :(
+ $cache->flush();
+ } else {
+ if (empty($options['metadata_name'])) {
+ // safest to clear the whole entity
+ $cache->clear($options['guid']);
+ } else {
+ switch ($action) {
+ case 'delete':
+ $cache->markEmpty($options['guid'], $options['metadata_name']);
+ break;
+ default:
+ $cache->markUnknown($options['guid'], $options['metadata_name']);
+ }
+ }
+ }
+}
+
/** Register the hook */
elgg_register_plugin_hook_handler("export", "all", "export_metadata_plugin_hook", 2);
@@ -896,5 +973,6 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'metadata_test');
function metadata_test($hook, $type, $value, $params) {
global $CONFIG;
$value[] = $CONFIG->path . 'engine/tests/api/metadata.php';
+ $value[] = $CONFIG->path . 'engine/tests/api/metadata_cache.php';
return $value;
-} \ No newline at end of file
+}
diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php
index d7cc4e0bc..57d876c06 100644
--- a/engine/lib/metastrings.php
+++ b/engine/lib/metastrings.php
@@ -67,7 +67,7 @@ function get_metastring_id($string, $case_sensitive = TRUE) {
}
$row = FALSE;
- $metaStrings = get_data($query, "entity_row_to_elggstar");
+ $metaStrings = get_data($query);
if (is_array($metaStrings)) {
if (sizeof($metaStrings) > 1) {
$ids = array();
@@ -389,11 +389,6 @@ function elgg_get_metastring_based_objects($options) {
$selects = $options['selects'];
- // allow count shortcut
- if ($options['count']) {
- $options['metastring_calculation'] = 'count';
- }
-
// For performance reasons we don't want the joins required for metadata / annotations
// unless we're going through one of their callbacks.
// this means we expect the functions passing different callbacks to pass their required joins.
@@ -426,9 +421,11 @@ function elgg_get_metastring_based_objects($options) {
if ($metastring_clauses) {
$wheres = array_merge($wheres, $metastring_clauses['wheres']);
$joins = array_merge($joins, $metastring_clauses['joins']);
+ } else {
+ $wheres[] = get_access_sql_suffix('n_table');
}
- if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
+ if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE && !$options['count']) {
$selects = array_unique($selects);
// evalutate selects
$select_str = '';
@@ -439,6 +436,9 @@ function elgg_get_metastring_based_objects($options) {
}
$query = "SELECT DISTINCT n_table.*{$select_str} FROM {$db_prefix}$type n_table";
+ } elseif ($options['count']) {
+ // count is over the entities
+ $query = "SELECT count(DISTINCT e.guid) as calculation FROM {$db_prefix}$type n_table";
} else {
$query = "SELECT {$options['metastring_calculation']}(v.string) as calculation FROM {$db_prefix}$type n_table";
}
@@ -467,7 +467,7 @@ function elgg_get_metastring_based_objects($options) {
$defaults['order_by']);
}
- if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
+ if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE && !$options['count']) {
if (isset($options['group_by'])) {
$options['group_by'] = sanitise_string($options['group_by']);
$query .= " GROUP BY {$options['group_by']}";
@@ -515,21 +515,16 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
&& !$ids
&& (!$pairs && $pairs !== 0)) {
- return '';
+ return array();
}
$db_prefix = elgg_get_config('dbprefix');
- // join counter for incremental joins.
- $i = 1;
-
// binary forces byte-to-byte comparision of strings, making
// it case- and diacritical-mark- sensitive.
// only supported on values.
$binary = ($case_sensitive) ? ' BINARY ' : '';
- $access = get_access_sql_suffix($table);
-
$return = array (
'joins' => array (),
'wheres' => array()
@@ -594,13 +589,15 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
}
if ($names_where && $values_where) {
- $wheres[] = "($names_where AND $values_where AND $access)";
+ $wheres[] = "($names_where AND $values_where)";
} elseif ($names_where) {
- $wheres[] = "($names_where AND $access)";
+ $wheres[] = $names_where;
} elseif ($values_where) {
- $wheres[] = "($values_where AND $access)";
+ $wheres[] = $values_where;
}
+ $wheres[] = get_access_sql_suffix($table);
+
if ($where = implode(' AND ', $wheres)) {
$return['wheres'][] = "($where)";
}
@@ -663,9 +660,10 @@ function elgg_normalize_metastrings_options(array $options = array()) {
*
* @param int $id The object's ID
* @param string $enabled Value to set to: yes or no
- * @param string $type The type of table to use: metadata or anntations
+ * @param string $type The type of table to use: metadata or annotations
*
* @return bool
+ * @throws InvalidParameterException
* @since 1.8.0
* @access private
*/
@@ -716,22 +714,23 @@ function elgg_set_metastring_based_object_enabled_by_id($id, $enabled, $type) {
* @warning Unlike elgg_get_metastring_based_objects() this will not accept an
* empty options array!
*
- * @param array $options An options array. {@See elgg_get_metastring_based_objects()}
- * @param string $callback The callback to pass each result through
- * @return mixed
+ * @warning This returns null on no ops.
+ *
+ * @param array $options An options array. {@See elgg_get_metastring_based_objects()}
+ * @param string $callback The callback to pass each result through
+ * @param bool $inc_offset Increment the offset? Pass false for callbacks that delete / disable
+ *
+ * @return bool|null true on success, false on failure, null if no objects are found.
* @since 1.8.0
* @access private
*/
-function elgg_batch_metastring_based_objects(array $options, $callback) {
+function elgg_batch_metastring_based_objects(array $options, $callback, $inc_offset = true) {
if (!$options || !is_array($options)) {
return false;
}
- // @todo restore once ElggBatch supports callbacks that delete rows.
- $batch = new ElggBatch('elgg_get_metastring_based_objects', $options, $callback, 50, false);
- $r = $batch->callbackResult;
-
- return $r;
+ $batch = new ElggBatch('elgg_get_metastring_based_objects', $options, $callback, 50, $inc_offset);
+ return $batch->callbackResult;
}
/**
@@ -739,7 +738,7 @@ function elgg_batch_metastring_based_objects(array $options, $callback) {
*
* @param int $id The metastring-based object's ID
* @param string $type The type: annotation or metadata
- * @return mixed
+ * @return ElggMetadata|ElggAnnotation
*
* @since 1.8.0
* @access private
@@ -805,6 +804,7 @@ function elgg_delete_metastring_based_object_by_id($id, $type) {
}
if ($metabyname_memcache) {
+ // @todo why name_id? is that even populated?
$metabyname_memcache->delete("{$obj->entity_guid}:{$obj->name_id}");
}
}
diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php
index a7984ce5a..ab9cc05e8 100644
--- a/engine/lib/navigation.php
+++ b/engine/lib/navigation.php
@@ -126,6 +126,7 @@ function elgg_unregister_menu_item($menu_name, $item_name) {
}
foreach ($CONFIG->menus[$menu_name] as $index => $menu_object) {
+ /* @var ElggMenuItem $menu_object */
if ($menu_object->getName() == $item_name) {
unset($CONFIG->menus[$menu_name][$index]);
return true;
@@ -151,7 +152,8 @@ function elgg_is_menu_item_registered($menu_name, $item_name) {
return false;
}
- foreach ($CONFIG->menus[$menu_name] as $index => $menu_object) {
+ foreach ($CONFIG->menus[$menu_name] as $menu_object) {
+ /* @var ElggMenuItem $menu_object */
if ($menu_object->getName() == $item_name) {
return true;
}
@@ -216,7 +218,7 @@ function elgg_push_breadcrumb($title, $link = NULL) {
}
// avoid key collisions.
- $CONFIG->breadcrumbs[] = array('title' => $title, 'link' => $link);
+ $CONFIG->breadcrumbs[] = array('title' => elgg_get_excerpt($title, 100), 'link' => $link);
}
/**
@@ -230,7 +232,7 @@ function elgg_pop_breadcrumb() {
global $CONFIG;
if (is_array($CONFIG->breadcrumbs)) {
- array_pop($CONFIG->breadcrumbs);
+ return array_pop($CONFIG->breadcrumbs);
}
return FALSE;
@@ -308,6 +310,37 @@ function elgg_site_menu_setup($hook, $type, $return, $params) {
$return['more'] = array_splice($return['default'], $max_display_items);
}
}
+
+ // check if we have anything selected
+ $selected = false;
+ foreach ($return as $section) {
+ foreach ($section as $item) {
+ if ($item->getSelected()) {
+ $selected = true;
+ break 2;
+ }
+ }
+ }
+
+ if (!$selected) {
+ // nothing selected, match name to context or match url
+ $current_url = current_page_url();
+ foreach ($return as $section_name => $section) {
+ foreach ($section as $key => $item) {
+ // only highlight internal links
+ if (strpos($item->getHref(), elgg_get_site_url()) === 0) {
+ if ($item->getName() == elgg_get_context()) {
+ $return[$section_name][$key]->setSelected(true);
+ break 2;
+ }
+ if ($item->getHref() == $current_url) {
+ $return[$section_name][$key]->setSelected(true);
+ break 2;
+ }
+ }
+ }
+ }
+ }
return $return;
}
@@ -319,6 +352,7 @@ function elgg_site_menu_setup($hook, $type, $return, $params) {
function elgg_river_menu_setup($hook, $type, $return, $params) {
if (elgg_is_logged_in()) {
$item = $params['item'];
+ /* @var ElggRiverItem $item */
$object = $item->getObjectEntity();
// comments and non-objects cannot be commented on or liked
if (!elgg_in_context('widgets') && $item->annotation_id == 0) {
@@ -335,6 +369,18 @@ function elgg_river_menu_setup($hook, $type, $return, $params) {
$return[] = ElggMenuItem::factory($options);
}
}
+
+ if (elgg_is_admin_logged_in()) {
+ $options = array(
+ 'name' => 'delete',
+ 'href' => elgg_add_action_tokens_to_url("action/river/delete?id=$item->id"),
+ 'text' => elgg_view_icon('delete'),
+ 'title' => elgg_echo('delete'),
+ 'confirm' => elgg_echo('deleteconfirm'),
+ 'priority' => 200,
+ );
+ $return[] = ElggMenuItem::factory($options);
+ }
}
return $return;
@@ -350,6 +396,7 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {
}
$entity = $params['entity'];
+ /* @var ElggEntity $entity */
$handler = elgg_extract('handler', $params, false);
// access
@@ -395,6 +442,7 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {
function elgg_widget_menu_setup($hook, $type, $return, $params) {
$widget = $params['entity'];
+ /* @var ElggWidget $widget */
$show_edit = elgg_extract('show_edit', $params, true);
$collapse = array(
@@ -443,6 +491,7 @@ function elgg_widget_menu_setup($hook, $type, $return, $params) {
*/
function elgg_annotation_menu_setup($hook, $type, $return, $params) {
$annotation = $params['annotation'];
+ /* @var ElggAnnotation $annotation */
if ($annotation->name == 'generic_comment' && $annotation->canEdit()) {
$url = elgg_http_add_url_query_elements('action/comments/delete', array(
diff --git a/engine/lib/notification.php b/engine/lib/notification.php
index 5a2f5f8ac..be0c359d4 100644
--- a/engine/lib/notification.php
+++ b/engine/lib/notification.php
@@ -38,7 +38,7 @@ $NOTIFICATION_HANDLERS = array();
function register_notification_handler($method, $handler, $params = NULL) {
global $NOTIFICATION_HANDLERS;
- if (is_callable($handler)) {
+ if (is_callable($handler, true)) {
$NOTIFICATION_HANDLERS[$method] = new stdClass;
$NOTIFICATION_HANDLERS[$method]->handler = $handler;
@@ -86,7 +86,7 @@ function unregister_notification_handler($method) {
* @throws NotificationException
*/
function notify_user($to, $from, $subject, $message, array $params = NULL, $methods_override = "") {
- global $NOTIFICATION_HANDLERS, $CONFIG;
+ global $NOTIFICATION_HANDLERS;
// Sanitise
if (!is_array($to)) {
@@ -110,12 +110,15 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Are we overriding delivery?
$methods = $methods_override;
if (!$methods) {
- $tmp = (array)get_user_notification_settings($guid);
+ $tmp = get_user_notification_settings($guid);
$methods = array();
- foreach ($tmp as $k => $v) {
- // Add method if method is turned on for user!
- if ($v) {
- $methods[] = $k;
+ // $tmp may be false. don't cast
+ if (is_object($tmp)) {
+ foreach ($tmp as $k => $v) {
+ // Add method if method is turned on for user!
+ if ($v) {
+ $methods[] = $k;
+ }
}
}
}
@@ -131,8 +134,9 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Extract method details from list
$details = $NOTIFICATION_HANDLERS[$method];
$handler = $details->handler;
+ /* @var callable $handler */
- if ((!$NOTIFICATION_HANDLERS[$method]) || (!$handler)) {
+ if ((!$NOTIFICATION_HANDLERS[$method]) || (!$handler) || (!is_callable($handler))) {
error_log(elgg_echo('NotificationException:NoHandlerFound', array($method)));
}
@@ -140,7 +144,7 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Trigger handler and retrieve result.
try {
- $result[$guid][$method] = $handler(
+ $result[$guid][$method] = call_user_func($handler,
$from ? get_entity($from) : NULL, // From entity
get_entity($guid), // To entity
$subject, // The subject
@@ -164,7 +168,7 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
*
* @param int $user_guid The user id
*
- * @return stdClass
+ * @return stdClass|false
*/
function get_user_notification_settings($user_guid = 0) {
$user_guid = (int)$user_guid;
@@ -173,7 +177,8 @@ function get_user_notification_settings($user_guid = 0) {
$user_guid = elgg_get_logged_in_user_guid();
}
- // @todo: holy crap, really?
+ // @todo: there should be a better way now that metadata is cached. E.g. just query for MD names, then
+ // query user object directly
$all_metadata = elgg_get_metadata(array(
'guid' => $user_guid,
'limit' => 0
@@ -236,6 +241,7 @@ function set_user_notification_setting($user_guid, $method, $value) {
* @param array $params Optional parameters (none taken in this instance)
*
* @return bool
+ * @throws NotificationException
* @access private
*/
function email_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message,
@@ -262,7 +268,7 @@ array $params = NULL) {
$to = $to->email;
// From
- $site = get_entity($CONFIG->site_guid);
+ $site = elgg_get_site_entity();
// If there's an email address, use it - but only if its not from a user.
if (!($from instanceof ElggUser) && $from->email) {
$from = $from->email;
@@ -287,6 +293,7 @@ array $params = NULL) {
* @param array $params Optional parameters (none used in this function)
*
* @return bool
+ * @throws NotificationException
* @since 1.7.2
*/
function elgg_send_email($from, $to, $subject, $body, array $params = NULL) {
@@ -343,6 +350,8 @@ function elgg_send_email($from, $to, $subject, $body, array $params = NULL) {
// Sanitise subject by stripping line endings
$subject = preg_replace("/(\r\n|\r|\n)/", " ", $subject);
+ // this is because Elgg encodes everything and matches what is done with body
+ $subject = html_entity_decode($subject, ENT_COMPAT, 'UTF-8'); // Decode any html entities
if (is_callable('mb_encode_mimeheader')) {
$subject = mb_encode_mimeheader($subject, "UTF-8", "B");
}
@@ -421,7 +430,7 @@ function register_notification_object($entity_type, $object_subtype, $language_n
* @param int $user_guid The GUID of the user who wants to follow a user's content
* @param int $author_guid The GUID of the user whose content the user wants to follow
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function register_notification_interest($user_guid, $author_guid) {
return add_entity_relationship($user_guid, 'notify', $author_guid);
@@ -433,7 +442,7 @@ function register_notification_interest($user_guid, $author_guid) {
* @param int $user_guid The GUID of the user who is following a user's content
* @param int $author_guid The GUID of the user whose content the user wants to unfollow
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function remove_notification_interest($user_guid, $author_guid) {
return remove_entity_relationship($user_guid, 'notify', $author_guid);
@@ -449,12 +458,13 @@ function remove_notification_interest($user_guid, $author_guid) {
* @param string $object_type mixed
* @param mixed $object The object created
*
- * @return void
+ * @return bool
* @access private
*/
function object_notifications($event, $object_type, $object) {
// We only want to trigger notification events for ElggEntities
if ($object instanceof ElggEntity) {
+ /* @var ElggEntity $object */
// Get config data
global $CONFIG, $SESSION, $NOTIFICATION_HANDLERS;
@@ -480,8 +490,8 @@ function object_notifications($event, $object_type, $object) {
}
if (isset($CONFIG->register_objects[$object_type][$object_subtype])) {
- $descr = $CONFIG->register_objects[$object_type][$object_subtype];
- $string = $descr . ": " . $object->getURL();
+ $subject = $CONFIG->register_objects[$object_type][$object_subtype];
+ $string = $subject . ": " . $object->getURL();
// Get users interested in content from this person and notify them
// (Person defined by container_guid so we can also subscribe to groups if we want)
@@ -491,25 +501,26 @@ function object_notifications($event, $object_type, $object) {
'relationship' => 'notify' . $method,
'relationship_guid' => $object->container_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
- 'limit' => 99999
+ 'type' => 'user',
+ 'limit' => false
));
+ /* @var ElggUser[] $interested_users */
if ($interested_users && is_array($interested_users)) {
foreach ($interested_users as $user) {
if ($user instanceof ElggUser && !$user->isBanned()) {
if (($user->guid != $SESSION['user']->guid) && has_access_to_entity($object, $user)
&& $object->access_id != ACCESS_PRIVATE) {
- $methodstring = elgg_trigger_plugin_hook('notify:entity:message', $object->getType(), array(
+ $body = elgg_trigger_plugin_hook('notify:entity:message', $object->getType(), array(
'entity' => $object,
'to_entity' => $user,
'method' => $method), $string);
- if (empty($methodstring) && $methodstring !== false) {
- $methodstring = $string;
+ if (empty($body) && $body !== false) {
+ $body = $string;
}
- if ($methodstring !== false) {
- notify_user($user->guid, $object->container_guid, $descr, $methodstring,
- NULL, array($method));
+ if ($body !== false) {
+ notify_user($user->guid, $object->container_guid, $subject, $body,
+ null, array($method));
}
}
}
diff --git a/engine/lib/objects.php b/engine/lib/objects.php
index f186c66cb..ff3cc733f 100644
--- a/engine/lib/objects.php
+++ b/engine/lib/objects.php
@@ -31,6 +31,7 @@ function get_object_entity_as_row($guid) {
* @param string $description The object's description
*
* @return bool
+ * @access private
*/
function create_object_entity($guid, $title, $description) {
global $CONFIG;
@@ -92,16 +93,16 @@ function get_object_sites($object_guid, $limit = 10, $offset = 0) {
return elgg_get_entities_from_relationship(array(
'relationship' => 'member_of_site',
'relationship_guid' => $object_guid,
- 'types' => 'site',
+ 'type' => 'site',
'limit' => $limit,
- 'offset' => $offset
+ 'offset' => $offset,
));
}
/**
* Runs unit tests for ElggObject
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/opendd.php b/engine/lib/opendd.php
index f00ea6aab..7d635a295 100644
--- a/engine/lib/opendd.php
+++ b/engine/lib/opendd.php
@@ -7,6 +7,8 @@
* @version 0.4
*/
+// @codingStandardsIgnoreStart
+
/**
* Attempt to construct an ODD object out of a XmlElement or sub-elements.
*
@@ -103,3 +105,5 @@ function ODD_Import($xml) {
function ODD_Export(ODDDocument $document) {
return "$document";
}
+
+// @codingStandardsIgnoreEnd
diff --git a/engine/lib/output.php b/engine/lib/output.php
index b1245a924..de4f911fb 100644
--- a/engine/lib/output.php
+++ b/engine/lib/output.php
@@ -12,29 +12,34 @@
*
* @param string $text The input string
*
- * @return string The output stirng with formatted links
- **/
+ * @return string The output string with formatted links
+ */
function parse_urls($text) {
+
+ // URI specification: http://www.ietf.org/rfc/rfc3986.txt
+ // This varies from the specification in the following ways:
+ // * Supports non-ascii characters
+ // * Does not allow parentheses and single quotes
+ // * Cuts off commas, exclamation points, and periods off as last character
+
// @todo this causes problems with <attr = "val">
- // must be ing <attr="val"> format (no space).
+ // must be in <attr="val"> format (no space).
// By default htmlawed rewrites tags to this format.
// if PHP supported conditional negative lookbehinds we could use this:
// $r = preg_replace_callback('/(?<!=)(?<![ ])?(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i',
- //
- // we can put , in the list of excluded char but need to keep . because of domain names.
- // it is removed in the callback.
- $r = preg_replace_callback('/(?<!=)(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i',
+ $r = preg_replace_callback('/(?<![=\/"\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\']+)/i',
create_function(
'$matches',
'
$url = $matches[1];
- $period = \'\';
- if (substr($url, -1, 1) == \'.\') {
- $period = \'.\';
- $url = trim($url, \'.\');
+ $punc = "";
+ $last = substr($url, -1, 1);
+ if (in_array($last, array(".", "!", ",", "(", ")"))) {
+ $punc = $last;
+ $url = rtrim($url, ".!,()");
}
$urltext = str_replace("/", "/<wbr />", $url);
- return "<a href=\"$url\">$urltext</a>$period";
+ return "<a href=\"$url\" rel=\"nofollow\">$urltext</a>$punc";
'
), $text);
@@ -43,51 +48,26 @@ function parse_urls($text) {
/**
* Create paragraphs from text with line spacing
- * Borrowed from Wordpress.
*
* @param string $pee The string
- * @param bool $br Add BRs?
+ * @deprecated Use elgg_autop instead
+ * @todo Add deprecation warning in 1.9
*
- * @todo Rewrite
* @return string
**/
-function autop($pee, $br = 1) {
- $pee = $pee . "\n"; // just to make things a little easier, pad the end
- $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
- // Space things out a little
- $allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
- $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
- $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
- $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
- if (strpos($pee, '<object') !== false) {
- $pee = preg_replace('|\s*<param([^>]*)>\s*|', "<param$1>", $pee); // no pee inside object/embed
- $pee = preg_replace('|\s*</embed>\s*|', '</embed>', $pee);
- }
- $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
- $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end
- $pee = preg_replace('|<p>\s*?</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
- $pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee);
- $pee = preg_replace('|<p>|', "$1<p>", $pee);
- $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
- $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
- $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
- $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
- $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
- $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
- if ($br) {
- $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', create_function('$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);'), $pee);
- $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
- $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
- }
- $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
- $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
- //if (strpos($pee, '<pre') !== false) {
- // mind the space between the ? and >. Only there because of the comment.
- // $pee = preg_replace_callback('!(<pre.*? >)(.*?)</pre>!is', 'clean_pre', $pee );
- //}
- $pee = preg_replace("|\n</p>$|", '</p>', $pee);
-
- return $pee;
+function autop($pee) {
+ return elgg_autop($pee);
+}
+
+/**
+ * Create paragraphs from text with line spacing
+ *
+ * @param string $string The string
+ *
+ * @return string
+ **/
+function elgg_autop($string) {
+ return ElggAutoP::getInstance()->process($string);
}
/**
@@ -249,7 +229,6 @@ function elgg_normalize_url($url) {
$php_5_3_0_to_5_3_2 = version_compare(PHP_VERSION, '5.3.0', '>=') &&
version_compare(PHP_VERSION, '5.3.3', '<');
- $validated = false;
if ($php_5_2_13_and_below || $php_5_3_0_to_5_3_2) {
$tmp_address = str_replace("-", "", $url);
$validated = filter_var($tmp_address, FILTER_VALIDATE_URL);
@@ -271,8 +250,8 @@ function elgg_normalize_url($url) {
// '?query=test', #target
return $url;
- } elseif (stripos($url, 'javascript:') === 0) {
- // 'javascript:'
+ } elseif (stripos($url, 'javascript:') === 0 || stripos($url, 'mailto:') === 0) {
+ // 'javascript:' and 'mailto:'
// Not covered in FILTER_VALIDATE_URL
return $url;
@@ -310,19 +289,11 @@ function elgg_get_friendly_title($title) {
return $result;
}
- // @todo not using this because of locale concerns
- //$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);
-
- // @todo this uses a utf8 character class. can use if
- // we want to support utf8 in the url.
- //$title = preg_replace('/[^\p{L}\- ]/u', '', $title);
+ // titles are often stored HTML encoded
+ $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
+
+ $title = ElggTranslit::urlize($title);
- // use A-Za-z0-9_ instead of \w because \w is locale sensitive
- $title = preg_replace("/[^A-Za-z0-9_\- ]/", "", $title);
- $title = str_replace(" ", "-", $title);
- $title = str_replace("--", "-", $title);
- $title = trim($title);
- $title = elgg_strtolower($title);
return $title;
}
@@ -392,7 +363,7 @@ function elgg_get_friendly_time($time) {
/**
* Strip tags and offer plugins the chance.
* Plugins register for output:strip_tags plugin hook.
- * Original string included in $params['original_string']
+ * Original string included in $params['original_string']
*
* @param string $string Formatted string
*
@@ -406,3 +377,93 @@ function elgg_strip_tags($string) {
return $string;
}
+
+/**
+ * Apply html_entity_decode() to a string while re-entitising HTML
+ * special char entities to prevent them from being decoded back to their
+ * unsafe original forms.
+ *
+ * This relies on html_entity_decode() not translating entities when
+ * doing so leaves behind another entity, e.g. &amp;gt; if decoded would
+ * create &gt; which is another entity itself. This seems to escape the
+ * usual behaviour where any two paired entities creating a HTML tag are
+ * usually decoded, i.e. a lone &gt; is not decoded, but &lt;foo&gt; would
+ * be decoded to <foo> since it creates a full tag.
+ *
+ * Note: This function is poorly explained in the manual - which is really
+ * bad given its potential for misuse on user input already escaped elsewhere.
+ * Stackoverflow is littered with advice to use this function in the precise
+ * way that would lead to user input being capable of injecting arbitrary HTML.
+ *
+ * @param string $string
+ *
+ * @return string
+ *
+ * @author Pádraic Brady
+ * @copyright Copyright (c) 2010 Pádraic Brady (http://blog.astrumfutura.com)
+ * @license Released under dual-license GPL2/MIT by explicit permission of Pádraic Brady
+ *
+ * @access private
+ */
+function _elgg_html_decode($string) {
+ $string = str_replace(
+ array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'),
+ array('&amp;gt;', '&amp;lt;', '&amp;amp;', '&amp;quot;', '&amp;#039;'),
+ $string
+ );
+ $string = html_entity_decode($string, ENT_NOQUOTES, 'UTF-8');
+ $string = str_replace(
+ array('&amp;gt;', '&amp;lt;', '&amp;amp;', '&amp;quot;', '&amp;#039;'),
+ array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'),
+ $string
+ );
+ return $string;
+}
+
+/**
+ * Prepares query string for output to prevent CSRF attacks.
+ *
+ * @param string $string
+ * @return string
+ *
+ * @access private
+ */
+function _elgg_get_display_query($string) {
+ //encode <,>,&, quotes and characters above 127
+ if (function_exists('mb_convert_encoding')) {
+ $display_query = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8');
+ } else {
+ // if no mbstring extension, we just strip characters
+ $display_query = preg_replace("/[^\x01-\x7F]/", "", $string);
+ }
+ return htmlspecialchars($display_query, ENT_QUOTES, 'UTF-8', false);
+}
+
+/**
+ * Unit tests for Output
+ *
+ * @param string $hook unit_test
+ * @param string $type system
+ * @param mixed $value Array of tests
+ * @param mixed $params Params
+ *
+ * @return array
+ * @access private
+ */
+function output_unit_test($hook, $type, $value, $params) {
+ global $CONFIG;
+ $value[] = $CONFIG->path . 'engine/tests/api/output.php';
+ return $value;
+}
+
+/**
+ * Initialise the Output subsystem.
+ *
+ * @return void
+ * @access private
+ */
+function output_init() {
+ elgg_register_plugin_hook_handler('unit_test', 'system', 'output_unit_test');
+}
+
+elgg_register_event_handler('init', 'system', 'output_init');
diff --git a/engine/lib/pagehandler.php b/engine/lib/pagehandler.php
index a675d976a..0cf99b6fe 100644
--- a/engine/lib/pagehandler.php
+++ b/engine/lib/pagehandler.php
@@ -31,21 +31,24 @@ function page_handler($handler, $page) {
}
// return false to stop processing the request (because you handled it)
- // return a new $params array if you want to route the request differently
- $params = array(
+ // return a new $request array if you want to route the request differently
+ $request = array(
'handler' => $handler,
'segments' => $page,
);
- $params = elgg_trigger_plugin_hook('route', $handler, NULL, $params);
- if ($params === false) {
+ $request = elgg_trigger_plugin_hook('route', $handler, null, $request);
+ if ($request === false) {
return true;
}
- $handler = $params['handler'];
- $page = $params['segments'];
+ $handler = $request['handler'];
+ $page = $request['segments'];
$result = false;
- if (isset($CONFIG->pagehandler) && !empty($handler) && isset($CONFIG->pagehandler[$handler])) {
+ if (isset($CONFIG->pagehandler)
+ && !empty($handler)
+ && isset($CONFIG->pagehandler[$handler])
+ && is_callable($CONFIG->pagehandler[$handler])) {
$function = $CONFIG->pagehandler[$handler];
$result = call_user_func($function, $page, $handler);
}
@@ -76,14 +79,15 @@ function page_handler($handler, $page) {
* @param string $handler The page type to handle
* @param string $function Your function name
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function elgg_register_page_handler($handler, $function) {
global $CONFIG;
+
if (!isset($CONFIG->pagehandler)) {
$CONFIG->pagehandler = array();
}
- if (is_callable($function)) {
+ if (is_callable($function, true)) {
$CONFIG->pagehandler[$handler] = $function;
return true;
}
@@ -129,7 +133,7 @@ function elgg_error_page_handler($hook, $type, $result, $params) {
$content = elgg_view("errors/default", $params);
}
$body = elgg_view_layout('error', array('content' => $content));
- echo elgg_view_page($title, $body, 'error');
+ echo elgg_view_page('', $body, 'error');
exit;
}
diff --git a/engine/lib/pageowner.php b/engine/lib/pageowner.php
index 0cf0e0625..bd63d08c6 100644
--- a/engine/lib/pageowner.php
+++ b/engine/lib/pageowner.php
@@ -29,7 +29,9 @@ function elgg_get_page_owner_guid($guid = 0) {
// return guid of page owner entity
$guid = elgg_trigger_plugin_hook('page_owner', 'system', NULL, 0);
- $page_owner_guid = $guid;
+ if ($guid) {
+ $page_owner_guid = $guid;
+ }
return $guid;
}
@@ -37,17 +39,23 @@ function elgg_get_page_owner_guid($guid = 0) {
/**
* Gets the owner entity for the current page.
*
- * @return ElggEntity|false The current page owner or false if none.
+ * @note Access is disabled when getting the page owner entity.
+ *
+ * @return ElggUser|ElggGroup|false The current page owner or false if none.
*
* @since 1.8.0
*/
function elgg_get_page_owner_entity() {
$guid = elgg_get_page_owner_guid();
if ($guid > 0) {
- return get_entity($guid);
+ $ia = elgg_set_ignore_access(true);
+ $owner = get_entity($guid);
+ elgg_set_ignore_access($ia);
+
+ return $owner;
}
- return FALSE;
+ return false;
}
/**
@@ -75,6 +83,8 @@ function elgg_set_page_owner_guid($guid) {
* <handler>/edit/<entity guid>
* <handler>/group/<group guid>
*
+ * @note Access is disabled while finding the page owner for the group gatekeeper functions.
+ *
*
* @param string $hook 'page_owner'
* @param string $entity_type 'system'
@@ -90,6 +100,8 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
return $returnvalue;
}
+ $ia = elgg_set_ignore_access(true);
+
$username = get_input("username");
if ($username) {
// @todo using a username of group:<guid> is deprecated
@@ -97,11 +109,13 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
preg_match('/group\:([0-9]+)/i', $username, $matches);
$guid = $matches[1];
if ($entity = get_entity($guid)) {
+ elgg_set_ignore_access($ia);
return $entity->getGUID();
}
}
if ($user = get_user_by_username($username)) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
}
@@ -109,6 +123,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
$owner = get_input("owner_guid");
if ($owner) {
if ($user = get_entity($owner)) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
}
@@ -130,6 +145,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'friends':
$user = get_user_by_username($segments[2]);
if ($user) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
break;
@@ -137,6 +153,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'edit':
$entity = get_entity($segments[2]);
if ($entity) {
+ elgg_set_ignore_access($ia);
return $entity->getContainerGUID();
}
break;
@@ -144,6 +161,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'group':
$entity = get_entity($segments[2]);
if ($entity) {
+ elgg_set_ignore_access($ia);
return $entity->getGUID();
}
break;
@@ -151,7 +169,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
}
}
- return $returnvalue;
+ elgg_set_ignore_access($ia);
}
/**
diff --git a/engine/lib/pam.php b/engine/lib/pam.php
index 4f9f44278..1c9c3bfe1 100644
--- a/engine/lib/pam.php
+++ b/engine/lib/pam.php
@@ -30,7 +30,9 @@ $_PAM_HANDLERS = array();
* failure, return false or throw an exception. Returning nothing indicates that
* the handler wants to be skipped.
*
- * @param string $handler The handler function in the format
+ * Note, $handler must be string callback (not an array/Closure).
+ *
+ * @param string $handler Callable global handler function in the format ()
* pam_handler($credentials = NULL);
* @param string $importance The importance - "sufficient" (default) or "required"
* @param string $policy The policy type, default is "user"
@@ -45,7 +47,8 @@ function register_pam_handler($handler, $importance = "sufficient", $policy = "u
$_PAM_HANDLERS[$policy] = array();
}
- if (is_callable($handler)) {
+ // @todo remove requirement that $handle be a global function
+ if (is_string($handler) && is_callable($handler, true)) {
$_PAM_HANDLERS[$policy][$handler] = new stdClass;
$_PAM_HANDLERS[$policy][$handler]->handler = $handler;
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php
index 123fb18d8..d5d3db466 100644
--- a/engine/lib/plugins.php
+++ b/engine/lib/plugins.php
@@ -91,12 +91,17 @@ function elgg_get_plugin_ids_in_dir($dir = null) {
* @access private
*/
function elgg_generate_plugin_entities() {
+ // @todo $site unused, can remove?
$site = get_config('site');
+
$dir = elgg_get_plugins_path();
+ $db_prefix = elgg_get_config('dbprefix');
$options = array(
'type' => 'object',
'subtype' => 'plugin',
+ 'selects' => array('plugin_oe.*'),
+ 'joins' => array("JOIN {$db_prefix}objects_entity plugin_oe on plugin_oe.guid = e.guid"),
'limit' => ELGG_ENTITIES_NO_VALUE
);
@@ -104,6 +109,7 @@ function elgg_generate_plugin_entities() {
$old_access = access_get_show_hidden_status();
access_show_hidden_entities(true);
$known_plugins = elgg_get_entities_from_relationship($options);
+ /* @var ElggPlugin[] $known_plugins */
if (!$known_plugins) {
$known_plugins = array();
@@ -135,7 +141,7 @@ function elgg_generate_plugin_entities() {
$index = $id_map[$plugin_id];
$plugin = $known_plugins[$index];
// was this plugin deleted and its entity disabled?
- if ($plugin->enabled != 'yes') {
+ if (!$plugin->isEnabled()) {
$plugin->enable();
$plugin->deactivate();
$plugin->setPriority('last');
@@ -173,13 +179,31 @@ function elgg_generate_plugin_entities() {
}
/**
+ * Cache a reference to this plugin by its ID
+ *
+ * @param ElggPlugin $plugin
+ *
+ * @access private
+ */
+function _elgg_cache_plugin_by_id(ElggPlugin $plugin) {
+ $map = (array) elgg_get_config('plugins_by_id_map');
+ $map[$plugin->getID()] = $plugin;
+ elgg_set_config('plugins_by_id_map', $map);
+}
+
+/**
* Returns an ElggPlugin object with the path $path.
*
* @param string $plugin_id The id (dir name) of the plugin. NOT the guid.
- * @return mixed ElggPlugin or false.
+ * @return ElggPlugin|false
* @since 1.8.0
*/
function elgg_get_plugin_from_id($plugin_id) {
+ $map = (array) elgg_get_config('plugins_by_id_map');
+ if (isset($map[$plugin_id])) {
+ return $map[$plugin_id];
+ }
+
$plugin_id = sanitize_string($plugin_id);
$db_prefix = get_config('dbprefix');
@@ -187,6 +211,7 @@ function elgg_get_plugin_from_id($plugin_id) {
'type' => 'object',
'subtype' => 'plugin',
'joins' => array("JOIN {$db_prefix}objects_entity oe on oe.guid = e.guid"),
+ 'selects' => array("oe.title", "oe.description"),
'wheres' => array("oe.title = '$plugin_id'"),
'limit' => 1
);
@@ -238,6 +263,8 @@ function elgg_get_max_plugin_priority() {
$data = get_data($q);
if ($data) {
$max = $data[0]->max;
+ } else {
+ $max = 1;
}
// can't have a priority of 0.
@@ -284,13 +311,11 @@ function elgg_is_active_plugin($plugin_id, $site_guid = null) {
* @access private
*/
function elgg_load_plugins() {
- global $CONFIG;
-
$plugins_path = elgg_get_plugins_path();
- $start_flags = ELGG_PLUGIN_INCLUDE_START
- | ELGG_PLUGIN_REGISTER_VIEWS
- | ELGG_PLUGIN_REGISTER_LANGUAGES
- | ELGG_PLUGIN_REGISTER_CLASSES;
+ $start_flags = ELGG_PLUGIN_INCLUDE_START |
+ ELGG_PLUGIN_REGISTER_VIEWS |
+ ELGG_PLUGIN_REGISTER_LANGUAGES |
+ ELGG_PLUGIN_REGISTER_CLASSES;
if (!$plugins_path) {
return false;
@@ -308,6 +333,10 @@ function elgg_load_plugins() {
$start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_VIEWS;
}
+ if (elgg_get_config('i18n_loaded_from_cache')) {
+ $start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_LANGUAGES;
+ }
+
$return = true;
$plugins = elgg_get_plugins('active');
if ($plugins) {
@@ -334,7 +363,7 @@ function elgg_load_plugins() {
*
* @param string $status The status of the plugins. active, inactive, or all.
* @param mixed $site_guid Optional site guid
- * @return array
+ * @return ElggPlugin[]
* @since 1.8.0
* @access private
*/
@@ -352,7 +381,11 @@ function elgg_get_plugins($status = 'active', $site_guid = null) {
'type' => 'object',
'subtype' => 'plugin',
'limit' => ELGG_ENTITIES_NO_VALUE,
- 'joins' => array("JOIN {$db_prefix}private_settings ps on ps.entity_guid = e.guid"),
+ 'selects' => array('plugin_oe.*'),
+ 'joins' => array(
+ "JOIN {$db_prefix}private_settings ps on ps.entity_guid = e.guid",
+ "JOIN {$db_prefix}objects_entity plugin_oe on plugin_oe.guid = e.guid"
+ ),
'wheres' => array("ps.name = '$priority'"),
'order_by' => "CAST(ps.value as unsigned), e.guid"
);
@@ -411,6 +444,7 @@ function elgg_set_plugin_priorities(array $order) {
// though we do start with 1
$order = array_values($order);
+ $missing_plugins = array();
foreach ($plugins as $plugin) {
$plugin_id = $plugin->getID();
@@ -501,6 +535,8 @@ function elgg_namespace_plugin_private_setting($type, $name, $id = null) {
* @return string|false Plugin name, or false if no plugin name was called
* @since 1.8.0
* @access private
+ *
+ * @todo get rid of this
*/
function elgg_get_calling_plugin_id($mainfilename = false) {
if (!$mainfilename) {
@@ -607,19 +643,18 @@ function elgg_get_plugins_provides($type = null, $name = null) {
* @access private
*/
function elgg_check_plugins_provides($type, $name, $version = null, $comparison = 'ge') {
- if (!$provided = elgg_get_plugins_provides($type, $name)) {
+ $provided = elgg_get_plugins_provides($type, $name);
+ if (!$provided) {
return array(
'status' => false,
'version' => ''
);
}
- if ($provided) {
- if ($version) {
- $status = version_compare($provided['version'], $version, $comparison);
- } else {
- $status = true;
- }
+ if ($version) {
+ $status = version_compare($provided['version'], $version, $comparison);
+ } else {
+ $status = true;
}
return array(
@@ -829,9 +864,9 @@ function elgg_set_plugin_user_setting($name, $value, $user_guid = null, $plugin_
/**
* Unsets a user-specific plugin setting
*
- * @param str $name Name of the setting
- * @param int $user_guid Defaults to logged in user
- * @param str $plugin_id Defaults to contextual plugin name
+ * @param string $name Name of the setting
+ * @param int $user_guid Defaults to logged in user
+ * @param string $plugin_id Defaults to contextual plugin name
*
* @return bool
* @since 1.8.0
@@ -909,6 +944,7 @@ function elgg_set_plugin_setting($name, $value, $plugin_id = null) {
*
* @return mixed
* @since 1.8.0
+ * @todo make $plugin_id required in future version
*/
function elgg_get_plugin_setting($name, $plugin_id = null) {
if ($plugin_id) {
@@ -1054,7 +1090,7 @@ function plugin_run_once() {
/**
* Runs unit tests for the entity objects.
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
@@ -1069,6 +1105,49 @@ function plugins_test($hook, $type, $value, $params) {
}
/**
+ * Checks on deactivate plugin event if disabling it won't create unmet dependencies and blocks disable in such case.
+ *
+ * @param string $event deactivate
+ * @param string $type plugin
+ * @param array $params Parameters array containing entry with ELggPlugin instance under 'plugin_entity' key
+ * @return bool false to block plugin deactivation action
+ *
+ * @access private
+ */
+function _plugins_deactivate_dependency_check($event, $type, $params) {
+ $plugin_id = $params['plugin_entity']->getManifest()->getPluginID();
+ $plugin_name = $params['plugin_entity']->getManifest()->getName();
+
+ $active_plugins = elgg_get_plugins();
+
+ $dependents = array();
+ foreach ($active_plugins as $plugin) {
+ $manifest = $plugin->getManifest();
+ $requires = $manifest->getRequires();
+
+ foreach ($requires as $required) {
+ if ($required['type'] == 'plugin' && $required['name'] == $plugin_id) {
+ // there are active dependents
+ $dependents[$manifest->getPluginID()] = $plugin;
+ }
+ }
+ }
+
+ if ($dependents) {
+ $list = '<ul>';
+ // construct error message and prevent disabling
+ foreach ($dependents as $dependent) {
+ $list .= '<li>' . $dependent->getManifest()->getName() . '</li>';
+ }
+ $list .= '</ul>';
+
+ register_error(elgg_echo('ElggPlugin:Dependencies:ActiveDependent', array($plugin_name, $list)));
+
+ return false;
+ }
+}
+
+/**
* Initialize the plugin system
* Listens to system init and registers actions
*
@@ -1079,6 +1158,10 @@ function plugin_init() {
run_function_once("plugin_run_once");
elgg_register_plugin_hook_handler('unit_test', 'system', 'plugins_test');
+
+ // note - plugins are booted by the time this handler is registered
+ // deactivation due to error may have already occurred
+ elgg_register_event_handler('deactivate', 'plugin', '_plugins_deactivate_dependency_check');
elgg_register_action("plugins/settings/save", '', 'admin');
elgg_register_action("plugins/usersettings/save");
diff --git a/engine/lib/private_settings.php b/engine/lib/private_settings.php
index 1fa9bdb66..7541f7b3b 100644
--- a/engine/lib/private_settings.php
+++ b/engine/lib/private_settings.php
@@ -349,11 +349,6 @@ function set_private_setting($entity_guid, $name, $value) {
$name = sanitise_string($name);
$value = sanitise_string($value);
- $entity = get_entity($entity_guid);
- if (!$entity instanceof ElggEntity) {
- return false;
- }
-
$result = insert_data("INSERT into {$CONFIG->dbprefix}private_settings
(entity_guid, name, value) VALUES
($entity_guid, '$name', '$value')
diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php
index f50c4a485..b0cd627fc 100644
--- a/engine/lib/relationships.php
+++ b/engine/lib/relationships.php
@@ -12,7 +12,7 @@
*
* @param stdClass $row Database row from the relationship table
*
- * @return stdClass or ElggMetadata
+ * @return ElggRelationship|stdClass
* @access private
*/
function row_to_elggrelationship($row) {
@@ -28,7 +28,7 @@ function row_to_elggrelationship($row) {
*
* @param int $id The ID of a relationship
*
- * @return mixed
+ * @return ElggRelationship|false
*/
function get_relationship($id) {
global $CONFIG;
@@ -109,7 +109,7 @@ function add_entity_relationship($guid_one, $relationship, $guid_two) {
* @param string $relationship The type of relationship
* @param int $guid_two The GUID of the entity the relationship is with
*
- * @return object|false Depending on success
+ * @return ElggRelationship|false Depending on success
*/
function check_entity_relationship($guid_one, $relationship, $guid_two) {
global $CONFIG;
@@ -123,7 +123,7 @@ function check_entity_relationship($guid_one, $relationship, $guid_two) {
AND relationship='$relationship'
AND guid_two=$guid_two limit 1";
- $row = get_data_row($query);
+ $row = row_to_elggrelationship(get_data_row($query));
if ($row) {
return $row;
}
@@ -220,7 +220,7 @@ function remove_entity_relationships($guid_one, $relationship = "", $inverse = f
* @param int $guid The GUID of the relationship owner
* @param bool $inverse_relationship Inverse relationship owners?
*
- * @return mixed
+ * @return ElggRelationship[]
*/
function get_entity_relationships($guid, $inverse_relationship = FALSE) {
global $CONFIG;
@@ -239,6 +239,15 @@ function get_entity_relationships($guid, $inverse_relationship = FALSE) {
* Also accepts all options available to elgg_get_entities() and
* elgg_get_entities_from_metadata().
*
+ * To ask for entities that do not have a particulat relationship to an entity,
+ * use a custom where clause like the following:
+ *
+ * $options['wheres'][] = "NOT EXISTS (
+ * SELECT 1 FROM {$db_prefix}entity_relationships
+ * WHERE guid_one = e.guid
+ * AND relationship = '$relationship'
+ * )";
+ *
* @see elgg_get_entities
* @see elgg_get_entities_from_metadata
*
@@ -250,7 +259,7 @@ function get_entity_relationships($guid, $inverse_relationship = FALSE) {
*
* inverse_relationship => BOOL Inverse the relationship
*
- * @return mixed If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
function elgg_get_entities_from_relationship($options) {
@@ -307,7 +316,7 @@ function elgg_get_entities_from_relationship($options) {
* Provide in table.column format.
* @param string $relationship Relationship string
* @param int $relationship_guid Entity guid to check
- * @param string $inverse_relationship Inverse relationship check?
+ * @param bool $inverse_relationship Inverse relationship check?
*
* @return mixed
* @since 1.7.0
@@ -354,7 +363,7 @@ $relationship_guid = NULL, $inverse_relationship = FALSE) {
/**
* Returns a viewable list of entities by relationship
*
- * @param array $options
+ * @param array $options Options array for retrieval of entities
*
* @see elgg_list_entities()
* @see elgg_get_entities_from_relationship()
@@ -372,7 +381,7 @@ function elgg_list_entities_from_relationship(array $options = array()) {
*
* @param array $options An options array compatible with
* elgg_get_entities_from_relationship()
- * @return mixed int If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed int If count, int. If not count, array. false on errors.
* @since 1.8.0
*/
function elgg_get_entities_from_relationship_count(array $options = array()) {
@@ -389,7 +398,7 @@ function elgg_get_entities_from_relationship_count(array $options = array()) {
*
* @param array $options Options array
*
- * @return array
+ * @return string
* @since 1.8.0
*/
function elgg_list_entities_from_relationship_count($options) {
@@ -407,7 +416,7 @@ function elgg_list_entities_from_relationship_count($options) {
function elgg_register_relationship_url_handler($relationship_type, $function_name) {
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -490,7 +499,7 @@ function already_attached($guid_one, $guid_two) {
* @param int $guid Entity GUID
* @param string $type The type of object to return e.g. 'file', 'friend_of' etc
*
- * @return an array of objects
+ * @return ElggEntity[]
* @access private
*/
function get_attachments($guid, $type = "") {
@@ -498,7 +507,7 @@ function get_attachments($guid, $type = "") {
'relationship' => 'attached',
'relationship_guid' => $guid,
'inverse_relationship' => false,
- 'types' => $type,
+ 'type' => $type,
'subtypes' => '',
'owner_guid' => 0,
'order_by' => 'time_created desc',
@@ -562,9 +571,8 @@ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
if ($element instanceof ODDRelationship) {
$tmp = new ElggRelationship();
$tmp->import($element);
-
- return $tmp;
}
+ return $tmp;
}
/**
@@ -577,11 +585,10 @@ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
*
* @elgg_event_handler export all
* @return mixed
+ * @throws InvalidParameterException
* @access private
*/
function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $params) {
- global $CONFIG;
-
// Sanity check values
if ((!is_array($params)) && (!isset($params['guid']))) {
throw new InvalidParameterException(elgg_echo('InvalidParameterException:GUIDNotForExport'));
@@ -615,9 +622,9 @@ function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
* @access private
*/
function relationship_notification_hook($event, $type, $object) {
-
+ /* @var ElggRelationship $object */
$user_one = get_entity($object->guid_one);
- $user_two = get_entity($object->guid_two);
+ /* @var ElggUser $user_one */
return notify_user($object->guid_two,
$object->guid_one,
diff --git a/engine/lib/river.php b/engine/lib/river.php
index 547d9495e..e92040eb7 100644
--- a/engine/lib/river.php
+++ b/engine/lib/river.php
@@ -55,7 +55,7 @@ $posted = 0, $annotation_id = 0) {
$posted = sanitise_int($posted);
$annotation_id = sanitise_int($annotation_id);
- $params = array(
+ $values = array(
'type' => $type,
'subtype' => $subtype,
'action_type' => $action_type,
@@ -68,13 +68,13 @@ $posted = 0, $annotation_id = 0) {
);
// return false to stop insert
- $params = elgg_trigger_plugin_hook('creating', 'river', null, $params);
- if ($params == false) {
+ $values = elgg_trigger_plugin_hook('creating', 'river', null, $values);
+ if ($values == false) {
// inserting did not fail - it was just prevented
return true;
}
- extract($params);
+ extract($values);
// Attempt to save river item; return success status
$id = insert_data("insert into {$CONFIG->dbprefix}river " .
@@ -120,7 +120,7 @@ $posted = 0, $annotation_id = 0) {
* subtypes => STR|ARR Entity subtype string(s)
* type_subtype_pairs => ARR Array of type => subtype pairs where subtype
* can be an array of subtype strings
- *
+ *
* posted_time_lower => INT The lower bound on the time posted
* posted_time_upper => INT The upper bound on the time posted
*
@@ -361,6 +361,7 @@ function elgg_get_river(array $options = array()) {
}
$river_items = get_data($query, 'elgg_row_to_elgg_river_item');
+ _elgg_prefetch_river_entities($river_items);
return $river_items;
} else {
@@ -370,11 +371,56 @@ function elgg_get_river(array $options = array()) {
}
/**
+ * Prefetch entities that will be displayed in the river.
+ *
+ * @param ElggRiverItem[] $river_items
+ * @access private
+ */
+function _elgg_prefetch_river_entities(array $river_items) {
+ // prefetch objects and subjects
+ $guids = array();
+ foreach ($river_items as $item) {
+ if ($item->subject_guid && !_elgg_retrieve_cached_entity($item->subject_guid)) {
+ $guids[$item->subject_guid] = true;
+ }
+ if ($item->object_guid && !_elgg_retrieve_cached_entity($item->object_guid)) {
+ $guids[$item->object_guid] = true;
+ }
+ }
+ if ($guids) {
+ // avoid creating oversized query
+ // @todo how to better handle this?
+ $guids = array_slice($guids, 0, 300, true);
+ // return value unneeded, just priming cache
+ elgg_get_entities(array(
+ 'guids' => array_keys($guids),
+ 'limit' => 0,
+ ));
+ }
+
+ // prefetch object containers
+ $guids = array();
+ foreach ($river_items as $item) {
+ $object = $item->getObjectEntity();
+ if ($object->container_guid && !_elgg_retrieve_cached_entity($object->container_guid)) {
+ $guids[$object->container_guid] = true;
+ }
+ }
+ if ($guids) {
+ $guids = array_slice($guids, 0, 300, true);
+ elgg_get_entities(array(
+ 'guids' => array_keys($guids),
+ 'limit' => 0,
+ ));
+ }
+}
+
+/**
* List river items
*
* @param array $options Any options from elgg_get_river() plus:
* pagination => BOOL Display pagination links (true)
-
+ *
* @return string
* @since 1.8.0
*/
@@ -388,8 +434,13 @@ function elgg_list_river(array $options = array()) {
'pagination' => TRUE,
'list_class' => 'elgg-list-river elgg-river', // @todo remove elgg-river in Elgg 1.9
);
-
+
$options = array_merge($defaults, $options);
+
+ if (!$options["limit"] && !$options["offset"]) {
+ // no need for pagination if listing is unlimited
+ $options["pagination"] = false;
+ }
$options['count'] = TRUE;
$count = elgg_get_river($options);
@@ -399,6 +450,7 @@ function elgg_list_river(array $options = array()) {
$options['count'] = $count;
$options['items'] = $items;
+
return elgg_view('page/components/list', $options);
}
@@ -454,6 +506,7 @@ function elgg_get_river_type_subtype_where_sql($table, $types, $subtypes, $pairs
return '';
}
+ $wheres = array();
$types_wheres = array();
$subtypes_wheres = array();
@@ -598,7 +651,7 @@ function update_river_access_by_object($object_guid, $access_id) {
}
/**
- * Page handler for activiy
+ * Page handler for activity
*
* @param array $page
* @return bool
@@ -617,10 +670,6 @@ function elgg_river_page_handler($page) {
}
set_input('page_type', $page_type);
- // content filter code here
- $entity_type = '';
- $entity_subtype = '';
-
require_once("{$CONFIG->path}pages/river.php");
return true;
}
@@ -643,9 +692,11 @@ function elgg_river_init() {
elgg_register_page_handler('activity', 'elgg_river_page_handler');
$item = new ElggMenuItem('activity', elgg_echo('activity'), 'activity');
elgg_register_menu_item('site', $item);
-
+
elgg_register_widget_type('river_widget', elgg_echo('river:widget:title'), elgg_echo('river:widget:description'));
+ elgg_register_action('river/delete', '', 'admin');
+
elgg_register_plugin_hook_handler('unit_test', 'system', 'elgg_river_test');
}
diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php
index 419d36707..e3d5ce9cd 100644
--- a/engine/lib/sessions.php
+++ b/engine/lib/sessions.php
@@ -87,6 +87,9 @@ function elgg_is_admin_logged_in() {
*/
function elgg_is_admin_user($user_guid) {
global $CONFIG;
+
+ $user_guid = (int)$user_guid;
+
// cannot use magic metadata here because of recursion
// must support the old way of getting admin from metadata
@@ -286,8 +289,6 @@ function check_rate_limit_exceeded($user_guid) {
* @throws LoginException
*/
function login(ElggUser $user, $persistent = false) {
- global $CONFIG;
-
// User is banned, return false.
if ($user->isBanned()) {
throw new LoginException(elgg_echo('LoginException:BannedUser'));
@@ -325,6 +326,12 @@ function login(ElggUser $user, $persistent = false) {
set_last_login($_SESSION['guid']);
reset_login_failure_count($user->guid); // Reset any previous failed login attempts
+ // if memcache is enabled, invalidate the user in memcache @see https://github.com/Elgg/Elgg/issues/3143
+ if (is_memcache_available()) {
+ // this needs to happen with a shutdown function because of the timing with set_last_login()
+ register_shutdown_function("_elgg_invalidate_memcache_for_entity", $_SESSION['guid']);
+ }
+
return true;
}
@@ -334,8 +341,6 @@ function login(ElggUser $user, $persistent = false) {
* @return bool
*/
function logout() {
- global $CONFIG;
-
if (isset($_SESSION['user'])) {
if (!elgg_trigger_event('logout', 'user', $_SESSION['user'])) {
return false;
@@ -376,14 +381,10 @@ function logout() {
*
* @uses $_SESSION
*
- * @param string $event Event name
- * @param string $object_type Object type
- * @param mixed $object Object
- *
* @return bool
* @access private
*/
-function _elgg_session_boot($event, $object_type, $object) {
+function _elgg_session_boot() {
global $DB_PREFIX, $CONFIG;
// Use database for sessions
@@ -464,9 +465,6 @@ function _elgg_session_boot($event, $object_type, $object) {
return false;
}
- // Since we have loaded a new user, this user may have different language preferences
- register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/");
-
return true;
}
@@ -623,10 +621,8 @@ function _elgg_session_destroy($id) {
global $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
- return(@unlink($sess_file));
+ return @unlink($sess_file);
}
-
- return false;
}
/**
@@ -658,5 +654,3 @@ function _elgg_session_gc($maxlifetime) {
return true;
}
-
-elgg_register_event_handler('boot', 'system', '_elgg_session_boot', 2);
diff --git a/engine/lib/sites.php b/engine/lib/sites.php
index 850092cad..3de0eccc2 100644
--- a/engine/lib/sites.php
+++ b/engine/lib/sites.php
@@ -18,11 +18,19 @@
function elgg_get_site_entity($site_guid = 0) {
global $CONFIG;
+ $result = false;
+
if ($site_guid == 0) {
- return $CONFIG->site;
+ $site = $CONFIG->site;
+ } else {
+ $site = get_entity($site_guid);
+ }
+
+ if ($site instanceof ElggSite) {
+ $result = $site;
}
- return get_entity($site_guid);
+ return $result;
}
/**
@@ -50,6 +58,7 @@ function get_site_entity_as_row($guid) {
* @param string $url URL of the site
*
* @return bool
+ * @access private
*/
function create_site_entity($guid, $name, $description, $url) {
global $CONFIG;
@@ -109,8 +118,6 @@ function create_site_entity($guid, $name, $description, $url) {
* @return bool
*/
function add_site_user($site_guid, $user_guid) {
- global $CONFIG;
-
$site_guid = (int)$site_guid;
$user_guid = (int)$user_guid;
@@ -141,8 +148,6 @@ function remove_site_user($site_guid, $user_guid) {
* @return mixed
*/
function add_site_object($site_guid, $object_guid) {
- global $CONFIG;
-
$site_guid = (int)$site_guid;
$object_guid = (int)$object_guid;
@@ -183,8 +188,8 @@ function get_site_objects($site_guid, $subtype = "", $limit = 10, $offset = 0) {
'relationship' => 'member_of_site',
'relationship_guid' => $site_guid,
'inverse_relationship' => TRUE,
- 'types' => 'object',
- 'subtypes' => $subtype,
+ 'type' => 'object',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -233,7 +238,7 @@ function get_site_domain($guid) {
/**
* Unit tests for sites
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/statistics.php b/engine/lib/statistics.php
index e1f95ed97..4cb0bb0b8 100644
--- a/engine/lib/statistics.php
+++ b/engine/lib/statistics.php
@@ -95,15 +95,20 @@ function get_number_users($show_deactivated = false) {
* @return string
*/
function get_online_users() {
- $count = find_active_users(600, 10, $offset, true);
- $objects = find_active_users(600, 10, $offset);
+ $limit = max(0, (int) get_input("limit", 10));
+ $offset = max(0, (int) get_input("offset", 0));
+
+ $count = find_active_users(600, $limit, $offset, true);
+ $objects = find_active_users(600, $limit, $offset);
if ($objects) {
return elgg_view_entity_list($objects, array(
'count' => $count,
- 'limit' => 10
+ 'limit' => $limit,
+ 'offset' => $offset
));
}
+ return '';
}
/**
diff --git a/engine/lib/system_log.php b/engine/lib/system_log.php
index 28d90be56..84302632e 100644
--- a/engine/lib/system_log.php
+++ b/engine/lib/system_log.php
@@ -10,6 +10,8 @@
/**
* Retrieve the system log based on a number of parameters.
*
+ * @todo too many args, and the first arg is too confusing
+ *
* @param int|array $by_user The guid(s) of the user(s) who initiated the event.
* Use 0 for unowned entries. Anything else falsey means anyone.
* @param string $event The event you are searching on.
@@ -22,12 +24,12 @@
* @param int $timebefore Lower time limit
* @param int $timeafter Upper time limit
* @param int $object_id GUID of an object
- * @param str $ip_address The IP address.
+ * @param string $ip_address The IP address.
* @return mixed
*/
-function get_system_log($by_user = "", $event = "", $class = "", $type = "", $subtype = "",
-$limit = 10, $offset = 0, $count = false, $timebefore = 0, $timeafter = 0, $object_id = 0,
-$ip_address = false) {
+function get_system_log($by_user = "", $event = "", $class = "", $type = "", $subtype = "", $limit = 10,
+ $offset = 0, $count = false, $timebefore = 0, $timeafter = 0, $object_id = 0,
+ $ip_address = "") {
global $CONFIG;
@@ -156,9 +158,8 @@ function get_object_from_log_entry($entry_id) {
* This is called by the event system and should not be called directly.
*
* @param object $object The object you're talking about.
- * @param string $event String The event being logged
- *
- * @return mixed
+ * @param string $event The event being logged
+ * @return void
*/
function system_log($object, $event) {
global $CONFIG;
@@ -166,6 +167,13 @@ function system_log($object, $event) {
static $cache_size = 0;
if ($object instanceof Loggable) {
+
+ /* @var ElggEntity|ElggExtender $object */
+ if (datalist_get('version') < 2012012000) {
+ // this is a site that doesn't have the ip_address column yet
+ return;
+ }
+
// reset cache if it has grown too large
if (!is_array($log_cache) || $cache_size > 500) {
$log_cache = array();
@@ -179,7 +187,16 @@ function system_log($object, $event) {
$object_subtype = $object->getSubtype();
$event = sanitise_string($event);
$time = time();
- $ip_address = sanitise_string($_SERVER['REMOTE_ADDR']);
+
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $ip_address = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
+ } elseif (!empty($_SERVER['HTTP_X_REAL_IP'])) {
+ $ip_address = array_pop(explode(',', $_SERVER['HTTP_X_REAL_IP']));
+ } else {
+ $ip_address = $_SERVER['REMOTE_ADDR'];
+ }
+ $ip_address = sanitise_string($ip_address);
+
$performed_by = elgg_get_logged_in_user_guid();
if (isset($object->access_id)) {
@@ -213,8 +230,6 @@ function system_log($object, $event) {
$log_cache[$time][$object_id][$event] = true;
$cache_size += 1;
}
-
- return true;
}
}
diff --git a/engine/lib/tags.php b/engine/lib/tags.php
index a0887d0f3..586a9b9e4 100644
--- a/engine/lib/tags.php
+++ b/engine/lib/tags.php
@@ -48,7 +48,7 @@ function calculate_tag_size($min, $max, $number_of_tags, $buckets = 6) {
* @param array $tags The array of tags.
* @param int $buckets The number of buckets
*
- * @return An associated array of tags with a weighting, this can then be mapped to a display class.
+ * @return array An associated array of tags with a weighting, this can then be mapped to a display class.
* @access private
*/
function generate_tag_cloud(array $tags, $buckets = 6) {
@@ -114,8 +114,8 @@ function generate_tag_cloud(array $tags, $buckets = 6) {
*
* joins => array() Additional joins
*
- * @return false/array - if no tags or error, false
- * otherwise, array of objects with ->tag and ->total values
+ * @return object[]|false If no tags or error, false
+ * otherwise, array of objects with ->tag and ->total values
* @since 1.7.1
*/
function elgg_get_tags(array $options = array()) {
@@ -172,6 +172,7 @@ function elgg_get_tags(array $options = array()) {
// catch for tags that were spaces
$wheres[] = "msv.string != ''";
+ $sanitised_tags = array();
foreach ($options['tag_names'] as $tag) {
$sanitised_tags[] = '"' . sanitise_string($tag) . '"';
}
diff --git a/engine/lib/upgrade.php b/engine/lib/upgrade.php
index f0874a483..158ec9ec1 100644
--- a/engine/lib/upgrade.php
+++ b/engine/lib/upgrade.php
@@ -17,8 +17,9 @@
* @access private
*/
function upgrade_code($version, $quiet = FALSE) {
+ // do not remove - upgrade scripts depend on this
global $CONFIG;
-
+
$version = (int) $version;
$upgrade_path = elgg_get_config('path') . 'engine/lib/upgrades/';
$processed_upgrades = elgg_get_processed_upgrades();
@@ -244,7 +245,7 @@ function version_upgrade() {
// No version number? Oh snap...this is an upgrade from a clean installation < 1.7.
// Run all upgrades without error reporting and hope for the best.
- // See http://trac.elgg.org/elgg/ticket/1432 for more.
+ // See https://github.com/elgg/elgg/issues/1432 for more.
$quiet = !$dbversion;
// Note: Database upgrades are deprecated as of 1.8. Use code upgrades. See #1433
@@ -291,7 +292,6 @@ function elgg_upgrade_bootstrap_17_to_18() {
'2011010101.php',
);
- $upgrades_17 = array();
$upgrade_files = elgg_get_upgrade_files();
$processed_upgrades = array();
@@ -311,3 +311,55 @@ function elgg_upgrade_bootstrap_17_to_18() {
return elgg_set_processed_upgrades($processed_upgrades);
}
+
+/**
+ * Creates a table {prefix}upgrade_lock that is used as a mutex for upgrades.
+ *
+ * @see _elgg_upgrade_lock()
+ *
+ * @return bool
+ * @access private
+ */
+function _elgg_upgrade_lock() {
+ global $CONFIG;
+
+ if (!_elgg_upgrade_is_locked()) {
+ // lock it
+ insert_data("create table {$CONFIG->dbprefix}upgrade_lock (id INT)");
+ elgg_log('Locked for upgrade.', 'NOTICE');
+ return true;
+ }
+
+ elgg_log('Cannot lock for upgrade: already locked.', 'WARNING');
+ return false;
+}
+
+/**
+ * Unlocks upgrade.
+ *
+ * @see _elgg_upgrade_lock()
+ *
+ * @access private
+ */
+function _elgg_upgrade_unlock() {
+ global $CONFIG;
+ delete_data("drop table {$CONFIG->dbprefix}upgrade_lock");
+ elgg_log('Upgrade unlocked.', 'NOTICE');
+}
+
+/**
+ * Checks if upgrade is locked
+ *
+ * @return bool
+ * @access private
+ */
+function _elgg_upgrade_is_locked() {
+ global $CONFIG;
+
+ $is_locked = count(get_data("show tables like '{$CONFIG->dbprefix}upgrade_lock'"));
+
+ // @todo why?
+ _elgg_invalidate_query_cache();
+
+ return $is_locked;
+}
diff --git a/engine/lib/upgrades/2009102801.php b/engine/lib/upgrades/2009102801.php
index cab9a6835..3ad113fb2 100644
--- a/engine/lib/upgrades/2009102801.php
+++ b/engine/lib/upgrades/2009102801.php
@@ -203,14 +203,15 @@ function user_file_matrix($guid) {
return "$time_created/$user->guid/";
}
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE;
+global $ENTITY_CACHE, $CONFIG;
/**
* Upgrade file locations
*/
$users = mysql_query("SELECT guid, username
FROM {$CONFIG->dbprefix}users_entity WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$to = $CONFIG->dataroot . user_file_matrix($user->guid);
foreach (array('1_0', '1_1', '1_6') as $version) {
diff --git a/engine/lib/upgrades/2010033101.php b/engine/lib/upgrades/2010033101.php
index 0bffee001..4779295fd 100644
--- a/engine/lib/upgrades/2010033101.php
+++ b/engine/lib/upgrades/2010033101.php
@@ -1,7 +1,7 @@
<?php
/**
- * Conditional upgrade for UTF8 as described in http://trac.elgg.org/ticket/1928
+ * Conditional upgrade for UTF8 as described in https://github.com/elgg/elgg/issues/1928
*/
// get_version() returns the code version.
diff --git a/engine/lib/upgrades/2010052601.php b/engine/lib/upgrades/2010052601.php
index 5b477910f..a9cca6dc5 100644
--- a/engine/lib/upgrades/2010052601.php
+++ b/engine/lib/upgrades/2010052601.php
@@ -9,14 +9,14 @@ $params = array('type' => 'group',
$groups = elgg_get_entities($params);
if ($groups) {
foreach ($groups as $group) {
- $group->name = html_entity_decode($group->name, ENT_COMPAT, 'UTF-8');
- $group->description = html_entity_decode($group->description, ENT_COMPAT, 'UTF-8');
- $group->briefdescription = html_entity_decode($group->briefdescription, ENT_COMPAT, 'UTF-8');
- $group->website = html_entity_decode($group->website, ENT_COMPAT, 'UTF-8');
+ $group->name = _elgg_html_decode($group->name);
+ $group->description = _elgg_html_decode($group->description);
+ $group->briefdescription = _elgg_html_decode($group->briefdescription);
+ $group->website = _elgg_html_decode($group->website);
if ($group->interests) {
$tags = $group->interests;
- foreach ($tags as $index=>$tag) {
- $tags[$index] = html_entity_decode($tag, ENT_COMPAT, 'UTF-8');
+ foreach ($tags as $index => $tag) {
+ $tags[$index] = _elgg_html_decode($tag);
}
$group->interests = $tags;
}
diff --git a/engine/lib/upgrades/2010061501.php b/engine/lib/upgrades/2010061501.php
index 9ff7d3102..744c28fd5 100644
--- a/engine/lib/upgrades/2010061501.php
+++ b/engine/lib/upgrades/2010061501.php
@@ -45,7 +45,7 @@ if ($dbversion < 2009100701) {
}
}
- global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE;
+ global $ENTITY_CACHE;
/**
Upgrade file locations
@@ -60,7 +60,9 @@ if ($dbversion < 2009100701) {
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''", $link);
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
+
$to = $CONFIG->dataroot . user_file_matrix($user->guid);
foreach (array('1_0', '1_1', '1_6') as $version) {
diff --git a/engine/lib/upgrades/2010071001.php b/engine/lib/upgrades/2010071001.php
index 1b5d379d8..5594493a8 100644
--- a/engine/lib/upgrades/2010071001.php
+++ b/engine/lib/upgrades/2010071001.php
@@ -30,11 +30,12 @@ function user_file_matrix_2010071001($guid) {
$sizes = array('large', 'medium', 'small', 'tiny', 'master', 'topbar');
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE, $CONFIG;
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$user_directory = user_file_matrix_2010071001($user->guid);
if (!$user_directory) {
diff --git a/engine/lib/upgrades/2010071002.php b/engine/lib/upgrades/2010071002.php
index 30bd6538c..52aa15ef5 100644
--- a/engine/lib/upgrades/2010071002.php
+++ b/engine/lib/upgrades/2010071002.php
@@ -4,12 +4,13 @@
*/
// loop through all users checking collections and notifications
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE, $CONFIG;
global $NOTIFICATION_HANDLERS;
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$user = get_entity($user->guid);
foreach ($NOTIFICATION_HANDLERS as $method => $foo) {
diff --git a/engine/lib/upgrades/2010121602.php b/engine/lib/upgrades/2010121602.php
index 2d55c8214..5b0996b5e 100644
--- a/engine/lib/upgrades/2010121602.php
+++ b/engine/lib/upgrades/2010121602.php
@@ -4,7 +4,7 @@
*/
$query = "UPDATE {$CONFIG->dbprefix}river
- SET view='river/annotation/generic_comment/create', action_type='create'
+ SET view='river/annotation/generic_comment/create'
WHERE view='annotation/annotate' AND action_type='comment'";
update_data($query);
diff --git a/engine/lib/upgrades/2011010101.php b/engine/lib/upgrades/2011010101.php
index a1ee92622..f4411ee20 100644
--- a/engine/lib/upgrades/2011010101.php
+++ b/engine/lib/upgrades/2011010101.php
@@ -93,4 +93,6 @@ $processed_upgrades[] = '2011010101.php';
$processed_upgrades = array_unique($processed_upgrades);
elgg_set_processed_upgrades($processed_upgrades);
+_elgg_upgrade_unlock();
+
forward('upgrade.php');
diff --git a/engine/lib/upgrades/2011052801.php b/engine/lib/upgrades/2011052801.php
index 8084bc06c..b5a8e1018 100644
--- a/engine/lib/upgrades/2011052801.php
+++ b/engine/lib/upgrades/2011052801.php
@@ -2,7 +2,7 @@
/**
* Make sure all users have the relationship member_of_site
*/
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE;
$db_prefix = get_config('dbprefix');
$limit = 100;
@@ -17,7 +17,8 @@ $q = "SELECT e.* FROM {$db_prefix}entities e
$users = get_data($q);
while ($users) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
// do manually to not trigger any events because these aren't new users.
foreach ($users as $user) {
diff --git a/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php b/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
index 07732f261..780038c32 100644
--- a/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
+++ b/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
@@ -3,7 +3,7 @@
* Elgg 1.8.3 upgrade 2012041801
* multiple_user_tokens
*
- * Fixes http://trac.elgg.org/ticket/4291
+ * Fixes https://github.com/elgg/elgg/issues/4291
* Removes the unique index on users_apisessions for user_guid and site_guid
*/
diff --git a/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php b/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php
new file mode 100644
index 000000000..8eccf05e2
--- /dev/null
+++ b/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Elgg 1.8.14 upgrade 2013030600
+ * update_user_location
+ *
+ * Before Elgg 1.8, a location like "London, England" would be stored as an array.
+ * This script turns that back into a string.
+ */
+
+$ia = elgg_set_ignore_access(true);
+$options = array(
+ 'type' => 'user',
+ 'limit' => 0,
+);
+$batch = new ElggBatch('elgg_get_entities', $options);
+
+foreach ($batch as $entity) {
+ _elgg_invalidate_query_cache();
+
+ if (is_array($entity->location)) {
+ $entity->location = implode(', ', $entity->location);
+ }
+}
+elgg_set_ignore_access($ia);
diff --git a/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php b/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php
new file mode 100644
index 000000000..ee99bdbc8
--- /dev/null
+++ b/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013051700
+ * add_missing_group_index
+ *
+ * Some Elgg sites are missing the groups_entity full text index on name and
+ * description. This checks if it exists and adds it if it does not.
+ */
+
+$db_prefix = elgg_get_config('dbprefix');
+
+$full_text_index_exists = false;
+$results = get_data("SHOW INDEX FROM {$db_prefix}groups_entity");
+if ($results) {
+ foreach ($results as $result) {
+ if ($result->Index_type === 'FULLTEXT') {
+ $full_text_index_exists = true;
+ }
+ }
+}
+
+if ($full_text_index_exists == false) {
+ $query = "ALTER TABLE {$db_prefix}groups_entity
+ ADD FULLTEXT name_2 (name, description)";
+ if (!update_data($query)) {
+ elgg_log("Failed to add full text index to groups_entity table", 'ERROR');
+ }
+}
diff --git a/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php b/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php
new file mode 100644
index 000000000..d333a6cd2
--- /dev/null
+++ b/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013052900
+ * ipv6_in_syslog
+ *
+ * Upgrade the ip column in system_log to be able to store ipv6 addresses
+ */
+
+$db_prefix = elgg_get_config('dbprefix');
+$q = "ALTER TABLE {$db_prefix}system_log MODIFY COLUMN ip_address varchar(46) NOT NULL";
+
+update_data($q); \ No newline at end of file
diff --git a/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php b/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php
new file mode 100644
index 000000000..538d74dd6
--- /dev/null
+++ b/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013060900
+ * site_secret
+ *
+ * Description
+ */
+
+$strength = _elgg_get_site_secret_strength();
+
+if ($strength !== 'strong') {
+ // a new key is needed immediately
+ register_translations(elgg_get_root_path() . 'languages/');
+
+ elgg_add_admin_notice('weak_site_key', elgg_echo("upgrade:site_secret_warning:$strength"));
+}
diff --git a/engine/lib/upgrades/create_upgrade.php b/engine/lib/upgrades/create_upgrade.php
index 3652e18a2..b34f31b7e 100644
--- a/engine/lib/upgrades/create_upgrade.php
+++ b/engine/lib/upgrades/create_upgrade.php
@@ -93,7 +93,7 @@ if (!$h) {
die("Could not open file $upgrade_file");
}
-if (!fputs($h, $upgrade_code)) {
+if (!fwrite($h, $upgrade_code)) {
die("Could not write to $upgrade_file");
} else {
elgg_set_version_dot_php_version($upgrade_version);
@@ -128,8 +128,9 @@ function elgg_set_version_dot_php_version($version) {
rewind($h);
- fputs($h, $out);
+ fwrite($h, $out);
fclose($h);
+ return true;
}
/**
diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php
index e4069fb53..0e36dc46d 100644
--- a/engine/lib/user_settings.php
+++ b/engine/lib/user_settings.php
@@ -265,9 +265,9 @@ function elgg_set_user_default_access() {
* @access private
*/
function usersettings_pagesetup() {
- if (elgg_get_context() == "settings") {
- $user = elgg_get_page_owner_entity();
+ $user = elgg_get_page_owner_entity();
+ if ($user && elgg_get_context() == "settings") {
$params = array(
'name' => '1_account',
'text' => elgg_echo('usersettings:user:opt:linktext'),
@@ -308,7 +308,7 @@ function usersettings_page_handler($page) {
$user = get_user_by_username($page[1]);
elgg_set_page_owner_guid($user->guid);
} else {
- $user = elgg_get_logged_in_user_guid();
+ $user = elgg_get_logged_in_user_entity();
elgg_set_page_owner_guid($user->guid);
}
@@ -332,6 +332,7 @@ function usersettings_page_handler($page) {
require $path;
return true;
}
+ return false;
}
/**
diff --git a/engine/lib/users.php b/engine/lib/users.php
index 6a881777e..a8fb9121c 100644
--- a/engine/lib/users.php
+++ b/engine/lib/users.php
@@ -44,6 +44,7 @@ function get_user_entity_as_row($guid) {
* @param string $code A code
*
* @return bool
+ * @access private
*/
function create_user_entity($guid, $name, $username, $password, $salt, $email, $language, $code) {
global $CONFIG;
@@ -136,7 +137,6 @@ function ban_user($user_guid, $reason = "") {
global $CONFIG;
$user_guid = (int)$user_guid;
- $reason = sanitise_string($reason);
$user = get_entity($user_guid);
@@ -237,7 +237,7 @@ function make_user_admin($user_guid) {
}
$r = update_data("UPDATE {$CONFIG->dbprefix}users_entity set admin='yes' where guid=$user_guid");
- invalidate_cache_for_entity($user_guid);
+ _elgg_invalidate_cache_for_entity($user_guid);
return $r;
}
@@ -273,7 +273,7 @@ function remove_user_admin($user_guid) {
}
$r = update_data("UPDATE {$CONFIG->dbprefix}users_entity set admin='no' where guid=$user_guid");
- invalidate_cache_for_entity($user_guid);
+ _elgg_invalidate_cache_for_entity($user_guid);
return $r;
}
@@ -290,7 +290,7 @@ function remove_user_admin($user_guid) {
* @param int $limit Number of results to return
* @param int $offset Any indexing offset
*
- * @return false|array On success, an array of ElggSites
+ * @return ElggSite[]|false On success, an array of ElggSites
*/
function get_user_sites($user_guid, $limit = 10, $offset = 0) {
$user_guid = (int)$user_guid;
@@ -302,7 +302,7 @@ function get_user_sites($user_guid, $limit = 10, $offset = 0) {
'relationship' => 'member_of_site',
'relationship_guid' => $user_guid,
'inverse_relationship' => FALSE,
- 'types' => 'site',
+ 'type' => 'site',
'limit' => $limit,
'offset' => $offset,
));
@@ -343,8 +343,6 @@ function user_add_friend($user_guid, $friend_guid) {
* @return bool Depending on success
*/
function user_remove_friend($user_guid, $friend_guid) {
- global $CONFIG;
-
$user_guid = (int) $user_guid;
$friend_guid = (int) $friend_guid;
@@ -379,7 +377,7 @@ function user_is_friend($user_guid, $friend_guid) {
* @param int $limit Number of results to return (default 10)
* @param int $offset Indexing offset, if any
*
- * @return false|array Either an array of ElggUsers or false, depending on success
+ * @return ElggUser[]|false Either an array of ElggUsers or false, depending on success
*/
function get_user_friends($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0) {
@@ -387,8 +385,8 @@ $offset = 0) {
return elgg_get_entities_from_relationship(array(
'relationship' => 'friend',
'relationship_guid' => $user_guid,
- 'types' => 'user',
- 'subtypes' => $subtype,
+ 'type' => 'user',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -402,7 +400,7 @@ $offset = 0) {
* @param int $limit Number of results to return (default 10)
* @param int $offset Indexing offset, if any
*
- * @return false|array Either an array of ElggUsers or false, depending on success
+ * @return ElggUser[]|false Either an array of ElggUsers or false, depending on success
*/
function get_user_friends_of($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0) {
@@ -411,8 +409,8 @@ $offset = 0) {
'relationship' => 'friend',
'relationship_guid' => $user_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
- 'subtypes' => $subtype,
+ 'type' => 'user',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -428,7 +426,7 @@ $offset = 0) {
* @param int $timelower The earliest time the entity can have been created. Default: all
* @param int $timeupper The latest time the entity can have been created. Default: all
*
- * @return false|array An array of ElggObjects or false, depending on success
+ * @return ElggObject[]|false An array of ElggObjects or false, depending on success
*/
function get_user_friends_objects($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0, $timelower = 0, $timeupper = 0) {
@@ -555,13 +553,18 @@ function get_user($guid) {
function get_user_by_username($username) {
global $CONFIG, $USERNAME_TO_GUID_MAP_CACHE;
+ // Fixes #6052. Username is frequently sniffed from the path info, which,
+ // unlike $_GET, is not URL decoded. If the username was not URL encoded,
+ // this is harmless.
+ $username = rawurldecode($username);
+
$username = sanitise_string($username);
$access = get_access_sql_suffix('e');
// Caching
if ((isset($USERNAME_TO_GUID_MAP_CACHE[$username]))
- && (retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]))) {
- return retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]);
+ && (_elgg_retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]))) {
+ return _elgg_retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]);
}
$query = "SELECT e.* from {$CONFIG->dbprefix}users_entity u
@@ -594,9 +597,9 @@ function get_user_by_code($code) {
// Caching
if ((isset($CODE_TO_GUID_MAP_CACHE[$code]))
- && (retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]))) {
+ && (_elgg_retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]))) {
- return retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]);
+ return _elgg_retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]);
}
$query = "SELECT e.* from {$CONFIG->dbprefix}users_entity u
@@ -675,25 +678,22 @@ function find_active_users($seconds = 600, $limit = 10, $offset = 0, $count = fa
* @return bool
*/
function send_new_password_request($user_guid) {
- global $CONFIG;
-
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
- if ($user) {
+ if ($user instanceof ElggUser) {
// generate code
$code = generate_random_cleartext_password();
$user->setPrivateSetting('passwd_conf_code', $code);
-
// generate link
- $link = $CONFIG->site->url . "resetpassword?u=$user_guid&c=$code";
+ $link = elgg_get_site_url() . "resetpassword?u=$user_guid&c=$code";
// generate email
$email = elgg_echo('email:resetreq:body', array($user->name, $_SERVER['REMOTE_ADDR'], $link));
- return notify_user($user->guid, $CONFIG->site->guid,
- elgg_echo('email:resetreq:subject'), $email, NULL, 'email');
+ return notify_user($user->guid, elgg_get_site_entity()->guid,
+ elgg_echo('email:resetreq:subject'), $email, array(), 'email');
}
return false;
@@ -710,19 +710,18 @@ function send_new_password_request($user_guid) {
* @return bool
*/
function force_user_password_reset($user_guid, $password) {
- global $CONFIG;
-
$user = get_entity($user_guid);
+ if ($user instanceof ElggUser) {
+ $ia = elgg_set_ignore_access();
- if ($user) {
- $salt = generate_random_cleartext_password(); // Reset the salt
- $user->salt = $salt;
+ $user->salt = generate_random_cleartext_password();
+ $hash = generate_user_password($user, $password);
+ $user->password = $hash;
+ $result = (bool)$user->save();
- $hash = generate_user_password($user, $password);
+ elgg_set_ignore_access($ia);
- $query = "UPDATE {$CONFIG->dbprefix}users_entity
- set password='$hash', salt='$salt' where guid=$user_guid";
- return update_data($query);
+ return $result;
}
return false;
@@ -742,7 +741,7 @@ function execute_new_password_request($user_guid, $conf_code) {
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
- if ($user) {
+ if ($user instanceof ElggUser) {
$saved_code = $user->getPrivateSetting('passwd_conf_code');
if ($saved_code && $saved_code == $conf_code) {
@@ -756,7 +755,7 @@ function execute_new_password_request($user_guid, $conf_code) {
$email = elgg_echo('email:resetpassword:body', array($user->name, $password));
return notify_user($user->guid, $CONFIG->site->guid,
- elgg_echo('email:resetpassword:subject'), $email, NULL, 'email');
+ elgg_echo('email:resetpassword:subject'), $email, array(), 'email');
}
}
}
@@ -810,6 +809,12 @@ function validate_username($username) {
$msg = elgg_echo('registration:usernametooshort', array($CONFIG->minusername));
throw new RegistrationException($msg);
}
+
+ // username in the database has a limit of 128 characters
+ if (strlen($username) > 128) {
+ $msg = elgg_echo('registration:usernametoolong', array(128));
+ throw new RegistrationException($msg);
+ }
// Blacklist for bad characters (partially nicked from mediawiki)
$blacklist = '/[' .
@@ -835,7 +840,7 @@ function validate_username($username) {
for ($n = 0; $n < strlen($blacklist2); $n++) {
if (strpos($username, $blacklist2[$n]) !== false) {
$msg = elgg_echo('registration:invalidchars', array($blacklist2[$n], $blacklist2));
- $msg = htmlentities($msg, ENT_COMPAT, 'UTF-8');
+ $msg = htmlspecialchars($msg, ENT_QUOTES, 'UTF-8');
throw new RegistrationException($msg);
}
}
@@ -902,13 +907,11 @@ function validate_email_address($address) {
* @param string $invitecode An invite code from a friend
*
* @return int|false The new user's GUID; false on failure
+ * @throws RegistrationException
*/
function register_user($username, $password, $name, $email,
$allow_multiple_emails = false, $friend_guid = 0, $invitecode = '') {
- // Load the configuration
- global $CONFIG;
-
// no need to trim password.
$username = trim($username);
$name = trim(strip_tags($name));
@@ -1025,7 +1028,7 @@ function elgg_get_user_validation_status($user_guid) {
'metadata_name' => 'validated'
));
if ($md == false) {
- return;
+ return null;
}
if ($md[0]->value) {
@@ -1061,10 +1064,10 @@ function collections_submenu_items() {
* @return bool
* @access private
*/
-function friends_page_handler($page_elements, $handler) {
+function friends_page_handler($segments, $handler) {
elgg_set_context('friends');
- if (isset($page_elements[0]) && $user = get_user_by_username($page_elements[0])) {
+ if (isset($segments[0]) && $user = get_user_by_username($segments[0])) {
elgg_set_page_owner_guid($user->getGUID());
}
if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) {
@@ -1093,6 +1096,7 @@ function friends_page_handler($page_elements, $handler) {
* @access private
*/
function collections_page_handler($page_elements) {
+ gatekeeper();
elgg_set_context('friends');
$base = elgg_get_config('path');
if (isset($page_elements[0])) {
@@ -1191,13 +1195,11 @@ function set_last_login($user_guid) {
* @param string $object_type user
* @param ElggUser $object User object
*
- * @return bool
+ * @return void
* @access private
*/
function user_create_hook_add_site_relationship($event, $object_type, $object) {
- global $CONFIG;
-
- add_entity_relationship($object->getGUID(), 'member_of_site', $CONFIG->site->getGUID());
+ add_entity_relationship($object->getGUID(), 'member_of_site', elgg_get_site_entity()->guid);
}
/**
@@ -1227,6 +1229,7 @@ function user_avatar_hook($hook, $entity_type, $returnvalue, $params) {
*/
function elgg_user_hover_menu($hook, $type, $return, $params) {
$user = $params['entity'];
+ /* @var ElggUser $user */
if (elgg_is_logged_in()) {
if (elgg_get_logged_in_user_guid() != $user->guid) {
@@ -1303,7 +1306,12 @@ function elgg_user_hover_menu($hook, $type, $return, $params) {
/**
* Setup the menu shown with an entity
*
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
* @return array
+ *
* @access private
*/
function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
@@ -1315,6 +1323,7 @@ function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
if (!elgg_instanceof($entity, 'user')) {
return $return;
}
+ /* @var ElggUser $entity */
if ($entity->isBanned()) {
$banned = elgg_echo('banned');
@@ -1328,9 +1337,10 @@ function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
} else {
$return = array();
if (isset($entity->location)) {
+ $location = htmlspecialchars($entity->location, ENT_QUOTES, 'UTF-8', false);
$options = array(
'name' => 'location',
- 'text' => "<span>$entity->location</span>",
+ 'text' => "<span>$location</span>",
'href' => false,
'priority' => 150,
);
@@ -1551,12 +1561,12 @@ function users_init() {
elgg_register_plugin_hook_handler('register', 'menu:user_hover', 'elgg_user_hover_menu');
elgg_register_action('register', '', 'public');
- elgg_register_action('useradd', '', 'public');
+ elgg_register_action('useradd', '', 'admin');
elgg_register_action('friends/add');
elgg_register_action('friends/remove');
elgg_register_action('avatar/upload');
elgg_register_action('avatar/crop');
- elgg_register_action('avatar/revert');
+ elgg_register_action('avatar/remove');
elgg_register_action('profile/edit');
elgg_register_action('friends/collections/add');
@@ -1581,7 +1591,7 @@ function users_init() {
/**
* Runs unit tests for ElggObject
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/views.php b/engine/lib/views.php
index ca0ce7196..1142461fe 100644
--- a/engine/lib/views.php
+++ b/engine/lib/views.php
@@ -101,12 +101,15 @@ function elgg_get_viewtype() {
return $CURRENT_SYSTEM_VIEWTYPE;
}
- $viewtype = get_input('view', NULL);
- if ($viewtype) {
- return $viewtype;
+ $viewtype = get_input('view', '', false);
+ if (is_string($viewtype) && $viewtype !== '') {
+ // only word characters allowed.
+ if (!preg_match('/\W/', $viewtype)) {
+ return $viewtype;
+ }
}
- if (isset($CONFIG->view) && !empty($CONFIG->view)) {
+ if (!empty($CONFIG->view)) {
return $CONFIG->view;
}
@@ -215,7 +218,7 @@ function elgg_register_ajax_view($view) {
/**
* Unregister a view for ajax calls
- *
+ *
* @param string $view The view name
* @return void
* @since 1.8.3
@@ -255,8 +258,6 @@ function elgg_get_view_location($view, $viewtype = '') {
} else {
return $CONFIG->views->locations[$viewtype][$view];
}
-
- return false;
}
/**
@@ -300,7 +301,7 @@ function elgg_set_view_location($view, $location, $viewtype = '') {
/**
* Returns whether the specified view exists
*
- * @note If $recurse is strue, also checks if a view exists only as an extension.
+ * @note If $recurse is true, also checks if a view exists only as an extension.
*
* @param string $view The view name
* @param string $viewtype If set, forces the viewtype
@@ -326,7 +327,7 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
$location = $CONFIG->views->locations[$viewtype][$view];
}
- if (file_exists($location . "{$viewtype}/{$view}.php")) {
+ if (file_exists("{$location}{$viewtype}/{$view}.php")) {
return true;
}
@@ -368,14 +369,14 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
* view, $view_name plugin hook.
*
* @warning Any variables in $_SESSION will override passed vars
- * upon name collision. See {@trac #2124}.
+ * upon name collision. See https://github.com/Elgg/Elgg/issues/2124
*
* @param string $view The name and location of the view to use
* @param array $vars Variables to pass to the view.
* @param boolean $bypass If set to true, elgg_view will bypass any specified
* alternative template handler; by default, it will
* hand off to this if requested (see set_template_handler)
- * @param boolean $debug If set to true, the viewer will complain if it can't find a view
+ * @param boolean $ignored This argument is ignored and will be removed eventually
* @param string $viewtype If set, forces the viewtype for the elgg_view call to be
* this value (default: standard detection)
*
@@ -383,30 +384,17 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
* @see set_template_handler()
* @example views/elgg_view.php
* @link http://docs.elgg.org/View
- * @todo $debug isn't used.
- * @todo $usercache is redundant.
*/
-function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $viewtype = '') {
+function elgg_view($view, $vars = array(), $bypass = false, $ignored = false, $viewtype = '') {
global $CONFIG;
- static $usercache;
-
- $view = (string)$view;
+ if (!is_string($view) || !is_string($viewtype)) {
+ elgg_log("View and Viewtype in views must be a strings: $view", 'NOTICE');
+ return '';
+ }
// basic checking for bad paths
if (strpos($view, '..') !== false) {
- return false;
- }
-
- $view_orig = $view;
-
- // Trigger the pagesetup event
- if (!isset($CONFIG->pagesetupdone)) {
- $CONFIG->pagesetupdone = true;
- elgg_trigger_event('pagesetup', 'system');
- }
-
- if (!is_array($usercache)) {
- $usercache = array();
+ return '';
}
if (!is_array($vars)) {
@@ -414,8 +402,20 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
$vars = array();
}
- if (empty($vars)) {
- $vars = array();
+ // Get the current viewtype
+ if ($viewtype === '') {
+ $viewtype = elgg_get_viewtype();
+ } elseif (preg_match('/\W/', $viewtype)) {
+ // Viewtypes can only be alphanumeric
+ return '';
+ }
+
+ $view_orig = $view;
+
+ // Trigger the pagesetup event
+ if (!isset($CONFIG->pagesetupdone) && $CONFIG->boot_complete) {
+ $CONFIG->pagesetupdone = true;
+ elgg_trigger_event('pagesetup', 'system');
}
// @warning - plugin authors: do not expect user, config, and url to be
@@ -472,16 +472,6 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
}
}
- // Get the current viewtype
- if (empty($viewtype)) {
- $viewtype = elgg_get_viewtype();
- }
-
- // Viewtypes can only be alphanumeric
- if (preg_match('[\W]', $viewtype)) {
- return '';
- }
-
// Set up any extensions to the requested view
if (isset($CONFIG->views->extensions[$view])) {
$viewlist = $CONFIG->views->extensions[$view];
@@ -493,19 +483,21 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
ob_start();
foreach ($viewlist as $priority => $view) {
+
$view_location = elgg_get_view_location($view, $viewtype);
$view_file = "$view_location$viewtype/$view.php";
- $default_location = elgg_get_view_location($view, 'default');
- $default_view_file = "{$default_location}default/$view.php";
-
// try to include view
if (!file_exists($view_file) || !include($view_file)) {
// requested view does not exist
$error = "$viewtype/$view view does not exist.";
// attempt to load default view
- if ($viewtype != 'default' && elgg_does_viewtype_fallback($viewtype)) {
+ if ($viewtype !== 'default' && elgg_does_viewtype_fallback($viewtype)) {
+
+ $default_location = elgg_get_view_location($view, 'default');
+ $default_view_file = "{$default_location}default/$view.php";
+
if (file_exists($default_view_file) && include($default_view_file)) {
// default view found
$error .= " Using default/$view instead.";
@@ -530,7 +522,7 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
// backward compatibility with less granular hook will be gone in 2.0
$content_tmp = elgg_trigger_plugin_hook('display', 'view', $params, $content);
- if ($content_tmp != $content) {
+ if ($content_tmp !== $content) {
$content = $content_tmp;
elgg_deprecated_notice('The display:view plugin hook is deprecated by view:view_name', 1.8);
}
@@ -556,33 +548,32 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
* @param string $view_extension This view is added to $view
* @param int $priority The priority, from 0 to 1000,
* to add at (lowest numbers displayed first)
- * @param string $viewtype Not used
*
* @return void
* @since 1.7.0
* @link http://docs.elgg.org/Views/Extend
* @example views/extend.php
*/
-function elgg_extend_view($view, $view_extension, $priority = 501, $viewtype = '') {
+function elgg_extend_view($view, $view_extension, $priority = 501) {
global $CONFIG;
if (!isset($CONFIG->views)) {
- $CONFIG->views = new stdClass;
- }
-
- if (!isset($CONFIG->views->extensions)) {
- $CONFIG->views->extensions = array();
- }
-
- if (!isset($CONFIG->views->extensions[$view])) {
- $CONFIG->views->extensions[$view][500] = "{$view}";
+ $CONFIG->views = (object) array(
+ 'extensions' => array(),
+ );
+ $CONFIG->views->extensions[$view][500] = (string)$view;
+ } else {
+ if (!isset($CONFIG->views->extensions[$view])) {
+ $CONFIG->views->extensions[$view][500] = (string)$view;
+ }
}
+ // raise priority until it doesn't match one already registered
while (isset($CONFIG->views->extensions[$view][$priority])) {
$priority++;
}
- $CONFIG->views->extensions[$view][$priority] = "{$view_extension}";
+ $CONFIG->views->extensions[$view][$priority] = (string)$view_extension;
ksort($CONFIG->views->extensions[$view]);
}
@@ -598,14 +589,6 @@ function elgg_extend_view($view, $view_extension, $priority = 501, $viewtype = '
function elgg_unextend_view($view, $view_extension) {
global $CONFIG;
- if (!isset($CONFIG->views)) {
- return FALSE;
- }
-
- if (!isset($CONFIG->views->extensions)) {
- return FALSE;
- }
-
if (!isset($CONFIG->views->extensions[$view])) {
return FALSE;
}
@@ -812,7 +795,7 @@ function elgg_view_menu($menu_name, array $vars = array()) {
* - bool 'full_view' Whether to show a full or condensed view.
*
* @tip This function can automatically appends annotations to entities if in full
- * view and a handler is registered for the entity:annotate. See {@trac 964} and
+ * view and a handler is registered for the entity:annotate. See https://github.com/Elgg/Elgg/issues/964 and
* {@link elgg_view_entity_annotations()}.
*
* @param ElggEntity $entity The entity to display
@@ -1009,6 +992,11 @@ function elgg_view_annotation(ElggAnnotation $annotation, array $vars = array(),
function elgg_view_entity_list($entities, $vars = array(), $offset = 0, $limit = 10, $full_view = true,
$list_type_toggle = true, $pagination = true) {
+ if (!$vars["limit"] && !$vars["offset"]) {
+ // no need for pagination if listing is unlimited
+ $vars["pagination"] = false;
+ }
+
if (!is_int($offset)) {
$offset = (int)get_input('offset', 0);
}
@@ -1081,8 +1069,13 @@ function elgg_view_annotation_list($annotations, array $vars = array()) {
'full_view' => true,
'offset_key' => 'annoff',
);
-
+
$vars = array_merge($defaults, $vars);
+
+ if (!$vars["limit"] && !$vars["offset"]) {
+ // no need for pagination if listing is unlimited
+ $vars["pagination"] = false;
+ }
return elgg_view('page/components/list', $vars);
}
@@ -1102,10 +1095,6 @@ function elgg_view_annotation_list($annotations, array $vars = array()) {
* @todo Change the hook name.
*/
function elgg_view_entity_annotations(ElggEntity $entity, $full_view = true) {
- if (!$entity) {
- return false;
- }
-
if (!($entity instanceof ElggEntity)) {
return false;
}
@@ -1128,7 +1117,7 @@ function elgg_view_entity_annotations(ElggEntity $entity, $full_view = true) {
* This is a shortcut for {@elgg_view page/elements/title}.
*
* @param string $title The page title
- * @param string $vars View variables (was submenu be displayed? (deprecated))
+ * @param array $vars View variables (was submenu be displayed? (deprecated))
*
* @return string The HTML (etc)
*/
@@ -1200,7 +1189,7 @@ function elgg_view_comments($entity, $add_comment = true, array $vars = array())
*
* @param string $image The icon and other information
* @param string $body Description content
- * @param string $vars Additional parameters for the view
+ * @param array $vars Additional parameters for the view
*
* @return string
* @since 1.8.0
@@ -1221,13 +1210,12 @@ function elgg_view_image_block($image, $body, $vars = array()) {
* @param string $type The type of module (main, info, popup, aside, etc.)
* @param string $title A title to put in the header
* @param string $body Content of the module
- * @param string $vars Additional parameters for the module
+ * @param array $vars Additional parameters for the module
*
* @return string
* @since 1.8.0
*/
-function elgg_view_module($type, $title, $body, $vars = array()) {
-
+function elgg_view_module($type, $title, $body, array $vars = array()) {
$vars['class'] = elgg_extract('class', $vars, '') . " elgg-module-$type";
$vars['title'] = $title;
$vars['body'] = $body;
@@ -1240,11 +1228,15 @@ function elgg_view_module($type, $title, $body, $vars = array()) {
* @param ElggRiverItem $item A river item object
* @param array $vars An array of variables for the view
*
- * @return string|false Depending on success
+ * @return string returns empty string if could not be rendered
*/
function elgg_view_river_item($item, array $vars = array()) {
+ if (!($item instanceof ElggRiverItem)) {
+ return '';
+ }
// checking default viewtype since some viewtypes do not have unique views per item (rss)
- if (!$item || !$item->getView() || !elgg_view_exists($item->getView(), 'default')) {
+ $view = $item->getView();
+ if (!$view || !elgg_view_exists($view, 'default')) {
return '';
}
@@ -1255,6 +1247,17 @@ function elgg_view_river_item($item, array $vars = array()) {
return '';
}
+ // @todo this needs to be cleaned up
+ // Don't hide objects in closed groups that a user can see.
+ // see https://github.com/elgg/elgg/issues/4789
+ // else {
+ // // hide based on object's container
+ // $visibility = ElggGroupItemVisibility::factory($object->container_guid);
+ // if ($visibility->shouldHideItems) {
+ // return '';
+ // }
+ // }
+
$vars['item'] = $item;
return elgg_view('river/item', $vars);
@@ -1317,7 +1320,7 @@ function elgg_view_form($action, $form_vars = array(), $body_vars = array()) {
/**
* View an item in a list
*
- * @param object $item ElggEntity or ElggAnnotation
+ * @param ElggEntity|ElggAnnotation $item
* @param array $vars Additional parameters for the rendering
*
* @return string
@@ -1336,22 +1339,22 @@ function elgg_view_list_item($item, array $vars = array()) {
return elgg_view_river_item($item, $vars);
}
- return false;
+ return '';
}
/**
* View one of the elgg sprite icons
- *
+ *
* Shorthand for <span class="elgg-icon elgg-icon-$name"></span>
- *
+ *
* @param string $name The specific icon to display
* @param string $class Additional class: float, float-alt, or custom class
- *
+ *
* @return string The html for displaying an icon
*/
function elgg_view_icon($name, $class = '') {
// @todo deprecate boolean in Elgg 1.9
- if (is_bool($class) && $class === true) {
+ if ($class === true) {
$class = 'float';
}
return "<span class=\"elgg-icon elgg-icon-$name $class\"></span>";
@@ -1400,7 +1403,8 @@ function elgg_view_access_collections($owner_guid) {
*/
function set_template_handler($function_name) {
global $CONFIG;
- if (!empty($function_name) && is_callable($function_name)) {
+
+ if (is_callable($function_name)) {
$CONFIG->template_handler = $function_name;
return true;
}
@@ -1459,17 +1463,13 @@ function elgg_get_views($dir, $base) {
*/
function elgg_view_tree($view_root, $viewtype = "") {
global $CONFIG;
- static $treecache;
+ static $treecache = array();
// Get viewtype
if (!$viewtype) {
$viewtype = elgg_get_viewtype();
}
- // Has the treecache been initialised?
- if (!isset($treecache)) {
- $treecache = array();
- }
// A little light internal caching
if (!empty($treecache[$view_root])) {
return $treecache[$view_root];
@@ -1513,17 +1513,13 @@ function elgg_view_tree($view_root, $viewtype = "") {
* @param string $base_location_path The base views directory to use with elgg_set_view_location()
* @param string $viewtype The type of view we're looking at (default, rss, etc)
*
- * @return void
+ * @return bool returns false if folder can't be read
* @since 1.7.0
* @see elgg_set_view_location()
* @todo This seems overly complicated.
* @access private
*/
function autoregister_views($view_base, $folder, $base_location_path, $viewtype) {
- if (!isset($i)) {
- $i = 0;
- }
-
if ($handle = opendir($folder)) {
while ($view = readdir($handle)) {
if (!in_array($view, array('.', '..', '.svn', 'CVS')) && !is_dir($folder . "/" . $view)) {
@@ -1564,7 +1560,7 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)
function elgg_views_add_rss_link() {
global $autofeed;
if (isset($autofeed) && $autofeed == true) {
- $url = full_url();
+ $url = current_page_url();
if (substr_count($url, '?')) {
$url .= "&view=rss";
} else {
@@ -1605,16 +1601,15 @@ function elgg_views_handle_deprecated_views() {
function elgg_views_boot() {
global $CONFIG;
- elgg_register_simplecache_view('css/elgg');
elgg_register_simplecache_view('css/ie');
elgg_register_simplecache_view('css/ie6');
elgg_register_simplecache_view('css/ie7');
- elgg_register_simplecache_view('js/elgg');
elgg_register_js('jquery', '/vendors/jquery/jquery-1.6.4.min.js', 'head');
elgg_register_js('jquery-ui', '/vendors/jquery/jquery-ui-1.8.16.min.js', 'head');
elgg_register_js('jquery.form', '/vendors/jquery/jquery.form.js');
-
+
+ elgg_register_simplecache_view('js/elgg');
$elgg_js_url = elgg_get_simplecache_url('js', 'elgg');
elgg_register_js('elgg', $elgg_js_url, 'head');
@@ -1623,14 +1618,17 @@ function elgg_views_boot() {
elgg_load_js('elgg');
elgg_register_simplecache_view('js/lightbox');
- elgg_register_simplecache_view('css/lightbox');
$lightbox_js_url = elgg_get_simplecache_url('js', 'lightbox');
elgg_register_js('lightbox', $lightbox_js_url);
+
+ elgg_register_simplecache_view('css/lightbox');
$lightbox_css_url = elgg_get_simplecache_url('css', 'lightbox');
elgg_register_css('lightbox', $lightbox_css_url);
+ elgg_register_simplecache_view('css/elgg');
$elgg_css_url = elgg_get_simplecache_url('css', 'elgg');
elgg_register_css('elgg', $elgg_css_url);
+
elgg_load_css('elgg');
elgg_register_ajax_view('js/languages');
@@ -1644,13 +1642,13 @@ function elgg_views_boot() {
$views = scandir($view_path);
foreach ($views as $view) {
- if ('.' !== substr($view, 0, 1) && is_dir($view_path . $view)) {
+ if ($view[0] !== '.' && is_dir($view_path . $view)) {
elgg_register_viewtype($view);
}
}
// set default icon sizes - can be overridden in settings.php or with plugin
- if (!elgg_get_config('icon_sizes')) {
+ if (!isset($CONFIG->icon_sizes)) {
$icon_sizes = array(
'topbar' => array('w' => 16, 'h' => 16, 'square' => TRUE, 'upscale' => TRUE),
'tiny' => array('w' => 25, 'h' => 25, 'square' => TRUE, 'upscale' => TRUE),
diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php
index da3ed76a9..51cad6f39 100644
--- a/engine/lib/web_services.php
+++ b/engine/lib/web_services.php
@@ -178,7 +178,7 @@ function authenticate_method($method) {
// check if user authentication is required
if ($API_METHODS[$method]["require_user_auth"] == true) {
if ($user_auth_result == false) {
- throw new APIException($user_pam->getFailureMessage());
+ throw new APIException($user_pam->getFailureMessage(), ErrorResult::$RESULT_FAIL_AUTHTOKEN);
}
}
@@ -232,6 +232,7 @@ function execute_method($method) {
$function = $API_METHODS[$method]["function"];
$serialised_parameters = trim($serialised_parameters, ", ");
+ // @todo document why we cannot use call_user_func_array here
$result = eval("return $function($serialised_parameters);");
// Sanity check result
@@ -1165,6 +1166,17 @@ function list_all_apis() {
* @access private
*/
function auth_gettoken($username, $password) {
+ // check if username is an email address
+ if (is_email_address($username)) {
+ $users = get_user_by_email($username);
+
+ // check if we have a unique user
+ if (is_array($users) && (count($users) == 1)) {
+ $username = $users[0]->username;
+ }
+ }
+
+ // validate username and password
if (true === elgg_authenticate($username, $password)) {
$token = create_user_token($username);
if ($token) {
@@ -1194,6 +1206,8 @@ $ERRORS = array();
*
* @return void
* @access private
+ *
+ * @throws Exception
*/
function _php_api_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
global $ERRORS;
@@ -1264,25 +1278,23 @@ function service_handler($handler, $request) {
$request = explode('/', $request);
// after the handler, the first identifier is response format
- // ex) http://example.org/services/api/rest/xml/?method=test
- $reponse_format = array_shift($request);
+ // ex) http://example.org/services/api/rest/json/?method=test
+ $response_format = array_shift($request);
// Which view - xml, json, ...
- if ($reponse_format) {
- elgg_set_viewtype($reponse_format);
+ if ($response_format && elgg_is_valid_view_type($response_format)) {
+ elgg_set_viewtype($response_format);
} else {
- // default to xml
- elgg_set_viewtype("xml");
+ // default to json
+ elgg_set_viewtype("json");
}
if (!isset($CONFIG->servicehandler) || empty($handler)) {
// no handlers set or bad url
header("HTTP/1.0 404 Not Found");
exit;
- } else if (isset($CONFIG->servicehandler[$handler])
- && is_callable($CONFIG->servicehandler[$handler])) {
-
+ } else if (isset($CONFIG->servicehandler[$handler]) && is_callable($CONFIG->servicehandler[$handler])) {
$function = $CONFIG->servicehandler[$handler];
- $function($request, $handler);
+ call_user_func($function, $request, $handler);
} else {
// no handler for this web service
header("HTTP/1.0 404 Not Found");
@@ -1301,10 +1313,11 @@ function service_handler($handler, $request) {
*/
function register_service_handler($handler, $function) {
global $CONFIG;
+
if (!isset($CONFIG->servicehandler)) {
$CONFIG->servicehandler = array();
}
- if (is_callable($function)) {
+ if (is_callable($function, true)) {
$CONFIG->servicehandler[$handler] = $function;
return true;
}
@@ -1319,11 +1332,13 @@ function register_service_handler($handler, $function) {
*
* @param string $handler web services type
*
- * @return 1.7.0
+ * @return void
+ * @since 1.7.0
*/
function unregister_service_handler($handler) {
global $CONFIG;
- if (isset($CONFIG->servicehandler) && isset($CONFIG->servicehandler[$handler])) {
+
+ if (isset($CONFIG->servicehandler, $CONFIG->servicehandler[$handler])) {
unset($CONFIG->servicehandler[$handler]);
}
}
@@ -1333,6 +1348,8 @@ function unregister_service_handler($handler) {
*
* @return void
* @access private
+ *
+ * @throws SecurityException|APIException
*/
function rest_handler() {
global $CONFIG;
@@ -1387,7 +1404,7 @@ function rest_handler() {
/**
* Unit tests for API
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
@@ -1397,6 +1414,7 @@ function rest_handler() {
*/
function api_unit_test($hook, $type, $value, $params) {
global $CONFIG;
+
$value[] = $CONFIG->path . 'engine/tests/services/api.php';
return $value;
}
@@ -1418,15 +1436,18 @@ function api_init() {
elgg_echo("system.api.list"), "GET", false, false);
// The authentication token api
- expose_function("auth.gettoken",
- "auth_gettoken", array(
- 'username' => array ('type' => 'string'),
- 'password' => array ('type' => 'string'),
- ),
- elgg_echo('auth.gettoken'),
- 'POST',
- false,
- false);
+ expose_function(
+ "auth.gettoken",
+ "auth_gettoken",
+ array(
+ 'username' => array ('type' => 'string'),
+ 'password' => array ('type' => 'string'),
+ ),
+ elgg_echo('auth.gettoken'),
+ 'POST',
+ false,
+ false
+ );
}
diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php
index d73dd6330..699462a1b 100644
--- a/engine/lib/widgets.php
+++ b/engine/lib/widgets.php
@@ -336,7 +336,7 @@ function elgg_default_widgets_init() {
*
* @param string $event The event
* @param string $type The type of object
- * @param object $entity The entity being created
+ * @param ElggEntity $entity The entity being created
* @return void
* @access private
*/
@@ -372,6 +372,7 @@ function elgg_create_default_widgets($event, $type, $entity) {
);
$widgets = elgg_get_entities_from_private_settings($options);
+ /* @var ElggWidget[] $widgets */
foreach ($widgets as $widget) {
// change the container and owner
diff --git a/engine/lib/xml.php b/engine/lib/xml.php
index 813bc4ee0..497459d83 100644
--- a/engine/lib/xml.php
+++ b/engine/lib/xml.php
@@ -101,47 +101,11 @@ function serialise_array_to_xml(array $data, $n = 0) {
/**
* Parse an XML file into an object.
- * Based on code from http://de.php.net/manual/en/function.xml-parse-into-struct.php by
- * efredricksen at gmail dot com
*
* @param string $xml The XML
*
- * @return object
+ * @return ElggXMLElement
*/
function xml_to_object($xml) {
- $parser = xml_parser_create();
-
- // Parse $xml into a structure
- xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
- xml_parse_into_struct($parser, $xml, $tags);
-
- xml_parser_free($parser);
-
- $elements = array();
- $stack = array();
-
- foreach ($tags as $tag) {
- $index = count($elements);
-
- if ($tag['type'] == "complete" || $tag['type'] == "open") {
- $elements[$index] = new XmlElement;
- $elements[$index]->name = $tag['tag'];
- $elements[$index]->attributes = elgg_extract('attributes', $tag, '');
- $elements[$index]->content = elgg_extract('value', $tag, '');
-
- if ($tag['type'] == "open") {
- $elements[$index]->children = array();
- $stack[count($stack)] = &$elements;
- $elements = &$elements[$index]->children;
- }
- }
-
- if ($tag['type'] == "close") {
- $elements = &$stack[count($stack) - 1];
- unset($stack[count($stack) - 1]);
- }
- }
-
- return $elements[0];
+ return new ElggXMLElement($xml);
}
diff --git a/engine/schema/mysql.sql b/engine/schema/mysql.sql
index 6c6e9db89..4714b71bb 100644
--- a/engine/schema/mysql.sql
+++ b/engine/schema/mysql.sql
@@ -361,7 +361,7 @@ CREATE TABLE `prefix_system_log` (
`access_id` int(11) NOT NULL,
`enabled` enum('yes','no') NOT NULL DEFAULT 'yes',
`time_created` int(11) NOT NULL,
- `ip_address` varchar(15) NOT NULL,
+ `ip_address` varchar(46) NOT NULL,
PRIMARY KEY (`id`),
KEY `object_id` (`object_id`),
KEY `object_class` (`object_class`),
diff --git a/engine/start.php b/engine/start.php
index 506e27380..55b8ffa5b 100644
--- a/engine/start.php
+++ b/engine/start.php
@@ -49,6 +49,7 @@ global $CONFIG;
if (!isset($CONFIG)) {
$CONFIG = new stdClass;
}
+$CONFIG->boot_complete = false;
$lib_dir = dirname(__FILE__) . '/lib/';
@@ -99,11 +100,22 @@ elgg_trigger_event('boot', 'system');
// Load the plugins that are active
elgg_load_plugins();
+
+// @todo move loading plugins into a single boot function that replaces 'boot', 'system' event
+// and then move this code in there.
+// This validates the view type - first opportunity to do it is after plugins load.
+$view_type = elgg_get_viewtype();
+if (!elgg_is_valid_view_type($view_type)) {
+ elgg_set_viewtype('default');
+}
+
// @todo deprecate as plugins can use 'init', 'system' event
elgg_trigger_event('plugins_boot', 'system');
// Complete the boot process for both engine and plugins
elgg_trigger_event('init', 'system');
+$CONFIG->boot_complete = true;
+
// System loaded and ready
elgg_trigger_event('ready', 'system');
diff --git a/engine/tests/api/access_collections.php b/engine/tests/api/access_collections.php
index bea995a6e..4acfae596 100644
--- a/engine/tests/api/access_collections.php
+++ b/engine/tests/api/access_collections.php
@@ -54,7 +54,6 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
}
public function testCreateGetDeleteACL() {
- global $DB_QUERY_CACHE;
$acl_name = 'test access collection';
$acl_id = create_access_collection($acl_name);
@@ -67,8 +66,6 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
$this->assertEqual($acl->id, $acl_id);
if ($acl) {
- $DB_QUERY_CACHE = array();
-
$this->assertEqual($acl->name, $acl_name);
$result = delete_access_collection($acl_id);
@@ -268,4 +265,26 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
$group->delete();
}
+
+ public function testAccessCaching() {
+ // create a new user to check against
+ $user = new ElggUser();
+ $user->username = 'access_test_user';
+ $user->save();
+
+ foreach (array('get_access_list', 'get_access_array') as $func) {
+ $cache = _elgg_get_access_cache();
+ $cache->clear();
+
+ // admin users run tests, so disable access
+ elgg_set_ignore_access(true);
+ $access = $func($user->getGUID());
+
+ elgg_set_ignore_access(false);
+ $access2 = $func($user->getGUID());
+ $this->assertNotEqual($access, $access2, "Access test for $func");
+ }
+
+ $user->delete();
+ }
}
diff --git a/engine/tests/api/annotations.php b/engine/tests/api/annotations.php
index 947292970..c0b0687cc 100644
--- a/engine/tests/api/annotations.php
+++ b/engine/tests/api/annotations.php
@@ -65,6 +65,86 @@ class ElggCoreAnnotationAPITest extends ElggCoreUnitTest {
$annotations = elgg_get_annotations($options);
$this->assertTrue(empty($annotations));
+ // nothing to delete so null returned
+ $this->assertNull(elgg_delete_annotations($options));
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggDisableAnnotations() {
+ $e = new ElggObject();
+ $e->save();
+
+ for ($i=0; $i<30; $i++) {
+ $e->annotate('test_annotation', rand(0,10000));
+ }
+
+ $options = array(
+ 'guid' => $e->getGUID(),
+ 'limit' => 0
+ );
+
+ $this->assertTrue(elgg_disable_annotations($options));
+
+ $annotations = elgg_get_annotations($options);
+ $this->assertTrue(empty($annotations));
+
+ access_show_hidden_entities(true);
+ $annotations = elgg_get_annotations($options);
+ $this->assertIdentical(30, count($annotations));
+ access_show_hidden_entities(false);
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggEnableAnnotations() {
+ $e = new ElggObject();
+ $e->save();
+
+ for ($i=0; $i<30; $i++) {
+ $e->annotate('test_annotation', rand(0,10000));
+ }
+
+ $options = array(
+ 'guid' => $e->getGUID(),
+ 'limit' => 0
+ );
+
+ $this->assertTrue(elgg_disable_annotations($options));
+
+ // cannot see any annotations so returns null
+ $this->assertNull(elgg_enable_annotations($options));
+
+ access_show_hidden_entities(true);
+ $this->assertTrue(elgg_enable_annotations($options));
+ access_show_hidden_entities(false);
+
+ $annotations = elgg_get_annotations($options);
+ $this->assertIdentical(30, count($annotations));
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggAnnotationExists() {
+ $e = new ElggObject();
+ $e->save();
+ $guid = $e->getGUID();
+
+ $this->assertFalse(elgg_annotation_exists($guid, 'test_annotation'));
+
+ $e->annotate('test_annotation', rand(0, 10000));
+ $this->assertTrue(elgg_annotation_exists($guid, 'test_annotation'));
+ // this metastring should always exist but an annotation of this name should not
+ $this->assertFalse(elgg_annotation_exists($guid, 'email'));
+
+ $options = array(
+ 'guid' => $guid,
+ 'limit' => 0
+ );
+ $this->assertTrue(elgg_disable_annotations($options));
+ $this->assertTrue(elgg_annotation_exists($guid, 'test_annotation'));
+
$this->assertTrue($e->delete());
+ $this->assertFalse(elgg_annotation_exists($guid, 'test_annotation'));
}
}
diff --git a/engine/tests/api/entity_getter_functions.php b/engine/tests/api/entity_getter_functions.php
index 9db248de9..fef9dc0c5 100644
--- a/engine/tests/api/entity_getter_functions.php
+++ b/engine/tests/api/entity_getter_functions.php
@@ -2648,7 +2648,7 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$name = 'test_annotation_' . rand(0, 9999);
$values = array();
$options = array(
- 'types' => 'object',
+ 'type' => 'object',
'subtypes' => $subtypes,
'limit' => 5
);
@@ -2687,7 +2687,7 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$order = array_keys($values);
$options = array(
- 'types' => 'object',
+ 'type' => 'object',
'subtypes' => $subtypes,
'limit' => 5,
'annotation_name' => $name,
@@ -2729,6 +2729,36 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
}
}
+ public function testElggGetEntitiesFromAnnotationCalculationCount() {
+ // add two annotations with a unique name to an entity
+ // then count the number of entities with that annotation name
+
+ $subtypes = $this->getRandomValidSubtypes(array('object'), 1);
+ $name = 'test_annotation_' . rand(0, 9999);
+ $values = array();
+ $options = array(
+ 'type' => 'object',
+ 'subtypes' => $subtypes,
+ 'limit' => 1
+ );
+ $es = elgg_get_entities($options);
+ $entity = $es[0];
+ $value = rand(0, 9999);
+ $entity->annotate($name, $value);
+ $value = rand(0, 9999);
+ $entity->annotate($name, $value);
+
+ $options = array(
+ 'type' => 'object',
+ 'subtypes' => $subtypes,
+ 'annotation_name' => $name,
+ 'calculation' => 'count',
+ 'count' => true,
+ );
+ $count = elgg_get_entities_from_annotation_calculation($options);
+ $this->assertEqual(1, $count);
+ }
+
public function testElggGetAnnotationsAnnotationNames() {
$options = array('annotation_names' => array());
$a_e_map = array();
@@ -2817,4 +2847,38 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$entities = elgg_get_entities($options);
$this->assertFalse($entities);
}
+
+ public function testEGEEmptySubtypePlurality() {
+ $options = array(
+ 'type' => 'user',
+ 'subtypes' => ''
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtype' => ''
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtype' => array('')
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtypes' => array('')
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+ }
}
diff --git a/engine/tests/api/helpers.php b/engine/tests/api/helpers.php
index 62e4471e0..414fb4145 100644
--- a/engine/tests/api/helpers.php
+++ b/engine/tests/api/helpers.php
@@ -519,7 +519,7 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
$this->assertIdentical($elements_sorted_string, $test_elements);
}
- // see http://trac.elgg.org/ticket/4288
+ // see https://github.com/elgg/elgg/issues/4288
public function testElggBatchIncOffset() {
// normal increment
$options = array(
@@ -578,6 +578,107 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
$this->assertEqual(11, $j);
}
+ public function testElggBatchReadHandlesBrokenEntities() {
+ $num_test_entities = 8;
+ $guids = array();
+ for ($i = $num_test_entities; $i > 0; $i--) {
+ $entity = new ElggObject();
+ $entity->type = 'object';
+ $entity->subtype = 'test_5357_subtype';
+ $entity->access_id = ACCESS_PUBLIC;
+ $entity->save();
+ $guids[] = $entity->guid;
+ _elgg_invalidate_cache_for_entity($entity->guid);
+ }
+
+ // break entities such that the first fetch has one incomplete
+ // and the second and third fetches have only incompletes!
+ $db_prefix = elgg_get_config('dbprefix');
+ delete_data("
+ DELETE FROM {$db_prefix}objects_entity
+ WHERE guid IN ({$guids[1]}, {$guids[2]}, {$guids[3]}, {$guids[4]}, {$guids[5]})
+ ");
+
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'test_5357_subtype',
+ 'order_by' => 'e.guid',
+ );
+
+ $entities_visited = array();
+ $batch = new ElggBatch('elgg_get_entities', $options, null, 2);
+ /* @var ElggEntity[] $batch */
+ foreach ($batch as $entity) {
+ $entities_visited[] = $entity->guid;
+ }
+
+ // The broken entities should not have been visited
+ $this->assertEqual($entities_visited, array($guids[0], $guids[6], $guids[7]));
+
+ // cleanup (including leftovers from previous tests)
+ $entity_rows = elgg_get_entities(array_merge($options, array(
+ 'callback' => '',
+ 'limit' => false,
+ )));
+ $guids = array();
+ foreach ($entity_rows as $row) {
+ $guids[] = $row->guid;
+ }
+ delete_data("DELETE FROM {$db_prefix}entities WHERE guid IN (" . implode(',', $guids) . ")");
+ delete_data("DELETE FROM {$db_prefix}objects_entity WHERE guid IN (" . implode(',', $guids) . ")");
+ }
+
+ public function testElggBatchDeleteHandlesBrokenEntities() {
+ $num_test_entities = 8;
+ $guids = array();
+ for ($i = $num_test_entities; $i > 0; $i--) {
+ $entity = new ElggObject();
+ $entity->type = 'object';
+ $entity->subtype = 'test_5357_subtype';
+ $entity->access_id = ACCESS_PUBLIC;
+ $entity->save();
+ $guids[] = $entity->guid;
+ _elgg_invalidate_cache_for_entity($entity->guid);
+ }
+
+ // break entities such that the first fetch has one incomplete
+ // and the second and third fetches have only incompletes!
+ $db_prefix = elgg_get_config('dbprefix');
+ delete_data("
+ DELETE FROM {$db_prefix}objects_entity
+ WHERE guid IN ({$guids[1]}, {$guids[2]}, {$guids[3]}, {$guids[4]}, {$guids[5]})
+ ");
+
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'test_5357_subtype',
+ 'order_by' => 'e.guid',
+ );
+
+ $entities_visited = array();
+ $batch = new ElggBatch('elgg_get_entities', $options, null, 2, false);
+ /* @var ElggEntity[] $batch */
+ foreach ($batch as $entity) {
+ $entities_visited[] = $entity->guid;
+ $entity->delete();
+ }
+
+ // The broken entities should not have been visited
+ $this->assertEqual($entities_visited, array($guids[0], $guids[6], $guids[7]));
+
+ // cleanup (including leftovers from previous tests)
+ $entity_rows = elgg_get_entities(array_merge($options, array(
+ 'callback' => '',
+ 'limit' => false,
+ )));
+ $guids = array();
+ foreach ($entity_rows as $row) {
+ $guids[] = $row->guid;
+ }
+ delete_data("DELETE FROM {$db_prefix}entities WHERE guid IN (" . implode(',', $guids) . ")");
+ delete_data("DELETE FROM {$db_prefix}objects_entity WHERE guid IN (" . implode(',', $guids) . ")");
+ }
+
static function elgg_batch_callback_test($options, $reset = false) {
static $count = 1;
diff --git a/engine/tests/api/metadata.php b/engine/tests/api/metadata.php
index be8ac269c..d23510c6a 100644
--- a/engine/tests/api/metadata.php
+++ b/engine/tests/api/metadata.php
@@ -28,6 +28,9 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
public function testGetMetastringById() {
foreach (array('metaUnitTest', 'metaunittest', 'METAUNITTEST') as $string) {
+ // since there is no guarantee that metastrings are garbage collected
+ // between unit test runs, we delete before testing
+ $this->delete_metastrings($string);
$this->create_metastring($string);
}
@@ -43,9 +46,6 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
{
$this->assertTrue(in_array($string, $this->metastrings));
}
-
- // clean up
- $this->delete_metastrings();
}
public function testElggGetEntitiesFromMetadata() {
@@ -77,7 +77,6 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
// clean up
$this->object->delete();
- $this->delete_metastrings();
}
public function testElggGetMetadataCount() {
@@ -103,14 +102,14 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
$e = new ElggObject();
$e->save();
- for ($i=0; $i<30; $i++) {
- $name = "test_metadata" . rand(0, 10000);
+ for ($i = 0; $i < 30; $i++) {
+ $name = "test_metadata$i";
$e->$name = rand(0, 10000);
}
$options = array(
'guid' => $e->getGUID(),
- 'limit' => 0
+ 'limit' => 0,
);
$md = elgg_get_metadata($options);
@@ -124,20 +123,108 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
$e->delete();
}
+ /**
+ * https://github.com/Elgg/Elgg/issues/4867
+ */
+ public function testElggGetEntityMetadataWhereSqlWithFalseValue() {
+ $pair = array('name' => 'test' , 'value' => false);
+ $result = elgg_get_entity_metadata_where_sql('e', 'metadata', null, null, $pair);
+ $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+ $this->assertTrue(strpos($where, "msn1.string = 'test' AND BINARY msv1.string = 0") > 0);
+
+ $result = elgg_get_entity_metadata_where_sql('e', 'metadata', array('test'), array(false));
+ $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+ $this->assertTrue(strpos($where, "msn.string IN ('test')) AND ( BINARY msv.string IN ('0')"));
+ }
- protected function create_metastring($string) {
+ // Make sure metadata with multiple values is correctly deleted when re-written
+ // by another user
+ // https://github.com/elgg/elgg/issues/2776
+ public function test_elgg_metadata_multiple_values() {
+ $u1 = new ElggUser();
+ $u1->username = rand();
+ $u1->save();
+
+ $u2 = new ElggUser();
+ $u2->username = rand();
+ $u2->save();
+
+ $obj = new ElggObject();
+ $obj->owner_guid = $u1->guid;
+ $obj->container_guid = $u1->guid;
+ $obj->access_id = ACCESS_PUBLIC;
+ $obj->save();
+
+ $md_values = array(
+ 'one',
+ 'two',
+ 'three'
+ );
+
+ // need to fake different logins.
+ // good times without mocking.
+ $original_user = elgg_get_logged_in_user_entity();
+ $_SESSION['user'] = $u1;
+
+ elgg_set_ignore_access(false);
+
+ // add metadata as one user
+ $obj->test = $md_values;
+
+ // check only these md exists
+ $db_prefix = elgg_get_config('dbprefix');
+ $q = "SELECT * FROM {$db_prefix}metadata WHERE entity_guid = $obj->guid";
+ $data = get_data($q);
+
+ $this->assertEqual(count($md_values), count($data));
+ foreach ($data as $md_row) {
+ $md = elgg_get_metadata_from_id($md_row->id);
+ $this->assertTrue(in_array($md->value, $md_values));
+ $this->assertEqual('test', $md->name);
+ }
+
+ // add md w/ same name as a different user
+ $_SESSION['user'] = $u2;
+ $md_values2 = array(
+ 'four',
+ 'five',
+ 'six',
+ 'seven'
+ );
+
+ $obj->test = $md_values2;
+
+ $q = "SELECT * FROM {$db_prefix}metadata WHERE entity_guid = $obj->guid";
+ $data = get_data($q);
+
+ $this->assertEqual(count($md_values2), count($data));
+ foreach ($data as $md_row) {
+ $md = elgg_get_metadata_from_id($md_row->id);
+ $this->assertTrue(in_array($md->value, $md_values2));
+ $this->assertEqual('test', $md->name);
+ }
+
+ $_SESSION['user'] = $original_user;
+
+ $obj->delete();
+ $u1->delete();
+ $u2->delete();
+ }
+
+ protected function delete_metastrings($string) {
global $CONFIG, $METASTRINGS_CACHE, $METASTRINGS_DEADNAME_CACHE;
$METASTRINGS_CACHE = $METASTRINGS_DEADNAME_CACHE = array();
- mysql_query("INSERT INTO {$CONFIG->dbprefix}metastrings (string) VALUES ('$string')");
- $this->metastrings[$string] = mysql_insert_id();
+ $string = sanitise_string($string);
+ mysql_query("DELETE FROM {$CONFIG->dbprefix}metastrings WHERE string = BINARY '$string'");
}
- protected function delete_metastrings() {
+ protected function create_metastring($string) {
global $CONFIG, $METASTRINGS_CACHE, $METASTRINGS_DEADNAME_CACHE;
$METASTRINGS_CACHE = $METASTRINGS_DEADNAME_CACHE = array();
- $strings = implode(', ', $this->metastrings);
- mysql_query("DELETE FROM {$CONFIG->dbprefix}metastrings WHERE id IN ($strings)");
+ $string = sanitise_string($string);
+ mysql_query("INSERT INTO {$CONFIG->dbprefix}metastrings (string) VALUES ('$string')");
+ $this->metastrings[$string] = mysql_insert_id();
}
}
diff --git a/engine/tests/api/metadata_cache.php b/engine/tests/api/metadata_cache.php
new file mode 100644
index 000000000..7fb328169
--- /dev/null
+++ b/engine/tests/api/metadata_cache.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Elgg Test metadata cache
+ *
+ * @package Elgg
+ * @subpackage Test
+ */
+class ElggCoreMetadataCacheTest extends ElggCoreUnitTest {
+
+ /**
+ * @var ElggVolatileMetadataCache
+ */
+ protected $cache;
+
+ /**
+ * @var ElggObject
+ */
+ protected $obj1;
+
+ /**
+ * @var int
+ */
+ protected $guid1;
+
+ /**
+ * @var ElggObject
+ */
+ protected $obj2;
+
+ /**
+ * @var int
+ */
+ protected $guid2;
+
+ protected $name = 'test';
+ protected $value = 'test';
+ protected $ignoreAccess;
+
+ /**
+ * Called before each test method.
+ */
+ public function setUp() {
+ $this->ignoreAccess = elgg_set_ignore_access(false);
+
+ $this->cache = elgg_get_metadata_cache();
+
+ $this->obj1 = new ElggObject();
+ $this->obj1->save();
+ $this->guid1 = $this->obj1->guid;
+
+ $this->obj2 = new ElggObject();
+ $this->obj2->save();
+ $this->guid2 = $this->obj2->guid;
+ }
+
+ /**
+ * Called after each test method.
+ */
+ public function tearDown() {
+ $this->obj1->delete();
+ $this->obj2->delete();
+
+ elgg_set_ignore_access($this->ignoreAccess);
+ }
+
+ public function testBasicApi() {
+ // test de-coupled instance
+ $cache = new ElggVolatileMetadataCache();
+ $cache->setIgnoreAccess(false);
+ $guid = 1;
+
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+
+ $cache->markEmpty($guid, $this->name);
+ $this->assertTrue($cache->isKnown($guid, $this->name));
+ $this->assertNull($cache->load($guid, $this->name));
+
+ $cache->markUnknown($guid, $this->name);
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+
+ $cache->save($guid, $this->name, $this->value);
+ $this->assertIdentical($cache->load($guid, $this->name), $this->value);
+
+ $cache->save($guid, $this->name, 1, true);
+ $this->assertIdentical($cache->load($guid, $this->name), array($this->value, 1));
+
+ $cache->clear($guid);
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+ }
+
+ public function testReadsAreCached() {
+ // test that reads fill cache
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->cache->flush();
+
+ $this->obj1->getMetaData($this->name);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), $this->value);
+ }
+
+ public function testWritesAreCached() {
+ // delete should mark cache as known to be empty
+ $this->obj1->deleteMetadata($this->name);
+ $this->assertTrue($this->cache->isKnown($this->guid1, $this->name));
+ $this->assertNull($this->cache->load($this->guid1, $this->name));
+
+ // without name, delete should invalidate the entire entity
+ $this->cache->save($this->guid1, $this->name, $this->value);
+ elgg_delete_metadata(array(
+ 'guid' => $this->guid1,
+ ));
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+
+ // test set
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), $this->value);
+
+ // test set multiple
+ $this->obj1->setMetaData($this->name, 1, 'integer', true);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), array($this->value, 1));
+
+ // writes when access is ignore should invalidate
+ $tmp_ignore = elgg_set_ignore_access(true);
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+ elgg_set_ignore_access($tmp_ignore);
+ }
+
+ public function testDisableAndEnable() {
+ // both should mark cache unknown
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->obj1->disableMetadata($this->name);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+
+ $this->cache->save($this->guid1, $this->name, $this->value);
+ $this->obj1->enableMetadata($this->name);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+ }
+
+ public function testPopulateFromEntities() {
+ // test populating cache from set of entities
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->obj1->setMetaData($this->name, 4, 'integer', true);
+ $this->obj1->setMetaData("{$this->name}-2", "{$this->value}-2");
+ $this->obj2->setMetaData($this->name, $this->value);
+
+ $this->cache->flush();
+ $this->cache->populateFromEntities(array($this->guid1, $this->guid2));
+
+ $expected = array();
+ $expected[$this->name][] = $this->value;
+ $expected[$this->name][] = 4;
+ $expected["{$this->name}-2"] = "{$this->value}-2";
+ $this->assertIdentical($this->cache->loadAll($this->guid1), $expected);
+
+ $expected = array();
+ $expected[$this->name] = $this->value;
+ $this->assertIdentical($this->cache->loadAll($this->guid2), $expected);
+ }
+
+ public function testFilterHeavyEntities() {
+ $big_str = str_repeat('-', 5000);
+ $this->obj2->setMetaData($this->name, array($big_str, $big_str));
+
+ $guids = array($this->guid1, $this->guid2);
+ $expected = array($this->guid1);
+ $actual = $this->cache->filterMetadataHeavyEntities($guids, 6000);
+ $this->assertIdentical($actual, $expected);
+ }
+
+ public function testCreateMetadataInvalidates() {
+ $this->obj1->foo = 1;
+ create_metadata($this->guid1, 'foo', 2, '', elgg_get_logged_in_user_guid(), ACCESS_FRIENDS);
+
+ $this->assertEqual($this->obj1->foo, 2);
+ }
+}
diff --git a/engine/tests/api/metastrings.php b/engine/tests/api/metastrings.php
index 0a8945084..5efdab972 100644
--- a/engine/tests/api/metastrings.php
+++ b/engine/tests/api/metastrings.php
@@ -55,8 +55,11 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
* Called after each test method.
*/
public function tearDown() {
- // do not allow SimpleTest to interpret Elgg notices as exceptions
- $this->swallowErrors();
+ access_show_hidden_entities(true);
+ elgg_delete_annotations(array(
+ 'guid' => $this->object->guid,
+ ));
+ access_show_hidden_entities(false);
}
/**
@@ -98,6 +101,31 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
}
}
+ public function testGetMetastringObjectFromIDWithDisabledAnnotation() {
+ $name = 'test_annotation_name' . rand();
+ $value = 'test_annotation_value' . rand();
+ $id = create_annotation($this->object->guid, $name, $value);
+ $annotation = elgg_get_annotation_from_id($id);
+ $this->assertTrue($annotation->disable());
+
+ $test = elgg_get_metastring_based_object_from_id($id, 'annotation');
+ $this->assertEqual(false, $test);
+ }
+
+ public function testGetMetastringBasedObjectWithDisabledAnnotation() {
+ $name = 'test_annotation_name' . rand();
+ $value = 'test_annotation_value' . rand();
+ $id = create_annotation($this->object->guid, $name, $value);
+ $annotation = elgg_get_annotation_from_id($id);
+ $this->assertTrue($annotation->disable());
+
+ $test = elgg_get_metastring_based_objects(array(
+ 'metastring_type' => 'annotations',
+ 'guid' => $this->object->guid,
+ ));
+ $this->assertEqual(array(), $test);
+ }
+
public function testEnableDisableByID() {
$db_prefix = elgg_get_config('dbprefix');
$annotations = $this->createAnnotations(1);
@@ -119,7 +147,6 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
// enable
$ashe = access_get_show_hidden_status();
access_show_hidden_entities(true);
- flush();
$this->assertTrue(elgg_set_metastring_based_object_enabled_by_id($id, 'yes', $type));
$test = get_data($q);
diff --git a/engine/tests/api/output.php b/engine/tests/api/output.php
new file mode 100644
index 000000000..c3d5aa8c6
--- /dev/null
+++ b/engine/tests/api/output.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Test case for ElggAutoP functionality.
+ */
+class ElggCoreOutputAutoPTest extends ElggCoreUnitTest {
+
+ /**
+ * @var ElggAutoP
+ */
+ protected $_autop;
+
+ public function setUp() {
+ $this->_autop = new ElggAutoP();
+ }
+
+ public function testDomRoundtrip() {
+ $d = dir(dirname(dirname(__FILE__)) . '/test_files/output/autop');
+ $in = file_get_contents($d->path . "/domdoc_in.html");
+ $exp = file_get_contents($d->path . "/domdoc_exp.html");
+ $exp = $this->flattenString($exp);
+
+ $doc = new DOMDocument();
+ libxml_use_internal_errors(true);
+ $doc->loadHTML("<html><meta http-equiv='content-type' content='text/html; charset=utf-8'><body>"
+ . $in . '</body></html>');
+ $serialized = $doc->saveHTML();
+ list(,$out) = explode('<body>', $serialized, 2);
+ list($out) = explode('</body>', $out, 2);
+ $out = $this->flattenString($out);
+
+ $this->assertEqual($exp, $out, "DOMDocument's parsing/serialization roundtrip");
+ }
+
+ public function testProcess() {
+ $data = $this->provider();
+ foreach ($data as $row) {
+ list($test, $in, $exp) = $row;
+ $exp = $this->flattenString($exp);
+ $out = $this->_autop->process($in);
+ $out = $this->flattenString($out);
+
+ $this->assertEqual($exp, $out, "Equality case {$test}");
+ }
+ }
+
+ public function provider() {
+ $d = dir(dirname(dirname(__FILE__)) . '/test_files/output/autop');
+ $tests = array();
+ while (false !== ($entry = $d->read())) {
+ if (preg_match('/^([a-z\\-]+)\.in\.html$/i', $entry, $m)) {
+ $tests[] = $m[1];
+ }
+ }
+
+ $data = array();
+ foreach ($tests as $test) {
+ $data[] = array(
+ $test,
+ file_get_contents($d->path . '/' . "{$test}.in.html"),
+ file_get_contents($d->path . '/' . "{$test}.exp.html"),
+ );
+ }
+ return $data;
+ }
+
+ /**
+ * Different versions of PHP return different whitespace between tags.
+ * Removing all line breaks normalizes that.
+ */
+ public function flattenString($string) {
+ $r = preg_replace('/[\n\r]+/', '', $string);
+ return $r;
+ }
+} \ No newline at end of file
diff --git a/engine/tests/api/plugins.php b/engine/tests/api/plugins.php
index 8ecb0a46c..d0f111c48 100644
--- a/engine/tests/api/plugins.php
+++ b/engine/tests/api/plugins.php
@@ -68,6 +68,9 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest {
'blurb' => 'A concise description.',
'description' => 'A longer, more interesting description.',
'website' => 'http://www.elgg.org/',
+ 'repository' => 'https://github.com/Elgg/Elgg',
+ 'bugtracker' => 'https://github.com/elgg/elgg/issues',
+ 'donations' => 'http://elgg.org/supporter.php',
'copyright' => '(C) Elgg Foundation 2011',
'license' => 'GNU General Public License version 2',
@@ -164,6 +167,21 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest {
$this->assertEqual($this->manifest18->getWebsite(), 'http://www.elgg.org/');
$this->assertEqual($this->manifest17->getWebsite(), 'http://www.elgg.org/');
}
+
+ public function testElggPluginManifestGetRepository() {
+ $this->assertEqual($this->manifest18->getRepositoryURL(), 'https://github.com/Elgg/Elgg');
+ $this->assertEqual($this->manifest17->getRepositoryURL(), '');
+ }
+
+ public function testElggPluginManifestGetBugtracker() {
+ $this->assertEqual($this->manifest18->getBugTrackerURL(), 'https://github.com/elgg/elgg/issues');
+ $this->assertEqual($this->manifest17->getBugTrackerURL(), '');
+ }
+
+ public function testElggPluginManifestGetDonationsPage() {
+ $this->assertEqual($this->manifest18->getDonationsPageURL(), 'http://elgg.org/supporter.php');
+ $this->assertEqual($this->manifest17->getDonationsPageURL(), '');
+ }
public function testElggPluginManifestGetCopyright() {
$this->assertEqual($this->manifest18->getCopyright(), '(C) Elgg Foundation 2011');
diff --git a/engine/tests/objects/entities.php b/engine/tests/objects/entities.php
index a4dc7946c..bac72079e 100644
--- a/engine/tests/objects/entities.php
+++ b/engine/tests/objects/entities.php
@@ -98,7 +98,7 @@ class ElggCoreEntityTest extends ElggCoreUnitTest {
// check internal metadata array
$metadata = $this->entity->expose_metadata();
- $this->assertIdentical($metadata['existent'], 'testing');
+ $this->assertIdentical($metadata['existent'], array('testing'));
}
public function testElggEnityGetAndSetAnnotations() {
@@ -271,7 +271,7 @@ class ElggCoreEntityTest extends ElggCoreUnitTest {
$this->save_entity();
// test deleting incorrectly
- // @link http://trac.elgg.org/ticket/2273
+ // @link https://github.com/elgg/elgg/issues/2273
$this->assertNull($this->entity->deleteMetadata('impotent'));
$this->assertEqual($this->entity->important, 'indeed!');
diff --git a/engine/tests/objects/objects.php b/engine/tests/objects/objects.php
index 915594e0a..263ab2414 100644
--- a/engine/tests/objects/objects.php
+++ b/engine/tests/objects/objects.php
@@ -194,7 +194,7 @@ class ElggCoreObjectTest extends ElggCoreUnitTest {
$old = elgg_set_ignore_access(true);
}
- // see http://trac.elgg.org/ticket/1196
+ // see https://github.com/elgg/elgg/issues/1196
public function testElggEntityRecursiveDisableWhenLoggedOut() {
$e1 = new ElggObject();
$e1->access_id = ACCESS_PUBLIC;
diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php
index a3573acb6..8a1033ac4 100644
--- a/engine/tests/objects/users.php
+++ b/engine/tests/objects/users.php
@@ -65,6 +65,9 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
$attributes['code'] = NULL;
$attributes['banned'] = 'no';
$attributes['admin'] = 'no';
+ $attributes['prev_last_action'] = NULL;
+ $attributes['last_login'] = NULL;
+ $attributes['prev_last_login'] = NULL;
ksort($attributes);
$entity_attributes = $this->user->expose_attributes();
@@ -142,7 +145,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
}
public function testElggUserNameCache() {
- // Trac #1305
+ // issue https://github.com/elgg/elgg/issues/1305
// very unlikely a user would have this username
$name = (string)time();
@@ -156,6 +159,22 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
$this->assertFalse($user);
}
+ public function testGetUserByUsernameAcceptsUrlEncoded() {
+ $username = (string)time();
+ $this->user->username = $username;
+ $guid = $this->user->save();
+
+ // percent encode first letter
+ $first_letter = $username[0];
+ $first_letter = str_pad('%' . dechex(ord($first_letter)), 2, '0', STR_PAD_LEFT);
+ $username = $first_letter . substr($username, 1);
+
+ $user = get_user_by_username($username);
+ $this->assertTrue((bool) $user);
+ $this->assertEqual($guid, $user->guid);
+
+ $this->user->delete();
+ }
public function testElggUserMakeAdmin() {
global $CONFIG;
diff --git a/engine/tests/regression/trac_bugs.php b/engine/tests/regression/trac_bugs.php
index 26a45ab6a..689275661 100644
--- a/engine/tests/regression/trac_bugs.php
+++ b/engine/tests/regression/trac_bugs.php
@@ -1,7 +1,7 @@
<?php
/**
- * Elgg Regression Tests -- Trac Bugfixes
- * Any bugfixes from Trac that require testing belong here.
+ * Elgg Regression Tests -- GitHub Bugfixes
+ * Any bugfixes from GitHub that require testing belong here.
*
* @package Elgg
* @subpackage Test
@@ -201,20 +201,205 @@ class ElggCoreRegressionBugsTest extends ElggCoreUnitTest {
}
/**
- * http://trac.elgg.org/ticket/3210 - Don't remove -s in friendly titles
- * @todo: http://trac.elgg.org/ticket/2276 - improve char encoding
+ * https://github.com/elgg/elgg/issues/3210 - Don't remove -s in friendly titles
+ * https://github.com/elgg/elgg/issues/2276 - improve char encoding
*/
public function test_friendly_title() {
$cases = array(
- 'Simple Test' => 'simple-test',
- 'Test top-level page' => 'test-top-level-page',
-// 'éclair' => 'éclair',
-// 'English, Español, and 日本語' => 'english-español-and-日本語'
+ // acid test
+ "B&N > Amazon, OK? <bold> 'hey!' $34"
+ => "bn-amazon-ok-bold-hey-34",
+
+ // hyphen, underscore and ASCII whitespace replaced by separator,
+ // other non-alphanumeric ASCII removed
+ "a-a_a a\na\ra\ta\va!a\"a#a\$a%aa'a(a)a*a+a,a.a/a:a;a=a?a@a[a\\a]a^a`a{a|a}a~a"
+ => "a-a-a-a-a-a-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+
+ // separators trimmed
+ "-_ hello _-"
+ => "hello",
+
+ // accents removed, lower case, other multibyte chars are URL encoded
+ "I\xC3\xB1t\xC3\xABrn\xC3\xA2ti\xC3\xB4n\xC3\xA0liz\xC3\xA6ti\xC3\xB8n, AND \xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"
+ // Iñtërnâtiônàlizætiøn, AND 日本語
+ => 'internationalizaetion-and-%E6%97%A5%E6%9C%AC%E8%AA%9E',
);
+ // where available, string is converted to NFC before transliteration
+ if (ElggTranslit::hasNormalizerSupport()) {
+ $form_d = "A\xCC\x8A"; // A followed by 'COMBINING RING ABOVE' (U+030A)
+ $cases[$form_d] = "a";
+ }
+
foreach ($cases as $case => $expected) {
$friendly_title = elgg_get_friendly_title($case);
$this->assertIdentical($expected, $friendly_title);
}
}
+
+ /**
+ * Test #5369 -- parse_urls()
+ * https://github.com/Elgg/Elgg/issues/5369
+ */
+ public function test_parse_urls() {
+
+ $cases = array(
+ 'no.link.here' =>
+ 'no.link.here',
+ 'simple link http://example.org test' =>
+ 'simple link <a href="http://example.org" rel="nofollow">http:/<wbr />/<wbr />example.org</a> test',
+ 'non-ascii http://ñew.org/ test' =>
+ 'non-ascii <a href="http://ñew.org/" rel="nofollow">http:/<wbr />/<wbr />ñew.org/<wbr /></a> test',
+
+ // section 2.1
+ 'percent encoded http://example.org/a%20b test' =>
+ 'percent encoded <a href="http://example.org/a%20b" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />a%20b</a> test',
+ // section 2.2: skipping single quote and parenthese
+ 'reserved characters http://example.org/:/?#[]@!$&*+,;= test' =>
+ 'reserved characters <a href="http://example.org/:/?#[]@!$&*+,;=" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />:/<wbr />?#[]@!$&*+,;=</a> test',
+ // section 2.3
+ 'unreserved characters http://example.org/a1-._~ test' =>
+ 'unreserved characters <a href="http://example.org/a1-._~" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />a1-._~</a> test',
+
+ 'parameters http://example.org/?val[]=1&val[]=2 test' =>
+ 'parameters <a href="http://example.org/?val[]=1&val[]=2" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />?val[]=1&val[]=2</a> test',
+ 'port http://example.org:80/ test' =>
+ 'port <a href="http://example.org:80/" rel="nofollow">http:/<wbr />/<wbr />example.org:80/<wbr /></a> test',
+
+ 'parentheses (http://www.google.com) test' =>
+ 'parentheses (<a href="http://www.google.com" rel="nofollow">http:/<wbr />/<wbr />www.google.com</a>) test',
+ 'comma http://elgg.org, test' =>
+ 'comma <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>, test',
+ 'period http://elgg.org. test' =>
+ 'period <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>. test',
+ 'exclamation http://elgg.org! test' =>
+ 'exclamation <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>! test',
+
+ 'already anchor <a href="http://twitter.com/">twitter</a> test' =>
+ 'already anchor <a href="http://twitter.com/">twitter</a> test',
+
+ 'ssl https://example.org/ test' =>
+ 'ssl <a href="https://example.org/" rel="nofollow">https:/<wbr />/<wbr />example.org/<wbr /></a> test',
+ 'ftp ftp://example.org/ test' =>
+ 'ftp <a href="ftp://example.org/" rel="nofollow">ftp:/<wbr />/<wbr />example.org/<wbr /></a> test',
+
+ 'web archive anchor <a href="http://web.archive.org/web/20000229040250/http://www.google.com/">google</a>' =>
+ 'web archive anchor <a href="http://web.archive.org/web/20000229040250/http://www.google.com/">google</a>',
+
+ 'single quotes already anchor <a href=\'http://www.yahoo.com\'>yahoo</a>' =>
+ 'single quotes already anchor <a href=\'http://www.yahoo.com\'>yahoo</a>',
+
+ 'unquoted already anchor <a href=http://www.yahoo.com>yahoo</a>' =>
+ 'unquoted already anchor <a href=http://www.yahoo.com>yahoo</a>',
+
+ 'parens in uri http://thedailywtf.com/Articles/A-(Long-Overdue)-BuildMaster-Introduction.aspx' =>
+ 'parens in uri <a href="http://thedailywtf.com/Articles/A-(Long-Overdue)-BuildMaster-Introduction.aspx" rel="nofollow">http:/<wbr />/<wbr />thedailywtf.com/<wbr />Articles/<wbr />A-(Long-Overdue)-BuildMaster-Introduction.aspx</a>'
+ );
+ foreach ($cases as $input => $output) {
+ $this->assertEqual($output, parse_urls($input));
+ }
+ }
+
+ /**
+ * Ensure additional select columns do not end up in entity attributes.
+ *
+ * https://github.com/Elgg/Elgg/issues/5538
+ */
+ public function test_extra_columns_dont_appear_in_attributes() {
+ global $ENTITY_CACHE;
+
+ // may not have groups in DB - let's create one
+ $group = new ElggGroup();
+ $group->name = 'test_group';
+ $group->access_id = ACCESS_PUBLIC;
+ $this->assertTrue($group->save() !== false);
+
+ // entity cache interferes with our test
+ $ENTITY_CACHE = array();
+
+ foreach (array('site', 'user', 'group', 'object') as $type) {
+ $entities = elgg_get_entities(array(
+ 'type' => $type,
+ 'selects' => array('1 as _nonexistent_test_column'),
+ 'limit' => 1,
+ ));
+ if (!$this->assertTrue($entities, "Query for '$type' did not return an entity.")) {
+ continue;
+ }
+ $entity = $entities[0];
+ $this->assertNull($entity->_nonexistent_test_column, "Additional select columns are leaking to attributes for '$type'");
+ }
+
+ $group->delete();
+ }
+
+ /**
+ * Ensure that ElggBatch doesn't go into infinite loop when disabling annotations recursively when show hidden is enabled.
+ *
+ * https://github.com/Elgg/Elgg/issues/5952
+ */
+ public function test_disabling_annotations_infinite_loop() {
+
+ //let's have some entity
+ $group = new ElggGroup();
+ $group->name = 'test_group';
+ $group->access_id = ACCESS_PUBLIC;
+ $this->assertTrue($group->save() !== false);
+
+ $total = 51;
+ //add some annotations
+ for ($cnt = 0; $cnt < $total; $cnt++) {
+ $group->annotate('test_annotation', 'value_' . $total);
+ }
+
+ //disable them
+ $show_hidden = access_get_show_hidden_status();
+ access_show_hidden_entities(true);
+ $options = array(
+ 'guid' => $group->guid,
+ 'limit' => $total, //using strict limit to avoid real infinite loop and just see ElggBatch limiting on it before finishing the work
+ );
+ elgg_disable_annotations($options);
+ access_show_hidden_entities($show_hidden);
+
+ //confirm all being disabled
+ $annotations = $group->getAnnotations(array(
+ 'limit' => $total,
+ ));
+ foreach ($annotations as $annotation) {
+ $this->assertTrue($annotation->enabled == 'no');
+ }
+
+ //delete group and annotations
+ $group->delete();
+ }
+
+ public function test_ElggXMLElement_does_not_load_external_entities() {
+ $elLast = libxml_disable_entity_loader(false);
+
+ // build payload that should trigger loading of external entity
+ $payload = file_get_contents(dirname(dirname(__FILE__)) . '/test_files/xxe/request.xml');
+ $path = realpath(dirname(dirname(__FILE__)) . '/test_files/xxe/external_entity.txt');
+ $path = str_replace('\\', '/', $path);
+ if ($path[0] != '/') {
+ $path = '/' . $path;
+ }
+ $path = 'file://' . $path;
+ $payload = sprintf($payload, $path);
+
+ // make sure we can actually this in this environment
+ $element = new SimpleXMLElement($payload);
+ $can_load_entity = preg_match('/secret/', (string)$element->methodName);
+
+ $this->skipUnless($can_load_entity, "XXE vulnerability cannot be tested on this system");
+
+ if ($can_load_entity) {
+ $el = new ElggXMLElement($payload);
+ $chidren = $el->getChildren();
+ $content = $chidren[0]->getContent();
+ $this->assertNoPattern('/secret/', $content);
+ }
+
+ libxml_disable_entity_loader($elLast);
+ }
}
diff --git a/engine/tests/test_files/output/autop/block-a.exp.norun.html b/engine/tests/test_files/output/autop/block-a.exp.norun.html
new file mode 100644
index 000000000..addf29dec
--- /dev/null
+++ b/engine/tests/test_files/output/autop/block-a.exp.norun.html
@@ -0,0 +1,6 @@
+
+<p>HTML5 allows A to contain block-level content</p>
+<a href="foo"><h3>A treated as block</h3>
+<p>Read more</p>
+</a>
+<p><a href="foo">A treated as<br /> inline</a></p>
diff --git a/engine/tests/test_files/output/autop/block-a.in.norun.html b/engine/tests/test_files/output/autop/block-a.in.norun.html
new file mode 100644
index 000000000..fc2dac43a
--- /dev/null
+++ b/engine/tests/test_files/output/autop/block-a.in.norun.html
@@ -0,0 +1,9 @@
+HTML5 allows A to contain block-level content
+<a href="foo">
+
+ <h3>A treated as block</h3>
+
+ Read more
+</a>
+<a href="foo">A treated as
+ inline</a>
diff --git a/engine/tests/test_files/output/autop/domdoc_exp.html b/engine/tests/test_files/output/autop/domdoc_exp.html
new file mode 100644
index 000000000..8480c1083
--- /dev/null
+++ b/engine/tests/test_files/output/autop/domdoc_exp.html
@@ -0,0 +1,46 @@
+›
+ 
+Vietnamese - Tiếng Việt
+
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em> <span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+ <p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul><li>Unordered</li>
+ <li>List</li>
+</ul><p>Paragraph between lists</p>
+<ol><li>Ordered</li>
+ <li>List</li>
+</ol><p>Paragraph between lists</p>
+<ul><li>OL list</li>
+ <li>nested<ol><li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul><p>Paragraph between lists</p>
+<table border="0"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=0</td>
+ </tr></tbody></table><p>Paragraph</p>
+<ol><li>UL list</li>
+ <li>nested
+ <ul><li>inside a</li>
+ <li>OL list</li>
+ </ul></li>
+</ol><p>Paragraph between tables</p>
+<table border="1" cellpadding="5"><tbody><tr><td>Table with border=1</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>cellpadding = 5</td>
+ </tr></tbody></table><p>Paragraph between tables</p>
+<table border="2"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=2</td>
+ </tr></tbody></table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/domdoc_in.html b/engine/tests/test_files/output/autop/domdoc_in.html
new file mode 100644
index 000000000..4c465b435
--- /dev/null
+++ b/engine/tests/test_files/output/autop/domdoc_in.html
@@ -0,0 +1,80 @@
+&#8250;
+&nbsp;
+Vietnamese - Tiếng Việt
+
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+ <p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul>
+ <li>Unordered</li>
+ <li>List</li>
+</ul>
+<p>Paragraph between lists</p>
+<ol>
+ <li>Ordered</li>
+ <li>List</li>
+</ol>
+<p>Paragraph between lists</p>
+<ul>
+ <li>OL list</li>
+ <li>nested<ol>
+ <li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+<p>Paragraph between lists</p>
+<table border="0">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=0</td>
+ </tr>
+ </tbody>
+</table>
+<p>Paragraph</p>
+<ol>
+ <li>UL list</li>
+ <li>nested
+ <ul>
+ <li>inside a</li>
+ <li>OL list</li>
+ </ul>
+ </li>
+</ol>
+<p>Paragraph between tables</p>
+<table border="1" cellpadding="5">
+ <tbody>
+ <tr>
+ <td>Table with border=1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>cellpadding = 5</td>
+ </tr>
+ </tbody>
+</table>
+<p>Paragraph between tables</p>
+<table border="2">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=2</td>
+ </tr>
+ </tbody>
+</table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/typical-post.exp.html b/engine/tests/test_files/output/autop/typical-post.exp.html
new file mode 100644
index 000000000..f9d75a114
--- /dev/null
+++ b/engine/tests/test_files/output/autop/typical-post.exp.html
@@ -0,0 +1,84 @@
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<p><img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150">Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.</p>
+
+<p>Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.</p>
+<h3>Donec at massa ante, sagittis fermentum urna.</h3><blockquote>
+<p>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.</p>
+
+<p>[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150">[/caption]</p>
+
+<p>Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.</p>
+
+<p>Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</p>
+</blockquote>
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.</p>
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre><ul><li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+<p>Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.</p>
+
+<p><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<p><img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150">Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.</p>
+
+<p>Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.</p>
+<h3>Donec at massa ante, sagittis fermentum urna.</h3><blockquote>
+<p>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.</p>
+
+<p>[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150">[/caption]</p>
+
+<p>Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.</p>
+
+<p>Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</p>
+</blockquote>
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.</p>
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre><ul><li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+<p>Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.</p>
+
+<p><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
diff --git a/engine/tests/test_files/output/autop/typical-post.in.html b/engine/tests/test_files/output/autop/typical-post.in.html
new file mode 100644
index 000000000..6e4984cc4
--- /dev/null
+++ b/engine/tests/test_files/output/autop/typical-post.in.html
@@ -0,0 +1,89 @@
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150" />Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.
+
+Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.
+<h3>Donec at massa ante, sagittis fermentum urna.</h3>
+<blockquote>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.
+
+[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150" />[/caption]
+
+Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.
+
+Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</blockquote>
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.
+
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre>
+<ul>
+ <li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.
+
+<object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object>
+
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150" />Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.
+
+Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.
+<h3>Donec at massa ante, sagittis fermentum urna.</h3>
+<blockquote>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.
+
+[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150" />[/caption]
+
+Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.
+
+Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</blockquote>
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.
+
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre>
+<ul>
+ <li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.
+
+<object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wp-welcome.exp.html b/engine/tests/test_files/output/autop/wp-welcome.exp.html
new file mode 100644
index 000000000..2f612e3dd
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wp-welcome.exp.html
@@ -0,0 +1,22 @@
+
+<p>Welcome to WordPress! This post contains important information. After you read it, you can make it private to hide it from visitors but still have the information handy for future reference.</p>
+
+<p>First things first:</p>
+<ul><li><a href="%1%24s" title="Subscribe to the WordPress mailing list for Release Notifications">Subscribe to the WordPress mailing list for release notifications</a></li>
+</ul>
+<p>As a subscriber, you will receive an email every time an update is available (and only then). This will make it easier to keep your site up to date, and secure from evildoers.<br />When a new version is released, <a href="%2%24s" title="If you are already logged in, this will take you directly to the Dashboard">log in to the Dashboard</a> and follow the instructions.<br />Upgrading is a couple of clicks!</p>
+
+<p>Then you can start enjoying the WordPress experience:</p>
+<ul><li>Edit your personal information at <a href="%3%24s" title="Edit settings like your password, your display name and your contact information">Users &#8250; Your Profile</a></li>
+ <li>Start publishing at <a href="%4%24s" title="Create a new post">Posts &#8250; Add New</a> and at <a href="%5%24s" title="Create a new page">Pages &#8250; Add New</a></li>
+ <li>Browse and install plugins at <a href="%6%24s" title="Browse and install plugins at the official WordPress repository directly from your Dashboard">Plugins &#8250; Add New</a></li>
+ <li>Browse and install themes at <a href="%7%24s" title="Browse and install themes at the official WordPress repository directly from your Dashboard">Appearance &#8250; Add New Themes</a></li>
+ <li>Modify and prettify your website&#8217;s links at <a href="%8%24s" title="For example, select a link structure like: http://example.com/1999/12/post-name">Settings &#8250; Permalinks</a></li>
+ <li>Import content from another system or WordPress site at <a href="%9%24s" title="WordPress comes with importers for the most common publishing systems">Tools &#8250; Import</a></li>
+ <li>Find answers to your questions at the <a href="%10%24s" title="The official WordPress documentation, maintained by the WordPress community">WordPress Codex</a></li>
+</ul>
+<p>To keep this post for reference, <a href="%11%24s" title="Click to edit the content and settings of this post">click to edit it</a>, go to the Publish box and change its Visibility from Public to Private.</p>
+
+<p>Thank you for selecting WordPress. We wish you happy publishing!</p>
+
+<p>PS. Not yet subscribed for update notifications? <a href="%1%24s" title="Subscribe to the WordPress mailing list for Release Notifications">Do it now!</a></p>
diff --git a/engine/tests/test_files/output/autop/wp-welcome.in.html b/engine/tests/test_files/output/autop/wp-welcome.in.html
new file mode 100644
index 000000000..338ede73f
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wp-welcome.in.html
@@ -0,0 +1,25 @@
+Welcome to WordPress! This post contains important information. After you read it, you can make it private to hide it from visitors but still have the information handy for future reference.
+
+First things first:
+<ul>
+ <li><a href="%1$s" title="Subscribe to the WordPress mailing list for Release Notifications">Subscribe to the WordPress mailing list for release notifications</a></li>
+</ul>
+As a subscriber, you will receive an email every time an update is available (and only then). This will make it easier to keep your site up to date, and secure from evildoers.
+When a new version is released, <a href="%2$s" title="If you are already logged in, this will take you directly to the Dashboard">log in to the Dashboard</a> and follow the instructions.
+Upgrading is a couple of clicks!
+
+Then you can start enjoying the WordPress experience:
+<ul>
+ <li>Edit your personal information at <a href="%3$s" title="Edit settings like your password, your display name and your contact information">Users &#8250; Your Profile</a></li>
+ <li>Start publishing at <a href="%4$s" title="Create a new post">Posts &#8250; Add New</a> and at <a href="%5$s" title="Create a new page">Pages &#8250; Add New</a></li>
+ <li>Browse and install plugins at <a href="%6$s" title="Browse and install plugins at the official WordPress repository directly from your Dashboard">Plugins &#8250; Add New</a></li>
+ <li>Browse and install themes at <a href="%7$s" title="Browse and install themes at the official WordPress repository directly from your Dashboard">Appearance &#8250; Add New Themes</a></li>
+ <li>Modify and prettify your website&#8217;s links at <a href="%8$s" title="For example, select a link structure like: http://example.com/1999/12/post-name">Settings &#8250; Permalinks</a></li>
+ <li>Import content from another system or WordPress site at <a href="%9$s" title="WordPress comes with importers for the most common publishing systems">Tools &#8250; Import</a></li>
+ <li>Find answers to your questions at the <a href="%10$s" title="The official WordPress documentation, maintained by the WordPress community">WordPress Codex</a></li>
+</ul>
+To keep this post for reference, <a href="%11$s" title="Click to edit the content and settings of this post">click to edit it</a>, go to the Publish box and change its Visibility from Public to Private.
+
+Thank you for selecting WordPress. We wish you happy publishing!
+
+PS. Not yet subscribed for update notifications? <a href="%1$s" title="Subscribe to the WordPress mailing list for Release Notifications">Do it now!</a>
diff --git a/engine/tests/test_files/output/autop/wpautop-fails.exp.html b/engine/tests/test_files/output/autop/wpautop-fails.exp.html
new file mode 100644
index 000000000..d018db4ff
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wpautop-fails.exp.html
@@ -0,0 +1,31 @@
+
+<p>paragraph</p>
+
+<p>paragraph</p>
+<div class="whatever"><blockquote>
+<p>paragraph</p>
+</blockquote>
+<p>line</p>
+</div>
+<p>paragraph</p>
+<ul><li>line</li>
+<li>paragraph
+
+paragraph</li>
+</ul>
+<p>paragraph<br />line<br />line</p>
+<pre>Honor
+this whitespace
+</pre>
+<p>paragraph</p>
+<style><!--
+Do not alter!
+--></style>
+<p>paragraph <!-- do not alter --></p>
+<dl><dt>term</dt> <dd>paragraph
+
+<a href="xx"> <img src="yy"></a>
+
+paragraph</dd> </dl><div><a href="xx"> <img src="yy"></a></div>
+<p>Hello <a href="link"><br /><br />World</a></p>
+<p id="abc">Paragraph</p><div>Line</div> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wpautop-fails.in.html b/engine/tests/test_files/output/autop/wpautop-fails.in.html
new file mode 100644
index 000000000..9aa24be59
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wpautop-fails.in.html
@@ -0,0 +1,41 @@
+
+paragraph
+
+paragraph <div class="whatever"><blockquote>
+ paragraph
+ </blockquote>
+ line
+</div>
+
+paragraph
+<ul>
+<li>line</li>
+<li>paragraph
+
+paragraph</li>
+</ul>
+paragraph
+line<br>
+ line
+<pre>Honor
+this whitespace
+</pre>
+paragraph
+<style><!--
+Do not alter!
+--></style>
+paragraph <!-- do not alter -->
+<dl> <dt>term</dt> <dd>paragraph
+
+<a href="xx"> <img src="yy" /> </a>
+
+paragraph</dd> </dl>
+<div><a href="xx"> <img src="yy" /> </a></div>
+
+Hello <a href="link">
+
+World</a>
+
+<p id="abc">Paragraph</p>
+
+<div>Line</div> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wysiwyg-test.exp.html b/engine/tests/test_files/output/autop/wysiwyg-test.exp.html
new file mode 100644
index 000000000..1f23d6154
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wysiwyg-test.exp.html
@@ -0,0 +1,51 @@
+
+<p>&nbps;<br />&#8820;</p>
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+<p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul><li>Unordered</li>
+ <li>List</li>
+</ul>
+<p>Paragraph between lists</p>
+<ol><li>Ordered</li>
+ <li>List</li>
+</ol>
+<p>Paragraph between lists</p>
+<ul><li>OL list</li>
+ <li>nested
+ <ol><li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+<p>Paragraph between lists</p>
+<table border="0"><tbody><tr></tr><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=0</td>
+ </tr></tbody></table>
+<p>Paragraph</p>
+<ol><li>UL list</li>
+ <li>nested
+ <ul><li>inside a</li>
+ <li>OL list</li>
+ </ul></li>
+</ol>
+<p>Paragraph between tables</p>
+<table border="1" cellpadding="5"><tbody><tr><td>Table with border=1</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>cellpadding = 5</td>
+ </tr></tbody></table>
+<p>Paragraph between tables</p>
+<table border="2"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=2</td>
+ </tr></tbody></table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wysiwyg-test.in.html b/engine/tests/test_files/output/autop/wysiwyg-test.in.html
new file mode 100644
index 000000000..733b0e2ec
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wysiwyg-test.in.html
@@ -0,0 +1,79 @@
+&nbps;
+&#8820;
+<h1>h1</h1>
+Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span>
+<h2>h2</h2>
+Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span>
+<h3>h3</h3>
+Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span>
+<blockquote>Blockquoted paragraph</blockquote>
+Paragraph following blockquote
+<ul>
+ <li>Unordered</li>
+ <li>List</li>
+</ul>
+Paragraph between lists
+<ol>
+ <li>Ordered</li>
+ <li>List</li>
+</ol>
+Paragraph between lists
+<ul>
+ <li>OL list</li>
+ <li>nested
+ <ol>
+ <li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+Paragraph between lists
+<table border="0">
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=0</td>
+ </tr>
+ </tbody>
+</table>
+Paragraph
+<ol>
+ <li>UL list</li>
+ <li>nested
+ <ul>
+ <li>inside a</li>
+ <li>OL list</li>
+ </ul>
+ </li>
+</ol>
+Paragraph between tables
+<table border="1" cellpadding="5">
+ <tbody>
+ <tr>
+ <td>Table with border=1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>cellpadding = 5</td>
+ </tr>
+ </tbody>
+</table>
+Paragraph between tables
+<table border="2">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=2</td>
+ </tr>
+ </tbody>
+</table> \ No newline at end of file
diff --git a/engine/tests/test_files/plugin_18/manifest.xml b/engine/tests/test_files/plugin_18/manifest.xml
index 9654b6422..c8b407511 100644
--- a/engine/tests/test_files/plugin_18/manifest.xml
+++ b/engine/tests/test_files/plugin_18/manifest.xml
@@ -6,6 +6,9 @@
<blurb>A concise description.</blurb>
<description>A longer, more interesting description.</description>
<website>http://www.elgg.org/</website>
+ <repository>https://github.com/Elgg/Elgg</repository>
+ <bugtracker>https://github.com/elgg/elgg/issues</bugtracker>
+ <donations>http://elgg.org/supporter.php</donations>
<copyright>(C) Elgg Foundation 2011</copyright>
<license>GNU General Public License version 2</license>
diff --git a/engine/tests/test_files/xxe/external_entity.txt b/engine/tests/test_files/xxe/external_entity.txt
new file mode 100644
index 000000000..536aca34d
--- /dev/null
+++ b/engine/tests/test_files/xxe/external_entity.txt
@@ -0,0 +1 @@
+secret \ No newline at end of file
diff --git a/engine/tests/test_files/xxe/request.xml b/engine/tests/test_files/xxe/request.xml
new file mode 100644
index 000000000..4390f9db2
--- /dev/null
+++ b/engine/tests/test_files/xxe/request.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ELEMENT methodName ANY >
+<!ENTITY xxe SYSTEM "%s" >
+]>
+<methodCall>
+ <methodName>test&xxe;test</methodName>
+</methodCall>
diff --git a/gpl-plugins b/gpl-plugins
new file mode 100644
index 000000000..925ca6ec2
--- /dev/null
+++ b/gpl-plugins
@@ -0,0 +1,20 @@
+videolist
+dokuwiki
+friendrequest
+opensearch
+identica
+languages
+registrationterms
+custom_index_widgets
+river_privacy
+habitorio_theme
+lightpics
+colorbox
+event_calendar
+openid_client
+openid_server
+openid_api
+beechat
+simplepie
+profile_widgets
+html5
diff --git a/htaccess_dist b/htaccess_dist
index bf163c69e..44d129475 100644
--- a/htaccess_dist
+++ b/htaccess_dist
@@ -1,14 +1,11 @@
# Elgg htaccess directives
-# Copyright Curverider Ltd 2008-2009
-# License http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
-# Link http://elgg.org/
<Files "htaccess_dist">
order allow,deny
deny from all
</Files>
-# Don't listing directory
+# Don't allow listing directories
Options -Indexes
# Follow symbolic links
@@ -17,13 +14,28 @@ Options +FollowSymLinks
# Default handler
DirectoryIndex index.php
-# Turn on expiry
+
+############################
+# BROWSER CACHING
+
+# The expires module controls the Expires and Cache-Control headers. Elgg sets
+# these for dynamically generated files so this is just for static files.
<IfModule mod_expires.c>
ExpiresActive On
- ExpiresDefault "access plus 10 years"
+ ExpiresDefault "access plus 1 year"
</IfModule>
-# php 5, apache 1 and 2
+# Conditional requests are controlled through Last-Modified and ETag headers.
+# Elgg sets these on dynamically generated cacheable files so this is just for
+# static files. Note: Apache sends Last-Modified by default on static files so
+# I don't think we need to be sending ETag for these files.
+<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|css|ico)$">
+ FileETag MTime Size
+</FilesMatch>
+
+
+############################
+# PHP SETTINGS
<IfModule mod_php5.c>
# limit the maximum memory consumed by the php script to 64 MB
php_value memory_limit 64M
@@ -37,6 +49,10 @@ DirectoryIndex index.php
php_value display_errors 0
</IfModule>
+
+############################
+# COMPRESSION
+
# Turn on mod_gzip if available
<IfModule mod_gzip.c>
mod_gzip_on yes
@@ -75,13 +91,9 @@ DirectoryIndex index.php
</IfModule>
-# Configure ETags
-<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|ico)$">
- FileETag MTime Size
-</FilesMatch>
-# Add Proper MIME-Type for Favicon to allow expires to work
-AddType image/vnd.microsoft.icon .ico
+############################
+# REWRITE RULES
<IfModule mod_rewrite.c>
@@ -100,36 +112,44 @@ RewriteEngine on
#
#RewriteBase /
+
+# If your users receive the message "Sorry, logging in from a different domain is not permitted"
+# you must make sure your login form is served from the same hostname as your site pages.
+# See http://docs.elgg.org/wiki/Login_token_mismatch_error for more info.
+#
+# If you must add RewriteRules to change hostname, add them directly below (above all the others)
+
+
# In for backwards compatibility
-RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING}
-RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING}
-RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING} [L]
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING} [L]
+RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1 [L]
-RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING}
+RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING} [L]
-RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING}
+RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING} [L]
-RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING}
+RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING} [L]
-RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2
-RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2 [L]
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4 [L]
-RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php
-RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php
+RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php [L]
+RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php [L]
# rule for rewrite module test during install - can be removed after installation
-RewriteRule ^rewrite.php$ install.php
+RewriteRule ^rewrite.php$ install.php [L]
# Everything else that isn't a file gets routed through the page handler
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
-RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA]
+RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
-RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA]
+RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA,L]
</IfModule>
diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php
index 03c84a43e..78cdde90f 100644
--- a/install/ElggInstaller.php
+++ b/install/ElggInstaller.php
@@ -157,7 +157,7 @@ class ElggInstaller {
'password',
);
foreach ($requiredParams as $key) {
- if (!array_key_exists($key, $params)) {
+ if (empty($params[$key])) {
$msg = elgg_echo('install:error:requiredfield', array($key));
throw new InstallationException($msg);
}
@@ -1148,11 +1148,21 @@ class ElggInstaller {
foreach ($formVars as $field => $info) {
if ($info['required'] == TRUE && !$submissionVars[$field]) {
$name = elgg_echo("install:database:label:$field");
- register_error("$name is required");
+ register_error(elgg_echo('install:error:requiredfield', array($name)));
return FALSE;
}
}
+ // according to postgres documentation: SQL identifiers and key words must
+ // begin with a letter (a-z, but also letters with diacritical marks and
+ // non-Latin letters) or an underscore (_). Subsequent characters in an
+ // identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($).
+ // Refs #4994
+ if (!preg_match("/^[a-zA-Z_][\w]*$/", $submissionVars['dbprefix'])) {
+ register_error(elgg_echo('install:error:database_prefix'));
+ return FALSE;
+ }
+
return $this->checkDatabaseSettings(
$submissionVars['dbuser'],
$submissionVars['dbpassword'],
@@ -1404,7 +1414,7 @@ class ElggInstaller {
$submissionVars['wwwroot'] = sanitise_filepath($submissionVars['wwwroot']);
$site = new ElggSite();
- $site->name = $submissionVars['sitename'];
+ $site->name = strip_tags($submissionVars['sitename']);
$site->url = $submissionVars['wwwroot'];
$site->access_id = ACCESS_PUBLIC;
$site->email = $submissionVars['siteemail'];
@@ -1519,22 +1529,27 @@ class ElggInstaller {
protected function createAdminAccount($submissionVars, $login = FALSE) {
global $CONFIG;
- $guid = register_user(
- $submissionVars['username'],
- $submissionVars['password1'],
- $submissionVars['displayname'],
- $submissionVars['email']
- );
+ try {
+ $guid = register_user(
+ $submissionVars['username'],
+ $submissionVars['password1'],
+ $submissionVars['displayname'],
+ $submissionVars['email']
+ );
+ } catch (Exception $e) {
+ register_error($e->getMessage());
+ return false;
+ }
if (!$guid) {
register_error(elgg_echo('install:admin:cannot_create'));
- return FALSE;
+ return false;
}
$user = get_entity($guid);
if (!$user) {
register_error(elgg_echo('install:error:loadadmin'));
- return FALSE;
+ return false;
}
elgg_set_ignore_access(TRUE);
@@ -1543,7 +1558,7 @@ class ElggInstaller {
} else {
datalist_set('admin_registered', 1);
}
- elgg_set_ignore_access(FALSE);
+ elgg_set_ignore_access(false);
// add validation data to satisfy user validation plugins
create_metadata($guid, 'validated', TRUE, '', 0, ACCESS_PUBLIC);
diff --git a/install/ElggRewriteTester.php b/install/ElggRewriteTester.php
index c01510f60..ab68da2b7 100644
--- a/install/ElggRewriteTester.php
+++ b/install/ElggRewriteTester.php
@@ -154,6 +154,8 @@ class ElggRewriteTester {
if ($this->serverSupportsRemoteRead == FALSE) {
$msg = elgg_echo('install:warning:rewrite:unknown', array($url));
+ $msg .= elgg_view('install/js_rewrite_check', array('url' => $url));
+
return array(
'severity' => 'warning',
'message' => $msg,
@@ -165,6 +167,8 @@ class ElggRewriteTester {
$msg = "$serverString\n\n";
if (!isset($this->htaccessIssue)) {
$msg .= elgg_echo('install:error:rewrite:allowoverride');
+ $msg .= elgg_view('install/js_rewrite_check', array('url' => $url));
+
return array(
'severity' => 'failure',
'message' => $msg,
diff --git a/install/cli/sample_installer.php b/install/cli/sample_installer.php
index 954169a6a..a51f9aae4 100644
--- a/install/cli/sample_installer.php
+++ b/install/cli/sample_installer.php
@@ -1,12 +1,13 @@
<?php
+
/**
* Sample cli installer script
*/
-require_once(dirname(dirname(__FILE__)) . "/ElggInstaller.php");
-
-$installer = new ElggInstaller();
+// change to true to run this script. Change back to false when done.
+$enabled = false;
+// none of the following may be empty
$params = array(
// database parameters
'dbuser' => '',
@@ -26,5 +27,41 @@ $params = array(
'password' => '',
);
+
+// Do not edit below this line. //////////////////////////////
+
+
+if (!$enabled) {
+ echo "To enable this script, change \$enabled to true.\n";
+ echo "You *must* disable this script after a successful installation.\n";
+ exit;
+}
+
+if (PHP_SAPI !== 'cli') {
+ echo "You must use the command line to run this script.";
+ exit;
+}
+
+require_once(dirname(dirname(__FILE__)) . "/ElggInstaller.php");
+
+$installer = new ElggInstaller();
+
// install and create the .htaccess file
$installer->batchInstall($params, TRUE);
+
+// at this point installation has completed (otherwise an exception halted execution).
+// try to rewrite the script to disable it.
+if (is_writable(__FILE__)) {
+ $code = file_get_contents(__FILE__);
+ if (preg_match('~\\$enabled\\s*=\\s*(true|1)\\s*;~i', $code)) {
+ // looks safe to rewrite
+ $code = preg_replace('~\\$enabled\\s*=\\s*(true|1)\\s*;~i', '$enabled = false;', $code);
+ file_put_contents(__FILE__, $code);
+
+ echo "\nNote: This script has been disabled for your safety.\n";
+ exit;
+ }
+}
+
+echo "\nWarning: You *must* disable this script by setting \$enabled = false;.\n";
+echo "Leaving this script enabled could endanger your installation.\n";
diff --git a/install/js/install.js b/install/js/install.js
index 49b2be10c..37e5b0dc3 100644
--- a/install/js/install.js
+++ b/install/js/install.js
@@ -19,3 +19,24 @@ $(function() {
}
});
});
+
+elgg = {
+ installer: {}
+};
+
+/**
+ * Check the rewrite address for "success" and then allows the installation to proceed.
+ */
+elgg.installer.rewriteTest = function(url, success_msg, nextURL) {
+ $.ajax(url, {
+ success: function(data, status, xhr) {
+ if (data == 'success') {
+ $('.elgg-require-rewrite li').attr('class', 'pass');
+ $('.elgg-require-rewrite li').html('<p>' + success_msg + '</p>');
+ $('.elgg-install-nav a.elgg-state-disabled')
+ .removeClass('elgg-state-disabled')
+ .attr('href', nextURL);
+ }
+ }
+ });
+}
diff --git a/install/languages/en.php b/install/languages/en.php
index 3a692e020..531379b1e 100644
--- a/install/languages/en.php
+++ b/install/languages/en.php
@@ -124,6 +124,7 @@ If you are ready to proceed, click the Next button.",
'install:error:htaccess' => 'Unable to create an .htaccess',
'install:error:settings' => 'Unable to create the settings file',
'install:error:databasesettings' => 'Unable to connect to the database with these settings.',
+ 'install:error:database_prefix' => 'Invalid characters in database prefix',
'install:error:oldmysql' => 'MySQL must be version 5.0 or above. Your server is using %s.',
'install:error:nodatabase' => 'Unable to use database %s. It may not exist.',
'install:error:cannotloadtables' => 'Cannot load the database tables',
@@ -131,7 +132,7 @@ If you are ready to proceed, click the Next button.",
'install:error:readsettingsphp' => 'Unable to read engine/settings.example.php',
'install:error:writesettingphp' => 'Unable to write engine/settings.php',
'install:error:requiredfield' => '%s is required',
- 'install:error:relative_path' => 'We don\'t think "%s" is an absoluate path for your data directory',
+ 'install:error:relative_path' => 'We don\'t think "%s" is an absolute path for your data directory',
'install:error:datadirectoryexists' => 'Your data directory %s does not exist.',
'install:error:writedatadirectory' => 'Your data directory %s is not writable by the web server.',
'install:error:locationdatadirectory' => 'Your data directory %s must be outside of your install path for security.',
@@ -154,7 +155,7 @@ If you are ready to proceed, click the Next button.",
'install:error:rewrite:htaccess:cannot_copy' => 'A unknown error occurred while creating the .htaccess file. You need to manually copy htaccess_dist to .htaccess in Elgg\'s directory.',
'install:error:rewrite:altserver' => 'The rewrite rules test failed. You need to configure your web server with Elgg\'s rewrite rules and try again.',
'install:error:rewrite:unknown' => 'Oof. We couldn\'t figure out what kind of web server is running on your server and it failed the rewrite rules. We cannot offer any specific advice. Please check the troubleshooting link.',
- 'install:warning:rewrite:unknown' => 'Your server does not support automatic testing of the rewrite rules. You can continue the installation, but you may experience problems with your site. You can manually test the rewrite rules by clicking this link: <a href="%s" target="_blank">test</a>. You will see the word success if the rules are working.',
+ 'install:warning:rewrite:unknown' => 'Your server does not support automatic testing of the rewrite rules and your browser does not support checking via JavaScript. You can continue the installation, but you may experience problems with your site. You can manually test the rewrite rules by clicking this link: <a href="%s" target="_blank">test</a>. You will see the word success if the rules are working.',
);
add_translation("en", $english);
diff --git a/js/lib/elgglib.js b/js/lib/elgglib.js
index 81209ebd0..a8e187f1d 100644
--- a/js/lib/elgglib.js
+++ b/js/lib/elgglib.js
@@ -283,7 +283,7 @@ elgg.normalize_url = function(url) {
}
// 'javascript:'
- else if (url.indexOf('javascript:') === 0) {
+ else if (url.indexOf('javascript:') === 0 || url.indexOf('mailto:') === 0 ) {
return url;
}
@@ -347,8 +347,12 @@ elgg.system_messages = function(msgs, delay, type) {
msgs.forEach(appendMessage);
- $(messages_html.join('')).appendTo(systemMessages)
- .animate({opacity: '1.0'}, delay).fadeOut('slow');
+ if (type != 'error') {
+ $(messages_html.join('')).appendTo(systemMessages)
+ .animate({opacity: '1.0'}, delay).fadeOut('slow');
+ } else {
+ $(messages_html.join('')).appendTo(systemMessages);
+ }
};
/**
@@ -470,8 +474,8 @@ elgg.parse_str = function(string) {
re = /([^&=]+)=?([^&]*)/g;
while (result = re.exec(string)) {
- key = decodeURIComponent(result[1])
- value = decodeURIComponent(result[2])
+ key = decodeURIComponent(result[1].replace(/\+/g, ' '));
+ value = decodeURIComponent(result[2].replace(/\+/g, ' '));
params[key] = value;
}
diff --git a/js/lib/languages.js b/js/lib/languages.js
index 439df3e27..d218cbc4f 100644
--- a/js/lib/languages.js
+++ b/js/lib/languages.js
@@ -4,7 +4,8 @@
*/
elgg.provide('elgg.config.translations');
-elgg.config.language = "<?php echo elgg_get_config('language'); ?>" || 'en';
+// default language - required by unit tests
+elgg.config.language = 'en';
/**
* Analagous to the php version. Merges translations for a
@@ -27,13 +28,11 @@ elgg.reload_all_translations = function(language) {
var lang = language || elgg.get_language();
var url, options;
- if (elgg.config.simplecache_enabled) {
- url = 'cache/js/default/languages/' + lang + '.' + elgg.config.lastcache + '.js';
- options = {};
- } else {
- url = 'ajax/view/js/languages';
- options = {data: {language: lang}};
- }
+ url = 'ajax/view/js/languages';
+ options = {data: {language: lang}};
+ if (elgg.config.simplecache_enabled) {
+ options.data.lc = elgg.config.lastcache;
+ }
options['success'] = function(json) {
elgg.add_translation(lang, json);
@@ -94,4 +93,4 @@ elgg.config.translations.init = function() {
elgg.reload_all_translations();
};
-elgg.register_hook_handler('boot', 'system', elgg.config.translations.init);
+elgg.register_hook_handler('boot', 'system', elgg.config.translations.init); \ No newline at end of file
diff --git a/js/lib/security.js b/js/lib/security.js
index 61aa1cfcd..9c12f8586 100644
--- a/js/lib/security.js
+++ b/js/lib/security.js
@@ -7,6 +7,8 @@ elgg.security.token = {};
elgg.security.tokenRefreshFailed = false;
+elgg.security.tokenRefreshTimer = null;
+
/**
* Sets the currently active security token and updates all forms and links on the current page.
*
@@ -30,31 +32,17 @@ elgg.security.setToken = function(json) {
};
/**
- * Security tokens time out, so lets refresh those every so often.
+ * Security tokens time out so we refresh those every so often.
*
- * @todo handle error and bad return data
+ * @private
*/
elgg.security.refreshToken = function() {
elgg.action('security/refreshtoken', function(data) {
-
- // @todo might want to move this to setToken() once http://trac.elgg.org/ticket/3127
- // is implemented. It's here right now to avoid soggy code.
- if (!data || !(data.output.__elgg_ts && data.output.__elgg_token)) {
- elgg.register_error(elgg.echo('js:security:token_refresh_failed', [elgg.get_site_url()]));
- elgg.security.tokenRefreshFailed = true;
-
- // don't setToken because we refresh every 5 minutes and tokens are good for 1
- // hour by default
- return;
- }
-
- // if had problems last time, let them know it's working now
- if (elgg.security.tokenRefreshFailed) {
- elgg.system_message(elgg.echo('js:security:token_refreshed', [elgg.get_site_url()]));
- elgg.security.tokenRefreshFailed = false;
+ if (data && data.output.__elgg_ts && data.output.__elgg_token) {
+ elgg.security.setToken(data.output);
+ } else {
+ clearInterval(elgg.security.tokenRefreshTimer);
}
-
- elgg.security.setToken(data.output);
});
};
@@ -112,9 +100,8 @@ elgg.security.addToken = function(data) {
};
elgg.security.init = function() {
- //refresh security token every 5 minutes
- //this is set in the js/elgg PHP view.
- setInterval(elgg.security.refreshToken, elgg.security.interval);
+ // elgg.security.interval is set in the js/elgg PHP view.
+ elgg.security.tokenRefreshTimer = setInterval(elgg.security.refreshToken, elgg.security.interval);
};
elgg.register_hook_handler('boot', 'system', elgg.security.init); \ No newline at end of file
diff --git a/js/lib/session.js b/js/lib/session.js
index fa3d60aa9..a8d52733c 100644
--- a/js/lib/session.js
+++ b/js/lib/session.js
@@ -14,9 +14,9 @@ elgg.provide('elgg.session');
* {string} options[domain]
* {boolean} options[secure]
*
- * @return {string} The value of the cookie, if only name is specified
+ * @return {string|undefined} The value of the cookie, if only name is specified. Undefined if no value set
*/
-elgg.session.cookie = function (name, value, options) {
+elgg.session.cookie = function(name, value, options) {
var cookies = [], cookie = [], i = 0, date, valid = true;
//elgg.session.cookie()
@@ -47,21 +47,19 @@ elgg.session.cookie = function (name, value, options) {
}
cookies.push(name + '=' + value);
-
- if (elgg.isNumber(options.expires)) {
- if (elgg.isNumber(options.expires)) {
- date = new Date();
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
- } else if (options.expires.toUTCString) {
- date = options.expires;
- } else {
- valid = false;
- }
-
- if (valid) {
- cookies.push('expires=' + date.toUTCString());
- }
- }
+
+ if (options.expires) {
+ if (elgg.isNumber(options.expires)) {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else if (options.expires.toUTCString) {
+ date = options.expires;
+ }
+
+ if (date) {
+ cookies.push('expires=' + date.toUTCString());
+ }
+ }
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
diff --git a/js/lib/ui.js b/js/lib/ui.js
index c26cbe389..413078b4f 100644
--- a/js/lib/ui.js
+++ b/js/lib/ui.js
@@ -10,7 +10,7 @@ elgg.ui.init = function () {
});
$('.elgg-system-messages li').animate({opacity: 0.9}, 6000);
- $('.elgg-system-messages li').fadeOut('slow');
+ $('.elgg-system-messages li.elgg-state-success').fadeOut('slow');
$('[rel=toggle]').live('click', elgg.ui.toggles);
@@ -257,7 +257,7 @@ elgg.ui.loginHandler = function(hook, type, params, options) {
* @return void
*/
elgg.ui.initDatePicker = function() {
- if ($('.elgg-input-date').length) {
+ var loadDatePicker = function() {
$('.elgg-input-date').datepicker({
// ISO-8601
dateFormat: 'yy-mm-dd',
@@ -273,9 +273,21 @@ elgg.ui.initDatePicker = function() {
}
}
});
+ };
+
+ if ($('.elgg-input-date').length && elgg.get_language() == 'en') {
+ loadDatePicker();
+ } else if ($('.elgg-input-date').length) {
+ elgg.get({
+ url: elgg.config.wwwroot + 'vendors/jquery/i18n/jquery.ui.datepicker-'+ elgg.get_language() +'.js',
+ dataType: "script",
+ cache: true,
+ success: loadDatePicker,
+ error: loadDatePicker // english language is already loaded.
+ });
}
};
elgg.register_hook_handler('init', 'system', elgg.ui.init);
elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);
-elgg.register_hook_handler('getOptions', 'ui.popup', elgg.ui.loginHandler); \ No newline at end of file
+elgg.register_hook_handler('getOptions', 'ui.popup', elgg.ui.loginHandler);
diff --git a/js/lib/ui.river.js b/js/lib/ui.river.js
new file mode 100644
index 000000000..c103fabb3
--- /dev/null
+++ b/js/lib/ui.river.js
@@ -0,0 +1,14 @@
+elgg.provide('elgg.ui.river');
+
+elgg.ui.river.init = function() {
+ $('#elgg-river-selector').change(function() {
+ var url = window.location.href;
+ if (window.location.search.length) {
+ url = url.substring(0, url.indexOf('?'));
+ }
+ url += '?' + $(this).val();
+ elgg.forward(url);
+ });
+};
+
+elgg.register_hook_handler('init', 'system', elgg.ui.river.init); \ No newline at end of file
diff --git a/js/lib/ui.userpicker.js b/js/lib/ui.userpicker.js
index 7298da114..669b84cdb 100644
--- a/js/lib/ui.userpicker.js
+++ b/js/lib/ui.userpicker.js
@@ -107,11 +107,11 @@ elgg.userpicker.viewUser = function(info) {
* @return Object
*/
elgg.userpicker.getSearchParams = function(obj) {
- if (obj.element.siblings('[name=match_on]').attr('checked')) {
+ if (obj.element.parent('.elgg-user-picker').find('input[name=match_on]').attr('checked')) {
return {'match_on[]': 'friends', 'term' : obj.term};
} else {
return {'match_on[]': 'users', 'term' : obj.term};
}
};
-elgg.register_hook_handler('init', 'system', elgg.userpicker.init); \ No newline at end of file
+elgg.register_hook_handler('init', 'system', elgg.userpicker.init);
diff --git a/js/lib/ui.widgets.js b/js/lib/ui.widgets.js
index d897564b4..26020bb4b 100644
--- a/js/lib/ui.widgets.js
+++ b/js/lib/ui.widgets.js
@@ -58,6 +58,7 @@ elgg.ui.widgets.add = function(event) {
handler: type,
owner_guid: elgg.get_page_owner_guid(),
context: $("input[name='widget_context']").val(),
+ show_access: $("input[name='show_access']").val(),
default_widgets: $("input[name='default_widgets']").val() || 0
},
success: function(json) {
@@ -107,6 +108,11 @@ elgg.ui.widgets.move = function(event, ui) {
* @return void
*/
elgg.ui.widgets.remove = function(event) {
+ if (confirm(elgg.echo('deleteconfirm')) == false) {
+ event.preventDefault();
+ return;
+ }
+
var $widget = $(this).closest('.elgg-module-widget');
// if widget type is single instance type, enable the add buton
diff --git a/js/tests/ElggLibTest.js b/js/tests/ElggLibTest.js
index a29ebf743..bd39e7fb3 100644
--- a/js/tests/ElggLibTest.js
+++ b/js/tests/ElggLibTest.js
@@ -78,6 +78,7 @@ ElggLibTest.prototype.testNormalizeUrl = function() {
['https://example.com', 'https://example.com'],
['http://example-time.com', 'http://example-time.com'],
['//example.com', '//example.com'],
+ ['mod/my_plugin/graphics/image.jpg', elgg.config.wwwroot + 'mod/my_plugin/graphics/image.jpg'],
['ftp://example.com/file', 'ftp://example.com/file'],
['mailto:brett@elgg.org', 'mailto:brett@elgg.org'],
@@ -99,7 +100,7 @@ ElggLibTest.prototype.testNormalizeUrl = function() {
['/mod/plugin/file.php', elgg.config.wwwroot + 'mod/plugin/file.php'],
['/mod/plugin/file.php?p=v&p2=v2', elgg.config.wwwroot + 'mod/plugin/file.php?p=v&p2=v2'],
['/rootfile.php', elgg.config.wwwroot + 'rootfile.php'],
- ['/rootfile.php?p=v&p2=v2', elgg.config.wwwroot + 'rootfile.php?p=v&p2=v2'],
+ ['/rootfile.php?p=v&p2=v2', elgg.config.wwwroot + 'rootfile.php?p=v&p2=v2']
].forEach(function(args) {
assertEquals(args[1], elgg.normalize_url(args[0]));
@@ -127,3 +128,13 @@ ElggLibTest.prototype.testParseUrl = function() {
});
};
+ElggLibTest.prototype.testParseStr = function() {
+
+ [
+ ["A+%2B+B=A+%2B+B", {"A + B": "A + B"}]
+
+ ].forEach(function(args) {
+ assertEquals(args[1], elgg.parse_str(args[0]));
+ });
+};
+
diff --git a/js/tests/README b/js/tests/README
index 4f86b27c6..f43c0c89d 100644
--- a/js/tests/README
+++ b/js/tests/README
@@ -12,9 +12,10 @@ based debuggers. Visit its wiki at the Google Code site for more information.
Sample Usage
============
1. Put jar file in the base directory of Elgg
- 2. Run the server: java -jar JsTestDriver-1.3.3d.jar --port 4224
+ 2. Run the server: java -jar JsTestDriver-1.3.5.jar --port 4224
3. Point a web browser at http://localhost:4224
- 4. Run the tests: java -jar JsTestDriver-1.3.3d.jar --config js/tests/jsTestDriver.conf --basePath . --tests all
+ 4. Click "Capture this browser"
+ 5. Run the tests: java -jar JsTestDriver-1.3.5.jar --config js/tests/jsTestDriver.conf --basePath . --tests all
Configuration Hints
diff --git a/languages/en.php b/languages/en.php
index e48f992d7..07407d1e1 100644
--- a/languages/en.php
+++ b/languages/en.php
@@ -56,6 +56,7 @@ $english = array(
'DatabaseException:DBSetupIssues' => "There were a number of issues: ",
'DatabaseException:ScriptNotFound' => "Elgg couldn't find the requested database script at %s.",
'DatabaseException:InvalidQuery' => "Invalid query",
+ 'DatabaseException:InvalidDBLink' => "Connection to database was lost.",
'IOException:FailedToLoadGUID' => "Failed to load new %s from GUID:%d",
'InvalidParameterException:NonElggObject' => "Passing a non-ElggObject to an ElggObject constructor!",
@@ -75,10 +76,10 @@ $english = array(
'ElggPlugin:MissingID' => 'Missing plugin ID (guid %s)',
'ElggPlugin:NoPluginPackagePackage' => 'Missing ElggPluginPackage for plugin ID %s (guid %s)',
- 'ElggPluginPackage:InvalidPlugin:MissingFile' => 'Missing file %s in package',
- 'ElggPluginPackage:InvalidPlugin:InvalidDependency' => 'Invalid dependency type "%s"',
- 'ElggPluginPackage:InvalidPlugin:InvalidProvides' => 'Invalid provides type "%s"',
- 'ElggPluginPackage:InvalidPlugin:CircularDep' => 'Invalid %s dependency "%s" in plugin %s. Plugins cannot conflict with or require something they provide!',
+ 'ElggPluginPackage:InvalidPlugin:MissingFile' => 'The required file "%s" is missing.',
+ 'ElggPluginPackage:InvalidPlugin:InvalidDependency' => 'Its manifest contains an invalid dependency type "%s".',
+ 'ElggPluginPackage:InvalidPlugin:InvalidProvides' => 'Its manifest contains an invalid provides type "%s".',
+ 'ElggPluginPackage:InvalidPlugin:CircularDep' => 'There is an invalid %s dependency "%s" in plugin %s. Plugins cannot conflict with or require something they provide!',
'ElggPlugin:Exception:CannotIncludeFile' => 'Cannot include %s for plugin %s (guid: %s) at %s.',
'ElggPlugin:Exception:CannotRegisterViews' => 'Cannot open views dir for plugin %s (guid: %s) at %s.',
@@ -104,6 +105,8 @@ $english = array(
'ElggPlugin:Dependencies:Priority:Before' => 'Before %s',
'ElggPlugin:Dependencies:Priority:Uninstalled' => '%s is not installed',
'ElggPlugin:Dependencies:Suggests:Unsatisfied' => 'Missing',
+
+ 'ElggPlugin:Dependencies:ActiveDependent' => 'There are other plugins that list %s as a dependency. You must disable the following plugins before disabling this one: %s',
'ElggPlugin:InvalidAndDeactivated' => '%s is an invalid plugin and has been deactivated.',
@@ -174,7 +177,7 @@ $english = array(
'ConfigurationException:NoSiteID' => "No site ID has been specified.",
'SecurityException:APIAccessDenied' => "Sorry, API access has been disabled by the administrator.",
'SecurityException:NoAuthMethods' => "No authentication methods were found that could authenticate this API request.",
- 'SecurityException:ForwardFailedToRedirect' => 'Redirect could not be issued due to headers already being sent. Halting execution for security. Search http://docs.elgg.org/ for more information.',
+ 'SecurityException:ForwardFailedToRedirect' => 'Redirect could not be issued due to headers already being sent. Halting execution for security. Output started in file %s at line %d. Search http://docs.elgg.org/ for more information.',
'InvalidParameterException:APIMethodOrFunctionNotSet' => "Method or function not set in call in expose_method()",
'InvalidParameterException:APIParametersArrayStructure' => "Parameters array structure is incorrect for call to expose method '%s'",
'InvalidParameterException:UnrecognisedHttpMethod' => "Unrecognised http method %s for api method '%s'",
@@ -228,18 +231,14 @@ $english = array(
'LoginException:PasswordFailure' => 'We could not log you in. Please check your username/email and password.',
'LoginException:AccountLocked' => 'Your account has been locked for too many log in failures.',
'LoginException:ChangePasswordFailure' => 'Failed current password check.',
-
- 'memcache:notinstalled' => 'PHP memcache module not installed, you must install php5-memcache',
- 'memcache:noservers' => 'No memcache servers defined, please populate the $CONFIG->memcache_servers variable',
- 'memcache:versiontoolow' => 'Memcache needs at least version %s to run, you are running %s',
- 'memcache:noaddserver' => 'Multiple server support disabled, you may need to upgrade your PECL memcache library',
+ 'LoginException:Unknown' => 'We could not log you in due to an unknown error.',
'deprecatedfunction' => 'Warning: This code uses the deprecated function \'%s\' and is not compatible with this version of Elgg',
'pageownerunavailable' => 'Warning: The page owner %d is not accessible!',
'viewfailure' => 'There was an internal failure in the view %s',
'changebookmark' => 'Please change your bookmark for this page',
- 'noaccess' => 'This content has been removed, is invalid, or you do not have permission to view it.',
+ 'noaccess' => 'You need to login to view this content or the content has been removed or you do not have permission to view it.',
'error:missing_data' => 'There was some data missing in your request',
'error:default' => 'Oops...something went wrong.',
@@ -362,12 +361,13 @@ $english = array(
'friendspicker:chararray' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'avatar' => 'Avatar',
+ 'avatar:noaccess' => "You're not allowed to edit this user's avatar",
'avatar:create' => 'Create your avatar',
'avatar:edit' => 'Edit avatar',
'avatar:preview' => 'Preview',
'avatar:upload' => 'Upload a new avatar',
'avatar:current' => 'Current avatar',
- 'avatar:revert' => 'Revert your avatar to the default icon',
+ 'avatar:remove' => 'Remove your avatar and set the default icon',
'avatar:crop:title' => 'Avatar cropping tool',
'avatar:upload:instructions' => "Your avatar is displayed throughout the site. You can change it as often as you'd like. (File formats accepted: GIF, JPG or PNG)",
'avatar:create:instructions' => 'Click and drag a square below to match how you want your avatar cropped. A preview will appear in the box on the right. When you are happy with the preview, click \'Create your avatar\'. This cropped version will be used throughout the site as your avatar.',
@@ -376,8 +376,8 @@ $english = array(
'avatar:resize:fail' => 'Resize of the avatar failed',
'avatar:crop:success' => 'Cropping the avatar succeeded',
'avatar:crop:fail' => 'Avatar cropping failed',
- 'avatar:revert:success' => 'Reverting the avatar succeeded',
- 'avatar:revert:fail' => 'Avatar revert failed',
+ 'avatar:remove:success' => 'Removing the avatar succeeded',
+ 'avatar:remove:fail' => 'Avatar remove failed',
'profile:edit' => 'Edit profile',
'profile:aboutme' => "About me",
@@ -408,10 +408,13 @@ $english = array(
'profile:editdefault:delete:fail' => 'Removed default profile item field failed',
'profile:editdefault:delete:success' => 'Profile field deleted',
'profile:defaultprofile:reset' => 'Profile fields reset to the system default',
- 'profile:resetdefault' => 'Reset default profile',
+ 'profile:resetdefault' => 'Reset profile fields to system defaults',
+ 'profile:resetdefault:confirm' => 'Are you sure you want to delete your custom profile fields?',
'profile:explainchangefields' => "You can replace the existing profile fields with your own using the form below. \n\n Give the new profile field a label, for example, 'Favorite team', then select the field type (eg. text, url, tags), and click the 'Add' button. To re-order the fields drag on the handle next to the field label. To edit a field label - click on the label's text to make it editable. \n\n At any time you can revert back to the default profile set up, but you will lose any information already entered into custom fields on profile pages.",
'profile:editdefault:success' => 'New profile field added',
'profile:editdefault:fail' => 'Default profile could not be saved',
+ 'profile:field_too_long' => 'Cannot save your profile information because the "%s" section is too long.',
+ 'profile:noaccess' => "You do not have permission to edit this profile.",
/**
@@ -439,6 +442,8 @@ $english = array(
'river:ingroup' => 'in the group %s',
'river:none' => 'No activity',
'river:update' => 'Update for %s',
+ 'river:delete:success' => 'River item has been deleted',
+ 'river:delete:fail' => 'River item could not be deleted',
'river:widget:title' => "Activity",
'river:widget:description' => "Display latest activity",
@@ -450,7 +455,7 @@ $english = array(
* Notifications
*/
'notifications:usersettings' => "Notification settings",
- 'notifications:methods' => "Please specify which methods you want to permit.",
+ 'notifications:methods' => "Select your notification methods.",
'notification:method:email' => 'Email',
'notifications:usersettings:save:ok' => "Your notification settings were successfully saved.",
@@ -503,6 +508,7 @@ $english = array(
'registration:notemail' => 'The email address you provided does not appear to be a valid email address.',
'registration:userexists' => 'That username already exists',
'registration:usernametooshort' => 'Your username must be a minimum of %u characters long.',
+ 'registration:usernametoolong' => 'Your username is too long. It can have a maximum of %u characters.',
'registration:passwordtooshort' => 'The password must be a minimum of %u characters long.',
'registration:dupeemail' => 'This email address has already been registered.',
'registration:invalidchars' => 'Sorry, your username contains the character %s which is invalid. The following characters are invalid: %s',
@@ -580,6 +586,7 @@ $english = array(
'admin:users' => "Users",
'admin:users:online' => 'Currently Online',
'admin:users:newest' => 'Newest',
+ 'admin:users:admins' => 'Administrators',
'admin:users:add' => 'Add New User',
'admin:users:description' => "This admin panel allows you to control user settings for your site. Choose an option below to get started.",
'admin:users:adduser:label' => "Click here to add a new user...",
@@ -590,10 +597,24 @@ $english = array(
'admin:settings' => 'Settings',
'admin:settings:basic' => 'Basic Settings',
'admin:settings:advanced' => 'Advanced Settings',
+ 'admin:settings:advanced/site_secret' => 'Site Secret',
'admin:site:description' => "This admin panel allows you to control global settings for your site. Choose an option below to get started.",
+ 'admin:settings:advanced:site_secret' => 'Site Secret',
'admin:site:opt:linktext' => "Configure site...",
'admin:site:access:warning' => "Changing the access setting only affects the permissions on content created in the future.",
+ 'admin:site:secret:intro' => 'Elgg uses a key to create security tokens for various purposes.',
+ 'admin:site:secret_regenerated' => "Your site secret has been regenerated.",
+ 'admin:site:secret:regenerate' => "Regenerate site secret",
+ 'admin:site:secret:regenerate:help' => "Note: This may inconvenience some users by invalidating tokens used in \"remember me\" cookies, e-mail validation requests, invitation codes, etc.",
+ 'site_secret:current_strength' => 'Key Strength',
+ 'site_secret:strength:weak' => "Weak",
+ 'site_secret:strength_msg:weak' => "We strongly recommend that you regenerate your site secret.",
+ 'site_secret:strength:moderate' => "Moderate",
+ 'site_secret:strength_msg:moderate' => "We recommend you regenerate your site secret for the best site security.",
+ 'site_secret:strength:strong' => "Strong",
+ 'site_secret:strength_msg:strong' => "&#x2713; Your site secret is sufficiently strong.",
+
'admin:dashboard' => 'Dashboard',
'admin:widget:online_users' => 'Online users',
'admin:widget:online_users:help' => 'Lists the users currently on the site',
@@ -660,6 +681,7 @@ $english = array(
'admin:notices:could_not_delete' => 'Could not delete notice.',
+ 'item:object:admin_notice' => 'Admin notice',
'admin:options' => 'Admin options',
@@ -667,7 +689,7 @@ $english = array(
/**
* Plugins
*/
- 'plugins:disabled' => 'Plugins are being loaded because a file named "disabled" is in the mod directory.',
+ 'plugins:disabled' => 'Plugins are not being loaded because a file named "disabled" is in the mod directory.',
'plugins:settings:save:ok' => "Settings for the %s plugin were saved successfully.",
'plugins:settings:save:fail' => "There was a problem saving settings for the %s plugin.",
'plugins:usersettings:save:ok' => "User settings for the %s plugin were saved successfully.",
@@ -685,8 +707,11 @@ $english = array(
'admin:plugins:label:author' => "Author",
'admin:plugins:label:copyright' => "Copyright",
'admin:plugins:label:categories' => 'Categories',
- 'admin:plugins:label:licence' => "Licence",
+ 'admin:plugins:label:licence' => "License",
'admin:plugins:label:website' => "URL",
+ 'admin:plugins:label:repository' => "Code",
+ 'admin:plugins:label:bugtracker' => "Report issue",
+ 'admin:plugins:label:donate' => "Donate",
'admin:plugins:label:moreinfo' => 'more info',
'admin:plugins:label:version' => 'Version',
'admin:plugins:label:location' => 'Location',
@@ -694,7 +719,8 @@ $english = array(
'admin:plugins:warning:elgg_version_unknown' => 'This plugin uses a legacy manifest file and does not specify a compatible Elgg version. It probably will not work!',
'admin:plugins:warning:unmet_dependencies' => 'This plugin has unmet dependencies and cannot be activated. Check dependencies under more info.',
- 'admin:plugins:warning:invalid' => '%s is not a valid Elgg plugin. Check <a href="http://docs.elgg.org/Invalid_Plugin">the Elgg documentation</a> for troubleshooting tips.',
+ 'admin:plugins:warning:invalid' => 'This plugin is invalid: %s',
+ 'admin:plugins:warning:invalid:check_docs' => 'Check <a href="http://docs.elgg.org/Invalid_Plugin">the Elgg documentation</a> for troubleshooting tips.',
'admin:plugins:cannot_activate' => 'cannot activate',
'admin:plugins:set_priority:yes' => "Reordered %s.",
@@ -727,6 +753,7 @@ $english = array(
'admin:statistics:label:numusers' => "Number of users",
'admin:statistics:label:numonline' => "Number of users online",
'admin:statistics:label:onlineusers' => "Users online now",
+ 'admin:statistics:label:admins'=>"Admins",
'admin:statistics:label:version' => "Elgg version",
'admin:statistics:label:version:release' => "Release",
'admin:statistics:label:version:version' => "Version",
@@ -741,6 +768,9 @@ $english = array(
'admin:server:label:mem_avail' => 'Memory available',
'admin:server:label:mem_used' => 'Memory used',
'admin:server:error_log' => "Web server's error log",
+ 'admin:server:label:post_max_size' => 'POST maximum size',
+ 'admin:server:label:upload_max_filesize' => 'Upload maximum size',
+ 'admin:server:warning:post_max_too_small' => '(Note: post_max_size must be larger than this value to support uploads of this size)',
'admin:user:label:search' => "Find users:",
'admin:user:label:searchbutton' => "Search",
@@ -808,7 +838,7 @@ $english = array(
*/
'river:all' => 'All Site Activity',
'river:mine' => 'My Activity',
- 'river:friends' => 'Friends Activty',
+ 'river:friends' => 'Friends Activity',
'river:select' => 'Show %s',
'river:comments:more' => '+%u more',
'river:generic_comment' => 'commented on %s %s',
@@ -861,6 +891,7 @@ $english = array(
'new' => 'New',
'add' => 'Add',
'create' => 'Create',
+ 'remove' => 'Remove',
'revert' => 'Revert',
'site' => 'Site',
@@ -871,6 +902,7 @@ $english = array(
'down' => 'Down',
'top' => 'Top',
'bottom' => 'Bottom',
+ 'back' => 'Back',
'invite' => "Invite",
@@ -887,6 +919,7 @@ $english = array(
'total' => 'Total',
'learnmore' => "Click here to learn more.",
+ 'unknown_error' => 'Unknown error',
'content' => "content",
'content:latest' => 'Latest activity',
@@ -934,6 +967,7 @@ $english = array(
*/
'deleteconfirm' => "Are you sure you want to delete this item?",
+ 'deleteconfirm:plural' => "Are you sure you want to delete these items?",
'fileexists' => "A file has already been uploaded. To replace it, select it below:",
/**
@@ -1041,6 +1075,10 @@ Once you have logged in, we highly recommend that you change your password.
'upgrading' => 'Upgrading...',
'upgrade:db' => 'Your database was upgraded.',
'upgrade:core' => 'Your Elgg installation was upgraded.',
+ 'upgrade:unlock' => 'Unlock upgrade',
+ 'upgrade:unlock:confirm' => "The database is locked for another upgrade. Running concurrent upgrades is dangerous. You should only continue if you know there is not another upgrade running. Unlock?",
+ 'upgrade:locked' => "Cannot upgrade. Another upgrade is running. To clear the upgrade lock, visit the Admin section.",
+ 'upgrade:unlock:success' => "Upgrade unlocked successfully.",
'upgrade:unable_to_upgrade' => 'Unable to upgrade.',
'upgrade:unable_to_upgrade_info' =>
'This installation cannot be upgraded because legacy views
@@ -1055,6 +1093,8 @@ Once you have logged in, we highly recommend that you change your password.
'update:twitter_api:deactivated' => 'Twitter API (previously Twitter Service) was deactivated during the upgrade. Please activate it manually if required.',
'update:oauth_api:deactivated' => 'OAuth API (previously OAuth Lib) was deactivated during the upgrade. Please activate it manually if required.',
+ 'upgrade:site_secret_warning:moderate' => "You are encouraged to regenerate your site key to improve system security. See Configure &gt; Settings &gt; Site Secret",
+ 'upgrade:site_secret_warning:weak' => "You are strongly encouraged to regenerate your site key to improve system security. See Configure &gt; Settings &gt; Site Secret",
'deprecated:function' => '%s() was deprecated by %s()',
@@ -1071,7 +1111,7 @@ Once you have logged in, we highly recommend that you change your password.
'email:settings' => "Email settings",
'email:address:label' => "Your email address",
- 'email:save:success' => "New email address saved. Verification is requested.",
+ 'email:save:success' => "New email address saved.",
'email:save:fail' => "Your new email address could not be saved.",
'friend:newfriend:subject' => "%s has made you a friend!",
@@ -1121,7 +1161,7 @@ If you requested this, click on the link below. Otherwise ignore this email.
'comments:count' => "%s comments",
- 'riveraction:annotation:generic_comment' => '%s commented on %s',
+ 'river:comment:object:default' => '%s commented on %s',
'generic_comments:add' => "Leave a comment",
'generic_comments:post' => "Post comment",
@@ -1135,6 +1175,7 @@ If you requested this, click on the link below. Otherwise ignore this email.
'generic_comment:failure' => "An unexpected error occurred when adding your comment.",
'generic_comment:none' => 'No comments',
'generic_comment:title' => 'Comment by %s',
+ 'generic_comment:on' => '%s on %s',
'generic_comment:email:subject' => 'You have a new comment!',
'generic_comment:email:body' => "You have a new comment on your item \"%s\" from %s. It reads:
@@ -1168,9 +1209,11 @@ You cannot reply to this email.",
* Action gatekeeper
*/
'actiongatekeeper:missingfields' => 'Form is missing __token or __ts fields',
- 'actiongatekeeper:tokeninvalid' => "We encountered an error (token mismatch). This probably means that the page you were using expired.",
+ 'actiongatekeeper:tokeninvalid' => "The page you were using had expired. Please try again.",
'actiongatekeeper:timeerror' => 'The page you were using has expired. Please refresh and try again.',
'actiongatekeeper:pluginprevents' => 'A extension has prevented this form from being submitted.',
+ 'actiongatekeeper:uploadexceeded' => 'The size of file(s) uploaded exceeded the limit set by your site administrator',
+ 'actiongatekeeper:crosssitelogin' => "Sorry, logging in from a different domain is not permitted. Please try again.",
/**
@@ -1189,7 +1232,7 @@ You cannot reply to this email.",
* Javascript
*/
- 'js:security:token_refresh_failed' => 'Cannot contact %s. You may experience problems saving content.',
+ 'js:security:token_refresh_failed' => 'Failed to contact %s. You may experience problems saving content. Please refresh this page.',
'js:security:token_refreshed' => 'Connection to %s restored!',
/**
diff --git a/mod/admins b/mod/admins
deleted file mode 160000
-Subproject b7687e6db0624ac7aadc50b56f2972211ebfeac
diff --git a/mod/audio_html5 b/mod/audio_html5
deleted file mode 160000
-Subproject ad0149bc78bf67809d9c2636fe05987e2598b0c
diff --git a/mod/beechat/README b/mod/beechat/README
new file mode 100644
index 000000000..5ff3f8467
--- /dev/null
+++ b/mod/beechat/README
@@ -0,0 +1,23 @@
+Beechat the first XMPP chat for Elgg
+====================================
+
+Beechat is a facebook like chat for elgg using the XMPP protocol. It requires the XMPP serveur ejabberd.
+
+Installation
+------------
+
+French Documentation
+
+http://github.com/beechannels/beechat/wikis/guide-dinstallation
+
+English Documentation
+
+http://github.com/beechannels/beechat/wikis/setup-guide
+
+Feedback
+--------
+
+We are relying on the [GitHub issues tracker][issues] linked from above for
+feedback. File bugs or other issues [here][issues].
+
+[issues]: http://github.com/beechannels/beechat/issues
diff --git a/mod/beechat/actions/get_connection.php b/mod/beechat/actions/get_connection.php
new file mode 100644
index 000000000..a31174179
--- /dev/null
+++ b/mod/beechat/actions/get_connection.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+
+ global $SESSION;
+
+ if ($SESSION->offsetExists('beechat_conn'))
+ echo $SESSION->offsetGet('beechat_conn');
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_details.php b/mod/beechat/actions/get_details.php
new file mode 100644
index 000000000..4944fc4a9
--- /dev/null
+++ b/mod/beechat/actions/get_details.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ gatekeeper();
+ header('Content-type: application/json');
+ $user = $_SESSION['user'];
+ $t = array('username' => $user->username,
+ 'password' => $user->password);
+
+ echo json_encode($t);
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_icons.php b/mod/beechat/actions/get_icons.php
new file mode 100644
index 000000000..33d447e2e
--- /dev/null
+++ b/mod/beechat/actions/get_icons.php
@@ -0,0 +1,52 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+ global $CONFIG;
+
+ if (!empty($_POST['beechat_roster_items_usernames']))
+ {
+ $rosterItemsUsernames = explode(',', $_POST['beechat_roster_items_usernames']);
+ /*foreach ($rosterItemsUsernames as $rosterItem)
+ {
+ }*/
+ $userFriendsEntities = $_SESSION['user']->getFriends('', 0, 0);
+
+ $res = array();
+ foreach ($rosterItemsUsernames as $value)
+ {
+ $found = false;
+ $splitjid = explode('@', $value);
+ $jid_name = $splitjid[0];
+ $jid_host = $splitjid[1];
+ foreach ($userFriendsEntities as $friend)
+ {
+ if ((strtolower($friend->username) == strtolower($jid_name) && $jid_host == elgg_get_plugin_setting("domain", "beechat")))
+ {
+ $res[$value] = array('small' => $friend->getIcon('small'), 'tiny' => $friend->getIcon('tiny'));
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ $base = $CONFIG->wwwroot."mod/profile/graphics/default";
+ $res[$value] = array('small' => $base."small.gif", 'tiny' => $base."tiny.gif");
+ }
+ }
+ echo json_encode($res);
+ }
+ else
+ echo json_encode(null);
+
+ exit();
+
+?>
diff --git a/mod/beechat/actions/get_state.php b/mod/beechat/actions/get_state.php
new file mode 100644
index 000000000..6cfd2f725
--- /dev/null
+++ b/mod/beechat/actions/get_state.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+
+ global $SESSION;
+
+ if ($SESSION->offsetExists('beechat_state'))
+ echo $SESSION->offsetGet('beechat_state');
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_statuses.php b/mod/beechat/actions/get_statuses.php
new file mode 100644
index 000000000..6f7620beb
--- /dev/null
+++ b/mod/beechat/actions/get_statuses.php
@@ -0,0 +1,41 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+ $usernames = get_input('beechat_roster_items_usernames');
+ if (!empty($usernames))
+ {
+ $iconSize = 'small';
+ $rosterItemsUsernames = explode(',', $usernames);
+ $userFriendsEntities = $_SESSION['user']->getFriends('', 1000000000, 0);
+
+ $res = array();
+ foreach ($rosterItemsUsernames as $value)
+ {
+ foreach ($userFriendsEntities as $friend)
+ {
+ if (strtolower($friend->username) == strtolower($value))
+ {
+ $status = get_entities_from_metadata("state", "current", "object", "status", $friend->get('guid'));
+ $res[$value] = ($status != false) ? $status[0]->description : '';
+ break;
+ }
+ }
+ }
+ echo json_encode($res);
+ }
+ else
+ echo json_encode(null);
+
+ exit();
+
+?>
diff --git a/mod/beechat/actions/join_groupchat.php b/mod/beechat/actions/join_groupchat.php
new file mode 100644
index 000000000..c694d7957
--- /dev/null
+++ b/mod/beechat/actions/join_groupchat.php
@@ -0,0 +1,15 @@
+<?php
+
+$user = elgg_get_logged_in_user_entity();
+$group = get_entity(get_input('group_guid'));
+
+if ($user && $group) {
+ if (!check_entity_relationship($user->guid, 'groupchat', $group->guid)) {
+ error_log("joinen ok");
+ add_entity_relationship($user->guid, 'groupchat', $group->guid);
+}
+}
+echo "OK";
+error_log("join ok");
+
+?>
diff --git a/mod/beechat/actions/leave_groupchat.php b/mod/beechat/actions/leave_groupchat.php
new file mode 100644
index 000000000..e04ab8846
--- /dev/null
+++ b/mod/beechat/actions/leave_groupchat.php
@@ -0,0 +1,12 @@
+<?php
+
+$user = elgg_get_logged_in_user_entity();
+$group = get_entity(get_input('group_guid'));
+
+if ($user && $group) {
+ if (check_entity_relationship($user->guid, 'groupchat', $group->guid))
+ remove_entity_relationship($user->guid, 'groupchat', $group->guid);
+}
+error_log("leave ok");
+echo "OK";
+?>
diff --git a/mod/beechat/actions/save_state.php b/mod/beechat/actions/save_state.php
new file mode 100644
index 000000000..f8a61c580
--- /dev/null
+++ b/mod/beechat/actions/save_state.php
@@ -0,0 +1,29 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+// gatekeeper();
+
+ if (elgg_is_logged_in())
+ {
+
+ global $SESSION;
+
+ if (!empty($_POST['beechat_state']))
+ {
+ $SESSION->offsetSet('beechat_state', $_POST['beechat_state']);
+ }
+ elseif (!empty($_POST['beechat_conn']))
+ {
+ $SESSION->offsetSet('beechat_conn', get_input('beechat_conn'));
+ }
+ }
+ exit();
+?>
diff --git a/mod/beechat/classes/BeechatSync.php b/mod/beechat/classes/BeechatSync.php
new file mode 100644
index 000000000..e0a2f90b8
--- /dev/null
+++ b/mod/beechat/classes/BeechatSync.php
@@ -0,0 +1,37 @@
+<?php
+
+class BeechatSync {
+ static function onFriendCreate($event, $object_type, $relationship) {
+ if ($relationship->relationship == 'friendrequest') {
+ elgg_load_library('elgg:beechat');
+ $friend = get_entity($relationship->guid_two);
+ // create friend request
+ ejabberd_friend_request(elgg_get_logged_in_user_entity(), $friend);
+ }
+ }
+ static function onFriendDelete($event, $object_type, $relationship) {
+ if ($relationship->relationship == 'friendrequest') {
+ elgg_load_library('elgg:beechat');
+ $subject = get_entity($relationship->guid_two);
+ // here friend is guid_one because is the one initiating
+ $friend = get_entity($relationship->guid_one);
+ $friends = $friend->isFriendsWith($subject->guid);
+ if ($friends) {
+ // accept friend request
+ ejabberd_friend_accept(elgg_get_logged_in_user_entity(), $friend);
+ } else {
+ // decline friend request
+ ejabberd_friend_deny(elgg_get_logged_in_user_entity(), $friend);
+ }
+ }
+ elseif ($relationship->relationship == 'friend') {
+ elgg_load_library('elgg:beechat');
+ $subject = get_entity($relationship->guid_one);
+ $friend = get_entity($relationship->guid_two);
+ // delete friendship
+ ejabberd_friend_remove(elgg_get_logged_in_user_entity(), $friend);
+ }
+
+ }
+
+}
diff --git a/mod/beechat/disablechat.php b/mod/beechat/disablechat.php
new file mode 100644
index 000000000..490fb327b
--- /dev/null
+++ b/mod/beechat/disablechat.php
@@ -0,0 +1,8 @@
+<?php
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+ if (elgg_is_logged_in()) {
+ elgg_get_logged_in_user_entity()->chatenabled = false;
+ system_message(elgg_echo("beechat:disabled"));
+ }
+ forward($_SERVER['HTTP_REFERER']);
+?>
diff --git a/mod/beechat/enablechat.php b/mod/beechat/enablechat.php
new file mode 100644
index 000000000..5d3de7e2a
--- /dev/null
+++ b/mod/beechat/enablechat.php
@@ -0,0 +1,8 @@
+<?php
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+ if (elgg_is_logged_in()) {
+ elgg_get_logged_in_user_entity()->chatenabled = true;
+ system_message(elgg_echo("beechat:enabled"));
+ }
+ forward($_SERVER['HTTP_REFERER']);
+?>
diff --git a/mod/beechat/graphics/icons/bullet_arrow_down.png b/mod/beechat/graphics/icons/bullet_arrow_down.png
new file mode 100644
index 000000000..9b23c06d7
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_arrow_down.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_arrow_up.png b/mod/beechat/graphics/icons/bullet_arrow_up.png
new file mode 100644
index 000000000..24df0f421
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_arrow_up.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_black.png b/mod/beechat/graphics/icons/bullet_black.png
new file mode 100644
index 000000000..57619706d
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_black.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_blue.png b/mod/beechat/graphics/icons/bullet_blue.png
new file mode 100644
index 000000000..a7651ec8a
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_blue.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_delete.png b/mod/beechat/graphics/icons/bullet_delete.png
new file mode 100644
index 000000000..bd6271b24
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_delete.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_error.png b/mod/beechat/graphics/icons/bullet_error.png
new file mode 100644
index 000000000..bca2b491f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_error.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_green.png b/mod/beechat/graphics/icons/bullet_green.png
new file mode 100644
index 000000000..058ad261f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_green.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_orange.png b/mod/beechat/graphics/icons/bullet_orange.png
new file mode 100644
index 000000000..fa63024e5
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_orange.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_pink.png b/mod/beechat/graphics/icons/bullet_pink.png
new file mode 100644
index 000000000..0c9f73e3f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_pink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_purple.png b/mod/beechat/graphics/icons/bullet_purple.png
new file mode 100644
index 000000000..52ba5036b
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_purple.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_red.png b/mod/beechat/graphics/icons/bullet_red.png
new file mode 100644
index 000000000..0cd803115
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_red.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_star.png b/mod/beechat/graphics/icons/bullet_star.png
new file mode 100644
index 000000000..fab774a32
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_star.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_white.png b/mod/beechat/graphics/icons/bullet_white.png
new file mode 100644
index 000000000..a9af8d44b
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_white.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_yellow.png b/mod/beechat/graphics/icons/bullet_yellow.png
new file mode 100644
index 000000000..6469cea7e
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_yellow.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/chat_icon.png b/mod/beechat/graphics/icons/chat_icon.png
new file mode 100644
index 000000000..0e6d844bd
--- /dev/null
+++ b/mod/beechat/graphics/icons/chat_icon.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/cog_edit.png b/mod/beechat/graphics/icons/cog_edit.png
new file mode 100644
index 000000000..47b75a456
--- /dev/null
+++ b/mod/beechat/graphics/icons/cog_edit.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/comment_edit.png b/mod/beechat/graphics/icons/comment_edit.png
new file mode 100644
index 000000000..73db110df
--- /dev/null
+++ b/mod/beechat/graphics/icons/comment_edit.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_evilgrin.png b/mod/beechat/graphics/icons/emoticon_evilgrin.png
new file mode 100644
index 000000000..817bd509b
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_evilgrin.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_grin.png b/mod/beechat/graphics/icons/emoticon_grin.png
new file mode 100644
index 000000000..fc60c5e1c
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_grin.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_happy.png b/mod/beechat/graphics/icons/emoticon_happy.png
new file mode 100644
index 000000000..6b7336e17
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_happy.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_smile.png b/mod/beechat/graphics/icons/emoticon_smile.png
new file mode 100644
index 000000000..ade431851
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_smile.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_surprised.png b/mod/beechat/graphics/icons/emoticon_surprised.png
new file mode 100644
index 000000000..4520cfc55
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_surprised.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_tongue.png b/mod/beechat/graphics/icons/emoticon_tongue.png
new file mode 100644
index 000000000..ecafd2ffc
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_tongue.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_unhappy.png b/mod/beechat/graphics/icons/emoticon_unhappy.png
new file mode 100644
index 000000000..fd5d030ef
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_unhappy.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_waii.png b/mod/beechat/graphics/icons/emoticon_waii.png
new file mode 100644
index 000000000..458f93611
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_waii.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_wink.png b/mod/beechat/graphics/icons/emoticon_wink.png
new file mode 100644
index 000000000..a631949b5
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_wink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/heart.png b/mod/beechat/graphics/icons/heart.png
new file mode 100644
index 000000000..d9ee53e59
--- /dev/null
+++ b/mod/beechat/graphics/icons/heart.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/house.png b/mod/beechat/graphics/icons/house.png
new file mode 100644
index 000000000..fed62219f
--- /dev/null
+++ b/mod/beechat/graphics/icons/house.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/muc_icon.png b/mod/beechat/graphics/icons/muc_icon.png
new file mode 100644
index 000000000..efdd60f12
--- /dev/null
+++ b/mod/beechat/graphics/icons/muc_icon.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/notification_pink.png b/mod/beechat/graphics/icons/notification_pink.png
new file mode 100644
index 000000000..f40c184f9
--- /dev/null
+++ b/mod/beechat/graphics/icons/notification_pink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/pointer.png b/mod/beechat/graphics/icons/pointer.png
new file mode 100644
index 000000000..4e50a0f9a
--- /dev/null
+++ b/mod/beechat/graphics/icons/pointer.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/resultset_next.png b/mod/beechat/graphics/icons/resultset_next.png
new file mode 100644
index 000000000..e252606d3
--- /dev/null
+++ b/mod/beechat/graphics/icons/resultset_next.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/resultset_previous.png b/mod/beechat/graphics/icons/resultset_previous.png
new file mode 100644
index 000000000..18f9cc109
--- /dev/null
+++ b/mod/beechat/graphics/icons/resultset_previous.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/statuses.png b/mod/beechat/graphics/icons/statuses.png
new file mode 100644
index 000000000..e409f61a9
--- /dev/null
+++ b/mod/beechat/graphics/icons/statuses.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/vcard.png b/mod/beechat/graphics/icons/vcard.png
new file mode 100644
index 000000000..c02f315d2
--- /dev/null
+++ b/mod/beechat/graphics/icons/vcard.png
Binary files differ
diff --git a/mod/beechat/languages/en.php b/mod/beechat/languages/en.php
new file mode 100644
index 000000000..38f03be98
--- /dev/null
+++ b/mod/beechat/languages/en.php
@@ -0,0 +1,45 @@
+<?php
+
+$en_array = array(
+ 'beechat:icons:home' => 'Home',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Available',
+ 'beechat:availability:dnd' => 'Do not disturb',
+ 'beechat:availability:away' => 'Away',
+ 'beechat:availability:xa' => 'Extended away',
+ 'beechat:availability:offline' => 'Offline',
+
+ 'beechat:connection:state:offline' => 'Offline',
+ 'beechat:connection:state:connecting' => 'Connecting...',
+ 'beechat:connection:state:authenticating' => 'Authenticating...',
+ 'beechat:connection:state:online' => 'Online',
+ 'beechat:connection:state:failed' => 'Failed',
+ 'beechat:connection:state:disconnecting' => 'Disconnecting...',
+
+ 'beechat:chat:self' => 'Me',
+ 'beechat:chat:composing' => ' is typing.',
+
+ 'beechat:box:minimize' => 'Minimize',
+ 'beechat:box:close' => 'Close',
+ 'beechat:box:showhide' => 'Show/Hide this chat window',
+ 'beechat:enabled' => 'Chat enabled',
+ 'beechat:disabled' => 'Chat disabled',
+ 'beechat:enablechat' => 'Enable chat',
+ 'beechat:disablechat' => 'Disable chat',
+ 'beechat:domain' => 'Chat domain',
+ 'beechat:groupdomain' => 'MUC domain',
+ 'beechat:chatroom' => 'Group chat',
+ 'beechat:dbname' => 'Database name',
+ 'beechat:dbhost' => 'Database host',
+ 'beechat:dbuser' => 'Database user',
+ 'beechat:dbuser' => 'notification:method:xmpp',
+ 'notification:method:xmpp' => 'Xmpp/Jabber',
+ 'beechat:dbpassword' => 'Database password',
+ 'beechat:xmlrpcip' => 'Ejabberd IP'
+ );
+
+add_translation('en', $en_array);
+
+?>
diff --git a/mod/beechat/languages/es.php b/mod/beechat/languages/es.php
new file mode 100644
index 000000000..78f009ce9
--- /dev/null
+++ b/mod/beechat/languages/es.php
@@ -0,0 +1,43 @@
+<?php
+
+$es_array = array(
+ 'beechat:icons:home' => 'Home',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Disponible',
+ 'beechat:availability:dnd' => 'No molestar',
+ 'beechat:availability:away' => 'Fuera',
+ 'beechat:availability:xa' => 'Fuera bastante tiempo',
+ 'beechat:availability:offline' => 'Desconectado',
+
+ 'beechat:connection:state:offline' => 'Desconectado',
+ 'beechat:connection:state:connecting' => 'Conectando...',
+ 'beechat:connection:state:authenticating' => 'Iniciando...',
+ 'beechat:connection:state:online' => 'Conectado',
+ 'beechat:connection:state:failed' => 'Fallo',
+ 'beechat:connection:state:disconnecting' => 'Desconectando...',
+
+ 'beechat:chat:self' => 'Yo',
+ 'beechat:chat:composing' => ' esta escribiendo.',
+
+ 'beechat:box:minimize' => 'Minimizar',
+ 'beechat:box:close' => 'Cerrar',
+ 'beechat:box:showhide' => 'Mostrar/Ocultar esta ventana de chat',
+ 'beechat:enabled' => 'Chat activado',
+ 'beechat:disabled' => 'Chat desactivado',
+ 'beechat:enablechat' => 'Activar chat',
+ 'beechat:disablechat' => 'Desactivar chat',
+ 'beechat:domain' => 'Dominio Chat',
+ 'beechat:groupdomain' => 'Dominio MUC',
+ 'beechat:chatroom' => 'Chat del grupo',
+ 'beechat:dbname' => 'Database name',
+ 'beechat:dbhost' => 'Database host',
+ 'beechat:dbuser' => 'Database user',
+ 'beechat:dbpassword' => 'Database password',
+ 'beechat:xmlrpcip' => 'Ejabberd IP'
+ );
+
+add_translation('es', $es_array);
+
+?>
diff --git a/mod/beechat/languages/fr.php b/mod/beechat/languages/fr.php
new file mode 100644
index 000000000..58b0eac3a
--- /dev/null
+++ b/mod/beechat/languages/fr.php
@@ -0,0 +1,32 @@
+<?php
+
+$fr_array = array(
+ 'beechat:icons:home' => 'Accueil',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Disponible',
+ 'beechat:availability:dnd' => 'Ne pas déranger',
+ 'beechat:availability:away' => 'Absent',
+ 'beechat:availability:xa' => 'Absence prolongée',
+ 'beechat:availability:offline' => 'Hors ligne',
+
+ 'beechat:connection:state:offline' => 'Hors ligne',
+ 'beechat:connection:state:connecting' => 'Connexion...',
+ 'beechat:connection:state:authenticating' => 'Authentification...',
+ 'beechat:connection:state:online' => 'En ligne',
+ 'beechat:connection:state:failed' => 'Échec',
+ 'beechat:connection:state:disconnecting' => 'Déconnexion...',
+
+ 'beechat:chat:self' => 'Moi',
+ 'beechat:chat:composing' => ' est en train d\'écrire.',
+
+ 'beechat:box:minimize' => 'Diminuer',
+ 'beechat:box:close' => 'Fermer',
+ 'beechat:box:showhide' => 'Montrer/Cacher cette fenêtre de chat'
+
+ );
+
+add_translation('fr', $fr_array);
+
+?>
diff --git a/mod/beechat/lib/beechat.php b/mod/beechat/lib/beechat.php
new file mode 100644
index 000000000..bf002d648
--- /dev/null
+++ b/mod/beechat/lib/beechat.php
@@ -0,0 +1,250 @@
+<?
+/*
+ allow_change_subj
+ allow_private_messages
+ allow_query_users
+ allow_user_invites
+ anonymous
+ logging
+ max_users
+ members_by_default
+ members_only
+ moderated
+ password
+ password_protected
+ persistent
+ public
+ public_list
+ title
+
+muc_room_set_affiliation struct[{name, String}, {service, String},
+ {jid, String}, {affiliation, Affiliation}] Integer
+
+
+*/
+ //$request = xmlrpc_encode_request('muc_online_rooms', "global", (array('encoding' => 'utf-8')));
+
+
+function ejabberd_xmlrpc_send($request)
+{
+ $context = stream_context_create(array('http' => array(
+ 'method' => "POST",
+ 'header' => "User-Agent: XMLRPC::Client mod_xmlrpc\r\n" .
+ "Content-Type: text/xml\r\n" .
+ "Content-Length: ".strlen($request),
+ 'content' => $request
+ )));
+
+ $file = file_get_contents("http://".elgg_get_plugin_setting("xmlrpcip", "beechat").":4560/RPC2", false, $context);
+
+ $response = xmlrpc_decode($file);
+ if (is_array($response) && xmlrpc_is_fault($response)) {
+ trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
+ } else {
+ // print_r($response);
+ }
+}
+
+function ejabberd_xmlrpc_command($command, $params)
+{
+ //error_log("send xmlrpc: ".$command);
+ $request = xmlrpc_encode_request($command, $params, (array('encoding' => 'utf-8')));
+ return ejabberd_xmlrpc_send($request);
+}
+
+function xmpp_escape($name) {
+ // http://xmpp.org/extensions/xep-0106.html#escaping
+ $name = str_replace(' ', '\\20', $name);
+ $name = str_replace('"', '\\22', $name);
+ $name = str_replace('&', '\\26', $name);
+ $name = str_replace("'", '\\27', $name);
+ $name = str_replace('/', '\\2f', $name);
+ $name = str_replace(';', '\\3a', $name);
+ $name = str_replace('<', '\\3c', $name);
+ $name = str_replace('>', '\\3e', $name);
+ $name = str_replace('@', '\\40', $name);
+ $name = str_replace('\\', '\\5c', $name);
+ return $name;
+}
+
+class EjabberdMucRoom {
+ function __construct($group) {
+ $this->group = $group;
+ }
+ function setOption($name, $value) {
+ $group = $this->group;
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "option"=>$name,
+ "value"=>$value);
+ ejabberd_xmlrpc_command('muc_room_change_option', $param);
+ }
+ function addMember($member) {
+ //"outcast" | "none" | "member" | "admin" | "owner"
+ $group = $this->group;
+ if ($member->guid === $group->owner_guid)
+ $affiliation = "owner";
+ elseif ($group->canEdit($member->guid))
+ $affiliation = "admin";
+ else
+ $affiliation = "member";
+ $this->setAffiliation($member, $affiliation);
+ }
+
+ function setAffiliation($member, $affiliation) {
+ $group = $this->group;
+ $param = array("name" => elgg_get_friendly_title($group->name),
+ "service" => elgg_get_plugin_setting("groupdomain", "beechat"),
+ "jid" => xmpp_escape($member->username) . '@' . elgg_get_plugin_setting("domain", "beechat"),
+ "affiliation" => $affiliation);
+ ejabberd_xmlrpc_command('muc_room_set_affiliation', $param);
+ //echo "set affiliation ".$member->username."<br/>";
+ }
+}
+
+function ejabberd_create_group($group)
+{
+ //echo "creating " . $group->name . "<br/>";
+ // create room
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "server"=>elgg_get_plugin_setting("domain", "beechat"));
+ ejabberd_xmlrpc_command('create_muc_room', $param);
+
+ // persistency
+
+ $room = new EjabberdMucRoom($group);
+ $room->setOption("persistent", true);
+ $room->setOption("title", $group->name);
+ // open to public?
+ if ($group->isPublicMembership()) {
+ $room->setOption("members_only", false);
+ }
+ else
+ $room->setOption("members_only", true);
+
+ if ($group->access_id === ACCESS_PUBLIC) {
+ $room->setOption("public_list", true);
+ $room->setOption("public", true);
+ }
+ else {
+ $room->setOption("public_list", false);
+ $room->setOption("public", false);
+ }
+ $members = $group->getMembers(0);
+ foreach($members as $member) {
+ $room->addMember($member);
+ }
+ $room->addMember(get_entity($group->owner_guid));
+}
+
+function ejabberd_destroy_group($group)
+{
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "server"=>elgg_get_plugin_setting("domain", "beechat"));
+ ejabberd_xmlrpc_command('delete_muc_room', $param);
+}
+
+function ejabberd_getjid($user, $do_external=false)
+{
+ if ($user->foreign || ($do_external && $user->alias && get_plugin_usersetting("usealias", $user->guid,"openid_client"))) {
+ if ($user->foreign)
+ $webid = $user->webid;
+ else
+ $webid = $user->alias;
+ if (strpos($webid, 'http') === 0) {
+ // http or https addresses
+ $hostparts = parse_url($webid);
+ $urlparts = explode('/', $webid);
+ $host = $hostparts['host'];
+ $username = $urlparts[count($urlparts)-1];
+ } else {
+ if (strpos($webid, ':') > 0) {
+ $webidparts = explode(':', $webid);
+ $hostparts = explode('@',$webidparts[1]);
+ } else {
+ $hostparts = explode('@',$webid);
+ }
+ $username = $hostparts[0];
+ $host = $hostparts[1];
+ }
+ }
+ else {
+ $username = $user->username;
+ $host = elgg_get_plugin_setting("domain", "beechat");
+ }
+ return xmpp_escape($username) . '@' . $host;
+}
+
+function ejabberd_friend_command($user, $friend, $command, $is_out) // $user adds $friend
+{
+ error_log(" * ".$friend->username."->".ejabberd_getjid($user)." ".$command);
+ if ($friend->foreign) {
+ error_log(" * beechat: friend is foreign!");
+ return;
+ }
+ $param = array("user" => elgg_get_friendly_title($friend->username),
+ "server" => elgg_get_plugin_setting("domain", "beechat"),
+ "from" => ejabberd_getjid($user),
+ "subs" => $command);
+ if ($is_out) {
+ error_log("out");
+ ejabberd_xmlrpc_command('send_roster_request_out', $param);
+ }
+ else {
+ $param['reason'] = 'unknown';
+ ejabberd_xmlrpc_command('send_roster_request_in', $param);
+ }
+}
+
+
+function ejabberd_friend_request($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_request');
+ ejabberd_friend_command($friend, $user, 'subscribe', true); // out:$user : $friend
+ error_log('ejabberd_friend_requested');
+}
+function ejabberd_friend_accept($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_accept');
+ ejabberd_friend_command($friend, $user, 'subscribed', true);
+ // following might be needed to have symmetry (and important for remote)
+ if ($friend->foreign) {
+ // following is needed for xmpp nodes
+ ejabberd_friend_command($friend, $user, 'subscribe', true);
+ }
+ // ejabberd_friend_command($friend, $user, 'subscribed', false);
+ // following can't be faked
+ if (!$friend->foreign)
+ ejabberd_friend_command($user, $friend, 'subscribed', true);
+ error_log('ejabberd_friend_accepted');
+}
+function ejabberd_friend_deny($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friedeny');
+ ejabberd_friend_command($friend, $user, 'unsubscribed', true);
+}
+function ejabberd_friend_remove($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_remove');
+ if ($friend->foreign) {
+ ejabberd_friend_command($friend, $user, 'unsubscribed', true);
+ ejabberd_friend_command($friend, $user, 'unsubscribed', false);
+ }
+ else
+ ejabberd_friend_command($friend, $user, 'unsubscribed', false);
+ if (!$friend->foreign)
+ ejabberd_friend_command($user, $friend, 'unsubscribed', false);
+ error_log('ejabberd_friend_removed');
+}
+
+/*function ejabberd_send_chat($from, $to, $body) { // $user adds $friend
+ $param = array("body"=>$body,
+ "from"=>$from,
+ "to"=>$to);
+ ejabberd_xmlrpc_command('send_chat_message', $param);
+}*/
+
+
+?>
diff --git a/mod/beechat/manifest.xml b/mod/beechat/manifest.xml
new file mode 100644
index 000000000..ad948fdb4
--- /dev/null
+++ b/mod/beechat/manifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Beechat</name>
+ <author>Beechannels + Lorea dev</author>
+ <version>1.8.0</version>
+ <category>widget</category>
+ <description>XMPP chat for Elgg.</description>
+ <website>https://lorea.org</website>
+ <copyright>(C) Beechanels 2009, Lorea 2009-2013</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+</plugin_manifest>
diff --git a/mod/beechat/migrate.php b/mod/beechat/migrate.php
new file mode 100644
index 000000000..20bee7973
--- /dev/null
+++ b/mod/beechat/migrate.php
@@ -0,0 +1,88 @@
+<?php
+require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+global $CONFIG;
+admin_gatekeeper();
+
+// It's possible large upgrades could exceed the max execution time.
+set_time_limit(0);
+
+// get ejabberd db settings from elgg.
+$domain = elgg_get_plugin_setting("domain", "beechat");
+$dbname = elgg_get_plugin_setting("dbname", "beechat");
+$dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+$dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+$dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");
+
+$jabber_domain = $domain;
+
+$dbh_elgg = null;
+$dbh_ejabberd = null;
+
+$dsn_elgg = 'mysql:dbname='.$CONFIG->dbname.';host='.$CONFIG->dbhost;
+$dsn_ejabberd = 'mysql:dbname='.$dbname.';host='.$dbhost;
+
+$dbprefix = $CONFIG->dbprefix;
+
+$user = $dbuser;
+$password = $dbpassword;
+
+$relationship_type = 'friend';
+
+$counter = 0;
+
+try {
+ $dbh_elgg = new PDO($dsn_elgg, $CONFIG->dbuser, $CONFIG->dbpass);
+
+ $sql = 'SELECT guid, name, username FROM '.$dbprefix.'users_entity';
+ $sth = $dbh_elgg->prepare($sql);
+ $sth->execute();
+
+ $users = array();
+ while ($row = $sth->fetch(PDO::FETCH_ASSOC))
+ $users[$row['guid']] = $row;
+
+ $sql = 'SELECT guid_one, guid_two FROM '.$dbprefix.'entity_relationships ';
+ $sql .= 'WHERE relationship = ?;';
+ $sth = $dbh_elgg->prepare($sql);
+
+ $sth->bindParam(1, $relationship_type);
+ $sth->execute();
+
+ $dbh_ejabberd = new PDO($dsn_ejabberd, $user, $password);
+ $dbh_ejabberd->beginTransaction();
+
+ while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
+ $sql = 'INSERT INTO rosterusers (username, jid, nick, subscription, ask, server, type) VALUES (?, ?, ?, ?, ?, ?, ?);';
+ $sth_ejabberd = $dbh_ejabberd->prepare($sql);
+
+
+ $username = $users[$row['guid_one']]['username'];
+ $jid = $users[$row['guid_two']]['username'] . '@' . $jabber_domain;
+ $nick = $users[$row['guid_two']]['name'];
+ $subscription = 'B';
+ $ask = 'N';
+ $server = 'N';
+ $type = 'item';
+
+ $sth_ejabberd->execute(array($username, $jid, $nick, $subscription, $ask, $server, $type));
+
+ $counter += 1;
+ if ($counter % 1000 == 0) {
+ //error_log( $username . ' registered ' . $jid . ' as a friend in his roster.' . "\n");
+ error_log("importing relations into jabber: $counter");
+ }
+ }
+
+ $dbh_ejabberd->commit();
+
+ $dbh_elgg = null;
+ $dbh_ejabberd = null;
+} catch (PDOException $e) {
+ if ($dbh_ejabberd != null)
+ $dbh_ejabberd->rollBack();
+ echo $e->getMessage();
+}
+?>
+
+
diff --git a/mod/beechat/migrategroups.php b/mod/beechat/migrategroups.php
new file mode 100644
index 000000000..4e3ef3f2b
--- /dev/null
+++ b/mod/beechat/migrategroups.php
@@ -0,0 +1,18 @@
+<?
+require_once(dirname(__FILE__) . "/lib.php");
+
+admin_gatekeeper();
+
+// groups disabled for now
+exit();
+
+$groups = elgg_get_entities(array('types'=>'group','limit'=>0));
+elgg_set_ignore_access(true);
+foreach($groups as $group) {
+ echo "migrating " . $group->name . "<br/>";
+ ejabberd_create_group($group);
+}
+echo "done!";
+elgg_set_ignore_access(false);
+
+?>
diff --git a/mod/beechat/sounds/newmessage.wav b/mod/beechat/sounds/newmessage.wav
new file mode 100644
index 000000000..58cccd0e6
--- /dev/null
+++ b/mod/beechat/sounds/newmessage.wav
Binary files differ
diff --git a/mod/beechat/start.php b/mod/beechat/start.php
new file mode 100644
index 000000000..4e4e4bb40
--- /dev/null
+++ b/mod/beechat/start.php
@@ -0,0 +1,184 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ GLOBAL $CONFIG;
+
+ function beechat_create_group($event, $object_type, $object)
+ {
+ elgg_load_library('elgg:beechat');
+ ejabberd_create_group($object);
+ }
+
+ function beechat_delete_group($event, $object_type, $object)
+ {
+ elgg_load_library('elgg:beechat');
+ ejabberd_destroy_group($object);
+ }
+
+ function beechat_member_add($event, $object_type, $object)
+ {
+ if ($object->relationship === "member") {
+ elgg_load_library('elgg:beechat');
+ $user = get_entity($object->guid_one);
+ $group = get_entity($object->guid_two);
+ $room = new EjabberdMucRoom($group);
+ $room->addMember($user);
+ }
+ }
+
+ function beechat_member_delete($event, $object_type, $object)
+ {
+ if ($object->relationship === "member") {
+ elgg_load_library('elgg:beechat');
+ $user = get_entity($object->guid_one);
+ $group = get_entity($object->guid_two);
+ $room = new EjabberdMucRoom($group);
+ $room->setAffiliation($user, "none");
+ }
+ }
+
+ function beechat_init()
+ {
+ $pluginspath = elgg_get_plugins_path();
+ elgg_register_library('elgg:beechat', $pluginspath . 'beechat/lib/beechat.php');
+
+ elgg_register_event_handler('pagesetup', 'system', 'beechat_pagesetup');
+ // group actions disabled for now
+ /*if (elgg_get_plugin_setting("groupdomain", "beechat")) {
+ register_elgg_event_handler('create', 'group', 'beechat_create_group');
+ register_elgg_event_handler('delete', 'group', 'beechat_delete_group');
+ }
+ register_elgg_event_handler('create', 'member', 'beechat_member_add');
+ register_elgg_event_handler('delete', 'relationship', 'beechat_member_delete');*/
+
+
+ $actions_path = $pluginspath . 'beechat/actions/';
+ //elgg_register_action('beechat/join_groupchat', $actions_path . 'join_groupchat.php');
+ //elgg_register_action('beechat/leave_groupchat', $actions_path . 'leave_groupchat.php');
+ elgg_register_action('beechat/get_statuses', $actions_path . 'get_statuses.php');
+ elgg_register_action('beechat/get_icons', $actions_path . 'get_icons.php');
+ elgg_register_action('beechat/get_details', $actions_path . 'get_details.php');
+ elgg_register_action('beechat/get_connection', $actions_path . 'get_connection.php');
+ elgg_register_action('beechat/get_state', $actions_path . 'get_state.php');
+ elgg_register_action('beechat/save_state', $actions_path . 'save_state.php');
+
+ /*register_elgg_event_handler('create', 'friendrequest', 'beechat_xmpp_add_friendx');
+ #register_plugin_hook('action', 'friends/add', 'beechat_xmpp_add_friend', 1000);
+ register_plugin_hook('river_update', 'river_update', 'beechat_xmpp_approve_friendx');
+ register_plugin_hook('river_update_foreign', 'river_update', 'beechat_xmpp_approve_friendx');
+ #register_plugin_hook('action', 'friendrequest/approve', 'beechat_xmpp_approve_friend', 1000);
+
+
+ register_plugin_hook('action', 'friendrequest/decline', 'beechat_xmpp_decline_friend', 1000);
+ register_plugin_hook('action', 'friends/remove', 'beechat_xmpp_remove_friend', 1000);*/
+
+ // new friend sync
+ elgg_register_event_handler('delete', 'friend', array('BeechatSync', 'onFriendDelete'));
+ //elgg_register_event_handler('create', 'friendrequest', array('BeechatSync', 'onFriendCreate'));
+ elgg_register_event_handler('delete', 'friendrequest', array('BeechatSync', 'onFriendDelete'));
+
+
+
+ elgg_extend_view('js/initialise_elgg', 'js/json2.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.cookie.min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.scrollTo-min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.serialScroll-min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/b64.js');
+ elgg_extend_view('js/initialise_elgg', 'js/sha1.js');
+ elgg_extend_view('js/initialise_elgg', 'js/md5.js');
+ elgg_extend_view('js/initialise_elgg', 'js/strophe.min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/strophe.muc.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.tools.min.js');
+ elgg_extend_view('css', 'beechat/screen.css');
+ elgg_extend_view('js/initialise_elgg', 'beechat/beechat.js');
+ elgg_extend_view('page/elements/head', 'beechat/beechat.userjs');
+
+ elgg_extend_view('page/elements/foot', 'beechat/beechat');
+
+ $domain = elgg_get_plugin_setting("domain", "beechat");
+ //$group_domain = elgg_get_plugin_setting("groupdomain", "beechat");
+ /*$dbname = elgg_get_plugin_setting("dbname", "beechat");
+ $dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+ $dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+ $dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");*/
+
+ global $CONFIG;
+ $CONFIG->chatsettings['domain'] = $domain;
+ //$CONFIG->chatsettings['groupdomain'] = $group_domain;
+
+ register_notification_handler('xmpp', 'beechat_notifications');
+ // register_plugin_hook('notify:entity:message','object','beechat_notifications_msg');
+ }
+
+ function beechat_notifications($from, $to, $subject, $topic, $params = array()) {
+ ejabberd_send_chat($to, "<div>".$topic."</div>");
+ }
+
+
+ function beechat_friendly_title($title) {
+ // need this because otherwise seems elgg
+ // gets in some problem trying to call the view
+ //$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);
+ $title = preg_replace("/[^\w ]/","",$title);
+ $title = str_replace(" ","-",$title);
+ $title = str_replace("--","-",$title);
+ $title = trim($title);
+ $title = strtolower($title);
+ return $title;
+ }
+
+ function beechat_pagesetup()
+ {
+ global $CONFIG;
+ /*if (elgg_get_context() == 'group_profile' && elgg_is_logged_in()) {
+ if (elgg_get_plugin_setting("groupdomain", "beechat")) {
+ $user = elgg_get_logged_in_user_entity();
+ $group = elgg_get_page_owner_entity();
+ if (!$group || !($group instanceof ElggGroup))
+ return;
+ if ($user->chatenabled && elgg_get_plugin_setting("groupdomain", "beechat")) {
+ if ($group->isPublicMembership() || $group->isMember($user)) {
+ $item = new ElggMenuItem('chatroom', elgg_echo('beechat:chatroom'), "javascript:g_beechat_user.joinRoom('".beechat_friendly_title($group->name)."@".$CONFIG->chatsettings['groupdomain']."', '".$group->guid."')");
+ elgg_register_menu_item('page', 'item');
+ }
+ }
+ }
+ }
+ else*/if (elgg_get_context() == 'settings' && elgg_is_logged_in()) {
+ $is_enabled = elgg_get_logged_in_user_entity()->chatenabled;
+ $action = $is_enabled ? 'disable' : 'enable';
+ elgg_register_menu_item('page', array(
+ 'name' => 'beechat',
+ 'text'=> elgg_echo("beechat:{$action}chat"),
+ 'href' => $CONFIG->wwwroot . "mod/beechat/{$action}chat.php",
+ ));
+ }
+ }
+
+
+ function ejabberd_send_chat($user, $body) { // $user adds $friend
+ $from = 'notify@'.elgg_get_plugin_setting("domain", "beechat").'/net';
+ if ($user->alias) {
+
+ }
+ elgg_load_library('elgg:beechat');
+ $to = ejabberd_getjid($user, true);
+ //xmlrpc_set_type(&$body, "base64");
+ $param = array("body" => $body,
+ "from" => $from,
+ "to" => $to);
+ ejabberd_xmlrpc_command('send_html_message', $param);
+ }
+
+
+
+
+elgg_register_event_handler('init', 'system', 'beechat_init');
diff --git a/mod/beechat/views/default/beechat/beechat.js.php b/mod/beechat/views/default/beechat/beechat.js.php
new file mode 100644
index 000000000..09f4e8852
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.js.php
@@ -0,0 +1,2498 @@
+/**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+/** Globals
+ *
+ */
+g_beechat_user = null;
+g_beechat_roster_items = null;
+g_beechat_rooms = new Array();
+
+function debugXMPP(msg) {
+ try {
+ //console.log(msg)
+ }
+ catch (err) {
+ }
+ //$('#layout_footer').html($('#layout_footer').html()+'<br/>'+msg);
+}
+
+/** Class: BeeChat
+ * An object container for all BeeChat mod functions
+ *
+ */
+BeeChat = {
+ BOSH_SERVICE: '/http-bind/',
+ DOMAIN: '<?php echo $vars['config']->chatsettings['domain'] ?>',
+ RESOURCE: 'beebac',
+ INACTIVITY_PERIOD_LENGTH: 60,
+
+ NS: {
+ CHAT_STATES: 'http://jabber.org/protocol/chatstates'
+ },
+
+ Message: {
+ Types: {
+ NORMAL: 'normal',
+ CHAT: 'chat',
+ GROUPCHAT: 'groupchat',
+ HEADLINE: 'headline',
+ ERROR: 'error'
+ },
+
+ ChatStates: {
+ COMPOSING: 'composing',
+ PAUSED: 'paused',
+ ACTIVE: 'active',
+ INACTIVE: 'inactive',
+ GONE: 'gone'
+ }
+ },
+
+ IQ: {
+ Types: {
+ GET: 'get',
+ RESULT: 'result',
+ SET: 'set',
+ ERROR: 'error'
+ }
+ },
+
+ Presence: {
+ Types: {
+ UNAVAILABLE: 'unavailable',
+ SUBSCRIBE: 'subscribe',
+ SUBSCRIBED: 'subscribed',
+ UNSUBSCRIBE: 'unsubscribe',
+ UNSUBSCRIBED: 'unsubscribed',
+ PROBE: 'probe',
+ ERROR: 'error'
+ },
+
+ ChildElements: {
+ SHOW: 'show',
+ STATUS: 'status',
+ PRIORITY: 'priority'
+ },
+
+ ShowElements: {
+ CHAT: 'chat',
+ DND: 'dnd',
+ AWAY: 'away',
+ XA: 'xa'
+ }
+ },
+
+ Roster: {
+ DEFAULT_GROUP: 'Contacts'
+ },
+
+
+ Events: {
+ Identifiers: {
+ UPDATE_CONNECTION_STATE: 0,
+ UPDATE_ROSTER: 1,
+ RECV_PRESENCE: 2,
+ RECV_CHAT_MESSAGE: 3
+ },
+ Messages: {
+ ConnectionStates: {
+ CONNECTING: "<?php echo elgg_echo('beechat:connection:state:connecting'); ?>",
+ AUTHENTICATING: "<?php echo elgg_echo('beechat:connection:state:authenticating'); ?>",
+ FAILED: "<?php echo elgg_echo('beechat:connection:state:failed'); ?>",
+ DISCONNECTING: "<?php echo elgg_echo('beechat:connection:state:disconnecting'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:connection:state:offline'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:connection:state:online'); ?>"
+ }
+ }
+ }
+};
+
+
+/** Class: BeeChat.Core
+ * An object container for all BeeChat Core functions
+ *
+ */
+BeeChat.Core = {
+ ReferenceTables: {
+ AvailabilityRates: {
+ AVAILABLE: 0,
+ ONLINE: 0,
+ CHAT: 0,
+ DND: 1,
+ AWAY: 2,
+ XA: 3,
+ UNAVAILABLE: 10,
+ OFFLINE: 10
+ }
+ }
+};
+
+
+/** Class: BeeChat.Core.User
+ * Create a BeeChat.Core.User object
+ *
+ * Parameters:
+ * (String) jid - The user's jabber id
+ *
+ * Returns:
+ * A new BeeChat.Core.User.
+ */
+BeeChat.Core.User = function(jid)
+{
+ if (!(this instanceof arguments.callee))
+ return new BeeChat.Core.User(jid);
+
+ /** Private members
+ *
+ */
+ var _connection = null;
+ var _attached = false;
+ var _initialized = false;
+ var _jid = null;
+ var _roster = null;
+ var _msgTemp = [];
+ var _funcs = [];
+
+ /** Constructor
+ *
+ */
+ this.init = function(jid)
+ {
+ _jid = jid;
+ _roster = new BeeChat.Core.Roster();
+ }
+
+ /** Accessors
+ *
+ */
+ this.getConnection = function()
+ {
+ return _connection;
+ }
+
+ this.getJid = function()
+ {
+ return _jid;
+ }
+
+ this.getRoster = function()
+ {
+ return _roster;
+ }
+
+ this.isAttached = function()
+ {
+ return _attached;
+ }
+
+ this.isInitialized = function()
+ {
+ return _initialized;
+ }
+
+ /** Mutators
+ *
+ */
+ this.setInitialized = function(isInitialized)
+ {
+ _initialized = isInitialized;
+ }
+
+ /** Function: addObserver
+ * Add an observer for a specified type of event
+ *
+ * Parameters:
+ * (BeeChat.Events.Identifiers) eventType - The type of event to observer
+ * (Object) pFunc - A function to call when the event will be triggered
+ */
+ this.addObserver = function(eventType, pFunc)
+ {
+ if (jQuery.inArray(pFunc, _funcs) == -1) {
+ if (!_funcs[eventType])
+ _funcs[eventType] = [];
+ _funcs[eventType].push(pFunc);
+ }
+ }
+
+ /** Function: removeObserver
+ * Remove an observer
+ *
+ * Parameters:
+ * (Object) pFunc - The registered function
+ */
+ this.removeObserver = function(pFunc)
+ {
+ var index = null;
+
+ for (var key in _funcs) {
+ if (typeof _funcs[key] != 'object')
+ continue;
+ if ((index = jQuery.inArray(pFunc, _funcs[key])) != -1)
+ _funcs.splice(index, 1);
+ }
+ }
+
+ /** Function: connect
+ * Connect the user to the BOSH service
+ *
+ * Parameters:
+ * (String) password - The user's password
+ *
+ */
+ this.connect = function(password)
+ {
+ debugXMPP('connect');
+ if (_connection == null)
+ _connection = new Strophe.Connection(BeeChat.BOSH_SERVICE);
+ _connection.connect(_jid, password, _onConnect);
+ }
+
+ /** Function: attach
+ * Attach user's connection to an existing XMPP session
+ *
+ * Parameters:
+ * (String) sid - The SID of the existing XMPP session
+ * (String) rid - The RID of the existing XMPP session
+ */
+ this.attach = function(sid, rid)
+ {
+ if (_connection == null) {
+ _connection = new Strophe.Connection(BeeChat.BOSH_SERVICE);
+ }
+ _connection.attach(_jid, sid, rid, _onConnect);
+ _attached = true;
+ _onConnect(Strophe.Status.CONNECTED);
+ }
+
+ /** Function: disconnect
+ * Disconnect the user from the BOSH service
+ *
+ */
+ this.disconnect = function()
+ {
+ debugXMPP('disconnect');
+ if (_connection != null) {
+ _connection.disconnect();
+ _connection = null;
+ }
+ }
+
+ /** Function: requestSessionPause
+ * Request a session pause to the server connection manager
+ *
+ */
+ this.requestSessionPause = function()
+ {
+ var req = $build('body', {
+ rid: _connection.rid,
+ sid: _connection.sid,
+ pause: BeeChat.INACTIVITY_PERIOD_LENGTH,
+ xmlns: Strophe.NS.HTTPBIND
+ });
+
+ _attached = false;
+ _connection.send(req.tree());
+ }
+
+ /** Function: requestRoster
+ * Request a new roster to the server
+ *
+ */
+ this.requestRoster = function()
+ {
+ var req = $iq({from: _jid, type: BeeChat.IQ.Types.GET})
+ .c('query', {xmlns: Strophe.NS.ROSTER});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendInitialPresence
+ * Send initial presence to the server in order to signal availability for communications
+ *
+ */
+ this.sendInitialPresence = function()
+ {
+ _connection.send($pres().tree());
+ _initialized = true;
+ }
+
+ /** Function: sendChatMessage
+ * Send a chat message to the server
+ *
+ * Parameters:
+ * (String) addressee - The addressee of the chat message
+ * (String) msg - The chat message
+ *
+ */
+ this.sendChatMessage = function(addressee, msg, msgtype)
+ {
+ if (msgtype == null)
+ msgtype = BeeChat.Message.Types.CHAT;
+ var req = $msg({
+ type: msgtype,
+ to: addressee,
+ from: _connection.jid
+ }).c('body').t(msg).up().c(BeeChat.Message.ChatStates.ACTIVE, {xmlns: BeeChat.NS.CHAT_STATES});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendChatStateMessage
+ * Send a chat state message to the server
+ *
+ * Parameters:
+ * (String) addressee - The addressee of the chat state message
+ * (BeeChat.Message.ChatsState) state - The chat state that will be send
+ *
+ */
+ this.sendChatStateMessage = function(addressee, state)
+ {
+ var req = $msg({
+ type: BeeChat.Message.Types.CHAT,
+ to: addressee,
+ from: _connection.jid
+ }).c(state, {xmlns: BeeChat.NS.CHAT_STATES});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendPresenceAvailabiliy
+ * Send a detailed presence stanza to the server
+ *
+ * Parameters:
+ * (BeeChat.Presence.ShowElements) availability - The availability status
+ * (String) details - Detailed status information
+ *
+ */
+ this.sendPresenceAvailability = function(availability, details)
+ {
+ var req = $pres()
+ .c(BeeChat.Presence.ChildElements.SHOW).t(availability).up()
+ .c(BeeChat.Presence.ChildElements.STATUS).t(details).up()
+ .c(BeeChat.Presence.ChildElements.PRIORITY).t('1');
+
+ _connection.send(req.tree());
+ }
+
+ /** PrivateFunction: _fire
+ * Triggers registered funcs of registered observers for a specified type of event
+ *
+ */
+ function _fire(eventType, data, scope)
+ {
+ if (_funcs[eventType] != undefined) {
+ for (var i = 0; i < _funcs[eventType].length; i++)
+ _funcs[eventType][i].call((scope || window), data);
+ }
+ }
+ this.joinRoom = function(roomname, room_guid) {
+ var roomJid = roomname;
+ _connection['muc'].join(roomJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, false, false, '');
+ if (!(roomJid in g_beechat_rooms)) {
+ g_beechat_rooms[roomJid] = room_guid;
+ $.ajax({
+ url: BeeChat.UI.addActionTokens('<?php echo $vars['url'] . "action/beechat/join_groupchat?group_guid="; ?>'+room_guid, '&'),
+ async: true });
+ }
+
+
+ }
+
+ this.reconnectRooms = function() {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ if (roomJid in g_beechat_rooms)
+ delete g_beechat_rooms[roomJid];
+ var contactBareJid = $(this).attr('bareJid');
+ var isroom = ($(this).attr('isroom')=='true')?true:false;
+ if (isroom) {
+ _connection['muc'].join(contactBareJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, false, false, '');
+ }
+ });
+ }
+
+ this.leaveRoom = function(roomJid) {
+ if (roomJid in g_beechat_rooms) {
+ $.ajax({
+ url: BeeChat.UI.addActionTokens('<?php echo $vars['url'] . "action/beechat/leave_groupchat?group_guid="; ?>'+g_beechat_rooms[roomJid], '&'),
+ async: true });
+
+ }
+ _connection['muc'].leave(roomJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, function(){});
+ }
+
+ /** PrivateFunction: _onConnect
+ * Connection state manager
+ *
+ * Parameters:
+ * (Strophe.Status) status - A Strophe connection status constant
+ *
+ */
+ function _onConnect(status)
+ {
+ var msg = null;
+
+ if (status == Strophe.Status.CONNECTING)
+{
+ msg = BeeChat.Events.Messages.ConnectionStates.CONNECTING;
+ }
+ else if (status == Strophe.Status.AUTHENTICATING) {
+ msg = BeeChat.Events.Messages.ConnectionStates.AUTHENTICATING;
+ }
+ else if (status == Strophe.Status.AUTHFAIL)
+ msg = BeeChat.Events.Messages.ConnectionStates.FAILED;
+ else if (status == Strophe.Status.CONNFAIL)
+ msg = BeeChat.Events.Messages.ConnectionStates.FAILED;
+ else if (status == Strophe.Status.DISCONNECTING)
+ msg = BeeChat.Events.Messages.ConnectionStates.DISCONNECTING;
+ else if (status == Strophe.Status.DISCONNECTED)
+ msg = BeeChat.Events.Messages.ConnectionStates.OFFLINE;
+ else if (status == Strophe.Status.CONNECTED) {
+ msg = BeeChat.Events.Messages.ConnectionStates.ONLINE;
+ _connection.addHandler(_onIQResult, null, 'iq', BeeChat.IQ.Types.RESULT, null, null);
+ _connection.addHandler(_onPresence, null, 'presence', null, null, null);
+ _connection.addHandler(_onMessageChat, null, 'message', BeeChat.Message.Types.CHAT, null, null);
+ _connection.addHandler(_onMessageChatRoom, null, 'message', BeeChat.Message.Types.GROUPCHAT, null, null);
+ }
+
+ _fire(BeeChat.Events.Identifiers.UPDATE_CONNECTION_STATE, msg);
+ }
+
+ /** PrivateFunction: _onIQResult
+ * Manage received IQ stanza of 'result' type
+ *
+ * Parameters:
+ * (XMLElement) iq - The iq stanza received
+ *
+ */
+ function _onIQResult(iq)
+ {
+ _roster.updateFromIQResult(iq);
+ _fire(BeeChat.Events.Identifiers.UPDATE_ROSTER, _roster.getItems());
+
+ return true;
+ }
+
+ /** PrivateFunction: _onPresence
+ * Manage received presence stanza
+ *
+ * Parameters:
+ * (XMLElement) presence - The presence stanza received
+ *
+ */
+ function _onPresence(presence)
+ {
+ var xquery = presence.getElementsByTagName("x");
+ debugXMPP('_onPresence'+xquery);
+ if (xquery.length > 0)
+ {
+ //Ignore MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+ if (xmlns && xmlns.match(Strophe.NS.MUC + '#user'))
+ {
+ var contactBareJid = $(presence).attr('from').split('/')[0];
+ var userNick = $(presence).attr('from').split('/')[1];
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ if ($(presence).attr('type') != 'unavailable') {
+ BeeChat.UI.ChatBoxes.updateRoster(contactBareJid, userNick, presence);
+ }
+ else {
+ if (chatBoxElm.length) {
+ BeeChat.UI.ChatBoxes.updateRoster(contactBareJid, userNick, presence);
+ }
+ }
+ return true;
+ }
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ var contactBareJid = $(presence).attr('from').split('/')[0];
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+
+ if ($(presence).attr('type') != 'unavailable' && $(presence).attr('type') != 'error') {
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ }
+ }
+ return true;
+ }
+
+ }
+ }
+
+ if (Strophe.getBareJidFromJid($(presence).attr('from')).toLowerCase() != Strophe.getBareJidFromJid(_jid).toLowerCase()) {
+ _roster.updateFromPresence(presence);
+ }
+ _fire(BeeChat.Events.Identifiers.RECV_PRESENCE, _roster.getOnlineItems());
+ return true;
+ }
+
+ /** PrivateFunction: _onMessageChat
+ * Manage received message stanza of 'chat' type
+ *
+ * Parameters:
+ * (XMLElement) message - The message stanza received
+ *
+ */
+ function _onMessageChatRoom(message)
+ {
+ var roomJid = $(message).attr('from').split('/');
+
+// BeeChat.UI.ChatBoxes.updateChatState($(message).attr('from'), message);
+ BeeChat.UI.ChatBoxes.update(roomJid[0], roomJid[1], Strophe.getText($(message).find('body')[0]), true);
+
+ return true;
+ }
+
+ function _onMessageChat(message)
+ {
+ var data = {
+ contactBareJid: Strophe.getBareJidFromJid($(message).attr('from')),
+ msg: message
+ };
+ _msgTemp.push(data);
+ //alert("message");
+ if (_initialized == true) {
+ for (var key in _msgTemp) {
+ if (typeof _msgTemp[key] != 'object')
+ continue;
+ _fire(BeeChat.Events.Identifiers.RECV_CHAT_MESSAGE, _msgTemp[key]);
+ _msgTemp.shift();
+ }
+ }
+
+ return true;
+ }
+
+ this.init(jid);
+};
+
+
+/** Constructor: BeeChat.Core.Roster
+ * Create a BeeChat.Core.Roster object
+ *
+ * Parameters:
+ * (Object) items - The roster's items in object notation
+ *
+ * Returns:
+ * A new BeeChat.Core.Roster.
+ */
+BeeChat.Core.Roster = function()
+{
+ if (!(this instanceof arguments.callee))
+ return new BeeChat.Core.Roster();
+
+ /** Private members
+ *
+ */
+ _items = null;
+
+
+ /** Constructor
+ *
+ */
+ this.init = function()
+ {
+ _items = (arguments.length > 0) ? arguments[0] : {};
+ }
+
+ /** Accessors
+ *
+ */
+ this.getItems = function()
+ {
+ return _items;
+ }
+
+ /** Mutators
+ *
+ */
+ this.setItems = function(items)
+ {
+ for (var key in items) {
+ _items[key] = new BeeChat.Core.RosterItem(items[key]);
+ var contactBareJid = items[key].bareJid;
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ var status = items[key].status;
+ /*if (status != 'unavailable' && status != 'error') {
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ }
+ }*/
+
+ }
+ }
+
+ this.setIcons = function(icons)
+ {
+ if (_items) {
+ for (var key in icons) {
+ if (_items[key]) {
+ _items[key].icon_small = icons[key].small;
+ _items[key].icon_tiny = icons[key].tiny;
+ }
+ }
+ }
+ }
+
+ this.setStatuses = function(statuses)
+ {
+ if (_items) {
+ for (var key in statuses) {
+ if (_items[key]) {
+ _items[key].status = statuses[key];
+ }
+ }
+ }
+ }
+
+ /** Function: updateFromIQResult
+ * Update the roster items from an IQ result stanza
+ *
+ * Parameters:
+ * (XMLElement) iq - The IQ result stanza
+ */
+ this.updateFromIQResult = function(iq)
+ {
+ $(iq).find('item').each(function() {
+ var attr = {
+ bareJid: Strophe.getBareJidFromJid($(this).attr('jid')).toLowerCase(),
+ name: $(this).attr('name'),
+ subscription: $(this).attr('subscription'),
+ groups: [],
+ presences: {}
+ };
+
+ $(this).find('group').each(function() {
+ attr['groups'].push($(this).text());
+ });
+
+ if (attr['groups'].length == 0)
+ attr['groups'].push(BeeChat.Roster.DEFAULT_GROUP);
+
+ if (!_items[attr.bareJid])
+ _items[attr.bareJid] = new BeeChat.Core.RosterItem(attr);
+ else {
+ _items[attr.bareJid].bareJid = attr.bareJid;
+ _items[attr.bareJid].name = attr.name;
+ _items[attr.bareJid].subscription = attr.subscription;
+ _items[attr.bareJid].groups = attr.groups;
+ }
+ });
+ }
+
+ /** Function: updateFromPresence
+ * Update the roster items from a presence stanza
+ *
+ * Parameters:
+ * (XMLElement) presence - The presence stanza
+ *
+ * Returns:
+ * (String) The bare jid of the roster item who updated his presence
+ */
+ this.updateFromPresence = function(presence)
+ {
+ var jid = $(presence).attr('from').toLowerCase();
+ var attr = {
+ bareJid: Strophe.getBareJidFromJid(jid),
+ name: null,
+ subscription: null,
+ groups: null,
+ presences: {}
+ };
+
+ attr.presences[jid] = {};
+ attr.presences[jid].type = (!$(presence).attr('type')) ? 'available' : $(presence).attr('type');
+ //alert($(presence).attr('from')+presence.toString());
+ //alert("presencetype"+attr.presences[jid].type);
+
+ if (attr.presences[jid].type == 'available') {
+ $(presence).children().each(function() {
+ if (this.tagName == BeeChat.Presence.ChildElements.SHOW)
+ attr.presences[jid].show = $(this).text();
+ if (this.tagName == BeeChat.Presence.ChildElements.STATUS)
+ attr.presences[jid].status = $(this).text();
+ });
+
+ if (!attr.presences[jid].show)
+ attr.presences[jid].show = 'chat';
+ } else {
+ attr.presences[jid].show = 'offline';
+ }
+
+ if (!_items[attr.bareJid])
+ _items[attr.bareJid] = new BeeChat.Core.RosterItem(attr);
+ else
+ _items[attr.bareJid].presences[jid] = attr.presences[jid];
+ }
+
+ /** Function: getOnlineItems
+ *
+ *
+ */
+ this.getOnlineItems = function()
+ {
+ var sortedOnlineBareJid = [];
+ var sortedOnlineItems = {};
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+
+ var pres = _items[key].getStrongestPresence();
+
+ if (pres != null && pres.type == 'available') {
+ sortedOnlineBareJid.push(key);
+ }
+ }
+
+ if (sortedOnlineBareJid.length > 1) {
+ sortedOnlineBareJid.sort();
+ sortedOnlineBareJid.sort(statusSort);
+ }
+
+ for (var key in sortedOnlineBareJid) {
+ sortedOnlineItems[sortedOnlineBareJid[key]] = _items[sortedOnlineBareJid[key]];
+ }
+
+ return (sortedOnlineItems);
+ }
+
+ /** Function: getSizeOnlineItems
+ * Return the number of available items
+ *
+ * Returns:
+ * (int) The number of available items
+ */
+ this.getSizeOnlineItems = function()
+ {
+ var n = 0;
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+
+ var pres = _items[key].getStrongestPresence();
+
+ if (pres != null && pres.type == 'available')
+ ++n;
+ }
+ return (n);
+ }
+
+ /** Function: getItemsUsernamesAsList
+ *
+ */
+ this.getItemsUsernamesAsList = function()
+ {
+ var data = '';
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+ data = data + Strophe.getBareJidFromJid(key) + ',';
+ // data = data + Strophe.getNodeFromJid(key) + ',';
+ }
+
+ return (data);
+ }
+
+ /** PrivateFunction: statusSort
+ *
+ */
+ function statusSort(x, y)
+ {
+ var xPres = _items[x].getStrongestPresence();
+ var yPres = _items[y].getStrongestPresence();
+
+ if (xPres != null && yPres != null)
+ return (BeeChat.Core.Roster.Utils.comparePresences(xPres, yPres));
+ return (0);
+ }
+
+ this.init();
+};
+
+BeeChat.Core.Roster.Utils = {
+
+ /** Function: comparePresences
+ * Compare the two presences x and y
+ *
+ * Parameters:
+ * (Object) xPres - The x presence in object notation
+ * (Object) yPres - The y presence in object notation
+ *
+ * Returns:
+ * 0 if presence are equal, 1 if x > y, -1 if y > x
+ *
+ * Note:
+ * Presences are tagged in the following order:
+ * ONLINE < DND < AWAY < XA < OFFLINE
+ *
+ */
+ comparePresences: function(xPres, yPres)
+ {
+ var xRate = 0;
+ var yRate = 0;
+
+ if (xPres.type == 'unavailable')
+ xRate += BeeChat.Core.ReferenceTables.AvailabilityRates[xPres.type.toUpperCase()];
+ if (yPres.type == 'unavailable')
+ yRate += BeeChat.Core.ReferenceTables.AvailabilityRates[yPres.type.toUpperCase()];
+
+ if (xPres.show != null)
+ xRate += BeeChat.Core.ReferenceTables.AvailabilityRates[xPres.show.toUpperCase()];
+ if (yPres.show != null)
+ yRate =+ BeeChat.Core.ReferenceTables.AvailabilityRates[yPres.show.toUpperCase()];
+
+ if (xRate > yRate)
+ return (1);
+ else if (xRate == yRate)
+ return (0);
+ return (-1);
+ }
+};
+
+
+/** Constructor: BeeChat.Core.RosterItem
+ * Create a BeeChat.Core.RosterItem object
+ *
+ * Parameters:
+ * (Object) attr - The RosterItem's attributes in object notation
+ *
+ * Returns:
+ * A new BeeChat.Core.RosterItem.
+ */
+BeeChat.Core.RosterItem = function()
+{
+ this.bareJid = (arguments.length > 0) ? arguments[0].bareJid : null;
+ this.name = (arguments.length > 0) ? arguments[0].name : null;
+ this.subscription = (arguments.length > 0) ? arguments[0].subscription : null;
+ this.groups = (arguments.length > 0) ? arguments[0].groups : null;
+ this.presences = (arguments.length > 0) ? arguments[0].presences : null;
+ this.icon_small = (arguments.length > 0) ? arguments[0].icon_small : null;
+ this.icon_tiny = (arguments.length > 0) ? arguments[0].icon_tiny : null;
+ this.status = (arguments.length > 0) ? arguments[0].status : null;
+};
+BeeChat.Core.RosterItem.prototype = {
+ /** Function: getStrongestPresence
+ * Return the strongest presence of the RosterItem
+ *
+ */
+ getStrongestPresence: function()
+ {
+ var res = null;
+
+ for (var key in this.presences) {
+ if (typeof this.presences[key] != 'object')
+ continue;
+ if (res == null)
+ res = this.presences[key];
+ else
+ if (BeeChat.Core.Roster.Utils.comparePresences(this.presences[key], res) == -1)
+ res = this.presences[key];
+ }
+ return (res);
+ }
+};
+
+
+/** Class: BeeChat.UI
+ * An object container for all BeeChat UI functions
+ *
+ */
+BeeChat.UI = {
+ HAS_FOCUS: true,
+
+ Resources: {
+ Paths: {
+ ICONS: '<?php echo $vars['config']->url; ?>mod/beechat/graphics/icons/',
+ MEMBER_PROFILE: '<?php echo $vars['url']; ?>profile/'
+ },
+
+ Sounds: {
+ NEW_MESSAGE: 'beechat_sounds_new_message'
+ },
+
+ /*
+ Cookies: {
+ DOMAIN: 'beechannels.com',
+ FILENAME_CONN: 'beechat_conn'
+ },
+ */
+
+ Emoticons: {
+ FILENAME_SMILE: 'emoticon_smile.png',
+ FILENAME_UNHAPPY: 'emoticon_unhappy.png',
+ FILENAME_GRIN: 'emoticon_grin.png',
+ FILENAME_EVILGRIN: 'emoticon_evilgrin.png',
+ FILENAME_SURPRISED: 'emoticon_surprised.png',
+ FILENAME_TONGUE: 'emoticon_tongue.png',
+ FILENAME_WINK: 'emoticon_wink.png'
+ },
+
+ Strings: {
+ Availability: {
+ AVAILABLE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ CHAT: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ DND: "<?php echo elgg_echo('beechat:availability:dnd'); ?>",
+ AWAY: "<?php echo elgg_echo('beechat:availability:away'); ?>",
+ XA:"<?php echo elgg_echo('beechat:availability:xa'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:availability:offline'); ?>"
+ },
+
+ Contacts: {
+ BUTTON: "<?php echo elgg_echo('beechat:contacts:button'); ?>"
+ },
+
+ ChatMessages: {
+ SELF: "<?php echo $_SESSION['user']->name; ?>",
+ COMPOSING: "<?php echo elgg_echo('beechat:chat:composing'); ?>"
+ },
+
+ Box: {
+ MINIMIZE: "<?php echo elgg_echo('beechat:box:minimize'); ?>",
+ CLOSE: "<?php echo elgg_echo('beechat:box:close'); ?>",
+ SHOWHIDE: "<?php echo elgg_echo('beechat:box:showhide'); ?>"
+ }
+ },
+
+ StyleClasses: {
+ Availability: {
+ Left: {
+ ONLINE: 'beechat_left_availability_chat',
+ DND: 'beechat_left_availability_dnd',
+ AWAY: 'beechat_left_availability_away',
+ XA: 'beechat_left_availability_xa',
+ OFFLINE: 'beechat_left_availability_offline',
+ ROOM: 'beechat_left_availability_room'
+ },
+
+ Right: {
+ ONLINE: 'beechat_right_availability_chat',
+ DND: 'beechat_right_availability_dnd',
+ AWAY: 'beechat_right_availability_away',
+ XA: 'beechat_right_availability_xa',
+ OFFLINE: 'beechat_right_availability_offline',
+ ROOM: 'beechat_right_availability_room'
+ },
+
+ Control: {
+ UP: 'beechat_availability_switcher_control_up',
+ DOWN: 'beechat_availability_switcher_control_down'
+ }
+ },
+
+ ChatBox: {
+ MAIN: 'beechat_chatbox',
+ MAINROOM: 'beechat_chatbox_room',
+ TOP: 'beechat_chatbox_top',
+ SUBTOP: 'beechat_chatbox_subtop',
+ TOP_ICON: 'beechat_chatbox_top_icon',
+ TOP_CONTROLS: 'beechat_chatbox_top_controls',
+ CONTENT: 'beechat_chatbox_content',
+ INPUT: 'beechat_chatbox_input',
+ BOTTOM: 'beechat_chatbox_bottom',
+ CONTROL: 'beechat_chatbox_control',
+ STATE: 'beechat_chatbox_state',
+ MESSAGE: 'beechat_chatbox_message',
+ MESSAGE_SENDER: 'beechat_chatbox_message_sender',
+ MESSAGE_DATE: 'beechat_chatbox_message_date',
+ CHATROOM: 'beechat_chatbox_chatroom',
+ ROOMROSTER: 'beechat_chatbox_roomroster',
+ ROSTER_ITEM: 'beechat_chatbox_roomrosteritem'
+ },
+
+ ScrollBox: {
+ SELECTED: 'beechat_scrollbox_selected'
+ },
+
+ BOX_CONTROL: 'beechat_box_control',
+ LABEL: 'beechat_label',
+ UNREAD_COUNT: 'beechat_unread_count'
+ },
+
+ Elements: {
+ ID_DIV_BAR: 'beechat',
+ ID_DIV_BAR_CENTER: 'beechat_center',
+ ID_DIV_BAR_RIGHT: 'beechat_right',
+
+ ID_TOOLTIP_TRIGGER: 'beechat_tooltip_trigger',
+
+ ID_SPAN_CONTACTS_BUTTON: 'beechat_contacts_button',
+ ID_SPAN_CLOSE_BOX: 'beechat_box_control_close',
+
+ ID_DIV_CONTACTS: 'beechat_contacts',
+ ID_DIV_CONTACTS_CONTROLS: 'beechat_contacts_controls',
+ ID_SPAN_CONTACTS_CONTROL_MINIMIZE: 'beechat_contacts_control_minimize',
+ ID_DIV_CONTACTS_CONTENT: 'beechat_contacts_content',
+ ID_UL_CONTACTS_LIST: 'beechat_contacts_list',
+
+ ID_DIV_AVAILABILITY_SWITCHER: 'beechat_availability_switcher',
+ ID_SPAN_AVAILABILITY_SWITCHER_CONTROL: 'beechat_availability_switcher_control',
+ ID_SPAN_CURRENT_AVAILABILITY: 'beechat_current_availability',
+ ID_UL_AVAILABILITY_SWITCHER_LIST: 'beechat_availability_switcher_list',
+
+ ID_DIV_CHATBOXES: 'beechat_chatboxes',
+
+ ID_DIV_SCROLLBOXES: 'beechat_scrollboxes'
+ }
+ },
+
+
+ /** Function: initialize
+ * Initialize the BeeChat UI
+ *
+ */
+ initialize: function(ts, token)
+ {
+ this.ts = ts;
+ this.token = token;
+ $('#' + BeeChat.UI.Resources.Elements.ID_TOOLTIP_TRIGGER).tooltip({
+ offset: [-3, 8],
+ effect: 'fade'
+ });
+
+ $('#accountlinks').find('li').filter('[class=last]').bind('click', function() {
+ if (g_beechat_user != null)
+ g_beechat_user.disconnect();
+ });
+
+ BeeChat.UI.AvailabilitySwitcher.initialize(BeeChat.Presence.ShowElements.CHAT);
+ BeeChat.UI.ContactsList.initialize();
+ BeeChat.UI.ScrollBoxes.initialize();
+ BeeChat.UI.loadConnection();
+ },
+
+ /** Function: getUserDetails
+ * Retrieve user details
+ *
+ * Returns:
+ * User details in object notation.
+ *
+ */
+ addActionTokens: function(url_string, sep)
+ {
+ if (sep == null)
+ sep = "?";
+ return url_string + sep + "__elgg_ts="+this.ts + "&__elgg_token=" + this.token;
+ },
+
+ getUserDetails: function(cb_func)
+ {
+ var json = null;
+ var self = this;
+
+ $.ajax({
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_details"; ?>'),
+ async: true,
+ dataType: 'json',
+ success: function(data) {
+ cb_func(data);
+ }
+ });
+
+ return (json);
+ },
+
+ /** Function: connect
+ * Create the user and connect him to the BOSH service
+ *
+ * Parameters:
+ * (Object) conn - Running connection informations in object notation
+ */
+ connect: function()
+ {
+ var conn = (arguments.length > 0) ? arguments[0] : null;
+ var userDetails = {
+ jid: (conn != null) ? conn.jid : null,
+ password: null
+ }
+ var self = this;
+ //alert("connect");
+ if (conn == null || (conn != null && conn.attached)) {
+ BeeChat.UI.getUserDetails(function(retrievedUserDetails) {
+ userDetails.jid = retrievedUserDetails.username + '@' + BeeChat.DOMAIN + '/' + BeeChat.RESOURCE;
+ userDetails.password = retrievedUserDetails.password;
+ self.connect_end(conn, userDetails)
+ });
+ }
+ else
+ this.connect_end(conn, userDetails)
+ },
+
+ connect_end: function(conn, userDetails)
+ {
+ g_beechat_user = new BeeChat.Core.User(userDetails.jid);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.UPDATE_CONNECTION_STATE, BeeChat.UI.updateConnectionStatus);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.UPDATE_ROSTER, BeeChat.UI.onRosterUpdate);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.RECV_PRESENCE, BeeChat.UI.ContactsList.update);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.RECV_CHAT_MESSAGE, BeeChat.UI.onChatMessage);
+
+ if (conn == null || (conn != null && conn.attached))
+ g_beechat_user.connect(userDetails.password);
+ else
+ g_beechat_user.attach(conn.sid, conn.rid);
+ },
+
+ /** Function: disconnect
+ * Terminate the user's XMPP session
+ *
+ */
+ disconnect: function()
+ {
+ g_beechat_user.disconnect();
+ },
+
+ /** Function: updateConnectionStatus
+ *
+ */
+ updateConnectionStatus: function(connStatusMsg)
+ {
+ BeeChat.UI.ContactsList.updateButtonText(connStatusMsg);
+ if (connStatusMsg == BeeChat.Events.Messages.ConnectionStates.ONLINE) {
+ if (!g_beechat_user.isAttached()) {
+ debugXMPP("not attached");
+ BeeChat.UI.ScrollBoxes.isOpened = true;
+ g_beechat_user.requestRoster();
+ g_beechat_user.reconnectRooms();
+ //BeeChat.UI.ContactsList.toggleDisplay();
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).show();
+ $('.' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + '>textarea').removeAttr('disabled');
+ for (room_idx in g_user_rooms) {
+ var room = g_user_rooms[room_idx];
+ var chatBox = BeeChat.UI.ChatBoxes.getChatBoxElm(room[0]);
+ if (chatBox.length == 0) {
+ g_beechat_user.joinRoom(room[0], room[1])
+ }
+ }
+
+ }
+ if (g_beechat_user.isAttached()) {
+ debugXMPP("attached");
+ BeeChat.UI.loadState();
+ }
+
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'online');
+ BeeChat.UI.saveConnection();
+ }
+ else if (connStatusMsg == BeeChat.Events.Messages.ConnectionStates.OFFLINE) {
+ var contactsBoxElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS);
+
+ if (!contactsBoxElm.is(':hidden'))
+ BeeChat.UI.ContactsList.toggleDisplay();
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).empty();
+ BeeChat.UI.AvailabilitySwitcher.initialize(BeeChat.Presence.ShowElements.CHAT);
+ BeeChat.UI.ContactsList.updateButtonText(BeeChat.UI.Resources.Strings.Contacts.BUTTON);
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'offline');
+ $('.' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + '>textarea').attr('disabled', 'true');
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().hide();
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children()
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()]);
+ g_beechat_user = null;
+ BeeChat.UI.saveConnection();
+ }
+ },
+
+ /** Function: saveConnection
+ * Save connection informations (non sensible data) in $_SESSION.
+ *
+ */
+ saveConnection: function()
+ {
+ var conn = null;
+
+ if (g_beechat_user != null) {
+ var userConn = g_beechat_user.getConnection();
+
+ conn = {
+ 'jid': userConn.jid,
+ 'sid': userConn.sid,
+ 'rid': userConn.rid,
+ 'attached': g_beechat_user.isAttached()
+ };
+ }
+ var self = this;
+
+ $.ajax({
+ type: 'POST',
+ async: false,
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/save_state"; ?>'),
+ data: { beechat_conn: JSON.stringify(conn) }
+ });
+
+ /*
+ $.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN, null);
+ $.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN, JSON.stringify(conn), {path: '/', domain: BeeChat.UI.Resources.Cookies.DOMAIN});
+ */
+ },
+
+ /** Function: loadConnection
+ * Check if a connection already exists. In the case that a connection exists,
+ * this function triggers the connection process.
+ *
+ */
+ loadConnection: function()
+ {
+ var self = this;
+ $.ajax({
+ type: 'GET',
+ async: false,
+ cache: false,
+ dataType: 'json',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_connection"; ?>'),
+ success: function(conn) {
+ if (conn != null) {
+ if (conn.attached)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.connect(conn);
+ }
+ },
+ error: function() {
+ BeeChat.UI.connect();
+ }
+ });
+
+ /*
+ var conn = JSON.parse($.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN));
+
+ if (conn != null) {
+ if (conn.attached)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.connect(conn);
+ } else
+ BeeChat.UI.connect();
+ */
+ },
+
+ /** Function: saveState
+ * Save app state in $_SESSION
+ *
+ */
+ saveState: function()
+ {
+ var self = this;
+ var currentAvailabilityClass = $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY).attr('class');
+ var currentAvailability = currentAvailabilityClass.substr(currentAvailabilityClass.lastIndexOf('_') + 1);
+
+ var data = {
+ availability: currentAvailability,
+ contacts: g_beechat_roster_items,
+ chats: {},
+ contacts_list: {
+ minimized: $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS).is(':hidden')
+ }
+ };
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ var contactBareJid = $(this).attr('bareJid');
+ //var contactBareJid = $(this).data('bareJid');
+ var isroom = ($(this).attr('isroom') == 'true');
+ if (isroom)
+ var roster = $(this).find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ var html_content = $(this).children().filter('[bareJid="' + contactBareJid + '"]').html();
+ data.chats[contactBareJid] = {
+ 'html_content': escape(html_content),
+ 'roster_content': isroom?escape(roster.html()):'',
+ 'isroom': $(this).attr('isroom'),
+ 'group_guid': (contactBareJid in g_beechat_rooms)?g_beechat_rooms[contactBareJid]:0,
+ 'minimized': $(this).is(':hidden'),
+ 'unread': BeeChat.UI.UnreadCountBox.getElm(contactBareJid).text()
+ };
+ });
+
+ $.ajax({
+ type: 'POST',
+ async: false,
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/save_state"; ?>'),
+ data: { beechat_state: JSON.stringify(data) }
+ });
+ },
+
+ /** Function: loadState
+ * Load app state from $_SESSION
+ *
+ */
+ loadState: function()
+ {
+ var self = this;
+ $.ajax({
+ type: 'GET',
+ async: true,
+ cache: false,
+ dataType: 'json',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_state"; ?>'),
+ error: function() {
+ alert('error getting state');
+ },
+ success: function(json) {
+ debugXMPP('loadState');
+ BeeChat.UI.AvailabilitySwitcher.initialize(json.availability);
+
+ if (!json.contacts_list.minimized) {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS).show();
+ BeeChat.UI.ContactsList.showedStyle();
+ }
+
+ g_beechat_user.getRoster().setItems(json.contacts);
+ self.loadRosterItemsIcons(false);
+ self.loadRosterItemsStatuses(false);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ g_beechat_user.setInitialized(true);
+
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElmToShow = null;
+
+ // Load saved chats
+ for (var key in json.chats) {
+ var isroom = (json.chats[key].isroom == 'true');
+ if (isroom)
+ BeeChat.UI.ScrollBoxes.addRoom(key);
+ else
+ BeeChat.UI.ScrollBoxes.add(key);
+
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(key);
+ debugXMPP("load chat " + key);
+ chatBoxElm.hide();
+
+ if (!json.chats[key].minimized) {
+ scrollBoxElmToShow = BeeChat.UI.ScrollBoxes.getScrollBoxElm(key);
+ }
+
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + key + '"]');
+
+ chatBoxContentElm.append(unescape(json.chats[key].html_content));
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ if (isroom) {
+ g_beechat_rooms[key] = json.chats[key].room_guid;
+ var rosterElm = chatBoxElm.find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ rosterElm.append(unescape(json.chats[key].roster_content));
+ }
+
+ BeeChat.UI.UnreadCountBox.update(key, json.chats[key].unread);
+ }
+ if (scrollBoxElmToShow != null)
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElmToShow));
+ else
+ scrollBoxesElm.trigger('goto', 0);
+
+ // g_beechat_user.sendPresenceAvailability(json.availability, '');
+ BeeChat.UI.ScrollBoxes.isInitialized = true;
+ BeeChat.UI.ScrollBoxes.isOpened = true;
+
+ for (var key in json.chats) {
+ if (json.chats[key].minimized) {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(key).hide();
+ BeeChat.UI.ScrollBoxes.unselect(key);
+ }
+ else {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(key).show();
+ BeeChat.UI.ScrollBoxes.select(key);
+ }
+ }
+ for (room_idx in g_user_rooms) {
+ var room = g_user_rooms[room_idx];
+ var chatBox = BeeChat.UI.ChatBoxes.getChatBoxElm(room[0]);
+ if (chatBox.length == 0) {
+ g_beechat_user.joinRoom(room[0], room[1])
+ }
+ }
+
+ },
+ error: function() {
+ BeeChat.UI.ContactsList.initialize();
+ }
+ });
+ },
+
+ /** Function: loadRosterItemsIcons
+ *
+ */
+ loadRosterItemsIcons: function(is_async, cb)
+ {
+ var data = g_beechat_user.getRoster().getItemsUsernamesAsList();
+ var self = this;
+
+ $.ajax({
+ type: 'POST',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_icons"; ?>'),
+ async: is_async,
+ cache: false,
+ data: {'beechat_roster_items_usernames': data},
+ dataType: 'json',
+ success: function(json) {
+ g_beechat_user.getRoster().setIcons(json);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ if (cb) {
+ cb();
+ }
+ }
+ });
+ },
+
+ /** Function: loadRosterItemsStatuses
+ *
+ */
+ loadRosterItemsStatuses: function(is_async, cb)
+ {
+ var data = g_beechat_user.getRoster().getItemsUsernamesAsList();
+//alert(data)
+ var self = this;
+ $.ajax({
+ type: 'POST',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_statuses"; ?>'),
+ async: true, // force
+ cache: false,
+ data: {'beechat_roster_items_usernames': data},
+ dataType: 'json',
+ success: function(json) {
+ g_beechat_user.getRoster().setStatuses(json);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ if (cb) {
+ cb();
+ }
+ }
+ });
+ },
+
+ /** Function: onRosterUpdate
+ * Notified by core on a roster update
+ *
+ */
+ onRosterUpdate: function(rosterItems)
+ {
+ g_beechat_roster_items = rosterItems;
+ //alert("get roster");
+ if (!g_beechat_user.isInitialized()) {
+ //alert("load roster" + rosterItems.length);
+ BeeChat.UI.loadRosterItemsStatuses(true,
+ function() { BeeChat.UI.loadRosterItemsIcons(true,
+ function() {g_beechat_user.sendInitialPresence();}); });
+ //BeeChat.UI.loadRosterItemsIcons(false);
+ //g_beechat_user.sendInitialPresence();
+ }
+ },
+
+ /** Function: onChatMessage
+ *
+ */
+ onChatMessage: function(data)
+ {
+ if ($(data.msg).find('body').length == 0) {
+ BeeChat.UI.ChatBoxes.updateChatState(data.contactBareJid, data.msg);
+ }
+ else {
+ BeeChat.UI.ChatBoxes.update(data.contactBareJid, BeeChat.UI.Utils.getContactName(data.contactBareJid), Strophe.getText($(data.msg).find('body')[0]));
+ }
+ }
+};
+
+
+/** Class: BeeChat.UI.Resources.ReferenceTables
+ * An object container for all reference tables
+ *
+ */
+BeeChat.UI.Resources.ReferenceTables = {
+ Styles: {
+ Availability: {
+ Left: {
+ AVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Left.ONLINE,
+ CHAT: BeeChat.UI.Resources.StyleClasses.Availability.Left.ONLINE,
+ DND: BeeChat.UI.Resources.StyleClasses.Availability.Left.DND,
+ AWAY: BeeChat.UI.Resources.StyleClasses.Availability.Left.AWAY,
+ XA: BeeChat.UI.Resources.StyleClasses.Availability.Left.XA,
+ UNAVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Left.OFFLINE,
+ OFFLINE: BeeChat.UI.Resources.StyleClasses.Availability.Left.OFFLINE,
+ ROOM: BeeChat.UI.Resources.StyleClasses.Availability.Left.ROOM
+ },
+
+ Right: {
+ AVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Right.ONLINE,
+ CHAT: BeeChat.UI.Resources.StyleClasses.Availability.Right.ONLINE,
+ DND: BeeChat.UI.Resources.StyleClasses.Availability.Right.DND,
+ AWAY: BeeChat.UI.Resources.StyleClasses.Availability.Right.AWAY,
+ XA: BeeChat.UI.Resources.StyleClasses.Availability.Right.XA,
+ UNAVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Right.OFFLINE,
+ OFFLINE: BeeChat.UI.Resources.StyleClasses.Availability.Right.OFFLINE,
+ ROOM: BeeChat.UI.Resources.StyleClasses.Availability.Right.ROOM
+ }
+ }
+ }
+};
+
+
+/** Class: BeeChat.UI.ContactsList
+ * An object container for all ContactsList functions
+ *
+ */
+BeeChat.UI.ContactsList = {
+ /** Function: initialize
+ * Initialize the contacts list by binding elements
+ *
+ */
+ initialize: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_CONTROL_MINIMIZE).unbind('click').bind('click', BeeChat.UI.ContactsList.toggleDisplay);
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).unbind('click').bind('click', function() {
+ if (g_beechat_user == null)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.ContactsList.toggleDisplay();
+ });
+ },
+
+ /** Function: update
+ * Update the contacts list content
+ *
+ * Parameters:
+ * (Object)(BeeChat.Core.RosterItem) onlineRosterItems - A hash of RosterItems in object notation
+ *
+ */
+ update: function(onlineRosterItems)
+ {
+ var contactsListElm = $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST);
+
+ contactsListElm.children().each(function() {
+ var contactBareJid = $(this).attr('bareJid');
+
+ if (g_beechat_roster_items != null) {
+ if ($.inArray(contactBareJid, onlineRosterItems) == -1) {
+ BeeChat.UI.ScrollBoxes.updateAvailability(contactBareJid);
+ $(this).remove();
+ }
+ }
+ });
+
+ for (var key in onlineRosterItems) {
+ if (typeof onlineRosterItems[key] != 'object')
+ continue;
+
+ var contactElm = contactsListElm.find('li').filter('[bareJid="' + key + '"]');
+
+ if (contactElm.length == 0) {
+ contactElm = $('<li></li>')
+ .attr('bareJid', key)
+ .append($('<img />')
+ .attr('src', g_beechat_roster_items[key].icon_tiny))
+ .append(BeeChat.UI.Utils.getTruncatedContactName(key, 25))
+ .appendTo(contactsListElm)
+ .bind('click', function() {
+ if (!BeeChat.UI.ChatBoxes.getChatBoxElm($(this).attr('bareJid')).is(':visible')) {
+ BeeChat.UI.ContactsList.toggleDisplay();
+ }
+
+ BeeChat.UI.ScrollBoxes.add($(this).attr('bareJid'), false, true);
+ });
+ }
+
+ BeeChat.UI.ContactsList.updateContactAvailability(contactElm, key);
+ }
+
+ BeeChat.UI.ContactsList.updateButtonText(BeeChat.UI.Resources.Strings.Contacts.BUTTON + ' (<strong>' + g_beechat_user.getRoster().getSizeOnlineItems() + '</strong>)');
+ },
+
+ /** Function: updateContactAvailability
+ *
+ */
+ updateContactAvailability: function(contactElm, contactBareJid)
+ {
+ // Update from contactsList
+ contactElm.attr('class', BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Right[g_beechat_roster_items[contactBareJid].getStrongestPresence().show.toUpperCase()]);
+
+ // Update from scrollBoxes
+ BeeChat.UI.ScrollBoxes.updateAvailability(contactBareJid);
+ },
+
+ /** Function: updateButtonText
+ *
+ *
+ */
+ updateButtonText: function(msg)
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).html(msg);
+ },
+
+ /** Function: toggleDisplay
+ * Toggle the contacts box display (hide | show)
+ *
+ */
+ toggleDisplay: function()
+ {
+ var contactsBoxElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS);
+
+ contactsBoxElm.toggle();
+ if (contactsBoxElm.is(':hidden')) {
+ BeeChat.UI.ContactsList.hiddenStyle();
+ } else {
+ BeeChat.UI.ContactsList.showedStyle();
+ }
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).hide();
+ },
+
+ /** Function: hiddenStyle
+ *
+ */
+ hiddenStyle: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_RIGHT).css({'border-left': '1px solid #BBBBBB', 'border-right': '1px solid #BBBBBB', 'background-color': '#DDDDDD'});
+ },
+
+ /** Function: showedStyle
+ *
+ */
+ showedStyle: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_RIGHT).css({'border-left': '1px solid #666666', 'border-right': '1px solid #666666', 'background-color': 'white'});
+ }
+};
+
+
+/** Class: BeeChat.UI.AvailabilitySwitcher
+ * An object container for all AvailabilitySwitcher functions
+ *
+ */
+BeeChat.UI.AvailabilitySwitcher = {
+ /** Function: initialize
+ * Initialize the availability switcher by setting the current user's availability
+ * and binding actions
+ *
+ */
+ initialize: function(availability)
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY).unbind('click').bind('click', BeeChat.UI.AvailabilitySwitcher.toggleListDisplay);
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_AVAILABILITY_SWITCHER_CONTROL).unbind('click').bind('click', BeeChat.UI.AvailabilitySwitcher.toggleListDisplay);
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).find('li').each(function() {
+ $(this).unbind('click').bind('click', function() {
+ var availabilityClass = $(this).attr('class');
+ var availability = availabilityClass.substr(availabilityClass.lastIndexOf('_') + 1);
+
+ if (availability == 'offline')
+ BeeChat.UI.disconnect();
+ else {
+ g_beechat_user.sendPresenceAvailability(availability, '');
+ BeeChat.UI.AvailabilitySwitcher.update(availability);
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).hide('slow');
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).show('slow');
+ }
+ });
+ });
+ BeeChat.UI.AvailabilitySwitcher.update(availability);
+ },
+
+ /** Function: update
+ * Update the current user's availability
+ *
+ * Parameters:
+ * (BeeChat.Presence.ShowElements) availability - The current user's availability
+ */
+ update: function(availability)
+ {
+ var upperCasedAvailability = availability.toUpperCase();
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY)
+ .attr('class', BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[upperCasedAvailability])
+ .text(BeeChat.UI.Resources.Strings.Availability[upperCasedAvailability]);
+
+ if (availability == 'chat')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'online');
+ else if (availability == 'xa' || availability == 'away')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'away');
+ else if (availability == 'dnd')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'dnd');
+ },
+
+ /** Function: switchControlClass
+ *
+ */
+ switchControlClass: function()
+ {
+ var switcherControlElm = $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_AVAILABILITY_SWITCHER_CONTROL);
+
+ if (switcherControlElm.attr('class') == BeeChat.UI.Resources.StyleClasses.Availability.Control.UP)
+ switcherControlElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Control.DOWN);
+ else
+ switcherControlElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Control.UP);
+ },
+
+ /** Function: toggleListDisplay
+ *
+ */
+ toggleListDisplay: function()
+ {
+ BeeChat.UI.AvailabilitySwitcher.switchControlClass();
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).toggle('slow');
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).toggle('slow');
+ }
+};
+
+
+/** Class: BeeChat.UI.ScrollBoxes
+ * An object container for all ScrollBoxes related functions
+ *
+ */
+BeeChat.UI.ScrollBoxes = {
+ isInitialized: false,
+ isOpened: false,
+
+ /** Function: initialize
+ *
+ */
+ initialize: function() {
+ var $prev = $('#beechat_center_prev'),
+ $next = $('#beechat_center_next');
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_CENTER).serialScroll({
+ target: '#beechat_scrollboxes',
+ items: 'li',
+ prev: '#beechat_center_prev',
+ next: '#beechat_center_next',
+ axys: 'x',
+ start: 2,
+ step: -1,
+ interval: 0,
+ duration: 0,
+ cycle: false,
+ force: true,
+ jump: true,
+ lock: true,
+ lazy: true,
+ constant: true,
+
+ onBefore: function(e, elem, $pane, $items, pos) {
+ $next.add($prev).hide();
+ $prev.add($next).hide();
+ if (pos != 0) {
+ $next.show();
+ }
+ if (pos != $items.length - 1)
+ $prev.show();
+ },
+
+ onAfter: function(elem) {
+ BeeChat.UI.ChatBoxes.takeStand($(elem).attr('bareJid'));
+ BeeChat.UI.ScrollBoxes.isInitialized = true;
+ }
+ });
+ },
+
+ /** Function: add
+ * Add a scrollbox to the scrollboxes bar
+ *
+ */
+ addRoom: function(contactBareJid)
+ {
+ debugXMPP('addRoom' + contactBareJid);
+ BeeChat.UI.ScrollBoxes.add(contactBareJid, true);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ scrollBoxElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Left.ROOM);
+ },
+
+ add: function(contactBareJid, isroom)
+ {
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = scrollBoxesElm.find('ul').children().filter('[bareJid="' + contactBareJid + '"]');
+ debugXMPP("add " + contactBareJid + " " + scrollBoxElm.length);
+ if (scrollBoxElm.length == 0) {
+ var availClass = null;
+ var pres = null;
+ if (g_beechat_roster_items != undefined)
+ pres = g_beechat_roster_items[contactBareJid] != null ? g_beechat_roster_items[contactBareJid].getStrongestPresence() : null;
+
+ if (pres != null)
+ availClass = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[pres.show.toUpperCase()];
+ else
+ availClass = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()];
+
+ scrollBoxElm = $('<li></li>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + availClass)
+ .attr('bareJid', contactBareJid)
+ .attr('isroom', isroom?'true':'false')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.SHOWHIDE)
+ .text(BeeChat.UI.Utils.getTruncatedContactName(contactBareJid, 11))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.BOX_CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('X')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.CLOSE)
+ .bind('click', function() {
+ if (isroom)
+ g_beechat_user.leaveRoom(contactBareJid);
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+
+ BeeChat.UI.ChatBoxes.remove($(this).parent().attr('bareJid'));
+ BeeChat.UI.UnreadCountBox.remove($(this).parent().attr('bareJid'));
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(BeeChat.UI.ScrollBoxes.getSelectedScrollBoxElm()));
+ BeeChat.UI.saveState();
+ }));
+
+ scrollBoxesElm.find('ul').append(scrollBoxElm);
+ BeeChat.UI.ChatBoxes.add(contactBareJid, isroom);
+ if (arguments.length == 3 && arguments[2])
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ if (!isroom) {
+ BeeChat.UI.loadRosterItemsStatuses(true, function () { BeeChat.UI.loadRosterItemsIcons(true); });
+ }
+ } else {
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ }
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).remove();
+ },
+
+ /** Function: unselect
+ *
+ */
+ unselect: function(contactBareJid)
+ {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ scrollBoxElm.attr('class', (scrollBoxElm.attr('class')).replace(/beechat_scrollbox_selected/, ''));
+ },
+
+ /** Function: select
+ *
+ */
+ select: function(contactBareJid)
+ {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ var scrollBoxElmClasses = scrollBoxElm.attr('class');
+
+ if (scrollBoxElmClasses.search(/beechat_scrollbox_selected/) == -1)
+ scrollBoxElm.attr('class', scrollBoxElmClasses + ' ' + BeeChat.UI.Resources.StyleClasses.ScrollBox.SELECTED);
+ },
+
+ /** Function: updateAvailability
+ *
+ */
+ updateAvailability: function(contactBareJid)
+ {
+ var pres = g_beechat_roster_items[contactBareJid].getStrongestPresence();
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ var scrollBoxElmClasses = scrollBoxElm.attr('class');
+ var updatedAvailability = null;
+
+ if (pres != null)
+ updatedAvailability = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[pres.show.toUpperCase()];
+ else
+ updatedAvailability = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()];
+
+ if (scrollBoxElmClasses == undefined || scrollBoxElmClasses.search(/(beechat_left_availability_)/g) == -1) {
+ scrollBoxElm.attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + updatedAvailability);
+ } else {
+ updatedAvailability = updatedAvailability.replace(/(beechat_left_availability)/g, '');
+
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_chat)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_dnd)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_away)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_xa)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_offline)/g, updatedAvailability);
+
+ scrollBoxElm.attr('class', scrollBoxElmClasses);
+ }
+ },
+
+ /** Function: getSelectedScrollBoxElm
+ *
+ */
+ getSelectedScrollBoxElm: function(contactBareJid)
+ {
+ var elm = undefined;
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children().each(function() {
+ if ($(this).attr('class').search(/beechat_scrollbox_selected/) != -1)
+ elm = $(this);
+ });
+
+ return (elm);
+ },
+
+ /** Function: getScrollBoxElm
+ *
+ */
+ getScrollBoxElm: function(contactBareJid)
+ {
+ return $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children().filter('[bareJid="' + contactBareJid + '"]');
+ }
+};
+
+
+/** Class: BeeChat.UI.ChatBoxes
+ * An object container for all ChatBoxes related functions
+ *
+ */
+BeeChat.UI.ChatBoxes = {
+ dateLastComposing: {},
+ lastTimedPauses: {},
+
+ /** Function: add
+ *
+ */
+ add: function(contactBareJid, isroom)
+ {
+ var chatBoxes = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES);
+
+ if ($(chatBoxes).children().filter('[bareJid="' + contactBareJid + '"]').length == 0) {
+ debugXMPP("create chatbox " + contactBareJid);
+ var chatBox = $('<div></div>')
+ .attr('class', isroom ? BeeChat.UI.Resources.StyleClasses.ChatBox.MAIN : BeeChat.UI.Resources.StyleClasses.ChatBox.MAIN)
+ .attr('bareJid', contactBareJid)
+ .attr('isroom', isroom ? 'true' : 'false')
+ .hide();
+
+ var chatBoxTop = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP);
+ if (!isroom)
+ chatBoxTop.append($('<a></a>')
+ .attr('href', BeeChat.UI.Resources.Paths.MEMBER_PROFILE + Strophe.getNodeFromJid(contactBareJid))
+ .append($('<img />')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP_ICON)
+ .attr('src', (g_beechat_roster_items != null && g_beechat_roster_items[contactBareJid] != undefined)?g_beechat_roster_items[contactBareJid].icon_small:'')))
+ chatBoxTop.append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL)
+ .html(isroom?BeeChat.UI.Utils.getTruncatedContactName(contactBareJid).split('@')[0]:'<a href="' + BeeChat.UI.Resources.Paths.MEMBER_PROFILE + Strophe.getNodeFromJid(contactBareJid) + '">' + BeeChat.UI.Utils.getTruncatedContactName(contactBareJid) + '</a>'))
+ .append($('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP_CONTROLS)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('X')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.CLOSE)
+ .bind('click', function() {
+ if (isroom)
+ g_beechat_user.leaveRoom(contactBareJid);
+ BeeChat.UI.ChatBoxes.remove(contactBareJid);
+ }))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('_')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.MINIMIZE)
+ .css({'font-size': '1.6em', 'position': 'relative', 'line-height': '4px'})
+ .bind('click', function() {
+ BeeChat.UI.ScrollBoxes.unselect($(this).parent().parent().parent().attr('bareJid'));
+ $(this).parent().parent().parent().fadeOut('slow');
+ })));
+
+ var chatBoxSubTop = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.SUBTOP)
+ .append(BeeChat.UI.Utils.getTruncatedContactStatus((g_beechat_roster_items != null && g_beechat_roster_items[contactBareJid] != undefined && g_beechat_roster_items[contactBareJid].status != undefined) ? g_beechat_roster_items[contactBareJid].status : ''));
+
+ var chatBoxContent = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTENT)
+ .attr('bareJid', contactBareJid);
+
+ var chatBoxInput = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT)
+ .append($('<textarea></textarea>')
+ .attr('bareJid', contactBareJid)
+ .bind('keypress', isroom?BeeChat.UI.ChatBoxes.onRoomTypingMessage:BeeChat.UI.ChatBoxes.onTypingMessage)
+ .bind('keyup', function(e) {
+ if ((e.keyCode ? e.keyCode : e.which) == 13)
+ $(this).attr('value', '');
+ }));
+
+ var chatBoxBottom = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.BOTTOM)
+ .append($('<span></span>')
+ .append($('<span></span>')));
+ if (isroom) {
+ //var chatBoxBox = $('<div></div>')
+ // .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CHATROOM)
+ var chatBoxRoster = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER)
+ //chatBoxBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom)
+ //chatBox.append(chatBoxRoster).append(chatBoxBox).appendTo(chatBoxes);
+ chatBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom).append(chatBoxRoster).appendTo(chatBoxes);
+ }
+ else
+ chatBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom).appendTo(chatBoxes);
+ }
+ else {
+ /*debugXMPP("show chatbox " + contactBareJid);
+ var chatBox = $(chatBoxes).children().filter('[bareJid="' + contactBareJid + '"]');
+ chatBox.show();*/
+ }
+ },
+
+ /** Function: takeStand
+ *
+ */
+ takeStand: function(contactBareJid)
+ {
+ var chatBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children();
+ var chatBoxElm = chatBoxesElm.filter('[bareJid="' + contactBareJid + '"]');
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+
+ if (!chatBoxElm.is(':hidden')) {
+ BeeChat.UI.ScrollBoxes.unselect(contactBareJid);
+ chatBoxElm.hide();
+ } else {
+ // Hide all other chatboxes
+ $.each(chatBoxesElm.filter('[bareJid!="' + contactBareJid + '"]'), function() {
+ BeeChat.UI.ScrollBoxes.unselect($(this).attr('bareJid'));
+ $(this).hide();
+ });
+ // Add selected scrollbox style
+ BeeChat.UI.ScrollBoxes.select(contactBareJid);
+ // Remove UnreadCountBox
+ BeeChat.UI.UnreadCountBox.remove(contactBareJid);
+ // Position the chatbox
+ var pos = scrollBoxElm.position().left - (chatBoxElm.width() - scrollBoxElm.width()) + 24;
+ chatBoxElm.css({'left': pos});
+ if (!BeeChat.UI.ScrollBoxes.isOpened)
+ return;
+ chatBoxElm.show().css({'left': pos});
+ // Scroll down the content of the chatbox
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ // Focus textarea
+ chatBoxElm.children().filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + ']').find('textarea').focus();
+ }
+ },
+
+ /** Function: onTypingMessage
+ *
+ */
+ onRoomTypingMessage: function(e) {
+ BeeChat.UI.ChatBoxes._onTypingMessage(e, true, this);
+ },
+
+ onTypingMessage: function(e) {
+ BeeChat.UI.ChatBoxes._onTypingMessage(e, false, this);
+ },
+
+ _onTypingMessage: function(e, isroom, self)
+ {
+ var keyCode = (e.keyCode) ? e.keyCode : e.which;
+ var contactBareJid = $(self).attr('bareJid');
+
+ var msgtype = BeeChat.Message.Types.CHAT;
+ if (isroom)
+ msgtype = BeeChat.Message.Types.GROUPCHAT;
+
+ if (keyCode == 13 && $(self).val() != '') {
+ g_beechat_user.sendChatMessage(contactBareJid, jQuery.trim($(self).val()), msgtype);
+ if (!isroom)
+ BeeChat.UI.ChatBoxes.update(contactBareJid, BeeChat.UI.Utils.truncateString(BeeChat.UI.Resources.Strings.ChatMessages.SELF, 24), $(self).val(), isroom);
+ clearTimeout(BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid]);
+ BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid] = null;
+ } else {
+ var nowTime = new Date().getTime();
+
+ if (BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] == null || BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] + 2000 < nowTime) {
+ BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] = nowTime;
+ g_beechat_user.sendChatStateMessage(contactBareJid, BeeChat.Message.ChatStates.COMPOSING);
+ }
+
+ clearTimeout(BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid]);
+ BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid] = setTimeout('g_beechat_user.sendChatStateMessage(\'' + contactBareJid + '\', BeeChat.Message.ChatStates.PAUSED)', 2000);
+
+ var chatBoxTextAreaElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).children().filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + ']').find('textarea');
+ chatBoxTextAreaElm.attr({scrollTop: chatBoxTextAreaElm.attr('scrollHeight')});
+ }
+ },
+
+ updateRoster: function(contactBareJid, fromName, presence)
+ {
+ var availability = $(presence).attr('type');
+ var item = $(presence).find('item');
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ //BeeChat.UI.ScrollBoxes.addRoom(contactBareJid);
+ chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ }
+
+ //var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+
+ var roster = chatBoxElm.find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ if (availability == 'unavailable') {
+ roster.find('div').filter('[contactName='+fromName+']').remove();
+ }
+ else {
+ var hasName = roster.find('div').filter('[contactName='+fromName+']');
+ if (hasName.length == 0) {
+ roster.append($('<div>' + fromName + '</div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.ROSTER_ITEM)
+ .attr('title', item.attr('affiliation') + '/' + item.attr('role'))
+ .attr('contactName', fromName))
+ }
+ }
+ },
+
+
+ /** Function: update
+ *
+ */
+ update: function(contactBareJid, fromName, msg, isroom)
+ {
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ debugXMPP(contactBareJid + " " + msg + " " + chatBoxElm.length);
+ if (chatBoxElm.length == 0) {
+ if (isroom) {
+ BeeChat.UI.ScrollBoxes.addRoom(contactBareJid);
+ BeeChat.UI.ChatBoxes.show(contactBareJid);
+ BeeChat.UI.ChatBoxes.takeStand(contactBareJid);
+ }
+ else {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid,false,true);
+ // BeeChat.UI.ChatBoxes.show(contactBareJid);
+ BeeChat.UI.ChatBoxes.takeStand(contactBareJid);
+ }
+ chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ }
+
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+
+ chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').remove();
+
+ var chatBoxLastMessageElm = $(chatBoxContentElm).find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE + ']').filter(':last');
+
+ if (chatBoxLastMessageElm && chatBoxLastMessageElm.find('span').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_SENDER + ']').text() == fromName) {
+ chatBoxLastMessageElm.append('<p>' + BeeChat.UI.Utils.getPrintableChatMessage(msg) + '</p>');
+ } else {
+ chatBoxContentElm.append($('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_SENDER)
+ .text(fromName))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_DATE)
+ .text(BeeChat.UI.Utils.getNowFormattedTime()))
+ .append('<p>' + BeeChat.UI.Utils.getPrintableChatMessage(msg) + '</p>'));
+ }
+
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+
+ if (BeeChat.UI.ScrollBoxes.isInitialized == false) {
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ }
+
+ debugXMPP("about to update number!");
+ if (chatBoxElm.is(':hidden')) {
+ debugXMPP("update number!");
+ BeeChat.UI.UnreadCountBox.update(contactBareJid);
+// if (BeeChat.UI.HAS_FOCUS)
+// document.getElementById(BeeChat.UI.Resources.Sounds.NEW_MESSAGE).Play();
+ }
+
+// if (!BeeChat.UI.HAS_FOCUS)
+// document.getElementById(BeeChat.UI.Resources.Sounds.NEW_MESSAGE).Play();
+ },
+
+ /** Function: updateChatState
+ *
+ */
+ updateChatState: function(contactBareJid, msg)
+ {
+ var chatBoxContentElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).children().filter('[bareJid="' + contactBareJid + '"]');
+
+ $(msg).children().each(function() {
+ if (this.tagName == BeeChat.Message.ChatStates.COMPOSING) {
+ if (chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').length == 0) {
+ $('<p></p>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.STATE)
+ .html(BeeChat.UI.Utils.getContactName(contactBareJid) + BeeChat.UI.Resources.Strings.ChatMessages.COMPOSING + "</br />")
+ .appendTo(chatBoxContentElm);
+ }
+ } else if (this.tagName == BeeChat.Message.ChatStates.PAUSED) {
+ chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').remove();
+ }
+ });
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).remove();
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).remove();
+ },
+
+ /** Function: show
+ *
+ */
+ show: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).show();
+ },
+
+ /** Function: hide
+ *
+ */
+ hide: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).hide();
+ },
+
+ /** Function: getChatBoxElm
+ *
+ */
+ getChatBoxElm: function(contactBareJid)
+ {
+ return $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().filter('[bareJid="' + contactBareJid + '"]');
+ }
+};
+
+BeeChat.UI.UnreadCountBox = {
+ /** Function: add
+ *
+ */
+ add: function(contactBareJid)
+ {
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.UNREAD_COUNT));
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.UnreadCountBox.getElm(contactBareJid).remove();
+ },
+
+ /** Function: update
+ *
+ */
+ update: function(contactBareJid)
+ {
+ if (arguments.length > 1 && !arguments[1])
+ return;
+
+ var unreadCountBoxElm = BeeChat.UI.UnreadCountBox.getElm(contactBareJid);
+ if (unreadCountBoxElm.length == 0) {
+ BeeChat.UI.UnreadCountBox.add(contactBareJid);
+ unreadCountBoxElm = BeeChat.UI.UnreadCountBox.getElm(contactBareJid);
+ }
+ if (arguments.length == 1) {
+ var unreadCount = unreadCountBoxElm.text();
+ unreadCountBoxElm.text(++unreadCount);
+ } else
+ unreadCountBoxElm.text(arguments[1]);
+ },
+
+ /** Function: getElm
+ *
+ */
+ getElm: function(contactBareJid)
+ {
+ return BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).find('span').filter('[class=' + BeeChat.UI.Resources.StyleClasses.UNREAD_COUNT +' ]');
+ }
+};
+
+/** Class: BeeChat.UI.Utils
+ * An object container for all UI utilities functions
+ *
+ */
+BeeChat.UI.Utils = {
+ /** Function: getTruncatedContactName
+ *
+ */
+ getTruncatedContactName: function(bareJid)
+ {
+ return (BeeChat.UI.Utils.truncateString(BeeChat.UI.Utils.getContactName(bareJid), (arguments.length == 2) ? arguments[1] : 21));
+ },
+
+ /** Function: getTruncatedContactStatus
+ *
+ */
+ getTruncatedContactStatus: function(contactStatus)
+ {
+ return (BeeChat.UI.Utils.truncateString(contactStatus, (arguments.length == 2 ? arguments[1] : 50)));
+ },
+
+ /** Function: getContactName
+ *
+ */
+ getContactName: function(bareJid)
+ {
+ var contactName = bareJid;
+
+ if (g_beechat_roster_items != null && g_beechat_roster_items[bareJid])
+ contactName = g_beechat_roster_items[bareJid].name;
+ // no contact name so we show bareJid
+ if (!contactName || contactName == '')
+ contactName = bareJid;
+
+ return (contactName);
+ },
+
+ /** Function: getPrintableChatMessage
+ *
+ */
+ getPrintableChatMessage: function(msg)
+ {
+ var val = new String;
+ val = $('<div>' + msg + '</div>');
+ msg = val.text();
+
+ msg = jQuery.trim(msg);
+ msg = BeeChat.UI.Utils.replaceLinks(msg);
+ msg = BeeChat.UI.Utils.replaceSmileys(msg);
+
+ return msg;
+ },
+
+ /** Function: getNowFormattedTime
+ *
+ */
+ getNowFormattedTime: function()
+ {
+ var date = new Date();
+
+ var hours = date.getHours();
+ var minutes = date.getMinutes();
+ var seconds = date.getSeconds();
+
+ if (hours < 10)
+ hours = '0' + hours;
+ if (minutes < 10)
+ minutes = '0' + minutes;
+ if (seconds < 10)
+ seconds = '0' + seconds;
+ return (hours + ':' + minutes + ':' + seconds);
+ },
+
+
+ /** Function: replaceSmileys
+ * Replace smileys founded in a string to beautiful icons :)
+ *
+ * Parameters:
+ * (String) str - The string containing smileys
+ *
+ */
+ replaceSmileys: function(str)
+ {
+ str = str.replace(/(;\))/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_WINK + '" />');
+ str = str.replace(/(:\))/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_SMILE + '" />');
+ str = str.replace(/(:\()/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_UNHAPPY + '" />');
+ str = str.replace(/(:D)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_GRIN + '" />');
+ str = str.replace(/(:o)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_SURPRISED + '" />');
+ str = str.replace(/(xD)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_EVILGRIN + '" />');
+ str = str.replace(/(:p)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_TONGUE + '" />');
+
+ return (str);
+ },
+
+ /** Function: replaceLinks
+ * Transform links founded in a string to clickable links
+ *
+ * Parameters:
+ * (String) str - The string where will be replaced links
+ */
+ replaceLinks: function(str)
+ {
+ var xpr =
+ /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
+
+ return (str.replace(xpr, '<a href="$1" target="_blank">$1</a>'));
+ },
+
+ /** Function: truncateString
+ * Truncate a string at a specified length
+ *
+ * Parameters:
+ * (String) str - The string to truncate
+ * (int) len - The maximum length of str
+ */
+ truncateString: function(str, len)
+ {
+ if (str != null && str.length > len)
+ return ((str.substr(0, len) + '...'));
+ return (str);
+ }
+};
+
+
+/** Executed when the DOM is ready
+ *
+ */
+function init_beechat(ts, token) {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ BeeChat.UI.initialize(ts, token);
+}
+
+/** Window resizing
+ *
+ */
+$(window).resize(function() {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm($(this).attr('bareJid'));
+ var pos = scrollBoxElm.position().left - ($(this).width() - scrollBoxElm.width()) + 24;
+
+ $(this).css({'left': pos});
+ });
+});
+
+
+/** Executed when the page is unloaded
+ *
+ */
+$(window).unload(function() {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ if (!$('#beechat').length)
+ return;
+
+ if (g_beechat_user != null) {
+ g_beechat_user.requestSessionPause();
+ BeeChat.UI.saveState();
+ }
+
+ BeeChat.UI.saveConnection();
+ });
+
+
+/** Check whether the BeeChat tab is active or not
+ *
+ */
+$(window).bind('blur', function() {
+ BeeChat.UI.HAS_FOCUS = false;
+ });
+
+$(window).bind('focus', function() {
+ BeeChat.UI.HAS_FOCUS = true;
+ });
diff --git a/mod/beechat/views/default/beechat/beechat.php b/mod/beechat/views/default/beechat/beechat.php
new file mode 100644
index 000000000..397d35f74
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.php
@@ -0,0 +1,84 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+if (elgg_is_logged_in() && elgg_get_logged_in_user_entity()->chatenabled && elgg_get_context() != 'admin') {
+?>
+<div id="beechat">
+ <div id="beechat_left">
+ <a id="beechat_tooltip_trigger" href="<?php echo $vars['url']; ?>"><img src="<?php echo $vars['config']->wwwroot; ?>favicon.ico" /></a>
+ <div class="tooltip tooltipchat">
+ <h3><?php echo elgg_echo('beechat:icons:home'); ?></h3>
+ </div>
+ </div>
+ <div id="beechat_center">
+ <span id="beechat_center_prev" class="prev"></span>
+ <div id="beechat_scrollboxes"><ul></ul></div>
+ <span id="beechat_center_next" class="next"></span>
+ </div>
+ <div id="beechat_right">
+ <span id="beechat_contacts_button" class="offline">
+ <?php echo elgg_echo('beechat:contacts:button'); ?>
+ </span>
+ </div>
+ <div id="beechat_contacts">
+ <div id="beechat_contacts_top">
+ <span class="beechat_label"><?php echo elgg_echo('beechat:contacts:button'); ?></span>
+ <div id="beechat_contacts_controls">
+ <span id="beechat_contacts_control_minimize" class="beechat_control" title="<?php echo elgg_echo('beechat:box:minimize'); ?>">_</span>
+ </div>
+ <br clear="all" />
+ </div>
+ <div id="beechat_availability_switcher">
+ <span id="beechat_current_availability"></span>
+ <span class="beechat_availability_switcher_control_down" id="beechat_availability_switcher_control"></span>
+ </div>
+ <div id="beechat_contacts_content">
+ <ul id="beechat_contacts_list"></ul>
+ <ul id="beechat_availability_switcher_list">
+ <li class="beechat_left_availability_chat"><?php echo elgg_echo('beechat:availability:available'); ?></li>
+ <li class="beechat_left_availability_dnd"><?php echo elgg_echo('beechat:availability:dnd'); ?></li>
+ <li class="beechat_left_availability_away"><?php echo elgg_echo('beechat:availability:away'); ?></li>
+ <li class="beechat_left_availability_xa"><?php echo elgg_echo('beechat:availability:xa'); ?></li>
+ <li class="beechat_left_availability_offline"><?php echo elgg_echo('beechat:availability:offline'); ?></li>
+ </ul>
+ </div>
+ <div id="beechat_contacts_bottom">
+ <span id="beechat_contacts_bottom_bar"></span>
+ </div>
+ </div>
+ <div id="beechat_chatboxes"></div>
+</div>
+<!-- SOUNDS -->
+<!--
+<embed src="<?php echo $vars['config']->staticurl; ?>mod/beechat/sounds/newmessage.wav" autostart=false width=0 height=0
+ id="beechat_sounds_new_message"
+ enablejavascript="true" />
+-->
+
+<?php
+ $ts = time();
+ $token = generate_action_token($ts);
+?>
+
+<script>
+ $(function () {
+ var e = document.createElement('script');
+ e.async = true;
+ e.type = 'text/javascript';
+ e.text = 'init_beechat("<?php echo $ts; ?>","<?php echo $token; ?>");';
+ document.getElementById('beechat').appendChild(e);
+
+ })
+</script>
+
+<?php
+ }
+?>
diff --git a/mod/beechat/views/default/beechat/beechat.userjs.php b/mod/beechat/views/default/beechat/beechat.userjs.php
new file mode 100644
index 000000000..ed59b683f
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.userjs.php
@@ -0,0 +1,54 @@
+<script type="text/javascript">
+BeeChat.Events.Messages = {
+ ConnectionStates: {
+ CONNECTING: "<?php echo elgg_echo('beechat:connection:state:connecting'); ?>",
+ AUTHENTICATING: "<?php echo elgg_echo('beechat:connection:state:authenticating'); ?>",
+ FAILED: "<?php echo elgg_echo('beechat:connection:state:failed'); ?>",
+ DISCONNECTING: "<?php echo elgg_echo('beechat:connection:state:disconnecting'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:connection:state:offline'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:connection:state:online'); ?>"
+ }
+ }
+
+BeeChat.UI.Resources.Strings = {
+ Availability: {
+ AVAILABLE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ CHAT: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ DND: "<?php echo elgg_echo('beechat:availability:dnd'); ?>",
+ AWAY: "<?php echo elgg_echo('beechat:availability:away'); ?>",
+ XA:"<?php echo elgg_echo('beechat:availability:xa'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:availability:offline'); ?>"
+ },
+
+ Contacts: {
+ BUTTON: "<?php echo elgg_echo('beechat:contacts:button'); ?>"
+ },
+
+ ChatMessages: {
+ SELF: "<?php echo $_SESSION['user']->name; ?>",
+ COMPOSING: "<?php echo elgg_echo('beechat:chat:composing'); ?>"
+ },
+
+ Box: {
+ MINIMIZE: "<?php echo elgg_echo('beechat:box:minimize'); ?>",
+ CLOSE: "<?php echo elgg_echo('beechat:box:close'); ?>",
+ SHOWHIDE: "<?php echo elgg_echo('beechat:box:showhide'); ?>"
+ }
+ }
+g_user_rooms = new Array();
+<?php
+if (elgg_is_logged_in()) {
+ $user = elgg_get_logged_in_user_entity();
+ $chatrooms = elgg_get_entities_from_relationship(array('relationship' => 'groupchat',
+ 'relationship_guid' => $user->guid,
+ 'inverse_relationship' => false,
+ 'limit' => 0));
+ if (!empty($chatrooms)) {
+ foreach($chatrooms as $chatroom) {
+ echo "g_user_rooms.push(['".beechat_friendly_title($chatroom->name)."@".elgg_get_plugin_setting("groupdomain", "beechat")."', '".$chatroom->guid."']);";
+ }
+ }
+}
+?>
+</script>
diff --git a/mod/beechat/views/default/beechat/screen.css.php b/mod/beechat/views/default/beechat/screen.css.php
new file mode 100644
index 000000000..930e60089
--- /dev/null
+++ b/mod/beechat/views/default/beechat/screen.css.php
@@ -0,0 +1,672 @@
+<?php
+ global $CONFIG;
+ $url = $CONFIG->wwwroot;
+
+?>
+/**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+div#beechat {
+ display: block !important;
+ display: none;
+ position: fixed;
+ left: 1%;
+ right: 1%;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ height: 20px;
+ z-index: 999;
+
+ font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
+ font-size: 0.9em;
+ color: #222222;
+ background-color: #DDDDDD;
+ border-top: 1px solid #BBBBBB;
+ border-left: 1px solid #BBBBBB;
+}
+div#beechat a img {
+ border: none;
+}
+div#beechat a {
+ text-decoration: none;
+}
+div#beechat img {
+ vertical-align: middle;
+}
+div#beechat a:hover {
+ text-decoration: underline;
+}
+.beechat_control {
+ cursor: pointer;
+ color: #CCCCFF;
+ font-size: 1.6em;
+}
+.beechat_control:hover {
+ color: white;
+}
+.beechat_box_control {
+ cursor: pointer;
+ color: #888888;
+ font-size: 1em;
+}
+.beechat_box_control:hover {
+ color: #222222;
+}
+.beechat_chatbox_control {
+ cursor: pointer;
+ color: #CCCCFF;
+ font-size: 1.6em;
+}
+.beechat_chatbox_control:hover {
+ color: white;
+}
+.beechat_label {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+/*
+** -
+** left side
+** -
+*/
+div#beechat_left {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 116px;
+ height: 18px;
+ margin: 0;
+ padding: 1px 2px;
+}
+
+
+/*
+** -
+** right side
+** -
+*/
+div#beechat_right {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 220px;
+ height: 20px;
+ margin: 0;
+ padding: 0 0 0 0;
+
+ border-left: 1px solid #BBBBBB;
+ border-right: 1px solid #BBBBBB;
+}
+div#beechat_contacts {
+ position: absolute;
+ right: 0px;
+ bottom: 0;
+ width: 222px;
+ height: 240px;
+ margin: 0 auto 20px auto;
+ padding: 0;
+ display: none;
+
+ background-color: white;
+}
+div#beechat_contacts_top {
+ color: white;
+ background-color: #193C60;
+ width: 220px;
+ height: 32px;
+
+ border-top: 1px solid #0B2C4F;
+ border-left: 1px solid #0B2C4F;
+ border-right: 1px solid #0B2C4F;
+}
+div#beechat_contacts_top .beechat_label {
+ float: left;
+ height: 20px;
+ padding: 6px;
+}
+div#beechat_contacts_controls {
+ margin: 0;
+ padding: 0;
+}
+div#beechat_contacts_controls span#beechat_contacts_control_minimize {
+ position: relative;
+ top: -7px;
+ float: right;
+ display: block;
+ width: 20px;
+ height: 20px;
+ padding: 2px;
+
+ font-size: 1.6em;
+ font-weight: bold;
+ text-align: center;
+}
+span#beechat_contacts_button {
+ display: block;
+ width: 190px;
+ padding: 2px 6px 0 24px;
+ height: 18px;
+ cursor: pointer;
+ font-size: 1.1em;
+ font-weight: normal;
+
+ background-image: url('<?php echo $url; ?>mod/beechat/graphics/icons/statuses.png');
+}
+span#beechat_contacts_button.online {
+ background-position: 4px -750px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.dnd {
+ background-position: 4px -796px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.away {
+ background-position: 4px -842px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.offline {
+ background-position: 4px -888px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button:hover {
+ background-color: white;
+}
+div#beechat_availability_switcher {
+ width: 218px;
+ height: 24px;
+ margin: 0;
+ padding: 0 0 0 2px;
+
+ background-color: #EEEEEE;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #BBBBBB;
+}
+span#beechat_current_availability {
+ float: left;
+ padding: 4px 4px 4px 22px;
+
+ font-weight: bold;
+ cursor: pointer;
+}
+span#beechat_current_availability:hover {
+ text-decoration: underline;
+}
+span#beechat_availability_switcher_control {
+ float: right;
+ width: 24px;
+ height: 20px;
+ cursor: pointer;
+}
+span.beechat_availability_switcher_control_up {
+ background: no-repeat 50% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_arrow_up.png');
+}
+span.beechat_availability_switcher_control_down {
+ background: no-repeat 50% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_arrow_down.png');
+}
+ul#beechat_availability_switcher_list {
+ display: none;
+ padding:0;
+ margin:0;
+ list-style:none;
+}
+ul#beechat_availability_switcher_list li {
+ margin: 0;
+ padding: 4px 4px 4px 24px;
+
+ cursor: pointer;
+}
+ul#beechat_availability_switcher_list li:hover {
+ background-color: #EEEEEE;
+}
+div#beechat_contacts_content {
+ width: 220px;
+ height: 164px;
+ overflow: auto;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+ul#beechat_contacts_list {
+ background-color: white;
+ padding:0;
+ margin:0;
+ list-style:none;
+}
+ul#beechat_contacts_list li img {
+ margin: 0 4px 0 0;
+ width: 25px;
+ height: 25px;
+}
+ul#beechat_contacts_list li {
+ margin: 0;
+ padding: 4px 4px 4px 6px;
+
+ cursor: pointer;
+ color: #333;
+}
+ul#beechat_contacts_list li:hover {
+ background-color: #F5F6F8;
+ color: #333;
+}
+div#beechat_contacts_bottom {
+ width: 220px;
+ height: 18px;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+}
+span#beechat_contacts_bottom_bar {
+ position: absolute;
+ display: block;
+ bottom: 0;
+ width: 210px;
+ height: 1px;
+
+ background-color: #BBBBBB;
+ margin: auto 4px;
+}
+
+
+/*
+** -
+** center area
+** -
+*/
+div#beechat_center {
+ float: right;
+ display: block;
+ width: 586px;
+ height: 20px;
+ margin: 0 220px 0 100px;
+ *margin: 0 312px 0 100px;
+ padding: 0;
+}
+div#beechat_center .next, div#beechat_center .prev {
+ display: none;
+
+ border-left: 1px solid #BBBBBB;
+ cursor: pointer;
+}
+div#beechat_center .next {
+ position: absolute;
+ right: 220px;
+ width: 24px;
+ height: 20px;
+
+ background: no-repeat 50% url("<?php echo $url; ?>mod/beechat/graphics/icons/resultset_next.png");
+}
+div#beechat_center .prev {
+ position: absolute;
+ right: 872px;
+ width: 24px;
+ height: 20px;
+
+ background: no-repeat 50% url("<?php echo $url; ?>mod/beechat/graphics/icons/resultset_previous.png");
+}
+div#beechat_scrollboxes {
+ float: right;
+ overflow: hidden;
+ width: 628px;
+ height: 21px;
+ margin: 0 24px 0 24px;
+ text-align: left;
+}
+div#beechat_scrollboxes ul {
+ width: 200000em;
+ list-style: none;
+ padding:0;
+ margin:0;
+}
+div#beechat_scrollboxes ul li {
+ float: right;
+ display: block;
+ width: 130px;
+ height: 20px;
+ padding: 1px 0 0 22px;
+
+ cursor: pointer;
+ border-left: 1px solid #BBBBBB;
+}
+div#beechat_scrollboxes ul li:hover {
+ color: #000000;
+ background-color: white;
+}
+div#beechat_scrollboxes ul li.beechat_scrollbox_selected {
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+div#beechat_scrollboxes ul li span.beechat_unread_count {
+ float: right;
+ display: block;
+ width: 16px;
+ height: 14px;
+ padding-top: 2px;
+ margin: 0 6px 0 0;
+
+ text-align: center;
+ font-size: 0.7em;
+ color: white;
+ background: no-repeat 0% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/notification_pink.png');
+}
+div#beechat_scrollboxes ul li span#beechat_box_control_close {
+ float: right;
+ width: auto;
+ padding: 1px 4px;
+ height: 20px;
+}
+
+/*
+** --
+** availability classes
+** --
+*/
+.beechat_left_availability_chat {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_green.png');
+}
+.beechat_left_availability_dnd {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_delete.png');
+}
+.beechat_left_availability_away {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_orange.png');
+}
+.beechat_left_availability_xa {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_red.png');
+}
+.beechat_left_availability_offline {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_black.png');
+}
+.beechat_left_availability_room {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/muc_icon.png');
+}
+
+
+
+.beechat_right_availability_chat {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_green.png');
+}
+.beechat_right_availability_dnd {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_delete.png');
+}
+.beechat_right_availability_away {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_orange.png');
+}
+.beechat_right_availability_xa {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_red.png');
+}
+.beechat_right_availability_offline {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_black.png');
+}
+.beechat_right_availability_room {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/muc_icon.png');
+}
+
+/*
+** --
+** tooltips
+** --
+*/
+div.tooltip.tooltipchat {
+ display: none;
+ padding: 4px;
+ width: auto;
+ background: transparent no-repeat left bottom url('<?php echo $url; ?>mod/beechat/graphics/icons/pointer.png');
+}
+div.tooltip.tooltipchat h3 {
+ margin: 0;
+ padding: 4px;
+
+ font-weight: normal;
+ font-size: 0.9em;
+ color: white;
+ background-color: #222222;
+}
+
+
+/*
+** --
+** chatboxes
+** --
+*/
+div.beechat_chatbox {
+ position: absolute;
+ width: 240px;
+ height: 300px;
+ bottom: 25px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox a {
+ color: white;
+}
+div.beechat_chatbox a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_roomroster {
+ position: absolute;
+ width: 100px;
+ height: 276px;
+ left: -101px;
+ bottom: -2px;
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+
+ border: 1px solid #4B6C8F;
+
+ background-color: #EEEEEE;
+}
+div.beechat_chatbox_roomrosteritem {
+ background-color: #FFFFFF;
+ margin: 3px;
+ padding-left: 2px;
+}
+div.beechat_chatbox_chatroom {
+ position: absolute;
+ width: 240px;
+ height: 300px;
+ left: 100px;
+ bottom: 0px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_chatroom a {
+ color: white;
+}
+div.beechat_chatbox_chatroom a:hover {
+ text-decoration: underline;
+}
+
+div.beechat_chatbox_room {
+ position: absolute;
+ width: 340px;
+ height: 300px;
+ bottom: 25px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_room a {
+ color: white;
+}
+div.beechat_chatbox_room a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_top {
+ width: 238px;
+ height: 24px;
+ margin: 0;
+ padding: 0;
+
+ font-size: 0.9em;
+ color: white;
+ background-color: #193C60;
+ border-top: 1px solid #0B2C4F;
+ border-left: 1px solid #0B2C4F;
+ border-right: 1px solid #0B2C4F;
+}
+div.beechat_chatbox_top .beechat_chatbox_top_icon {
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ z-index: 2;
+
+ width: 50px;
+ height: 50px;
+}
+div.beechat_chatbox_top .beechat_label {
+ float: left;
+ height: 13px;
+ padding: 4px 6px 6px 6px;
+
+ margin-left: 54px;
+}
+div.beechat_chatbox_top_controls {
+ margin: 0;
+ padding: 0;
+}
+div.beechat_chatbox_top_controls .beechat_chatbox_control {
+ float: right;
+ display: block;
+ width: 20px;
+ height: 19px;
+ padding: 2px;
+ margin: 0;
+
+ font-size: 1.2em;
+ font-weight: bold;
+ text-align: center;
+}
+div.beechat_chatbox_subtop {
+ width: 172px;
+ height: 30px;
+ padding: 2px 6px 2px 60px;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #CCCCCC;
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_content {
+ width: 238px;
+ height: 202px;
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+div.beechat_chatbox_content div.beechat_chatbox_message {
+ width: auto;
+ height: auto;
+ margin: 0;
+ padding: 2px;
+ border-top: 1px solid #DDDDDD;
+}
+div.beechat_chatbox_message span.beechat_chatbox_message_sender {
+ position: relative;
+ top: 0;
+ left: 6px;
+ font-weight: bold;
+ font-size: 1em;
+}
+div.beechat_chatbox_message span.beechat_chatbox_message_date {
+ float: right;
+ margin: 0 6px 0 0;
+}
+div.beechat_chatbox_content a {
+ color: #003399;
+}
+div.beechat_chatbox_content a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_content p {
+ margin: 0;
+ padding: 2px 6px;
+}
+div.beechat_chatbox_content p.beechat_chatbox_state {
+ font-size: 1em;
+ color: #888888;
+}
+div.beechat_chatbox_input {
+ width: 238px;
+ height: 40px;
+ margin: 0;
+ padding: 0;
+
+ border-top: 2px solid #BBBBBB;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_input textarea {
+ width: 204px;
+ height: 32px;
+ max-width: 240px;
+ max-height: 40px;
+ padding: 4px 4px 4px 30px;
+ margin: auto;
+ overflow: hidden;
+ vertical-align: top;
+ resize: none;
+
+ font-size: 1em;
+ font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
+ outline: none;
+ border: none;
+ background: white no-repeat 4px 3px url('<?php echo $url; ?>mod/beechat/graphics/icons/chat_icon.png');
+}
+div.beechat_chatbox_input textarea:focus {
+ outline: none;
+ border: none;
+ background-color: white;
+}
+div.beechat_chatbox_bottom {
+ position: absolute;
+ width: 238px;
+ height: 1px;
+
+ background-color: white;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #666666;
+ z-index: 2;
+}
+div.beechat_chatbox_bottom span {
+ position: absolute;
+ display: block;
+ right: 0;
+ top: 0;
+ width: 152px;
+ height: 1px;
+
+ border-bottom: 1px solid white;
+}
+div.beechat_chatbox_bottom span span {
+ position: absolute;
+ display: block;
+ width: 146px;
+ height: 1px;
+ right: 4px;
+ top: 0;
+
+ border-bottom: 1px solid #BBBBBB;
+}
diff --git a/mod/beechat/views/default/js/b64.js.php b/mod/beechat/views/default/js/b64.js.php
new file mode 100644
index 000000000..201bdbd7c
--- /dev/null
+++ b/mod/beechat/views/default/js/b64.js.php
@@ -0,0 +1,74 @@
+// This code was written by Tyler Akins and has been placed in the
+// public domain. It would be nice if you left this header intact.
+// Base64 code from Tyler Akins -- http://rumkin.com
+
+var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+/**
+ * Encodes a string in base64
+ * @param {String} input The string to encode in base64.
+ */
+function encode64(input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) + keyStr.charAt(enc4);
+ } while (i < input.length);
+
+ return output;
+}
+
+/**
+ * Decodes a base64 string.
+ * @param {String} input The string to decode.
+ */
+function decode64(input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ do {
+ enc1 = keyStr.indexOf(input.charAt(i++));
+ enc2 = keyStr.indexOf(input.charAt(i++));
+ enc3 = keyStr.indexOf(input.charAt(i++));
+ enc4 = keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output = output + String.fromCharCode(chr1);
+
+ if (enc3 != 64) {
+ output = output + String.fromCharCode(chr2);
+ }
+ if (enc4 != 64) {
+ output = output + String.fromCharCode(chr3);
+ }
+ } while (i < input.length);
+
+ return output;
+}
diff --git a/mod/beechat/views/default/js/jquery.cookie.min.js.php b/mod/beechat/views/default/js/jquery.cookie.min.js.php
new file mode 100644
index 000000000..cb09af984
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.cookie.min.js.php
@@ -0,0 +1,10 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}}; \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php b/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php
new file mode 100644
index 000000000..fa583a451
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php
@@ -0,0 +1,9 @@
+/**
+ * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 3/11/2009
+ * @author Ariel Flesler
+ * @version 1.2.7
+ **/
+;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.scrollTo-min.js.php b/mod/beechat/views/default/js/jquery.scrollTo-min.js.php
new file mode 100755
index 000000000..5e7877810
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.scrollTo-min.js.php
@@ -0,0 +1,11 @@
+/**
+ * jQuery.ScrollTo - Easy element scrolling using jQuery.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 5/25/2009
+ * @author Ariel Flesler
+ * @version 1.4.2
+ *
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+ */
+;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.serialScroll-min.js.php b/mod/beechat/views/default/js/jquery.serialScroll-min.js.php
new file mode 100755
index 000000000..d716124f9
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.serialScroll-min.js.php
@@ -0,0 +1,10 @@
+/*
+ * jQuery.SerialScroll - Animated scrolling of series
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 06/14/2009
+ * @author Ariel Flesler
+ * @version 1.2.2
+ * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
+ */
+;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.tools.min.js.php b/mod/beechat/views/default/js/jquery.tools.min.js.php
new file mode 100644
index 000000000..1574af45b
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.tools.min.js.php
@@ -0,0 +1,49 @@
+/*
+ * jQuery Tools 1.2.2 - The missing UI library for the Web
+ *
+ * [tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay]
+ *
+ * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
+ *
+ * http://flowplayer.org/tools/
+ *
+ * File generated: Mon Jun 07 08:32:38 GMT 2010
+ */
+(function(c){function p(d,a,b){var e=this,l=d.add(this),h=d.find(b.tabs),j=a.jquery?a:d.children(a),i;h.length||(h=d.children());j.length||(j=d.parent().find(a));j.length||(j=c(a));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(b.rotate){var n=h.length-1;if(f<0)return e.click(n,g);if(f>n)return e.click(0,g)}if(!k.length){if(i>=0)return e;f=b.initialIndex;k=h.eq(f)}if(f===i)return e;
+g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[b.effect].call(e,f,function(){g.type="onClick";l.trigger(g,[f])});i=f;h.removeClass(b.current);k.addClass(b.current);return e}},getConf:function(){return b},getTabs:function(){return h},getPanes:function(){return j},getCurrentPane:function(){return j.eq(i)},getCurrentTab:function(){return h.eq(i)},getIndex:function(){return i},next:function(){return e.click(i+1)},prev:function(){return e.click(i-1)}});c.each("onBeforeClick,onClick".split(","),
+function(f,g){c.isFunction(b[g])&&c(e).bind(g,b[g]);e[g]=function(k){c(e).bind(g,k);return e}});if(b.history&&c.fn.history){c.tools.history.init(h);b.event="history"}h.each(function(f){c(this).bind(b.event,function(g){e.click(f,g);return g.preventDefault()})});j.find("a[href^=#]").click(function(f){e.click(c(this).attr("href"),f)});if(location.hash)e.click(location.hash);else if(b.initialIndex===0||b.initialIndex>0)e.click(b.initialIndex)}c.tools=c.tools||{version:"1.2.2"};c.tools.tabs={conf:{tabs:"a",
+current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(d,a){o[d]=a}};var o={"default":function(d,a){this.getPanes().hide().eq(d).show();a.call()},fade:function(d,a){var b=this.getConf(),e=b.fadeOutSpeed,l=this.getPanes();e?l.fadeOut(e):l.hide();l.eq(d).fadeIn(b.fadeInSpeed,a)},slide:function(d,a){this.getPanes().slideUp(200);this.getPanes().eq(d).slideDown(400,a)},ajax:function(d,a){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),
+a)}},m;c.tools.tabs.addEffect("horizontal",function(d,a){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:m},function(){c(this).show();a.call()})});c.fn.tabs=function(d,a){var b=this.data("tabs");if(b)return b;if(c.isFunction(a))a={onBeforeClick:a};a=c.extend({},c.tools.tabs.conf,a);this.each(function(){b=new p(c(this),d,a);c(this).data("tabs",b)});return a.api?b:this}})(jQuery);
+(function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,l,m,n=false,o=p(a.next).click(function(){b.next()}),k=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h)return c;
+var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);m=clearInterval(m);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(k).add(b.getPanes());t.hover(function(){c.pause();l=clearInterval(l)},function(){n||(l=setTimeout(c.play,a.interval))})}if(a.autoplay)m=
+setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||k.addClass(i);b.onBeforeClick(function(f,e){if(e){k.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else k.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a=
+this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
+(function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function t(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=n[b.effect],k,r=a.is(":input"),u=r&&a.is(":checkbox, :radio, select, :button"),
+s=a.attr("type"),l=b.events[s]||b.events[r?u?"widget":"input":"def"];if(!q)throw'Nonexistent effect "'+b.effect+'"';l=l.split(/,\s*/);if(l.length!=2)throw"Tooltip: bad events configuration for "+s;a.bind(l[0],function(d){if(b.predelay){clearTimeout(i);j=setTimeout(function(){c.show(d)},b.predelay)}else c.show(d)}).bind(l[1],function(d){if(b.delay){clearTimeout(j);i=setTimeout(function(){c.hide(d)},b.delay)}else c.hide(d)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,
+{show:function(d){if(!e){if(m)e=f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",top:g.top,left:g.left});k=true;q[0].call(c,function(){d.type="onShow";k="full";h.trigger(d)});
+g=b.events.tooltip.split(/,\s*/);e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(l[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){k=false;n[b.effect][1].call(c,function(){d.type="onHide";k=false;h.trigger(d)});return c}},isShown:function(d){return d?k=="full":k},getConf:function(){return b},
+getTip:function(){return e},getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.2"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",
+tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,
+{},f.tools.tooltip.conf,a);if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new t(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
+(function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
+b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
+(function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
+g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
+a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
+(function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+
+b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){e(".cloned:last").before(b);e(".cloned:first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){if(c.circular&&b===0&&k==-1&&d!==0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a;
+var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g),
+s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0)}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,d){o.toggleClass(c.disabledClass,d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-
+1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}});e(a).trigger("onBeforeSeek",[c.initialIndex])}e.tools=e.tools||
+{version:"1.2.2"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable",c)});return f.api?c:this}})(jQuery);
+(function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause();
+clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery);
+(function(d){function p(c,g){var h=d(g);return h.length<2?h:c.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(c){if(typeof c=="string")c={navi:c};c=d.extend({},m.navigator.conf,c);var g;this.each(function(){function h(a,b,i){e.seekTo(b);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(c.naviItem||
+"> *")}function n(a){var b=d("<"+(c.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&b.addClass(l);c.indexed&&b.text(a+1);c.idPrefix&&b.attr("id",c.idPrefix+a);return b.appendTo(k)}function o(a,b){a=f().eq(b.replace("#",""));a.length||(a=f().filter("[href="+b+"]"));a.click()}var e=d(this).data("scrollable"),k=p(e.getRoot(),c.navi),q=e.getNaviButtons(),l=c.activeClass,j=c.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};f().length?f().each(function(a){d(this).click(function(b){h(d(this),
+a,b)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,b){var i=f().eq(b);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(b).addClass(l)});e.onAddItem(function(a,b){b=n(e.getItems().index(b));j&&b.history(o)});j&&f().history(o)});return c.api?g:this}})(jQuery);
+(function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
+'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
+c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
+getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<div class="close"></div>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.2"};a.tools.overlay={addEffect:function(d,
+b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
+d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
diff --git a/mod/beechat/views/default/js/json2.js.php b/mod/beechat/views/default/js/json2.js.php
new file mode 100644
index 000000000..7ae503202
--- /dev/null
+++ b/mod/beechat/views/default/js/json2.js.php
@@ -0,0 +1,476 @@
+/*
+ http://www.JSON.org/json2.js
+ 2009-06-29
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+*/
+
+/*jslint evil: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, prototype, push, replace, slice, stringify,
+ test, toJSON, toString, valueOf
+*/
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+var JSON = JSON || {};
+
+(function () {
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ?
+ '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' :
+ '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' :
+ gap ? '[\n' + gap +
+ partial.join(',\n' + gap) + '\n' +
+ mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' :
+ gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
+ mind + '}' : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/.
+test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
+replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
+replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+}());
diff --git a/mod/beechat/views/default/js/md5.js.php b/mod/beechat/views/default/js/md5.js.php
new file mode 100644
index 000000000..4284f62bb
--- /dev/null
+++ b/mod/beechat/views/default/js/md5.js.php
@@ -0,0 +1,261 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ var olda, oldb, oldc, oldd;
+ for(var i = 0; i < x.length; i += 16)
+ {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return [a, b, c, d];
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) { bkey = core_md5(bkey, key.length * chrsz); }
+
+ var ipad = new Array(16), opad = new Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = [];
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ {
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ }
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ {
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ var triplet, j;
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) |
+ (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) |
+ ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) { str += b64pad; }
+ else { str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); }
+ }
+ }
+ return str;
+}
diff --git a/mod/beechat/views/default/js/sha1.js.php b/mod/beechat/views/default/js/sha1.js.php
new file mode 100644
index 000000000..db3bf0544
--- /dev/null
+++ b/mod/beechat/views/default/js/sha1.js.php
@@ -0,0 +1,207 @@
+/*
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
+ * in FIPS PUB 180-1
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for details.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
+function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
+function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
+function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
+function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
+function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function sha1_vm_test()
+{
+ return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+
+/*
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
+ */
+function core_sha1(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << (24 - len % 32);
+ x[((len + 64 >> 9) << 4) + 15] = len;
+
+ var w = new Array(80);
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+ var e = -1009589776;
+
+ var i, j, t, olda, oldb, oldc, oldd, olde;
+ for (i = 0; i < x.length; i += 16)
+ {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+ olde = e;
+
+ for (j = 0; j < 80; j++)
+ {
+ if (j < 16) { w[j] = x[i + j]; }
+ else { w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); }
+ t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
+ safe_add(safe_add(e, w[j]), sha1_kt(j)));
+ e = d;
+ d = c;
+ c = rol(b, 30);
+ b = a;
+ a = t;
+ }
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ e = safe_add(e, olde);
+ }
+ return [a, b, c, d, e];
+}
+
+/*
+ * Perform the appropriate triplet combination function for the current
+ * iteration
+ */
+function sha1_ft(t, b, c, d)
+{
+ if (t < 20) { return (b & c) | ((~b) & d); }
+ if (t < 40) { return b ^ c ^ d; }
+ if (t < 60) { return (b & c) | (b & d) | (c & d); }
+ return b ^ c ^ d;
+}
+
+/*
+ * Determine the appropriate additive constant for the current iteration
+ */
+function sha1_kt(t)
+{
+ return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
+ (t < 60) ? -1894007588 : -899497514;
+}
+
+/*
+ * Calculate the HMAC-SHA1 of a key and some data
+ */
+function core_hmac_sha1(key, data)
+{
+ var bkey = str2binb(key);
+ if (bkey.length > 16) { bkey = core_sha1(bkey, key.length * chrsz); }
+
+ var ipad = new Array(16), opad = new Array(16);
+ for (var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
+ return core_sha1(opad.concat(hash), 512 + 160);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
+ */
+function str2binb(str)
+{
+ var bin = [];
+ var mask = (1 << chrsz) - 1;
+ for (var i = 0; i < str.length * chrsz; i += chrsz)
+ {
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
+ }
+ return bin;
+}
+
+/*
+ * Convert an array of big-endian words to a string
+ */
+function binb2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for (var i = 0; i < bin.length * 32; i += chrsz)
+ {
+ str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a hex string.
+ */
+function binb2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for (var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a base-64 string
+ */
+function binb2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ var triplet, j;
+ for (var i = 0; i < binarray.length * 4; i += 3)
+ {
+ triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) |
+ (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) |
+ ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
+ for (j = 0; j < 4; j++)
+ {
+ if (i * 8 + j * 6 > binarray.length * 32) { str += b64pad; }
+ else { str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); }
+ }
+ }
+ return str;
+}
diff --git a/mod/beechat/views/default/js/strophe.min.js.php b/mod/beechat/views/default/js/strophe.min.js.php
new file mode 100644
index 000000000..f0eb17906
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.min.js.php
@@ -0,0 +1 @@
+var Base64=(function(){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var obj={encode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else{if(isNaN(chr3)){enc4=64}}output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4)}while(i<input.length);return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output}};return obj})();var MD5=(function(){var hexcase=0;var b64pad="";var chrsz=8;var safe_add=function(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535)};var bit_rol=function(num,cnt){return(num<<cnt)|(num>>>(32-cnt))};var str2binl=function(str){var bin=[];var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32)}return bin};var binl2str=function(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask)}return str};var binl2hex=function(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&15)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&15)}return str};var binl2b64=function(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";var triplet,j;for(var i=0;i<binarray.length*4;i+=3){triplet=(((binarray[i>>2]>>8*(i%4))&255)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&255)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&255);for(j=0;j<4;j++){if(i*8+j*6>binarray.length*32){str+=b64pad}else{str+=tab.charAt((triplet>>6*(3-j))&63)}}}return str};var md5_cmn=function(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)};var md5_ff=function(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t)};var md5_gg=function(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t)};var md5_hh=function(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)};var md5_ii=function(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t)};var core_md5=function(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var olda,oldb,oldc,oldd;for(var i=0;i<x.length;i+=16){olda=a;oldb=b;oldc=c;oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd)}return[a,b,c,d]};var core_hmac_md5=function(key,data){var bkey=str2binl(key);if(bkey.length>16){bkey=core_md5(bkey,key.length*chrsz)}var ipad=new Array(16),opad=new Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828}var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128)};var obj={hexdigest:function(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz))},b64digest:function(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz))},hash:function(s){return binl2str(core_md5(str2binl(s),s.length*chrsz))},hmac_hexdigest:function(key,data){return binl2hex(core_hmac_md5(key,data))},hmac_b64digest:function(key,data){return binl2b64(core_hmac_md5(key,data))},hmac_hash:function(key,data){return binl2str(core_hmac_md5(key,data))},test:function(){return MD5.hexdigest("abc")==="900150983cd24fb0d6963f7d28e17f72"}};return obj})();if(!Function.prototype.bind){Function.prototype.bind=function(obj){var func=this;return function(){return func.apply(obj,arguments)}}}if(!Function.prototype.prependArg){Function.prototype.prependArg=function(arg){var func=this;return function(){var newargs=[arg];for(var i=0;i<arguments.length;i++){newargs.push(arguments[i])}return func.apply(this,newargs)}}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt){var len=this.length;var from=Number(arguments[1])||0;from=(from<0)?Math.ceil(from):Math.floor(from);if(from<0){from+=len}for(;from<len;from++){if(from in this&&this[from]===elt){return from}}return -1}}(function(callback){var Strophe;function $build(name,attrs){return new Strophe.Builder(name,attrs)}function $msg(attrs){return new Strophe.Builder("message",attrs)}function $iq(attrs){return new Strophe.Builder("iq",attrs)}function $pres(attrs){return new Strophe.Builder("presence",attrs)}Strophe={VERSION:"1.0.1",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas"},addNamespace:function(name,value){Strophe.NS[name]=value},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3},TIMEOUT:1.1,SECONDARY_TIMEOUT:0.1,forEachChild:function(elem,elemName,func){var i,childNode;for(i=0;i<elem.childNodes.length;i++){childNode=elem.childNodes[i];if(childNode.nodeType==Strophe.ElementType.NORMAL&&(!elemName||this.isTagEqual(childNode,elemName))){func(childNode)}}},isTagEqual:function(el,name){return el.tagName.toLowerCase()==name.toLowerCase()},_xmlGenerator:null,_makeGenerator:function(){var doc;if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.appendChild(doc.createElement("strophe"))}else{doc=document.implementation.createDocument("jabber:client","strophe",null)}return doc},xmlElement:function(name){if(!name){return null}var node=null;if(!Strophe._xmlGenerator){Strophe._xmlGenerator=Strophe._makeGenerator()}node=Strophe._xmlGenerator.createElement(name);var a,i,k;for(a=1;a<arguments.length;a++){if(!arguments[a]){continue}if(typeof(arguments[a])=="string"||typeof(arguments[a])=="number"){node.appendChild(Strophe.xmlTextNode(arguments[a]))}else{if(typeof(arguments[a])=="object"&&typeof(arguments[a].sort)=="function"){for(i=0;i<arguments[a].length;i++){if(typeof(arguments[a][i])=="object"&&typeof(arguments[a][i].sort)=="function"){node.setAttribute(arguments[a][i][0],arguments[a][i][1])}}}else{if(typeof(arguments[a])=="object"){for(k in arguments[a]){if(arguments[a].hasOwnProperty(k)){node.setAttribute(k,arguments[a][k])}}}}}}return node},xmlescape:function(text){text=text.replace(/\&/g,"&amp;");text=text.replace(/</g,"&lt;");text=text.replace(/>/g,"&gt;");return text},xmlTextNode:function(text){text=Strophe.xmlescape(text);if(!Strophe._xmlGenerator){Strophe._xmlGenerator=Strophe._makeGenerator()}return Strophe._xmlGenerator.createTextNode(text)},getText:function(elem){if(!elem){return null}var str="";if(elem.childNodes.length===0&&elem.nodeType==Strophe.ElementType.TEXT){str+=elem.nodeValue}for(var i=0;i<elem.childNodes.length;i++){if(elem.childNodes[i].nodeType==Strophe.ElementType.TEXT){str+=elem.childNodes[i].nodeValue}}return str},copyElement:function(elem){var i,el;if(elem.nodeType==Strophe.ElementType.NORMAL){el=Strophe.xmlElement(elem.tagName);for(i=0;i<elem.attributes.length;i++){el.setAttribute(elem.attributes[i].nodeName.toLowerCase(),elem.attributes[i].value)}for(i=0;i<elem.childNodes.length;i++){el.appendChild(Strophe.copyElement(elem.childNodes[i]))}}else{if(elem.nodeType==Strophe.ElementType.TEXT){el=Strophe.xmlTextNode(elem.nodeValue)}}return el},escapeNode:function(node){return node.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40")},unescapeNode:function(node){return node.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\")},getNodeFromJid:function(jid){if(jid.indexOf("@")<0){return null}return jid.split("@")[0]},getDomainFromJid:function(jid){var bare=Strophe.getBareJidFromJid(jid);if(bare.indexOf("@")<0){return bare}else{var parts=bare.split("@");parts.splice(0,1);return parts.join("@")}},getResourceFromJid:function(jid){var s=jid.split("/");if(s.length<2){return null}s.splice(0,1);return s.join("/")},getBareJidFromJid:function(jid){return jid.split("/")[0]},log:function(level,msg){return},debug:function(msg){this.log(this.LogLevel.DEBUG,msg)},info:function(msg){this.log(this.LogLevel.INFO,msg)},warn:function(msg){this.log(this.LogLevel.WARN,msg)},error:function(msg){this.log(this.LogLevel.ERROR,msg)},fatal:function(msg){this.log(this.LogLevel.FATAL,msg)},serialize:function(elem){var result;if(!elem){return null}if(typeof(elem.tree)==="function"){elem=elem.tree()}var nodeName=elem.nodeName;var i,child;if(elem.getAttribute("_realname")){nodeName=elem.getAttribute("_realname")}result="<"+nodeName;for(i=0;i<elem.attributes.length;i++){if(elem.attributes[i].nodeName!="_realname"){result+=" "+elem.attributes[i].nodeName.toLowerCase()+"='"+elem.attributes[i].value.replace("&","&amp;").replace("'","&apos;").replace("<","&lt;")+"'"}}if(elem.childNodes.length>0){result+=">";for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeType==Strophe.ElementType.NORMAL){result+=Strophe.serialize(child)}else{if(child.nodeType==Strophe.ElementType.TEXT){result+=child.nodeValue}}}result+="</"+nodeName+">"}else{result+="/>"}return result},_requestId:0,_connectionPlugins:{},addConnectionPlugin:function(name,ptype){Strophe._connectionPlugins[name]=ptype}};Strophe.Builder=function(name,attrs){if(name=="presence"||name=="message"||name=="iq"){if(attrs&&!attrs.xmlns){attrs.xmlns=Strophe.NS.CLIENT}else{if(!attrs){attrs={xmlns:Strophe.NS.CLIENT}}}}this.nodeTree=Strophe.xmlElement(name,attrs);this.node=this.nodeTree};Strophe.Builder.prototype={tree:function(){return this.nodeTree},toString:function(){return Strophe.serialize(this.nodeTree)},up:function(){this.node=this.node.parentNode;return this},attrs:function(moreattrs){for(var k in moreattrs){if(moreattrs.hasOwnProperty(k)){this.node.setAttribute(k,moreattrs[k])}}return this},c:function(name,attrs){var child=Strophe.xmlElement(name,attrs);this.node.appendChild(child);this.node=child;return this},cnode:function(elem){this.node.appendChild(elem);this.node=elem;return this},t:function(text){var child=Strophe.xmlTextNode(text);this.node.appendChild(child);return this}};Strophe.Handler=function(handler,ns,name,type,id,from,options){this.handler=handler;this.ns=ns;this.name=name;this.type=type;this.id=id;this.options=options||{matchbare:false};if(!this.options.matchBare){this.options.matchBare=false}if(this.options.matchBare){this.from=Strophe.getBareJidFromJid(from)}else{this.from=from}this.user=true};Strophe.Handler.prototype={isMatch:function(elem){var nsMatch;var from=null;if(this.options.matchBare){from=Strophe.getBareJidFromJid(elem.getAttribute("from"))}else{from=elem.getAttribute("from")}nsMatch=false;if(!this.ns){nsMatch=true}else{var self=this;Strophe.forEachChild(elem,null,function(elem){if(elem.getAttribute("xmlns")==self.ns){nsMatch=true}});nsMatch=nsMatch||elem.getAttribute("xmlns")==this.ns}if(nsMatch&&(!this.name||Strophe.isTagEqual(elem,this.name))&&(!this.type||elem.getAttribute("type")===this.type)&&(!this.id||elem.getAttribute("id")===this.id)&&(!this.from||from===this.from)){return true}return false},run:function(elem){var result=null;try{result=this.handler(elem)}catch(e){if(e.sourceURL){Strophe.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message)}else{if(e.fileName){if(typeof(console)!="undefined"){console.trace();console.error(this.handler," - error - ",e,e.message)}Strophe.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message)}else{Strophe.fatal("error: "+this.handler)}}throw e}return result},toString:function(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}};Strophe.TimedHandler=function(period,handler){this.period=period;this.handler=handler;this.lastCalled=new Date().getTime();this.user=true};Strophe.TimedHandler.prototype={run:function(){this.lastCalled=new Date().getTime();return this.handler()},reset:function(){this.lastCalled=new Date().getTime()},toString:function(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}};Strophe.Request=function(elem,func,rid,sends){this.id=++Strophe._requestId;this.xmlData=elem;this.data=Strophe.serialize(elem);this.origFunc=func;this.func=func;this.rid=rid;this.date=NaN;this.sends=sends||0;this.abort=false;this.dead=null;this.age=function(){if(!this.date){return 0}var now=new Date();return(now-this.date)/1000};this.timeDead=function(){if(!this.dead){return 0}var now=new Date();return(now-this.dead)/1000};this.xhr=this._newXHR()};Strophe.Request.prototype={getResponse:function(){var node=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){node=this.xhr.responseXML.documentElement;if(node.tagName=="parsererror"){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+Strophe.serialize(this.xhr.responseXML));throw"parsererror"}}else{if(this.xhr.responseText){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+Strophe.serialize(this.xhr.responseXML))}}return node},_newXHR:function(){var xhr=null;if(window.XMLHttpRequest){xhr=new XMLHttpRequest();if(xhr.overrideMimeType){xhr.overrideMimeType("text/xml")}}else{if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP")}}xhr.onreadystatechange=this.func.prependArg(this);return xhr}};Strophe.Connection=function(service){this.service=service;this.jid="";this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this._idleTimeout=null;this._disconnectTimeout=null;this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this.paused=false;this.hold=1;this.wait=60;this.window=5;this._data=[];this._requests=[];this._uniqueId=Math.round(Math.random()*10000);this._sasl_success_handler=null;this._sasl_failure_handler=null;this._sasl_challenge_handler=null;this._idleTimeout=setTimeout(this._onIdle.bind(this),100);for(var k in Strophe._connectionPlugins){if(Strophe._connectionPlugins.hasOwnProperty(k)){var ptype=Strophe._connectionPlugins[k];var F=function(){};F.prototype=ptype;this[k]=new F();this[k].init(this)}}};Strophe.Connection.prototype={reset:function(){this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this._requests=[];this._uniqueId=Math.round(Math.random()*10000)},pause:function(){this.paused=true},resume:function(){this.paused=false},getUniqueId:function(suffix){if(typeof(suffix)=="string"||typeof(suffix)=="number"){return ++this._uniqueId+":"+suffix}else{return ++this._uniqueId+""}},connect:function(jid,pass,callback,wait,hold){this.jid=jid;this.pass=pass;this.connect_callback=callback;this.disconnecting=false;this.connected=false;this.authenticated=false;this.errors=0;this.wait=wait||this.wait;this.hold=hold||this.hold;this.domain=Strophe.getDomainFromJid(this.jid);var body=this._buildBody().attrs({to:this.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":Strophe.NS.BOSH});this._changeConnectStatus(Strophe.Status.CONNECTING,null);this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._connect_cb.bind(this)),body.tree().getAttribute("rid")));this._throttledRequestHandler()},attach:function(jid,sid,rid,callback,wait,hold,wind){this.jid=jid;this.sid=sid;this.rid=rid;this.connect_callback=callback;this.domain=Strophe.getDomainFromJid(this.jid);this.authenticated=true;this.connected=true;this.wait=wait||this.wait;this.hold=hold||this.hold;this.window=wind||this.window;this._changeConnectStatus(Strophe.Status.ATTACHED,null)},xmlInput:function(elem){return},xmlOutput:function(elem){return},rawInput:function(data){return},rawOutput:function(data){return},send:function(elem){if(elem===null){return}if(typeof(elem.sort)==="function"){for(var i=0;i<elem.length;i++){this._queueData(elem[i])}}else{if(typeof(elem.tree)==="function"){this._queueData(elem.tree())}else{this._queueData(elem)}}this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},flush:function(){clearTimeout(this._idleTimeout);this._onIdle()},sendIQ:function(elem,callback,errback,timeout){var timeoutHandler=null;var that=this;if(typeof(elem.tree)==="function"){elem=elem.tree()}var id=elem.getAttribute("id");if(!id){id=this.getUniqueId("sendIQ");elem.setAttribute("id",id)}var handler=this.addHandler(function(stanza){if(timeoutHandler){that.deleteTimedHandler(timeoutHandler)}var iqtype=stanza.getAttribute("type");if(iqtype==="result"){if(callback){callback(stanza)}}else{if(iqtype==="error"){if(errback){errback(stanza)}}else{throw {name:"StropheError",message:"Got bad IQ type of "+iqtype}}}},null,"iq",null,id);if(timeout){timeoutHandler=this.addTimedHandler(timeout,function(){that.deleteHandler(handler);if(errback){errback(null)}return false})}this.send(elem);return id},_queueData:function(element){if(element===null||!element.tagName||!element.childNodes){throw {name:"StropheError",message:"Cannot queue non-DOMElement."}}this._data.push(element)},_sendRestart:function(){this._data.push("restart");this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},addTimedHandler:function(period,handler){var thand=new Strophe.TimedHandler(period,handler);this.addTimeds.push(thand);return thand},deleteTimedHandler:function(handRef){this.removeTimeds.push(handRef)},addHandler:function(handler,ns,name,type,id,from,options){var hand=new Strophe.Handler(handler,ns,name,type,id,from,options);this.addHandlers.push(hand);return hand},deleteHandler:function(handRef){this.removeHandlers.push(handRef)},disconnect:function(reason){this._changeConnectStatus(Strophe.Status.DISCONNECTING,reason);Strophe.info("Disconnect was called because: "+reason);if(this.connected){this._disconnectTimeout=this._addSysTimedHandler(3000,this._onDisconnectTimeout.bind(this));this._sendTerminate()}},_changeConnectStatus:function(status,condition){for(var k in Strophe._connectionPlugins){if(Strophe._connectionPlugins.hasOwnProperty(k)){var plugin=this[k];if(plugin.statusChanged){try{plugin.statusChanged(status,condition)}catch(err){Strophe.error(""+k+" plugin caused an exception changing status: "+err)}}}}if(this.connect_callback){try{this.connect_callback(status,condition)}catch(e){Strophe.error("User connection callback caused an exception: "+e)}}},_buildBody:function(){var bodyWrap=$build("body",{rid:this.rid++,xmlns:Strophe.NS.HTTPBIND});if(this.sid!==null){bodyWrap.attrs({sid:this.sid})}return bodyWrap},_removeRequest:function(req){Strophe.debug("removing request");var i;for(i=this._requests.length-1;i>=0;i--){if(req==this._requests[i]){this._requests.splice(i,1)}}req.xhr.onreadystatechange=function(){};this._throttledRequestHandler()},_restartRequest:function(i){var req=this._requests[i];if(req.dead===null){req.dead=new Date()}this._processRequest(i)},_processRequest:function(i){var req=this._requests[i];var reqStatus=-1;try{if(req.xhr.readyState==4){reqStatus=req.xhr.status}}catch(e){Strophe.error("caught an error in _requests["+i+"], reqStatus: "+reqStatus)}if(typeof(reqStatus)=="undefined"){reqStatus=-1}var time_elapsed=req.age();var primaryTimeout=(!isNaN(time_elapsed)&&time_elapsed>Math.floor(Strophe.TIMEOUT*this.wait));var secondaryTimeout=(req.dead!==null&&req.timeDead()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait));var requestCompletedWithServerError=(req.xhr.readyState==4&&(reqStatus<1||reqStatus>=500));if(primaryTimeout||secondaryTimeout||requestCompletedWithServerError){if(secondaryTimeout){Strophe.error("Request "+this._requests[i].id+" timed out (secondary), restarting")}req.abort=true;req.xhr.abort();req.xhr.onreadystatechange=function(){};this._requests[i]=new Strophe.Request(req.xmlData,req.origFunc,req.rid,req.sends);req=this._requests[i]}if(req.xhr.readyState===0){Strophe.debug("request id "+req.id+"."+req.sends+" posting");req.date=new Date();try{req.xhr.open("POST",this.service,true)}catch(e2){Strophe.error("XHR open failed.");if(!this.connected){this._changeConnectStatus(Strophe.Status.CONNFAIL,"bad-service")}this.disconnect();return}var sendFunc=function(){req.xhr.send(req.data)};if(req.sends>1){var backoff=Math.pow(req.sends,3)*1000;setTimeout(sendFunc,backoff)}else{sendFunc()}req.sends++;this.xmlOutput(req.xmlData);this.rawOutput(req.data)}else{Strophe.debug("_processRequest: "+(i===0?"first":"second")+" request has readyState of "+req.xhr.readyState)}},_throttledRequestHandler:function(){if(!this._requests){Strophe.debug("_throttledRequestHandler called with undefined requests")}else{Strophe.debug("_throttledRequestHandler called with "+this._requests.length+" requests")}if(!this._requests||this._requests.length===0){return}if(this._requests.length>0){this._processRequest(0)}if(this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window-1){this._processRequest(1)}},_onRequestStateChange:function(func,req){Strophe.debug("request id "+req.id+"."+req.sends+" state changed to "+req.xhr.readyState);if(req.abort){req.abort=false;return}var reqStatus;if(req.xhr.readyState==4){reqStatus=0;try{reqStatus=req.xhr.status}catch(e){}if(typeof(reqStatus)=="undefined"){reqStatus=0}if(this.disconnecting){if(reqStatus>=400){this._hitError(reqStatus);return}}var reqIs0=(this._requests[0]==req);var reqIs1=(this._requests[1]==req);if((reqStatus>0&&reqStatus<500)||req.sends>5){this._removeRequest(req);Strophe.debug("request id "+req.id+" should now be removed")}if(reqStatus==200){if(reqIs1||(reqIs0&&this._requests.length>0&&this._requests[0].age()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait))){this._restartRequest(0)}Strophe.debug("request id "+req.id+"."+req.sends+" got 200");func(req);this.errors=0}else{Strophe.error("request id "+req.id+"."+req.sends+" error "+reqStatus+" happened");if(reqStatus===0||(reqStatus>=400&&reqStatus<600)||reqStatus>=12000){this._hitError(reqStatus);if(reqStatus>=400&&reqStatus<500){this._changeConnectStatus(Strophe.Status.DISCONNECTING,null);this._doDisconnect()}}}if(!((reqStatus>0&&reqStatus<10000)||req.sends>5)){this._throttledRequestHandler()}}},_hitError:function(reqStatus){this.errors++;Strophe.warn("request errored, status: "+reqStatus+", number of errors: "+this.errors);if(this.errors>4){this._onDisconnectTimeout()}},_doDisconnect:function(){Strophe.info("_doDisconnect was called");this.authenticated=false;this.disconnecting=false;this.sid=null;this.streamId=null;this.rid=Math.floor(Math.random()*4294967295);if(this.connected){this._changeConnectStatus(Strophe.Status.DISCONNECTED,null);this.connected=false}this.handlers=[];this.timedHandlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[]},_dataRecv:function(req){try{var elem=req.getResponse()}catch(e){if(e!="parsererror"){throw e}this.disconnect("strophe-parsererror")}if(elem===null){return}this.xmlInput(elem);this.rawInput(Strophe.serialize(elem));var i,hand;while(this.removeHandlers.length>0){hand=this.removeHandlers.pop();i=this.handlers.indexOf(hand);if(i>=0){this.handlers.splice(i,1)}}while(this.addHandlers.length>0){this.handlers.push(this.addHandlers.pop())}if(this.disconnecting&&this._requests.length===0){this.deleteTimedHandler(this._disconnectTimeout);this._disconnectTimeout=null;this._doDisconnect();return}var typ=elem.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=elem.getAttribute("condition");conflict=elem.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict"}this._changeConnectStatus(Strophe.Status.CONNFAIL,cond)}else{this._changeConnectStatus(Strophe.Status.CONNFAIL,"unknown")}this.disconnect();return}var self=this;Strophe.forEachChild(elem,null,function(child){var i,newList;newList=self.handlers;self.handlers=[];for(i=0;i<newList.length;i++){var hand=newList[i];if(hand.isMatch(child)&&(self.authenticated||!hand.user)){if(hand.run(child)){self.handlers.push(hand)}}else{self.handlers.push(hand)}}})},_sendTerminate:function(){Strophe.info("_sendTerminate was called");var body=this._buildBody().attrs({type:"terminate"});if(this.authenticated){body.c("presence",{xmlns:Strophe.NS.CLIENT,type:"unavailable"})}this.disconnecting=true;var req=new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid"));this._requests.push(req);this._throttledRequestHandler()},_connect_cb:function(req){Strophe.info("_connect_cb was called");this.connected=true;var bodyWrap=req.getResponse();if(!bodyWrap){return}this.xmlInput(bodyWrap);this.rawInput(Strophe.serialize(bodyWrap));var typ=bodyWrap.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=bodyWrap.getAttribute("condition");conflict=bodyWrap.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict"}this._changeConnectStatus(Strophe.Status.CONNFAIL,cond)}else{this._changeConnectStatus(Strophe.Status.CONNFAIL,"unknown")}return}if(!this.sid){this.sid=bodyWrap.getAttribute("sid")}if(!this.stream_id){this.stream_id=bodyWrap.getAttribute("authid")}var wind=bodyWrap.getAttribute("requests");if(wind){this.window=parseInt(wind,10)}var hold=bodyWrap.getAttribute("hold");if(hold){this.hold=parseInt(hold,10)}var wait=bodyWrap.getAttribute("wait");if(wait){this.wait=parseInt(wait,10)}var do_sasl_plain=false;var do_sasl_digest_md5=false;var do_sasl_anonymous=false;var mechanisms=bodyWrap.getElementsByTagName("mechanism");var i,mech,auth_str,hashed_auth_str;if(mechanisms.length>0){for(i=0;i<mechanisms.length;i++){mech=Strophe.getText(mechanisms[i]);if(mech=="DIGEST-MD5"){do_sasl_digest_md5=true}else{if(mech=="PLAIN"){do_sasl_plain=true}else{if(mech=="ANONYMOUS"){do_sasl_anonymous=true}}}}}else{var body=this._buildBody();this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._connect_cb.bind(this)),body.tree().getAttribute("rid")));this._throttledRequestHandler();return}if(Strophe.getNodeFromJid(this.jid)===null&&do_sasl_anonymous){this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"ANONYMOUS"}).tree())}else{if(Strophe.getNodeFromJid(this.jid)===null){this._changeConnectStatus(Strophe.Status.CONNFAIL,"x-strophe-bad-non-anon-jid");this.disconnect()}else{if(do_sasl_digest_md5){this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge1_cb.bind(this),null,"challenge",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"DIGEST-MD5"}).tree())}else{if(do_sasl_plain){auth_str=Strophe.getBareJidFromJid(this.jid);auth_str=auth_str+"\u0000";auth_str=auth_str+Strophe.getNodeFromJid(this.jid);auth_str=auth_str+"\u0000";auth_str=auth_str+this.pass;this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);hashed_auth_str=Base64.encode(auth_str);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"PLAIN"}).t(hashed_auth_str).tree())}else{this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._addSysHandler(this._auth1_cb.bind(this),null,null,null,"_auth_1");this.send($iq({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:Strophe.NS.AUTH}).c("username",{}).t(Strophe.getNodeFromJid(this.jid)).tree())}}}}},_sasl_challenge1_cb:function(elem){var attribMatch=/([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/;var challenge=Base64.decode(Strophe.getText(elem));var cnonce=MD5.hexdigest(Math.random()*1234567890);var realm="";var host=null;var nonce="";var qop="";var matches;this.deleteHandler(this._sasl_failure_handler);while(challenge.match(attribMatch)){matches=challenge.match(attribMatch);challenge=challenge.replace(matches[0],"");matches[2]=matches[2].replace(/^"(.+)"$/,"$1");switch(matches[1]){case"realm":realm=matches[2];break;case"nonce":nonce=matches[2];break;case"qop":qop=matches[2];break;case"host":host=matches[2];break}}var digest_uri="xmpp/"+this.domain;if(host!==null){digest_uri=digest_uri+"/"+host}var A1=MD5.hash(Strophe.getNodeFromJid(this.jid)+":"+realm+":"+this.pass)+":"+nonce+":"+cnonce;var A2="AUTHENTICATE:"+digest_uri;var responseText="";responseText+="username="+this._quote(Strophe.getNodeFromJid(this.jid))+",";responseText+="realm="+this._quote(realm)+",";responseText+="nonce="+this._quote(nonce)+",";responseText+="cnonce="+this._quote(cnonce)+",";responseText+='nc="00000001",';responseText+='qop="auth",';responseText+="digest-uri="+this._quote(digest_uri)+",";responseText+="response="+this._quote(MD5.hexdigest(MD5.hexdigest(A1)+":"+nonce+":00000001:"+cnonce+":auth:"+MD5.hexdigest(A2)))+",";responseText+='charset="utf-8"';this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge2_cb.bind(this),null,"challenge",null,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("response",{xmlns:Strophe.NS.SASL}).t(Base64.encode(responseText)).tree());return false},_quote:function(str){return'"'+str.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'},_sasl_challenge2_cb:function(elem){this.deleteHandler(this._sasl_success_handler);this.deleteHandler(this._sasl_failure_handler);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("response",{xmlns:Strophe.NS.SASL}).tree());return false},_auth1_cb:function(elem){var iq=$iq({type:"set",id:"_auth_2"}).c("query",{xmlns:Strophe.NS.AUTH}).c("username",{}).t(Strophe.getNodeFromJid(this.jid)).up().c("password").t(this.pass);if(!Strophe.getResourceFromJid(this.jid)){this.jid=Strophe.getBareJidFromJid(this.jid)+"/strophe"}iq.up().c("resource",{}).t(Strophe.getResourceFromJid(this.jid));this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2");this.send(iq.tree());return false},_sasl_success_cb:function(elem){Strophe.info("SASL authentication succeeded.");this.deleteHandler(this._sasl_failure_handler);this._sasl_failure_handler=null;if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null}this._addSysHandler(this._sasl_auth1_cb.bind(this),null,"stream:features",null,null);this._sendRestart();return false},_sasl_auth1_cb:function(elem){var i,child;for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeName=="bind"){this.do_bind=true}if(child.nodeName=="session"){this.do_session=true}}if(!this.do_bind){this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}else{this._addSysHandler(this._sasl_bind_cb.bind(this),null,null,null,"_bind_auth_2");var resource=Strophe.getResourceFromJid(this.jid);if(resource){this.send($iq({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:Strophe.NS.BIND}).c("resource",{}).t(resource).tree())}else{this.send($iq({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:Strophe.NS.BIND}).tree())}}return false},_sasl_bind_cb:function(elem){if(elem.getAttribute("type")=="error"){Strophe.info("SASL binding failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}var bind=elem.getElementsByTagName("bind");var jidNode;if(bind.length>0){jidNode=bind[0].getElementsByTagName("jid");if(jidNode.length>0){this.jid=Strophe.getText(jidNode[0]);if(this.do_session){this._addSysHandler(this._sasl_session_cb.bind(this),null,null,null,"_session_auth_2");this.send($iq({type:"set",id:"_session_auth_2"}).c("session",{xmlns:Strophe.NS.SESSION}).tree())}else{this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}}}else{Strophe.info("SASL binding failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}},_sasl_session_cb:function(elem){if(elem.getAttribute("type")=="result"){this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}else{if(elem.getAttribute("type")=="error"){Strophe.info("Session creation failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}}return false},_sasl_failure_cb:function(elem){if(this._sasl_success_handler){this.deleteHandler(this._sasl_success_handler);this._sasl_success_handler=null}if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null}this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false},_auth2_cb:function(elem){if(elem.getAttribute("type")=="result"){this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}else{if(elem.getAttribute("type")=="error"){this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);this.disconnect()}}return false},_addSysTimedHandler:function(period,handler){var thand=new Strophe.TimedHandler(period,handler);thand.user=false;this.addTimeds.push(thand);return thand},_addSysHandler:function(handler,ns,name,type,id){var hand=new Strophe.Handler(handler,ns,name,type,id);hand.user=false;this.addHandlers.push(hand);return hand},_onDisconnectTimeout:function(){Strophe.info("_onDisconnectTimeout was called");var req;while(this._requests.length>0){req=this._requests.pop();req.abort=true;req.xhr.abort();req.xhr.onreadystatechange=function(){}}this._doDisconnect();return false},_onIdle:function(){var i,thand,since,newList;while(this.removeTimeds.length>0){thand=this.removeTimeds.pop();i=this.timedHandlers.indexOf(thand);if(i>=0){this.timedHandlers.splice(i,1)}}while(this.addTimeds.length>0){this.timedHandlers.push(this.addTimeds.pop())}var now=new Date().getTime();newList=[];for(i=0;i<this.timedHandlers.length;i++){thand=this.timedHandlers[i];if(this.authenticated||!thand.user){since=thand.lastCalled+thand.period;if(since-now<=0){if(thand.run()){newList.push(thand)}}else{newList.push(thand)}}}this.timedHandlers=newList;var body,time_elapsed;if(this.authenticated&&this._requests.length===0&&this._data.length===0&&!this.disconnecting){Strophe.info("no requests during idle cycle, sending blank request");this._data.push(null)}if(this._requests.length<2&&this._data.length>0&&!this.paused){body=this._buildBody();for(i=0;i<this._data.length;i++){if(this._data[i]!==null){if(this._data[i]==="restart"){body.attrs({to:this.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":Strophe.NS.BOSH})}else{body.cnode(this._data[i]).up()}}}delete this._data;this._data=[];this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid")));this._processRequest(this._requests.length-1)}if(this._requests.length>0){time_elapsed=this._requests[0].age();if(this._requests[0].dead!==null){if(this._requests[0].timeDead()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait)){this._throttledRequestHandler()}}if(time_elapsed>Math.floor(Strophe.TIMEOUT*this.wait)){Strophe.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(Strophe.TIMEOUT*this.wait)+" seconds since last activity");this._throttledRequestHandler()}}clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)}};if(callback){callback(Strophe,$build,$msg,$iq,$pres)}})(function(){window.Strophe=arguments[0];window.$build=arguments[1];window.$msg=arguments[2];window.$iq=arguments[3];window.$pres=arguments[4]}); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/strophe.muc.js b/mod/beechat/views/default/js/strophe.muc.js
new file mode 100644
index 000000000..954ca8730
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.muc.js
@@ -0,0 +1,300 @@
+/*
+Plugin to implement the MUC extension. http://xmpp.org/extensions/xep-0045.html
+*/
+/* jslint configuration: */
+/* global document, window, setTimeout, clearTimeout, console,
+ XMLHttpRequest, ActiveXObject,
+ Base64, MD5,
+ Strophe, $build, $msg, $iq, $pres
+*/
+
+Strophe.addConnectionPlugin('muc', {
+ _connection: null,
+ // The plugin must have the init function
+ /***Function
+ Initialize the MUC plugin. Sets the correct connection object and
+ extends the namesace.
+ */
+ init: function(conn) {
+ this._connection = conn;
+ /* extend name space
+ * NS.MUC - XMPP Multi-user chat namespace
+ * from XEP 45.
+ *
+ */
+ Strophe.addNamespace('MUC_OWNER', Strophe.NS.MUC+"#owner");
+ Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC+"#admin");
+ },
+ /***Function
+ Join a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to join.
+ (String) nick - The nickname to use in the chat room. Optional
+ (Function) msg_handler_cb - The function call to handle messages from the
+ specified chat room.
+ (Function) pres_handler_cb - The function call back to handle presence
+ in the chat room.
+ (String) password - The optional password to use. (password protected
+ rooms only)
+ */
+ join: function(room, nick, msg_handler_cb, pres_handler_cb, password) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msg = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ if (password)
+ {
+ var password_elem = Strophe.xmlElement("password",
+ [],
+ password);
+ msg.cnode(password_elem);
+ }
+ if (msg_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var from = stanza.getAttribute('from');
+ var roomname = from.split("/");
+ // filter on room name
+ if (roomname.length > 1 && roomname[0] == room)
+ {
+ return msg_handler_cb(stanza);
+ }
+ else
+ {
+ return true;
+ }
+ },
+ null,
+ "message",
+ null,
+ null,
+ null);
+ }
+ if (pres_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var xquery = stanza.getElementsByTagName("x");
+ if (xquery.length > 0)
+ {
+ //Handle only MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ return pres_handler_cb(stanza);
+ }
+ }
+ }
+ return true;
+ },
+ null,
+ "presence",
+ null,
+ null,
+ null);
+ }
+ this._connection.send(msg);
+ },
+ /***Function
+ Leave a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to leave.
+ (String) nick - The nick name used in the room.
+ (Function) handler_cb - Optional function to handle the successful leave.
+ Returns:
+ iqid - The unique id for the room leave.
+ */
+ leave: function(room, nick, handler_cb) {
+ var room_nick = this.test_append_nick(room, nick);
+ var presenceid = this._connection.getUniqueId();
+ var presence = $pres({type: "unavailable",
+ id: presenceid,
+ from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.addHandler(handler_cb,
+ null,
+ "presence",
+ null,
+ presenceid,
+ null);
+ this._connection.send(presence);
+ return presenceid;
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name used in the chat room.
+ (String) message - The message to send to the room.
+ Returns:
+ msgiq - the unique id used to send the message
+ */
+ message: function(room, nick, message) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msgid = this._connection.getUniqueId();
+ var msg = $msg({to: room_nick,
+ from: this._connection.jid,
+ type: "groupchat",
+ id: msgid}).c("body",
+ {xmlns: Strophe.NS.CLIENT}).t(message);
+ msg.up().c("x", {xmlns: "jabber:x:event"}).c("composing");
+ this._connection.send(msg);
+ return msgid;
+ },
+ /***Function
+ Start a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to send the configuration request
+ */
+ configure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to:room,
+ type: "get"}).c("query",
+ {xmlns: Strophe.NS.MUC_OWNER});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Cancel the room configuration
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to cancel the configuration.
+ */
+ cancelConfigure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "cancel"});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Save a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (Array) configarray - an array of form elements used to configure the room.
+ Returns:
+ id - the unique id used to save the configuration.
+ */
+ saveConfiguration: function(room, configarray) {
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "submit"});
+ for (var i = 0; i >= configarray.length; i++) {
+ config.cnode(configarray[i]);
+ }
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to create the chat room.
+ */
+ createInstantRoom: function(room) {
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data",
+ type: "submit"});
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***
+ Set the topic of the chat room.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) topic - Topic message.
+ */
+ setTopic: function(room, topic) {
+ var msg = $msg({to: room,
+ from: this._connection.jid,
+ type: "groupchat"})
+ .c("subject", {xmlns: "jabber:client"}).t(topic);
+ this._connection.send(msg.tree());
+ },
+ /***Function
+ Changes the role and affiliation of a member of a MUC room.
+ The modification can only be done by a room moderator. An error will be
+ returned if the user doesn't have permission.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name of the user to modify.
+ (String) role - The new role of the user.
+ (String) affiliation - The new affiliation of the user.
+ (String) reason - The reason for the change.
+ Returns:
+ iq - the id of the mode change request.
+ */
+ modifyUser: function(room, nick, role, affiliation, reason) {
+ var item_attrs = {nick: Strophe.escapeNode(nick)};
+ if (role !== null)
+ {
+ item_attrs.role = role;
+ }
+ if (affiliation !== null)
+ {
+ item_attrs.affiliation = affiliation;
+ }
+ var item = $build("item", item_attrs);
+ if (reason !== null)
+ {
+ item.cnode(Strophe.xmlElement("reason", reason));
+ }
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER}).cnode(item.tree());
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***Function
+ Change the current users nick name.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) user - The new nick name.
+ */
+ changeNick: function(room, user) {
+ var room_nick = this.test_append_nick(room, user);
+ var presence = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.send(presence.tree());
+ },
+ /***Function
+ List all chat room available on a server.
+ Parameters:
+ (String) server - name of chat server.
+ (String) handle_cb - Function to call for room list return.
+ */
+ listRooms: function(server, handle_cb) {
+ var iq = $iq({to: server,
+ from: this._connection.jid,
+ type: "get"})
+ .c("query",{xmlns: Strophe.NS.DISCO_ITEMS});
+ this._connection.sendIQ(iq, handle_cb, function(){});
+ },
+ test_append_nick: function(room, nick) {
+ var room_nick = room;
+ if (nick)
+ {
+ room_nick += "/" + Strophe.escapeNode(nick);
+ }
+ return room_nick;
+ }
+}); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/strophe.muc.js.php b/mod/beechat/views/default/js/strophe.muc.js.php
new file mode 100644
index 000000000..e10750d02
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.muc.js.php
@@ -0,0 +1,300 @@
+/*
+Plugin to implement the MUC extension. http://xmpp.org/extensions/xep-0045.html
+*/
+/* jslint configuration: */
+/* global document, window, setTimeout, clearTimeout, console,
+ XMLHttpRequest, ActiveXObject,
+ Base64, MD5,
+ Strophe, $build, $msg, $iq, $pres
+*/
+
+Strophe.addConnectionPlugin('muc', {
+ _connection: null,
+ // The plugin must have the init function
+ /***Function
+ Initialize the MUC plugin. Sets the correct connection object and
+ extends the namesace.
+ */
+ init: function(conn) {
+ this._connection = conn;
+ /* extend name space
+ * NS.MUC - XMPP Multi-user chat namespace
+ * from XEP 45.
+ *
+ */
+ Strophe.addNamespace('MUC_OWNER', Strophe.NS.MUC+"#owner");
+ Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC+"#admin");
+ },
+ /***Function
+ Join a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to join.
+ (String) nick - The nickname to use in the chat room. Optional
+ (Function) msg_handler_cb - The function call to handle messages from the
+ specified chat room.
+ (Function) pres_handler_cb - The function call back to handle presence
+ in the chat room.
+ (String) password - The optional password to use. (password protected
+ rooms only)
+ */
+ join: function(room, nick, msg_handler_cb, pres_handler_cb, password) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msg = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ if (password)
+ {
+ var password_elem = Strophe.xmlElement("password",
+ [],
+ password);
+ msg.cnode(password_elem);
+ }
+ if (msg_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var from = stanza.getAttribute('from');
+ var roomname = from.split("/");
+ // filter on room name
+ if (roomname.length > 1 && roomname[0] == room)
+ {
+ return msg_handler_cb(stanza);
+ }
+ else
+ {
+ return true;
+ }
+ },
+ null,
+ "message",
+ null,
+ null,
+ null);
+ }
+ if (pres_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var xquery = stanza.getElementsByTagName("x");
+ if (xquery.length > 0)
+ {
+ //Handle only MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ return pres_handler_cb(stanza);
+ }
+ }
+ }
+ return true;
+ },
+ null,
+ "presence",
+ null,
+ null,
+ null);
+ }
+ this._connection.send(msg);
+ },
+ /***Function
+ Leave a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to leave.
+ (String) nick - The nick name used in the room.
+ (Function) handler_cb - Optional function to handle the successful leave.
+ Returns:
+ iqid - The unique id for the room leave.
+ */
+ leave: function(room, nick, handler_cb) {
+ var room_nick = this.test_append_nick(room, nick);
+ var presenceid = this._connection.getUniqueId();
+ var presence = $pres({type: "unavailable",
+ id: presenceid,
+ from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.addHandler(handler_cb,
+ null,
+ "presence",
+ null,
+ presenceid,
+ null);
+ this._connection.send(presence);
+ return presenceid;
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name used in the chat room.
+ (String) message - The message to send to the room.
+ Returns:
+ msgiq - the unique id used to send the message
+ */
+ message: function(room, nick, message) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msgid = this._connection.getUniqueId();
+ var msg = $msg({to: room_nick,
+ from: this._connection.jid,
+ type: "groupchat",
+ id: msgid}).c("body",
+ {xmlns: Strophe.NS.CLIENT}).t(message);
+ msg.up().c("x", {xmlns: "jabber:x:event"}).c("composing");
+ this._connection.send(msg);
+ return msgid;
+ },
+ /***Function
+ Start a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to send the configuration request
+ */
+ configure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to:room,
+ type: "get"}).c("query",
+ {xmlns: Strophe.NS.MUC_OWNER});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Cancel the room configuration
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to cancel the configuration.
+ */
+ cancelConfigure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "cancel"});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Save a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (Array) configarray - an array of form elements used to configure the room.
+ Returns:
+ id - the unique id used to save the configuration.
+ */
+ saveConfiguration: function(room, configarray) {
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "submit"});
+ for (var i = 0; i >= configarray.length; i++) {
+ config.cnode(configarray[i]);
+ }
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to create the chat room.
+ */
+ createInstantRoom: function(room) {
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data",
+ type: "submit"});
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***
+ Set the topic of the chat room.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) topic - Topic message.
+ */
+ setTopic: function(room, topic) {
+ var msg = $msg({to: room,
+ from: this._connection.jid,
+ type: "groupchat"})
+ .c("subject", {xmlns: "jabber:client"}).t(topic);
+ this._connection.send(msg.tree());
+ },
+ /***Function
+ Changes the role and affiliation of a member of a MUC room.
+ The modification can only be done by a room moderator. An error will be
+ returned if the user doesn't have permission.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name of the user to modify.
+ (String) role - The new role of the user.
+ (String) affiliation - The new affiliation of the user.
+ (String) reason - The reason for the change.
+ Returns:
+ iq - the id of the mode change request.
+ */
+ modifyUser: function(room, nick, role, affiliation, reason) {
+ var item_attrs = {nick: Strophe.escapeNode(nick)};
+ if (role !== null)
+ {
+ item_attrs.role = role;
+ }
+ if (affiliation !== null)
+ {
+ item_attrs.affiliation = affiliation;
+ }
+ var item = $build("item", item_attrs);
+ if (reason !== null)
+ {
+ item.cnode(Strophe.xmlElement("reason", reason));
+ }
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER}).cnode(item.tree());
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***Function
+ Change the current users nick name.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) user - The new nick name.
+ */
+ changeNick: function(room, user) {
+ var room_nick = this.test_append_nick(room, user);
+ var presence = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.send(presence.tree());
+ },
+ /***Function
+ List all chat room available on a server.
+ Parameters:
+ (String) server - name of chat server.
+ (String) handle_cb - Function to call for room list return.
+ */
+ listRooms: function(server, handle_cb) {
+ var iq = $iq({to: server,
+ from: this._connection.jid,
+ type: "get"})
+ .c("query",{xmlns: Strophe.NS.DISCO_ITEMS});
+ this._connection.sendIQ(iq, handle_cb, function(){});
+ },
+ test_append_nick: function(room, nick) {
+ var room_nick = room;
+ if (nick)
+ {
+ room_nick += "/" + Strophe.escapeNode(nick);
+ }
+ return room_nick;
+ }
+});
diff --git a/mod/beechat/views/default/settings/beechat/edit.php b/mod/beechat/views/default/settings/beechat/edit.php
new file mode 100755
index 000000000..ec4ab08de
--- /dev/null
+++ b/mod/beechat/views/default/settings/beechat/edit.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Barter Plugin
+ * @package Barters
+ **/
+ $domain = elgg_get_plugin_setting("domain", "beechat");
+ //$group_domain = elgg_get_plugin_setting("groupdomain", "beechat");
+ $xmlrpc_ip = elgg_get_plugin_setting("xmlrpcip", "beechat");
+ $dbname = elgg_get_plugin_setting("dbname", "beechat");
+ $dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+ $dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+ $dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");
+?>
+<p>
+ <?php echo elgg_echo('beechat:domain'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[domain]','value' => $domain)); ?>
+ <!--<?php echo elgg_echo('beechat:groupdomain'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[groupdomain]','value' => $group_domain)); ?>-->
+ <?php echo elgg_echo('beechat:xmlrpcip'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[xmlrpcip]','value' => $xmlrpc_ip)); ?>
+ <?php echo elgg_echo('beechat:dbname'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbname]','value' => $dbname)); ?>
+ <?php echo elgg_echo('beechat:dbhost'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbhost]','value' => $dbhost)); ?>
+ <?php echo elgg_echo('beechat:dbuser'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbuser]','value' => $dbuser)); ?>
+ <?php echo elgg_echo('beechat:dbpassword'); ?>
+ <?php echo elgg_view('input/password', array('internalname' => 'params[dbpassword]','value' => $dbpassword)); ?>
+
+</p>
+
diff --git a/mod/blog/actions/blog/auto_save_revision.php b/mod/blog/actions/blog/auto_save_revision.php
index 66b65c5fd..e33edfaab 100644
--- a/mod/blog/actions/blog/auto_save_revision.php
+++ b/mod/blog/actions/blog/auto_save_revision.php
@@ -7,7 +7,7 @@
$guid = get_input('guid');
$user = elgg_get_logged_in_user_entity();
-$title = get_input('title');
+$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');
$description = get_input('description');
$excerpt = get_input('excerpt');
diff --git a/mod/blog/actions/blog/save.php b/mod/blog/actions/blog/save.php
index 8923cd0d2..82a9e6c51 100644
--- a/mod/blog/actions/blog/save.php
+++ b/mod/blog/actions/blog/save.php
@@ -2,6 +2,12 @@
/**
* Save blog entity
*
+ * Can be called by clicking save button or preview button. If preview button,
+ * we automatically save as draft. The preview button is only available for
+ * non-published drafts.
+ *
+ * Drafts are saved with the access set to private.
+ *
* @package Blog
*/
@@ -57,7 +63,11 @@ $required = array('title', 'description');
// load from POST and do sanity and access checking
foreach ($values as $name => $default) {
- $value = get_input($name, $default);
+ if ($name === 'title') {
+ $value = htmlspecialchars(get_input('title', $default, false), ENT_QUOTES, 'UTF-8');
+ } else {
+ $value = get_input($name, $default);
+ }
if (in_array($name, $required) && empty($value)) {
$error = elgg_echo("blog:error:missing:$name");
@@ -69,11 +79,7 @@ foreach ($values as $name => $default) {
switch ($name) {
case 'tags':
- if ($value) {
- $values[$name] = string_to_tag_array($value);
- } else {
- unset ($values[$name]);
- }
+ $values[$name] = string_to_tag_array($value);
break;
case 'excerpt':
@@ -95,11 +101,6 @@ foreach ($values as $name => $default) {
}
break;
- // don't try to set the guid
- case 'guid':
- unset($values['guid']);
- break;
-
default:
$values[$name] = $value;
break;
@@ -111,13 +112,16 @@ if ($save == false) {
$values['status'] = 'draft';
}
+// if draft, set access to private and cache the future access
+if ($values['status'] == 'draft') {
+ $values['future_access'] = $values['access_id'];
+ $values['access_id'] = ACCESS_PRIVATE;
+}
+
// assign values to the entity, stopping on error.
if (!$error) {
foreach ($values as $name => $value) {
- if (FALSE === ($blog->$name = $value)) {
- $error = elgg_echo('blog:error:cannot_save' . "$name=$value");
- break;
- }
+ $blog->$name = $value;
}
}
@@ -145,8 +149,13 @@ if (!$error) {
// add to river if changing status or published, regardless of new post
// because we remove it for drafts.
if (($new_post || $old_status == 'draft') && $status == 'published') {
- add_to_river('river/object/blog/create', 'create', elgg_get_logged_in_user_guid(), $blog->getGUID());
+ add_to_river('river/object/blog/create', 'create', $blog->owner_guid, $blog->getGUID());
+
+ // we only want notifications sent when post published
+ register_notification_object('object', 'blog', elgg_echo('blog:newpost'));
+ elgg_trigger_event('publish', 'object', $blog);
+ // reset the creation time for posts that move from draft to published
if ($guid) {
$blog->time_created = time();
$blog->save();
@@ -170,4 +179,4 @@ if (!$error) {
} else {
register_error($error);
forward($error_forward_url);
-} \ No newline at end of file
+}
diff --git a/mod/blog/languages/en.php b/mod/blog/languages/en.php
index e1930b916..5248a6f51 100644
--- a/mod/blog/languages/en.php
+++ b/mod/blog/languages/en.php
@@ -41,7 +41,6 @@ $english = array(
'blog:message:saved' => 'Blog post saved.',
'blog:error:cannot_save' => 'Cannot save blog post.',
'blog:error:cannot_write_to_container' => 'Insufficient access to save blog to group.',
- 'blog:error:post_not_found' => 'This post has been removed, is invalid, or you do not have permission to view it.',
'blog:messages:warning:draft' => 'There is an unsaved draft of this post!',
'blog:edit_revision_notice' => '(Old version)',
'blog:message:deleted_post' => 'Blog post deleted.',
diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php
index 286fe1832..9753f27a8 100644
--- a/mod/blog/lib/blog.php
+++ b/mod/blog/lib/blog.php
@@ -22,11 +22,12 @@ function blog_get_page_content_read($guid = NULL) {
$return['filter'] = '';
if (!elgg_instanceof($blog, 'object', 'blog')) {
- $return['content'] = elgg_echo('blog:error:post_not_found');
- return $return;
+ register_error(elgg_echo('noaccess'));
+ $_SESSION['last_forward_from'] = current_page_url();
+ forward('');
}
- $return['title'] = htmlspecialchars($blog->title);
+ $return['title'] = $blog->title;
$container = $blog->getContainerEntity();
$crumbs_title = $container->name;
@@ -38,8 +39,8 @@ function blog_get_page_content_read($guid = NULL) {
elgg_push_breadcrumb($blog->title);
$return['content'] = elgg_view_entity($blog, array('full_view' => true));
- //check to see if comment are on
- if ($blog->comments_on != 'Off') {
+ // check to see if we should allow comments
+ if ($blog->comments_on != 'Off' && $blog->status == 'published') {
$return['content'] .= elgg_view_comments($blog);
}
@@ -49,7 +50,7 @@ function blog_get_page_content_read($guid = NULL) {
/**
* Get page components to list a user's or all blogs.
*
- * @param int $owner_guid The GUID of the page owner or NULL for all blogs
+ * @param int $container_guid The GUID of the page owner or NULL for all blogs
* @return array
*/
function blog_get_page_content_list($container_guid = NULL) {
@@ -61,10 +62,11 @@ function blog_get_page_content_list($container_guid = NULL) {
$options = array(
'type' => 'object',
'subtype' => 'blog',
- 'full_view' => FALSE,
+ 'full_view' => false,
);
- $loggedin_userid = elgg_get_logged_in_user_guid();
+ $current_user = elgg_get_logged_in_user_entity();
+
if ($container_guid) {
// access check for closed groups
group_gatekeeper();
@@ -79,7 +81,7 @@ function blog_get_page_content_list($container_guid = NULL) {
$crumbs_title = $container->name;
elgg_push_breadcrumb($crumbs_title);
- if ($container_guid == $loggedin_userid) {
+ if ($current_user && ($container_guid == $current_user->guid)) {
$return['filter_context'] = 'mine';
} else if (elgg_instanceof($container, 'group')) {
$return['filter'] = false;
@@ -98,7 +100,13 @@ function blog_get_page_content_list($container_guid = NULL) {
// show all posts for admin or users looking at their own blogs
// show only published posts for other users.
- if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $container_guid == $loggedin_userid))) {
+ $show_only_published = true;
+ if ($current_user) {
+ if (($current_user->guid == $container_guid) || $current_user->isAdmin()) {
+ $show_only_published = false;
+ }
+ }
+ if ($show_only_published) {
$options['metadata_name_value_pairs'] = array(
array('name' => 'status', 'value' => 'published'),
);
@@ -154,11 +162,14 @@ function blog_get_page_content_friends($user_guid) {
// admin / owners can see any posts
// everyone else can only see published posts
- if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $owner_guid == elgg_get_logged_in_user_guid()))) {
- if ($upper > $now) {
- $upper = $now;
+ $show_only_published = true;
+ $current_user = elgg_get_logged_in_user_entity();
+ if ($current_user) {
+ if (($user_guid == $current_user->guid) || $current_user->isAdmin()) {
+ $show_only_published = false;
}
-
+ }
+ if ($show_only_published) {
$options['metadata_name_value_pairs'][] = array(
array('name' => 'status', 'value' => 'published')
);
@@ -239,9 +250,9 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) {
$list = elgg_list_entities_from_metadata($options);
if (!$list) {
- $content .= elgg_echo('blog:none');
+ $content = elgg_echo('blog:none');
} else {
- $content .= $list;
+ $content = $list;
}
$title = elgg_echo('date:month:' . date('m', $lower), array(date('Y', $lower)));
@@ -271,9 +282,9 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) {
$vars = array();
$vars['id'] = 'blog-post-edit';
- $vars['name'] = 'blog_post';
$vars['class'] = 'elgg-form-alt';
+ $sidebar = '';
if ($page == 'edit') {
$blog = get_entity((int)$guid);
@@ -310,14 +321,8 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) {
$content = elgg_echo('blog:error:cannot_edit_post');
}
} else {
- if (!$guid) {
- $container = elgg_get_logged_in_user_entity();
- } else {
- $container = get_entity($guid);
- }
-
elgg_push_breadcrumb(elgg_echo('blog:add'));
- $body_vars = blog_prepare_form_vars($blog);
+ $body_vars = blog_prepare_form_vars(null);
$title = elgg_echo('blog:add');
$content = elgg_view_form('blog/save', $vars, $body_vars);
@@ -358,6 +363,10 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
$values[$field] = $post->$field;
}
}
+
+ if ($post->status == 'draft') {
+ $values['access_id'] = $post->future_access;
+ }
}
if (elgg_is_sticky_form('blog')) {
@@ -384,7 +393,7 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
if ($auto_save_annotations = $post->getAnnotations('blog_auto_save', 1)) {
$auto_save = $auto_save_annotations[0];
} else {
- $auto_save == FALSE;
+ $auto_save = false;
}
if ($auto_save && $auto_save->id != $revision->id) {
@@ -396,52 +405,74 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
/**
* Forward to the new style of URLs
+ *
+ * Pre-1.7.5
+ * Group blogs page: /blog/group:<container_guid>/
+ * Group blog view: /blog/group:<container_guid>/read/<guid>/<title>
+ * 1.7.5-1.8
+ * Group blogs page: /blog/owner/group:<container_guid>/
+ * Group blog view: /blog/read/<guid>
+ *
*
* @param string $page
*/
function blog_url_forwarder($page) {
- global $CONFIG;
+
+ $viewtype = elgg_get_viewtype();
+ $qs = ($viewtype === 'default') ? "" : "?view=$viewtype";
+
+ $url = "blog/all";
+
+ // easier to work with & no notices
+ $page = array_pad($page, 4, "");
// group usernames
- if (substr_count($page[0], 'group:')) {
- preg_match('/group\:([0-9]+)/i', $page[0], $matches);
+ if (preg_match('~/group\:([0-9]+)/~', "/{$page[0]}/{$page[1]}/", $matches)) {
$guid = $matches[1];
$entity = get_entity($guid);
- if ($entity) {
- $url = "{$CONFIG->wwwroot}blog/group/$guid/all";
+ if (elgg_instanceof($entity, 'group')) {
+ if (!empty($page[2])) {
+ $url = "blog/view/$page[2]/";
+ } else {
+ $url = "blog/group/$guid/all";
+ }
register_error(elgg_echo("changebookmark"));
- forward($url);
+ forward($url . $qs);
}
}
+ if (empty($page[0])) {
+ return;
+ }
+
// user usernames
$user = get_user_by_username($page[0]);
if (!$user) {
return;
}
- if (!isset($page[1])) {
+ if (empty($page[1])) {
$page[1] = 'owner';
}
switch ($page[1]) {
case "read":
- $url = "{$CONFIG->wwwroot}blog/view/{$page[2]}/{$page[3]}";
+ $url = "blog/view/{$page[2]}/{$page[3]}";
break;
case "archive":
- $url = "{$CONFIG->wwwroot}blog/archive/{$page[0]}/{$page[2]}/{$page[3]}";
+ $url = "blog/archive/{$page[0]}/{$page[2]}/{$page[3]}";
break;
case "friends":
- $url = "{$CONFIG->wwwroot}blog/friends/{$page[0]}";
+ $url = "blog/friends/{$page[0]}";
break;
case "new":
- $url = "{$CONFIG->wwwroot}blog/add/$user->guid";
+ $url = "blog/add/$user->guid";
break;
case "owner":
- $url = "{$CONFIG->wwwroot}blog/owner/{$page[0]}";
+ $url = "blog/owner/{$page[0]}";
break;
}
register_error(elgg_echo("changebookmark"));
- forward($url);
+ forward($url . $qs);
}
diff --git a/mod/blog/start.php b/mod/blog/start.php
index 73056f1c9..e724b91c2 100644
--- a/mod/blog/start.php
+++ b/mod/blog/start.php
@@ -41,8 +41,8 @@ function blog_init() {
// override the default url to view a blog object
elgg_register_entity_url_handler('object', 'blog', 'blog_url_handler');
- // notifications
- register_notification_object('object', 'blog', elgg_echo('blog:newpost'));
+ // notifications - need to register for unique event because of draft/published status
+ elgg_register_event_handler('publish', 'object', 'object_notifications');
elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'blog_notify_message');
// add blog link to
@@ -60,7 +60,7 @@ function blog_init() {
elgg_extend_view('groups/tool_latest', 'blog/group_module');
// add a blog widget
- elgg_register_widget_type('blog', elgg_echo('blog'), elgg_echo('blog:widget:description'), 'profile');
+ elgg_register_widget_type('blog', elgg_echo('blog'), elgg_echo('blog:widget:description'));
// register actions
$action_path = elgg_get_plugins_path() . 'blog/actions/blog';
@@ -99,8 +99,7 @@ function blog_page_handler($page) {
elgg_load_library('elgg:blog');
- // @todo remove the forwarder in 1.9
- // forward to correct URL for blog pages pre-1.7.5
+ // forward to correct URL for blog pages pre-1.8
blog_url_forwarder($page);
// push all blogs breadcrumb
@@ -114,20 +113,32 @@ function blog_page_handler($page) {
switch ($page_type) {
case 'owner':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_list($user->guid);
break;
case 'friends':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_friends($user->guid);
break;
case 'archive':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_archive($user->guid, $page[2], $page[3]);
break;
case 'view':
- case 'read': // Elgg 1.7 compatibility
$params = blog_get_page_content_read($page[1]);
break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("blog/view/{$page[1]}");
+ break;
case 'add':
gatekeeper();
$params = blog_get_page_content_edit($page_type, $page[1]);
@@ -137,7 +148,11 @@ function blog_page_handler($page) {
$params = blog_get_page_content_edit($page_type, $page[1], $page[2]);
break;
case 'group':
- if ($page[2] == 'all') {
+ $group = get_entity($page[1]);
+ if (!elgg_instanceof($group, 'group')) {
+ forward('', '404');
+ }
+ if (!isset($page[2]) || $page[2] == 'all') {
$params = blog_get_page_content_list($page[1]);
} else {
$params = blog_get_page_content_archive($page[1], $page[3], $page[4]);
@@ -212,7 +227,14 @@ function blog_entity_menu_setup($hook, $type, $return, $params) {
return $return;
}
- if ($entity->canEdit() && $entity->status != 'published') {
+ if ($entity->status != 'published') {
+ // draft status replaces access
+ foreach ($return as $index => $item) {
+ if ($item->getName() == 'access') {
+ unset($return[$index]);
+ }
+ }
+
$status_text = elgg_echo("blog:status:{$entity->status}");
$options = array(
'name' => 'published_status',
diff --git a/mod/blog/views/default/blog/sidebar/archives.php b/mod/blog/views/default/blog/sidebar/archives.php
index 3d8f28ca4..5098e6e3e 100644
--- a/mod/blog/views/default/blog/sidebar/archives.php
+++ b/mod/blog/views/default/blog/sidebar/archives.php
@@ -14,7 +14,7 @@ if (elgg_instanceof($page_owner, 'user')) {
// This is a limitation of the URL schema.
if ($page_owner && $vars['page'] != 'friends') {
- $dates = get_entity_dates('object', 'blog', $page_owner->getGUID());
+ $dates = array_reverse(get_entity_dates('object', 'blog', $page_owner->getGUID()));
if ($dates) {
$title = elgg_echo('blog:archives');
diff --git a/mod/blog/views/default/forms/blog/save.php b/mod/blog/views/default/forms/blog/save.php
index a805541bd..f825acca1 100644
--- a/mod/blog/views/default/forms/blog/save.php
+++ b/mod/blog/views/default/forms/blog/save.php
@@ -10,7 +10,7 @@ $vars['entity'] = $blog;
$draft_warning = $vars['draft_warning'];
if ($draft_warning) {
- $draft_warning = '<span class="message warning">' . $draft_warning . '</span>';
+ $draft_warning = '<span class="mbm elgg-text-help">' . $draft_warning . '</span>';
}
$action_buttons = '';
@@ -23,7 +23,7 @@ if ($vars['guid']) {
$delete_link = elgg_view('output/confirmlink', array(
'href' => $delete_url,
'text' => elgg_echo('delete'),
- 'class' => 'elgg-button elgg-button-delete elgg-state-disabled float-alt'
+ 'class' => 'elgg-button elgg-button-delete float-alt'
));
}
@@ -53,7 +53,7 @@ $excerpt_label = elgg_echo('blog:excerpt');
$excerpt_input = elgg_view('input/text', array(
'name' => 'excerpt',
'id' => 'blog_excerpt',
- 'value' => html_entity_decode($vars['excerpt'], ENT_COMPAT, 'UTF-8')
+ 'value' => _elgg_html_decode($vars['excerpt'])
));
$body_label = elgg_echo('blog:body');
@@ -125,9 +125,10 @@ $draft_warning
$excerpt_input
</div>
-<label for="blog_description">$body_label</label>
-$body_input
-<br />
+<div>
+ <label for="blog_description">$body_label</label>
+ $body_input
+</div>
<div>
<label for="blog_tags">$tags_label</label>
diff --git a/mod/blog/views/default/js/blog/save_draft.php b/mod/blog/views/default/js/blog/save_draft.php
index 8a994ffb0..8cd07ff5d 100644
--- a/mod/blog/views/default/js/blog/save_draft.php
+++ b/mod/blog/views/default/js/blog/save_draft.php
@@ -12,7 +12,7 @@ elgg.provide('elgg.blog');
*/
elgg.blog.saveDraftCallback = function(data, textStatus, XHR) {
if (textStatus == 'success' && data.success == true) {
- var form = $('form[name=blog_post]');
+ var form = $('form[id=blog-post-edit]');
// update the guid input element for new posts that now have a guid
form.find('input[name=guid]').val(data.guid);
@@ -36,7 +36,7 @@ elgg.blog.saveDraft = function() {
}
// only save on changed content
- var form = $('form[name=blog_post]');
+ var form = $('form[id=blog-post-edit]');
var description = form.find('textarea[name=description]').val();
var title = form.find('input[name=title]').val();
@@ -59,7 +59,7 @@ elgg.blog.saveDraft = function() {
elgg.blog.init = function() {
// get a copy of the body to compare for auto save
- oldDescription = $('form[name=blog_post]').find('textarea[name=description]').val();
+ oldDescription = $('form[id=blog-post-edit]').find('textarea[name=description]').val();
setInterval(elgg.blog.saveDraft, 60000);
};
diff --git a/mod/blog/views/default/object/blog.php b/mod/blog/views/default/object/blog.php
index aa8074a69..4403a6006 100644
--- a/mod/blog/views/default/object/blog.php
+++ b/mod/blog/views/default/object/blog.php
@@ -27,7 +27,6 @@ $owner_link = elgg_view('output/url', array(
'is_trusted' => true,
));
$author_text = elgg_echo('byline', array($owner_link));
-$tags = elgg_view('output/tags', array('tags' => $blog->tags));
$date = elgg_view_friendly_time($blog->time_created);
// The "on" status changes for comments, so best to check for !Off
@@ -74,7 +73,6 @@ if ($full) {
'title' => false,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
);
$params = $params + $vars;
$summary = elgg_view('object/elements/summary', $params);
@@ -92,7 +90,6 @@ if ($full) {
'entity' => $blog,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
'content' => $excerpt,
);
$params = $params + $vars;
diff --git a/mod/blog/views/default/river/object/blog/create.php b/mod/blog/views/default/river/object/blog/create.php
index a054c1061..b808f1bdc 100644
--- a/mod/blog/views/default/river/object/blog/create.php
+++ b/mod/blog/views/default/river/object/blog/create.php
@@ -4,10 +4,12 @@
*/
$object = $vars['item']->getObjectEntity();
-$excerpt = strip_tags($object->excerpt);
+
+$excerpt = $object->excerpt ? $object->excerpt : $object->description;
+$excerpt = strip_tags($excerpt);
$excerpt = elgg_get_excerpt($excerpt);
echo elgg_view('river/elements/layout', array(
'item' => $vars['item'],
'message' => $excerpt,
-)); \ No newline at end of file
+));
diff --git a/mod/bookmarks/actions/bookmarks/save.php b/mod/bookmarks/actions/bookmarks/save.php
index 3ca6bef32..46090b115 100644
--- a/mod/bookmarks/actions/bookmarks/save.php
+++ b/mod/bookmarks/actions/bookmarks/save.php
@@ -5,7 +5,7 @@
* @package Bookmarks
*/
-$title = strip_tags(get_input('title'));
+$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');
$description = get_input('description');
$address = get_input('address');
$access_id = get_input('access_id');
diff --git a/mod/bookmarks/languages/en.php b/mod/bookmarks/languages/en.php
index d4980280d..970b39415 100644
--- a/mod/bookmarks/languages/en.php
+++ b/mod/bookmarks/languages/en.php
@@ -9,7 +9,7 @@ $english = array(
* Menu items and titles
*/
'bookmarks' => "Bookmarks",
- 'bookmarks:add' => "Add bookmark",
+ 'bookmarks:add' => "Add a bookmark",
'bookmarks:edit' => "Edit bookmark",
'bookmarks:owner' => "%s's bookmarks",
'bookmarks:friends' => "Friends' bookmarks",
diff --git a/mod/bookmarks/pages/bookmarks/all.php b/mod/bookmarks/pages/bookmarks/all.php
index bdb8fc793..5c6011ad9 100644
--- a/mod/bookmarks/pages/bookmarks/all.php
+++ b/mod/bookmarks/pages/bookmarks/all.php
@@ -13,9 +13,8 @@ elgg_register_title_button();
$content = elgg_list_entities(array(
'type' => 'object',
'subtype' => 'bookmarks',
- 'limit' => 10,
'full_view' => false,
- 'view_toggle_type' => false
+ 'view_toggle_type' => false,
));
if (!$content) {
diff --git a/mod/bookmarks/pages/bookmarks/friends.php b/mod/bookmarks/pages/bookmarks/friends.php
index 15b1da098..173996346 100644
--- a/mod/bookmarks/pages/bookmarks/friends.php
+++ b/mod/bookmarks/pages/bookmarks/friends.php
@@ -7,7 +7,7 @@
$page_owner = elgg_get_page_owner_entity();
if (!$page_owner) {
- forward('bookmarks/all');
+ forward('', '404');
}
elgg_push_breadcrumb($page_owner->name, "bookmarks/owner/$page_owner->username");
diff --git a/mod/bookmarks/pages/bookmarks/owner.php b/mod/bookmarks/pages/bookmarks/owner.php
index a024ff352..b7b907916 100644
--- a/mod/bookmarks/pages/bookmarks/owner.php
+++ b/mod/bookmarks/pages/bookmarks/owner.php
@@ -7,7 +7,7 @@
$page_owner = elgg_get_page_owner_entity();
if (!$page_owner) {
- forward('bookmarks/all');
+ forward('', '404');
}
elgg_push_breadcrumb($page_owner->name);
@@ -18,7 +18,6 @@ $content .= elgg_list_entities(array(
'type' => 'object',
'subtype' => 'bookmarks',
'container_guid' => $page_owner->guid,
- 'limit' => 10,
'full_view' => false,
'view_toggle_type' => false
));
diff --git a/mod/bookmarks/pages/bookmarks/view.php b/mod/bookmarks/pages/bookmarks/view.php
index 2439d2ee8..70a6a5bfe 100644
--- a/mod/bookmarks/pages/bookmarks/view.php
+++ b/mod/bookmarks/pages/bookmarks/view.php
@@ -6,6 +6,11 @@
*/
$bookmark = get_entity(get_input('guid'));
+if (!$bookmark) {
+ register_error(elgg_echo('noaccess'));
+ $_SESSION['last_forward_from'] = current_page_url();
+ forward('');
+}
$page_owner = elgg_get_page_owner_entity();
diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php
index 56bac984a..caea43587 100644
--- a/mod/bookmarks/start.php
+++ b/mod/bookmarks/start.php
@@ -56,6 +56,9 @@ function bookmarks_init() {
// Listen to notification events and supply a more useful message
elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'bookmarks_notify_message');
+ // Register bookmarks view for ecml parsing
+ elgg_register_plugin_hook_handler('get_views', 'ecml', 'bookmarks_ecml_views_hook');
+
// Register a URL handler for bookmarks
elgg_register_entity_url_handler('object', 'bookmarks', 'bookmark_url');
@@ -86,8 +89,13 @@ function bookmarks_init() {
* @return bool
*/
function bookmarks_page_handler($page) {
+
elgg_load_library('elgg:bookmarks');
+ if (!isset($page[0])) {
+ $page[0] = 'all';
+ }
+
elgg_push_breadcrumb(elgg_echo('bookmarks'), 'bookmarks/all');
// old group usernames
@@ -120,11 +128,14 @@ function bookmarks_page_handler($page) {
include "$pages/friends.php";
break;
- case "read":
case "view":
set_input('guid', $page[1]);
include "$pages/view.php";
break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("bookmarks/view/{$page[1]}");
+ break;
case "add":
gatekeeper();
@@ -274,8 +285,11 @@ function bookmarks_page_menu($hook, $type, $return, $params) {
if (!$page_owner) {
$page_owner = elgg_get_logged_in_user_entity();
}
-
+
if ($page_owner instanceof ElggGroup) {
+ if (!$page_owner->isMember()) {
+ return $return;
+ }
$title = elgg_echo('bookmarks:bookmarklet:group');
} else {
$title = elgg_echo('bookmarks:bookmarklet');
@@ -287,3 +301,16 @@ function bookmarks_page_menu($hook, $type, $return, $params) {
return $return;
}
+
+/**
+ * Return bookmarks views to parse for ecml
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
+ */
+function bookmarks_ecml_views_hook($hook, $type, $return, $params) {
+ $return['object/bookmarks'] = elgg_echo('item:object:bookmarks');
+ return $return;
+}
diff --git a/mod/bookmarks/views/default/object/bookmarks.php b/mod/bookmarks/views/default/object/bookmarks.php
index 89a0d03e0..83bae2b13 100644
--- a/mod/bookmarks/views/default/object/bookmarks.php
+++ b/mod/bookmarks/views/default/object/bookmarks.php
@@ -27,7 +27,6 @@ $owner_link = elgg_view('output/url', array(
));
$author_text = elgg_echo('byline', array($owner_link));
-$tags = elgg_view('output/tags', array('tags' => $bookmark->tags));
$date = elgg_view_friendly_time($bookmark->time_created);
$comments_count = $bookmark->countComments();
@@ -64,7 +63,6 @@ if ($full && !elgg_in_context('gallery')) {
'title' => false,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
);
$params = $params + $vars;
$summary = elgg_view('object/elements/summary', $params);
@@ -120,7 +118,6 @@ HTML;
'entity' => $bookmark,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
'content' => $content,
);
$params = $params + $vars;
diff --git a/mod/categories/languages/en.php b/mod/categories/languages/en.php
index eaa65b13e..422fe81a4 100644
--- a/mod/categories/languages/en.php
+++ b/mod/categories/languages/en.php
@@ -9,7 +9,7 @@ $english = array(
'categories:explanation' => 'To set some predefined site-wide categories that will be used throughout your system, enter them below, separated with commas. Compatible tools will then display them when the user creates or edits content.',
'categories:save:success' => 'Site categories were successfully saved.',
'categories:results' => "Results for the site category: %s",
- 'categories:on_activate_reminder' => "Site-wide Cateogires won't work until you add categories. <a href=\"%s\">Add categories now.</a>",
+ 'categories:on_activate_reminder' => "Site-wide Categories won't work until you add categories. <a href=\"%s\">Add categories now.</a>",
);
add_translation("en", $english); \ No newline at end of file
diff --git a/mod/categories/pages/categories/listing.php b/mod/categories/pages/categories/listing.php
index 8924506e9..d51e6c19e 100644
--- a/mod/categories/pages/categories/listing.php
+++ b/mod/categories/pages/categories/listing.php
@@ -15,8 +15,8 @@ $type = get_input("type", 'object');
$params = array(
'metadata_name' => 'universal_categories',
'metadata_value' => $category,
- 'types' => $type,
- 'subtypes' => $subtype,
+ 'type' => $type,
+ 'subtype' => $subtype,
'owner_guid' => $owner_guid,
'limit' => $limit,
'full_view' => FALSE,
diff --git a/mod/categories/views/default/input/categories.php b/mod/categories/views/default/input/categories.php
index 75960d257..b543cde45 100644
--- a/mod/categories/views/default/input/categories.php
+++ b/mod/categories/views/default/input/categories.php
@@ -10,6 +10,12 @@
if (isset($vars['entity']) && $vars['entity'] instanceof ElggEntity) {
$selected_categories = $vars['entity']->universal_categories;
}
+
+// use sticky values if set
+if (isset($vars['universal_categories_list'])) {
+ $selected_categories = $vars['universal_categories_list'];
+}
+
$categories = elgg_get_site_entity()->categories;
if (empty($categories)) {
$categories = array();
diff --git a/mod/colorbox/COPYING b/mod/colorbox/COPYING
new file mode 100644
index 000000000..dba13ed2d
--- /dev/null
+++ b/mod/colorbox/COPYING
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are 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.
+
+ 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.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ 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 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 work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero 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 Affero 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 Affero 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 Affero 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ 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 AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/mod/colorbox/languages/ca.php b/mod/colorbox/languages/ca.php
new file mode 100644
index 000000000..214d327aa
--- /dev/null
+++ b/mod/colorbox/languages/ca.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for Catalan
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$catalan = array(
+ "js:lightbox:current" => "imatge %s de %s",
+);
+
+add_translation("ca", $catalan);
diff --git a/mod/colorbox/languages/en.php b/mod/colorbox/languages/en.php
new file mode 100644
index 000000000..70bab4e05
--- /dev/null
+++ b/mod/colorbox/languages/en.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for English
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$english = array(
+ "js:lightbox:current" => "image %s of %s",
+);
+
+add_translation("en", $english);
diff --git a/mod/colorbox/languages/es.php b/mod/colorbox/languages/es.php
new file mode 100644
index 000000000..e49d0db47
--- /dev/null
+++ b/mod/colorbox/languages/es.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for Spanish
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$spanish = array(
+ "js:lightbox:current" => "imagen %s de %s",
+);
+
+add_translation("es", $spanish);
diff --git a/mod/colorbox/manifest.xml b/mod/colorbox/manifest.xml
new file mode 100644
index 000000000..ec5f22e90
--- /dev/null
+++ b/mod/colorbox/manifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Colorbox</name>
+ <author>Lorea developers</author>
+ <version>1.8.0</version>
+ <category>lorea</category>
+ <category>enhancement</category>
+ <category>multimedia</category>
+ <description>Elgg lightbox replacement for Fancybox. Colorbox is the default Elgg lightbox in 1.9.</description>
+ <website>https://lorea.org/plugin/colorbox</website>
+ <copyright>Copyright 2012 Lorea Faeries &lt;federation@lorea.org&gt;</copyright>
+ <repository>https://gitorious.org/lorea/colorbox</repository>
+ <donations>https://lorea.org/support</donations>
+ <license>GNU Affero General Public License version 3, or later</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <requires>
+ <type>priority</type>
+ <priority>after</priority>
+ <plugin>embed</plugin>
+ </requires>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.9</version>
+ <comparison>lt</comparison>
+ </requires>
+</plugin_manifest>
diff --git a/mod/colorbox/start.php b/mod/colorbox/start.php
new file mode 100644
index 000000000..b19b2efcf
--- /dev/null
+++ b/mod/colorbox/start.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Colorbox -- A lightweight, customizable lightbox plugin for jQuery
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ * @homepage https://lorea.org/plugin/colorbox
+ * @copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ * @license COPYING, http://www.gnu.org/licenses/agpl
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+elgg_register_event_handler('init', 'system', 'colorbox_init');
+
+/**
+ * Initialize the colorbox plugin.
+ *
+ */
+function colorbox_init() {
+
+}
diff --git a/mod/colorbox/vendors/jquery/colorbox/README.md b/mod/colorbox/vendors/jquery/colorbox/README.md
new file mode 100644
index 000000000..2a53feac8
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/README.md
@@ -0,0 +1,318 @@
+## About ColorBox:
+A customizable lightbox plugin for jQuery. See the [project page](http://jacklmoore.com/colorbox/) for documentation and a demonstration, and the [FAQ](http://jacklmoore.com/colorbox/faq/) for solutions and examples to common issues. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
+
+## Changelog:
+
+### Version 1.3.19 - December 08 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all)
+
+* Fixed bug related to using the 'fixed' property.
+* Optimized the setup procedure to be more efficient.
+* Removed $.colorbox.init() as it will no longer be needed (will self-init when called).
+* Removed use of $.browser.
+
+### Version 1.3.18 - October 07 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 1's controls.png
+
+* Fixed a regression where Flash content displayed in ColorBox would be reloaded if the browser window was resized.
+* Added safety check to make sure that ColorBox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize ColorBox if they need it before the DOM has finished loading.
+* Updated the example index.html files to be HTML5 compliant.
+* Changed the slideshow behavior so that it immediately moves to the next slide when the slideshow is started.
+* Minor regex bugfix to allow automatic detection of image URLs that include fragments.
+
+### Version 1.3.17 - May 11 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js
+
+* Added properties "top", "bottom", "left" and "right" to specify a position relative to the viewport, rather than using the default centering.
+* Added property "data" to specify GET or POST data when using Ajax. ColorBox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
+* Added property "fixed" which can provide fixed positioning for ColorBox, rather than absolute positioning. This will allow ColorBox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
+* Fixed ClearType problem with IE7.
+* Minor fixes.
+
+### Version 1.3.16 - March 01 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 4 background png files
+
+* Better IE related transparency workarounds. IE7 and up now uses the same background image sprite as other browsers.
+* Added error handling for broken image links. A message will be displayed telling the user that the image could not be loaded.
+* Added new property: 'fastIframe' and set it to true by default. Setting to fastIframe:false will delay the loading graphic removal and onComplete event until iframe has completely loaded.
+* Ability to redefine $.colorbox.close (or prev, or next) at any time.
+
+### Version 1.3.15 - October 27 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor fixes for specific cases.
+
+### Version 1.3.14 - October 27 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* In IE6, closing an iframe when using HTTPS no longer generates a security warning.
+
+### Version 1.3.13 - October 22 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed the index.html example files to use YouTube's new embedded link format.
+* By default, ColorBox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
+* Minor bug fix involved in using a combination of slideshow and non-slideshow content.
+
+### Version 1.3.12 - October 20 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor bug fix involved in preloading images when using a function as a value for the href property.
+
+### Version 1.3.11 - October 19 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed the slideshow functionality that broke with 1.3.10
+* The slideshow now respects the loop property.
+
+### Version 1.3.10 - October 16 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed compatibility with jQuery 1.4.3
+* The 'open' property now accepts a function as a value, like all of the other properties.
+* Preloading now loads the correct href for images when using a dynamic (function) value for the href property.
+* Fixed bug in Safari 3 for Win where ColorBox centered on the document, rather than the visitor's viewport.
+* May have fixed an issue in Opera 10.6+ where ColorBox would rarely/randomly freeze up while switching between photos in a group.
+* Some functionality better encapsulated & minor performance improvements.
+
+### Version 1.3.9 - July 7 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/ all colorbox.css (the core styles)
+
+* Fixed a problem where iframed youtube videos would cause a security alert in IE.
+* More code is event driven now, making the source easier to grasp.
+* Removed some unnecessary style from the core CSS.
+
+### Version 1.3.8 - June 21 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug in Chrome where it would sometimes render photos at 0 by 0 width and height (behavior introduced in recent update to Chrome).
+* Fixed a bug where the onClosed callback would fire twice (only affected 1.3.7).
+* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused ColorBox to move out of position.
+* Abstracted the identifiers (HTML ids & classes, and JS plugin name, method, and events) so that the plugin can be easily rebranded.
+* Small changes to improve either code readability or compression.
+
+### Version 1.3.7 - June 13 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
+
+* $.colorbox can now be used for direct calls and accessing public methods. Example: $.colorbox.close();
+* Resize now accepts 'width', 'innerWidth', 'height' and 'innerHeight'. Example: $.colorbox.resize({width:"100%"})
+* Added option (loop:false) to disable looping in a group.
+* Added options (escKey:false, arrowKey:false) to disable esc-key and arrow-key bindings.
+* Added method for removing ColorBox from a document: $.colorbox.remove();
+* Fixed a bug where iframed URLs would be truncated if they contained an unencoded apostrophe.
+* Now uses the exact href specified on an anchor, rather than the version returned by 'this.href'. This was causing "#example" to be normalized to "http://domain/#example" which interfered with how some users were setting up links to inline content.
+* Changed example documents over to HTML5.
+
+### Version 1.3.6 - Jan 13 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Small change to make ColorBox compatible with jQuery 1.4
+
+### Version 1.3.5 - December 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug introduced in 1.3.4 with IE7's display of example 2 and 3, and auto-width in Opera.
+* Fixed a bug introduced in 1.3.4 where colorbox could not be launched by triggering an element's click event through JavaScript.
+* Minor refinements.
+
+### Version 1.3.4 - December 5 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Event delegation is now used for elements that ColorBox is assigned to, rather than individual click events.
+* Additional callbacks have been added to represent other stages of ColorBox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of ColorBox.
+* Ajax content is now immediately added to the DOM to be more compatible if that content contains script tags.
+* Focus is now returned to the calling element on closing.
+* Fixed a bug where maxHeight and maxWidth did not work for non-photo content.
+* Direct calls no longer need 'open:true', it is assumed. Example: `$.fn.colorbox({html:'<p>Hi</p>'});`
+
+### Version 1.3.3 - November 7 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed $.fn.colorbox.element() to return a jQuery object rather the DOM element.
+* jQuery.colorbox-min.js is compressed with Google's Closure Compiler rather than YUI Compressor.
+
+### Version 1.3.2 - October 27 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for ColorBox, without having to anticipate the size of the borders and buttons.
+* Renamed 'scrollbars' option to 'scrolling' to be in keeping with the existing HTML attribute. The option now also applies to iframes.
+* Bug fix: In Safari, positioning occassionally incorrect when using '100%' dimensions.
+* Bug fix: In IE6, the background overlay is briefly not full size when first viewing.
+* Bug fix: In Firefox, opening ColorBox causes a split second shift with a small minority of webpage layouts.
+* Simplified code in a few areas.
+
+### Version 1.3.1 - September 16 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css/colorbox-ie.css(removed)
+
+* Removed the IE-only stylesheets and conditional comments for example styles 1 & 4. All CSS is handled by a single CSS file for all examples.
+* Removed user-agent sniffing from the js and replaced it with feature detection. This will allow correct rendering for visitors masking their agent type.
+
+### Version 1.3.0 - September 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css
+
+* Added $.fn.colorbox.resize() method to allow ColorBox to resize it's height if it's contents change.
+* Added 'scrollbars' option to allow users to turn off scrollbars when using the resize() method.
+* Renamed the 'resize' option to be less ambiguous. It's now 'scalePhotos'.
+* Renamed the 'cbox_close' event to be less ambiguous. It's now 'cbox_cleanup'. It is the first thing to happen in the close method while the 'cbox_closed' event is the last to happen.
+* Fixed a bug with the slideshow mouseover graphics that appeared after ColorBox is opened a 2nd time.
+* Fixed a bug where ClearType may not work in IE6&7 if using the fade transition.
+* Minor code optimizations to increase compression.
+
+### Version 1.2.9 - August 7 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor change to enable use with $.getScript();
+* Minor change to the timing of the 'cbox_load' event so that it is more useful.
+* Added a direct link to a YouTube video to the examples.
+
+### Version 1.2.8 - August 5 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug with the overlay in IE6
+* Fixed a bug where left & right keypress events might be prematurely unbound.
+
+### Version 1.2.7 - July 31 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets and background images (core styles have not changed and the updates will not affect existing user themes / old example themes)
+
+* Code cleanup and reduction, better organization and documentation in the full source.
+* Added ability to use functions in place of static values for ColorBox's options (thanks Ken!).
+* Added an option for straight HTML. Example: `$.fn.colorbox({html:'<p>Howdy</p>', open:true})`
+* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when ColorBox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
+* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening ColorBox.
+* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing ColorBox.
+* The 'esc' key is unbound now when ColorBox is not open, to avoid any potential conflicts.
+* Used background sprites for examples 1 & 4. Put IE-only (non-sprite) background images in a separate folder.
+* Example themes 1, 3, & 4 received slight visual tweaks.
+* Optimized pngs for smaller file size.
+* Added slices, grid, and correct sizing to the Adobe Illustrator file, all theme files are now export ready!
+
+### Version 1.2.6 - July 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug with fixed width/height images in Opera 9.64.
+* Fixed a bug with trying to set a value for rel during a direct call to ColorBox. Example: `$.fn.colorbox({rel:'foo', open:true});`
+* Changed how href/rel/title settings are determined to avoid users having to manually update ColorBox settings if they use JavaScript to update any of those attributes, after ColorBox has been defined.
+* Fixed a FF3 bug where the back button was disabled after closing an iframe.
+
+### Version 1.2.5 - June 23 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed the point at which iframe srcs are set (to eliminate the need to refresh the iframe once it has been added to the DOM).
+* Removed unnecessary return values for a very slight code reduction.
+
+### Version 1.2.4 - June 9 2009
+Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
+
+* Fixed an issue where ColorBox may not close completely if it is closed during a transition animation.
+* Minor code reduction.
+
+### Version 1.2.3 - June 4 2009
+* Fixed a png transparency stacking issue in IE.
+* More accurate Ajax auto-sizing if the user was depending on the #cboxLoadedContent ID for CSS styling.
+* Added a public function for returning the current html element that ColorBox is associated with. Example use: var that = $.fn.colorbox.element();
+* Added bicubic scaling for resized images in the original IE7.
+* Removed the IE6 stylesheet and png files from Example 3. It now uses the same png file for the controls that the rest of the browsers use (an alpha transparency PNG8). This example now only has 2 graphics files and 1 stylesheet.
+
+### Version 1.2.2 - May 28 2009
+* Fixed an issue with the 'resize' option.
+
+### Version 1.2.1 - May 28 2009
+* Note: If you are upgrading, update your jquery.colorbox.js and colorbox.css files.
+* Added photo resizing.
+* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of ColorBox cannot exceed the height of the browser window.
+* Added 'rel' setting to add the ability to set an alternative rel for any ColorBox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
+* Added a 'photo' setting to force ColorBox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
+* Removed the need to ever create disposable elements to call colorbox on. ColorBox can now be called directly, without being associated with any existing element, by using the following format:
+ `$.fn.colorbox({open:true, href:'yourLink.xxx'});`
+* ColorBox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
+* For user callbacks, 'this' now refers to the element colorbox was opened from.
+* Fixed a minor grouping issue with IE6, when transition type is set to 'none'.
+* Added an Adobe Illustrator file that contains the borders and buttons used in the various examples.
+
+### Version 1.2 - May 13 2009
+* Added a slideshow feature.
+* Added re-positioning on browser resize. If the browser is resized, ColorBox will recenter itself onscreen.
+* Added hooks for key events: cbox_open, cbox_load, cbox_complete, cbox_closed.
+* Fixed an IE transparency-stacking problem, where transparent PNGs would show through to the background overlay.
+* Fixed an IE iframe issue where the ifame might shift up and to the left under certain circumstances.
+* Fixed an IE6 bug where the loading overlay was not at full height.
+* Removed the delay in switching between same-sized gallery content when using transitions.
+* Changed how iframes are loaded to make it more compatible with iframed pages that use DOM dependent JavaScript.
+* Changed how the JS is structured to be better organized and increase compression. Increased documentation.
+* Changed CSS :hover states to a .hover class. This sidesteps a minor IE8 bug with css hover states and allows easier access to hover state user styles from the JavaScript.
+* Changed: elements added to the DOM have new ID's. The naming is more consistent and less likely to cause conflicts with existing website stylesheets. All stylesheets have been updated.
+* Changed the behavior for prev/next links so that ColorBox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
+* Changed the naming of variables in the parameter map to be more concise and intuitive.
+* Removed colorbox.css. Combined the colorbox.css styles with jquery.colorbox.js: the css file was not large enough to warrant being a separate file.
+
+### Version 1.1.6 - April 28 2009
+* Prevented the default action of the next & previous anchors and the left and right keys for gallery mode.
+* Fixed a bug where the title element was being added back to the DOM when closing ColorBox while using inline content.
+* Fixed a bug where IE7 would crash for example 2.
+* Smaller filesize: removed a small amount of unused code and rewrote the HTML injection with less syntax.
+* Added a public method for closing ColorBox: $.fn.colorbox.close(). This will allow iframe users to add an event to close ColorBox without having to create an additional function.
+
+### Version 1.1.5 - April 11 2009
+* Fixed minor issues with exiting ColorBox.
+
+### Version 1.1.4 - April 08 2009
+* Fixed a bug in the fade transition where ColorBox not close completely if instructed to close during the fade-in portion of the transition.
+
+### Version 1.1.3 - April 06 2009
+* Fixed an IE6&7 issue with using ColorBox to display animated GIFs.
+
+### Version 1.1.2 - April 05 2009
+* Added ability to change content when ColorBox is already open.
+* Added vertical photo centering now works for all browsers (this feature previously excluded IE6&7).
+* Added namespacing to the esc-key keydown event for people who want to disable it: "keydown.colorClose"
+* Added 'title' setting to add the ability to set an alternative title for any ColorBox call.
+* Fixed rollover navigation issue with IE8. (Added JS-based rollover state due to a browser-bug.)
+* Fixed an overflow issue for when the fixed width/height is smaller than the size of a photo.
+* Fixed a bug in the fade transition where the border would still come up if ColorBox was closed mid-transition.
+* Switch from JSMin to Yui Compressor for minification. Minified code now under 7KB.
+
+### Version 1.1.1 - March 31 2009
+* More robust image detection regex. Now detects image file types with url fragments and/or query strings.
+* Added 'nofollow' exception to rel grouping.
+* Changed how images are loaded into the DOM to prevent premature size calculation by ColorBox.
+* Added timestamp to iframe name to prevent caching - this was a problem in some browsers if the user had multiple iframes and the visitor left the page and came back, or if they refreshed the page.
+
+### Version 1.1.0 - March 21 2009
+* Animation is now much smoother and less resource intensive.
+* Added support for % sizing.
+* Callback option added.
+* Inline content now preserves JavaScript events, and changes made while ColorBox is open are also preserved.
+* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the ColorBox event to non-anchors.
+ Example: $('button').colorbox({'href':'process.php'})
+ Example: $('a[href='http://msn.com']).colorbox({'href':'http://google.com', iframe:true});
+* Photos are now horizontally centered if they are smaller than the lightbox size. Also vertically centered for browsers newer than IE7.
+* Buttons in the examples are now included in the 'protected zone'. The lightbox will never expand it's borders or buttons beyond an accessible area of the screen.
+* Keypress events don't queue up by holding down the arrow keys.
+* Added option to close ColorBox by clicking on the background overlay.
+* Added 'none' transition setting.
+* Changed 'contentIframe' and 'contentInline' to 'inline' and 'iframe'. Removed 'contentAjax' because it is automatically assumed for non-image file types.
+* Changed 'contentWidth' and 'contentHeight' to 'fixedWidth' and 'fixedHeight'. These sizes now reflect the total size of the lightbox, not just the inner content. This is so users can accurately anticipate % sizes without fear of creating scrollbars.
+* Clicking on a photo will now switch to the next photo in a set.
+* Loading.gif is more stable in it's position.
+* Added a minified version.
+* Code passes JSLint.
+
+### Version 1.0.5 - March 11 2009
+* Redo: Fixed a bug where IE would cut off the bottom portion of a photo, if the photo was larger than the document dimensions.
+
+### Version 1.0.4 - March 10 2009
+* Added an option to allow users to automatically open the lightbox. Example usage: $(".colorbox").colorbox({open:true});
+* Fixed a bug where IE would cut off the bottom portion of a photo, if the photo was larger than the document dimensions.
+
+### Version 1.0.3 - March 09 2009
+* Fixed vertical centering for Safari 3.0.x.
+
+### Version 1.0.2 - March 06 2009
+* Corrected a typo.
+* Changed the content-type check so that it does not assume all links to photos should actually display photos. This allows for Ajax/inline/and iframe calls on anchors linking to picture file types.
+
+### Version 1.0.1 - March 05 2009
+* Fixed keydown events (esc, left arrow, right arrow) for Webkit browsers.
+
+### Version 1.0 - March 03 2009
+* First release
diff --git a/mod/colorbox/vendors/jquery/colorbox/colorbox.ai b/mod/colorbox/vendors/jquery/colorbox/colorbox.ai
new file mode 100644
index 000000000..1b51881af
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/colorbox.ai
@@ -0,0 +1,1811 @@
+%PDF-1.4 %âãÏÓ
+1 0 obj <</Metadata 2 0 R/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 48282/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.351735, 2008/07/22-18:11:12 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/vnd.adobe.illustrator</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">colorbox</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:CreateDate>2009-05-27T04:22:39-04:00</xmp:CreateDate>
+ <xmp:ModifyDate>2009-07-30T21:43:35-05:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2009-07-30T21:43:35-05:00</xmp:MetadataDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>208</xmpGImg:width>
+ <xmpGImg:height>256</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA&#xA;AQEsAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADQAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXnn5b+fNd85T6us6W9jHpkiRL6KOzOzl9zzagACdMVZt9U1D/lt/5Jr/AFxV&#xA;gf5ZfmZrHmfzJrei39vBGNIaSNbiEODIYpjFUqzNStK4q9JxV2KuxV2KuxV2KuxV2KuxV2KvG/Pf&#xA;5jfmBY/mDL5Z8twpdMyRNb2/pKzktEHf4jTYbmpxVQ/xJ/zkV/1Y1/4G3/6qYqh9G/ND8zYvPml+&#xA;WvMdtHZSXcsXqwtEgYwyEjkjKSCDQioPXFXueKvBB+aX5r6n5k1HSdAtI717OSX4EiT4Y0fiCzOV&#xA;H44qmH+JP+civ+rGv/A2/wD1UxVd5F/Nbzde6/qVh5lMVnHpcEj3aNGIzG0TANyPgBiqbeU/z18v&#xA;eZdcl0izkZZ2kZLEPEw9aONOTS1pRQTUKCa+OKqdh+fvlm882Dy+kzAycYoLkxsFN16jRtbsCOuy&#xA;lWFVNaVr1VRfnv8AN5/Jt9AmpWLvp1zbyPBexFWrcx7iEx1BFV/aO340VR+r/mFqWj+Sl8x6lYGG&#xA;aOOGS808MrPH6jKHVW2VivLbpX2xVMtC8622vaLFq+lzLPaTKxRuJHxLUMpBoQQRirDfIf5y6x5n&#xA;1DSrWaxhtl1HT7i/dkZmKmC7a2CCoHXjyriqH/5x3/vvNf8AzFQ/rmxV7Lirwb8hv/JkedP+M9z/&#xA;ANRhxV7zirsVdirsVdirsVdirsVdirsVeNSf+tKx/wDMKf8AqDOKvZcVeHfmF/60T5T/AOYO0/6i&#xA;7nFXuOKvDvyS/wDJleb/AJN/1EHFXuOKvCPKoB/O/wA3AioLSgg/OPFWbeXvLflPTby/m0e1gjnl&#xA;n5XRjCnhLxHJVP7O1KqPn1OKtQ+W/KaebH1VLaAa4LZVQhVBWIu9XVRtyZmYM3XtiqC8x+VvI2q6&#xA;79Y19I7m7WzkRbe5c+mkBPxyIhPFH/yx8W3XbFVeXQvK8/km20meQyeX1jgQPJI3xRqylQ7k1AOw&#xA;O+2Kp/bWdpb2iWtpEkNsiCOKKIBVVQOICgbAAbDFWE+SPKfkrTL7TZ9Eu7i4ltrCeCzEtaNbPdM8&#xA;jtVE3EzFR0+XfFVH/nHf++81/wDMVD+ubFXsuKvBvyG/8mR50/4z3P8A1GHFXvOKuxV2KuxV2Kux&#xA;V2KuxV2KuxV4tfgH/nISYHcfUl/6h1xV6LwT+Ufdil5J5sAH/OQPlWgp/o1r0/5ibjFD3/FXg/5T&#xA;gHzt5xqK/vk6/wDGWbFXqnBP5R92KXlnlqJJPzo80xNUI8AU8SVNDFCNitCD7jFDLfL3kW10fUZL&#xA;xLiWQh2MKsduDClHH7RB74qttvIVnD5iGrfWZSqfvEj5GplZmJJbrwoR8Pfvttiqt5q8pyeYJ4Vl&#xA;uBDawRuU4oDJ6zbAlj+xtuBT5+CqM1DRrrUPLf6LnlRJ5I40mljWiAggsVTbw2GKo3SNNg0uwgso&#xA;Gd4oBRWkYsx+k/qG2KpD5W8sajpU1k9y0TC3spraT02J+OS5MwIqo24/jiqS/wDOO/8Afea/+YqH&#xA;9c2KvZcVeDfkN/5Mjzp/xnuf+ow4q95xV2KuxV2KuxV2KuxV2KuxV2KvA/OPmPTvL356y6jqJZbM&#xA;W0cUsiKXKc4AAxUbkA9ab4qyL/ldX5a/9XZv+kW7/wCqWKsFm8z6R5m/PLy5qGkO81lALa19Z0aM&#xA;O6yySEqrgNQeqBuBvXtvir6UxV81eTfOmheWPPHmY6zI8EF5MwjnVHkUNFK54ssYZvi57bYqzv8A&#xA;5XV+Wv8A1dm/6Rbv/qlirFfy41m11v8ANXXtVtAwtbqImHmKMVT04wxHblwrir2LFLsVdirsVdir&#xA;sVeef847/wB95r/5iof1zYoey4q8G/Ib/wAmR50/4z3P/UYcVe84q7FXYq7FXYq7FXYq7FXYq7FU&#xA;p1Dyj5X1G6a7v9Ktbq6cAPNNEjuQooKkiuwGKob/AJV95G/6sNh/0jx/0xVVtfJPlC0uY7m10azg&#xA;uIWDxSxworKw6EEDY4qnWKpHN5F8mTSvLLollJLISzu0EZJYmpJNMVWf8q+8jf8AVhsP+keP+mKo&#xA;rT/KfljTpjNYaXa2sxHEyQxIjFT2qoGKph9Utv8AfS/dirvqlt/vpfuxV31S2/30v3Yq76pbf76X&#xA;7sVd9Utv99L92Ku+qW3++l+7FXj/APzjwQLjzUhNGNzCwU9aVl3pir2XFXg35DD/AJCN5zb9lprk&#xA;q3Yj62emKvecVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSyfy1oU2&#xA;5soUbpySNUNPCoGKqH+D9B/5ZhiqN03RdK0xOFhaRWwIofSRUJHvxAxVG4q7FXYq7FXYq7FXYq7F&#xA;XYqg9H1jTdZ0u11XTLhLqwvI1mt54yCrI4qP7R2xVL/OHm6x8qaNca1qNrdTabaL6l3NaRiYxJWh&#xA;ZkDB+I7kKaDc7Yq84/6Gu/Kj0DcV1P0AokMv1GTgELcA3KtKc/hr47Yq9J8pea7PzTo1vrNha3UG&#xA;nXiCW0lu41iMsbfZdU5F+LdQSBUbjbFUdrOs6ZoulXWq6pcJa2FlG01zPIaKqIKn5nwHfFUZirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8t7NtVW2nltHmS3gCvcNGzKq8mCK&#xA;TQjck0xV9Tf84pyar5v/AC088eUtS1CZ7GaM2dq8hMpgXULeaOXhyPTYNx6Vr44qxf8A6Fe/OhtP&#xA;Hllv0WNHEwYXv1iSgYOT6/GnPdTTjx+iu+Kss/5y2utV8sfl/wCTPLWnX80diA1vcshMbTixgiSI&#xA;vxPT4i3HpX5DFXyrdvqzW0El28z209XgaRmZGKEoSKkioNRir9SMVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVfnX5S85aNpmjNFND6bwAGSJAC0xJA5DkRU+IJxV71/wA4TyrN&#xA;a+dJUHFZLq0dR4BhOR0xV9NYq+ZP+c25FjsvJsjCqpdXbMPYLCcVeC+YvOOiXnl4WyQCea4B9KNw&#xA;AYCCRzPGtG8ADv32xV+iuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvhDQ&#xA;P+cTvzc1nSbbU1gsrGO6jWWKC7uCk3BxyUskaScag9CajuMVfSX/ADjl+TmsflroGpx61cwz6nqs&#xA;8ckkVsWeKOOFWVBzZULMeZJ28MVeu4q8h/5yN/JzWfzK0HS49EuoYNS0qeR0iuSyRSRzqqv8aq5D&#xA;LwUjanXFXzb5h/5xQ/NzRdJudTaCzv4rSNpZobOcvNwQcmKo6R8qDsu57DFX3hirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdir4I0T/nKf8AOHSNKttMi1CC5htIxFFLc26SS8FF&#xA;FDPsWoNqnfxxV9Mf843fnBrf5j+XtSbXIYk1TSZ445Li3UokscysyEoSeLDgwNNumKvX8VePf85J&#xA;fnDrv5ceX9LbQoIX1LVp5I1uLhS6RRwKrOQgK1di60rt12xV80a7/wA5S/m/rGkXWlzahb28F5G0&#xA;M0ltbpHL6bijBX+LjUbVG/hir74xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV8lfkx+Uv5Sa1+Wlxd6peLeXGprGupX/NIZbF0kST6vGZAwiPNQGcirg7fCcVZD/zhpbW1sfPd&#xA;tauZLaC/t44HJDFo09dVNRQGoHbFX0pir5q/5zNt7e5/wLb3LcLea+uI5nqFojegGNTsNjiqTfnD&#xA;+T/5PaP+U8OoWF/Hp+oaajrpV7zWaTUHaR5DbycKeqxZyA4HwAb/AAjFX1dirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVdirsVdir8vLF9eSxu7exFx9Sv1WO8jiDmOUROJEDgCh4uoI8M&#xA;VfRv/OPmm+ffKv5QeePN1gq6dLEgvbFb+BnjuYtPhlkn+Csb7g8UcNTlXFV7f85FfnGvkL/GBuNH&#xA;+r8liFl9RufW9RpjHUn1eAi4rX1a0LfB9rFW/wDnI7SPPnmL8qfJPmbUE/SVwVa61L6hAVhthfQx&#xA;yRfADJJxAXizs1OVOlaYq+br+XX3sbS2vvrP1HT1eOyilDiOISyGVwgIoOTsSfHFX6h4q7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqhNI0nT9I0y10vToEtrGzjWG3gjAVVRBQA&#xA;AUGKq91bW91bS2tzGs1vOjRTROKq6OOLKw7gg0xV45H/AM4lflEmofWfT1BrblU6cbtvq5Tlz9I/&#xA;D6vDlvTnir2SCCG3gjggRYoYlCRRoAqqqiiqoHQAYqhtY0jTtZ0q70rUoFubC9iaC5gcAqyOKEb/&#xA;AIYqjMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirqitO/hirsVcSBudsVdirSujEhWBI60NaYq3irsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdiq2WP1Inj5MnNSvNDRlqKVB33GKpL5U8sy6DbzwyahPf8ArSM49diQlXZv&#xA;hBrQtyq57nfFVlj5WmtvM9zrbalczJPHwWzd6otWZuO/7CcvgHY1xVT82eU5tdmtJI7sWwtg/JeD&#xA;MJQzI3pycXSsZ4bjFU21vTm1LSLuwWT0muomiEtK8eQpWm3TFVawtTaWUFqZpLgwoqGeU8pH4inJ&#xA;j3JxVJvKflmfQ2vDJOswuW5LxBFP3ssm9f8AjLirIMVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVU7o3ItpTaqj3QRjAkrFIzJT4Q7KHIWvUhT8sVYV+VN9+a93pt8fzEsbOyu0uHFj9&#xA;UapaMyyVDgM6hUHERnqVoWq1TiqjomofnBJ+Z+p2urafYxeREgrYXUTn1i3qSek37RaRlH71DRVH&#xA;EjeoZVT/ADT1L807S90lPI9s1xayrINZcQwStDF6sIEsHrSwhp1Vn4Rn4WFSegxVlPnWbzFD5S1e&#xA;Xy2nq6+lrI2lx0VuVwF/dij/AA7t44qi9Bk1qTRbF9cihg1hoUOoRWrM8KzcfjEbMAeNf9s9cVYT&#xA;+UepfmTevrI86JOoikA0717eO3BT61dL8PppHy/crD1r2Pc4q9FxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQmmkDiOIcpCK09vE4qome+hHO&#xA;ZF9MHcqa0riqMRgyhh3xVvFXYq7FXYq7FXYq7FVOW5ghkhjkfi9w5ihG/wAThGkI/wCAjY4q3PPF&#xA;bwSTzNwiiUvI57KoqTt7YqlekebvLusXLWum3q3M6IZGRVcUQEKT8SgdWGKppJNDEAZHVAenIgV+&#xA;/FWzJGE9QsAlK86ilPGuKujlikFY3VwNiVIIr9GKtLPA7lFkVnFaqCCduu2KpTqnnLyxpdwba/1G&#xA;KG4H2ovidl7/ABBA1PpxVB/8rJ8kf9XWP/gJf+aMVTzTtSsNStVurC4S5t2NBJGaio6g+B9sVS1f&#xA;OnlhtT/Ra36m/wDVNv6HF6+qG4la8adffFU7xV2KuxV2KuxVBqf9ytP+KW/4kuKrtV/4583yH6xi&#xA;qpZ/7zp8hiqtirsVdirsVdirsVdiqFvbH6zc2E3Ph9SnafjSvPlBLDxrUU/vq19sVUfMP/HA1P8A&#xA;5hJ/+TbYq8l/JT/lKrr/AJgZP+T0WKvSPM/6aEMg0uWK3vXdfSmncRp6QQ1XkUk35e21a+2Kooi4&#xA;FoZEAjFWMRk+JFkMYCu1APh9Tlv71xVC6IuuNYn9IzQ3V6FkEklqCE4FgY4+RJ5OFrvXb8SqttDr&#xA;bapcrNc2sun8h+joIUYTxkFd5KmihRy5Cn9MVeIaDpF75m8wpZ+uFuLx3kmuJKt0Bd2I7nFWXa/+&#xA;TtzpmkXWoQamt0bWNpXhaH0qogqxDc33A36Yqj/yMkflrMfI8ALdgvap9QVxVjdt/wCTYP8A22ZP&#xA;+ohsVe9Yq7FVK5mEMTOe2KqKQ3MirJ63HkAeIWvXfrXFVS3lYu8TmrxkAn5iuKqKf8dX/ni3/Elx&#xA;Vdqv/HPm+Q/WMVVbP/eZPkMVVsVdirsVdirsVdirsVQ9zexW81pC4YteSmCIrSgYRSTVapG3GI/T&#xA;iqH8w/8AHA1P/mEn/wCTbYq8l/JT/lKrr/mBk/5PRYq9G83+ZH0Wyku/q0t2ElWJbWBpFkasZcuP&#xA;TSRiB37AVPtlmLHxmrphOXCLR0uozLZSSAPP6aPIFg+KSULEsojj2WrNyoNq5ADemV7IHy55jn1P&#xA;ShffU7mxEglCw3gIb92VHqry+P0zy/a8NttzPJDhNXaISsWssfMc82vX2miwvofqFC19Op+rzfEg&#xA;4KT8PJ/UqnHw+jDLHUQbG6BOzVPGPJ2uxeX/ADJb6hcxNJFDzSaNaBwHUoaVpuK9MqZvQPM35t6B&#xA;eaDfWVjDcPcXcLwL6iKiKJFKsxIZjsDttiqF/Iz+91n/AFbf9cmKsdtv/JsH/tsyf9RDYq96xV2K&#xA;oe+hMtuyDqRiqHi1KKONIpI5A6gKaCo2264qq2il5pZypUSEEA9aAU/hiq1P+Or/AM8W/wCJLiq7&#xA;Vf8AjnzfIfrGKqtn/vMnyGKq2KuxV2KuxV2KuxV2Koe5soria0mcsGs5TPEFpQsYpIaNUHbjKfpx&#xA;VdeWsd3Zz2khIjuI3icrQMFdSppWu++Ksd8r/l5ovlvUJL6xmuZJZIjAyztGy8WZWqOKIa1Qd8VZ&#xA;HJbRSPzNVelOSMVJHgeJFcVd9Vg9IRcfgB5ChIIbx5V5V964q2ltChY0LFxRi5Lkjw+Inb2xVYll&#xA;AjKRyITdFZ2ZR8gSRirFta/Kvytqt9JeuJ7WaYl5hbOqqzHqxV1cAn2xVL/+VKeVf+Wq+/5GQ/8A&#xA;VLFWV+XvLOkeX7RrbTYiiueUsjHlI5HQs3t2HTFUmT8s9Bj8wnXhcXX1v6y15wLx+n6jOXIp6fLj&#xA;U/zYqyWXUbWI0dwDiqn+l7L/AH4MVd+l7L/fgxVb+k9PrXmMVXDVrEdHGKoe0vbe41grGwYiBj9H&#xA;NcVROsMF02dj0AH6xiqrYsGtYyOlBiqvirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqnc&#xA;kiFyOtDiqG0tFayR3UF3LFiRufiIxVF+lF/Iv3DFXelF/Iv3DFXelF/Iv3DFXelF/Iv3DFUPLA0c&#xA;3rwopfiVI6VBNeo+WKqMxuruMwPCscbbOeXKo8OgxVU0tStvw7KSo+QNMVRmKuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KtMoZSD0OKoJrGdaiCZo1JrxFCPxxVr6nf8A/LW/3D+mKu+p3/8A&#xA;y1v9w/pirvqd/wD8tb/cP6Yq76nf/wDLW/3D+mKu+p3/APy1v9w/piraWl6D8VyxHyAxVFwxLEgU&#xA;dsVf/9k=</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
+ <xmpMM:RenditionClass>default</xmpMM:RenditionClass>
+ <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID>
+ <xmpMM:DocumentID>xmp.did:8BC7D877974ADE11BCECCFF09938C3CC</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:30267148-672c-4d34-8534-e8cce420f815</xmpMM:InstanceID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D47F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:21+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T17:01:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BC18AC99CBA78E83</stEvt:instanceID>
+ <stEvt:when>2008-05-19T18:10:15-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T14:26:44-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:08C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:51:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:26:38-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:26:10-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:8BC7D877974ADE11BCECCFF09938C3CC</stEvt:instanceID>
+ <stEvt:when>2009-05-27T04:22:07-04:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:32300939-b1c4-8440-b812-b255b7b0d326</stRef:instanceID>
+ <stRef:documentID>xmp.did:F97F1174072068119098B097FDA39BEF</stRef:documentID>
+ <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Web</illustrator:StartupProfile>
+ <illustrator:Type>Document</illustrator:Type>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>1024.000000</stDim:w>
+ <stDim:h>768.000000</stDim:h>
+ <stDim:unit>Pixels</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Red</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Yellow</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Green</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Cyan</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Blue</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Magenta</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>193</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>45</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>28</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>241</xmpG:red>
+ <xmpG:green>90</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>247</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>251</xmpG:red>
+ <xmpG:green>176</xmpG:green>
+ <xmpG:blue>59</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>252</xmpG:red>
+ <xmpG:green>238</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>217</xmpG:red>
+ <xmpG:green>224</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>198</xmpG:green>
+ <xmpG:blue>63</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>57</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>74</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>146</xmpG:green>
+ <xmpG:blue>69</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>104</xmpG:green>
+ <xmpG:blue>55</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>34</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>115</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>157</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>41</xmpG:red>
+ <xmpG:green>171</xmpG:green>
+ <xmpG:blue>226</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>113</xmpG:green>
+ <xmpG:blue>188</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>46</xmpG:red>
+ <xmpG:green>49</xmpG:green>
+ <xmpG:blue>146</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>27</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>100</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>45</xmpG:green>
+ <xmpG:blue>145</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>147</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>143</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>158</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>93</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>212</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>90</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>30</xmpG:green>
+ <xmpG:blue>121</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>199</xmpG:red>
+ <xmpG:green>178</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>134</xmpG:green>
+ <xmpG:blue>117</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>115</xmpG:red>
+ <xmpG:green>99</xmpG:green>
+ <xmpG:blue>87</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>83</xmpG:red>
+ <xmpG:green>71</xmpG:green>
+ <xmpG:blue>65</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>198</xmpG:red>
+ <xmpG:green>156</xmpG:green>
+ <xmpG:blue>109</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>166</xmpG:red>
+ <xmpG:green>124</xmpG:green>
+ <xmpG:blue>82</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>98</xmpG:green>
+ <xmpG:blue>57</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>117</xmpG:red>
+ <xmpG:green>76</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>96</xmpG:red>
+ <xmpG:green>56</xmpG:green>
+ <xmpG:blue>19</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>66</xmpG:red>
+ <xmpG:green>33</xmpG:green>
+ <xmpG:blue>11</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>26</xmpG:red>
+ <xmpG:green>26</xmpG:green>
+ <xmpG:blue>26</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>51</xmpG:red>
+ <xmpG:green>51</xmpG:green>
+ <xmpG:blue>51</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>77</xmpG:red>
+ <xmpG:green>77</xmpG:green>
+ <xmpG:blue>77</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>102</xmpG:green>
+ <xmpG:blue>102</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>128</xmpG:red>
+ <xmpG:green>128</xmpG:green>
+ <xmpG:blue>128</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>153</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>179</xmpG:red>
+ <xmpG:green>179</xmpG:green>
+ <xmpG:blue>179</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>204</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>204</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>230</xmpG:red>
+ <xmpG:green>230</xmpG:green>
+ <xmpG:blue>230</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>242</xmpG:red>
+ <xmpG:green>242</xmpG:green>
+ <xmpG:blue>242</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>63</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>245</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>122</xmpG:red>
+ <xmpG:green>201</xmpG:green>
+ <xmpG:blue>67</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>29</xmpG:green>
+ <xmpG:blue>37</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>123</xmpG:green>
+ <xmpG:blue>172</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>189</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>212</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=138 G=138 B=138 1</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>138</xmpG:red>
+ <xmpG:green>138</xmpG:green>
+ <xmpG:blue>138</xmpG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 3 0 obj <</Count 1/Kids[155 0 R]/Type/Pages>> endobj 155 0 obj <</ArtBox[0.0 73.0 508.0 701.0]/BleedBox[0.0 0.0 1024.0 768.0]/Contents 156 0 R/Group 157 0 R/LastModified(D:20090730214335-05'00')/MediaBox[0.0 0.0 1024.0 768.0]/Parent 3 0 R/PieceInfo<</Illustrator 158 0 R>>/Resources<</ColorSpace<</DefaultRGB 159 0 R>>/XObject<</Fm0 160 0 R>>>>/Thumb 161 0 R/TrimBox[0.0 0.0 1024.0 768.0]/Type/Page>> endobj 156 0 obj <</Filter/FlateDecode/Length 130>>stream
+H‰ŒÎ-Ã0 †aîSøõìø' ŸÆ‹v€©°ºûƒµ,$’õ‘<à=±FCáb¸Üï·Á8A¯-‚âFÅ{­(V(Ì\Eñ³Ããµ3>¿°Îüå¨IGIykF½µÝS><H‚朗7)dªÞ5×?úLÿè3ý£Ÿö¯ð`
+endstream endobj 157 0 obj <</CS 162 0 R/I false/K false/S/Transparency>> endobj 161 0 obj <</BitsPerComponent 8/ColorSpace 163 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 79/Length 284/Width 106>>stream
+8;Z\ui<k5l%"j!.(Yn<rGVB89DS9W38A;imV+n")c,d,Cr$jiKcnTe_@#q%%4(.C8
+HN;BSQ0K3*YFS=EP`>nRqnec:hag&4%a](-!f93L:A4D\h\gZ/n@lX;HcTPGfEHCj
+Q%6lr1C^ia9#<W0(GV,aU!d`IC%Y0XNP6><b7'6om5]6K!.0N/D61*)F/P7m\Pl,G
+gpGL0adN#/Z594=1XIk%(grE!EB@RojEgmQOd52KE0$6o\NS1_@3+<#Mt:Yj;B;Fb
+IK^@:(iq@&!<@UeLT(~>
+endstream endobj 163 0 obj [/Indexed/DeviceRGB 255 164 0 R] endobj 164 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
+endstream endobj 160 0 obj <</BBox[-103.108 71.3223 103.108 -71.3213]/Length 854/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 165 0 R>>/ExtGState<</GS0 166 0 R>>/Font<</T1_0 154 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream
+BT
+/CS0 cs 0 0 0 scn
+/GS0 gs
+/T1_0 1 Tf
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2773 Tm
+[(T)7(his is an A)12(dobe\256 I)-10(llustr)5(a)4(t)6(or\256 F)26(ile tha)4(t w)4(as)]TJ
+0 -1.2 TD
+[(sa)8(v)10(ed without PDF C)11(on)4(t)6(en)4(t)3(.)]TJ
+0 -1.2 TD
+[(T)71(o P)5(lac)6(e or open this \037le in other)]TJ
+0 -1.2 TD
+[(applica)4(tions)11(, it should be r)10(e)-28(-sa)8(v)10(ed fr)10(om)]TJ
+0 -1.2 TD
+[(A)12(dobe I)-10(llustr)5(a)4(t)6(or with the ")3(C)3(r)10(ea)4(t)6(e PDF)]TJ
+0 -1.2 TD
+[(C)11(ompa)4(tible F)26(ile" option tur)-4(ned on. )41(T)7(his)]TJ
+T*
+[(option is in the I)-10(llustr)5(a)4(t)6(or Na)4(tiv)10(e F)31(or)-4(ma)4(t)]TJ
+0 -1.2 TD
+[(Options dialog bo)14(x, which appears when)]TJ
+0 -1.2 TD
+[(sa)8(ving an A)12(dobe I)-10(llustr)5(a)4(t)6(or \037le using the)]TJ
+0 -1.2 TD
+[(S)-3(a)8(v)10(e A)6(s c)6(ommand)10(.)]TJ
+ET
+
+endstream endobj 154 0 obj <</BaseFont/OUPLQW+MyriadPro-Regular/Encoding 167 0 R/FirstChar 31/FontDescriptor 168 0 R/LastChar 174/Subtype/Type1/Type/Font/Widths[523 212 0 337 0 0 0 0 0 0 0 0 0 207 307 207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 612 0 580 666 0 487 0 0 239 0 0 0 0 658 689 532 0 0 493 497 0 0 0 0 0 0 0 0 0 0 0 0 482 569 448 564 501 292 559 555 234 0 0 236 834 555 549 569 0 327 396 331 551 481 736 463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 419]>> endobj 167 0 obj <</BaseEncoding/WinAnsiEncoding/Differences[31/f_i]/Type/Encoding>> endobj 168 0 obj <</Ascent 952/CapHeight 674/CharSet(/f_i/space/quotedbl/comma/hyphen/period/A/C/D/F/I/N/O/P/S/T/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/w/x/registered)/Descent -250/Flags 32/FontBBox[-157 -250 1126 952]/FontFamily(Myriad Pro)/FontFile3 169 0 R/FontName/OUPLQW+MyriadPro-Regular/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 88/Type/FontDescriptor/XHeight 484>> endobj 169 0 obj <</Filter/FlateDecode/Length 3130/Subtype/Type1C>>stream
+H‰|TyPwîffz è$ÒÕD§“î#hD”[-±o!b(/˜a¸@e0‚ §E
+D%"‰g”C ¹Ed=€ñ
+1ÆMÜ}?¬l[[•¿¶ªëõ»ú{ï}¯ëá˜ÐÃq|Ž—Ÿ·ÇWþ‹<©U
+ouÔâíÊà˜ð@µ1ÈrŸáÜl!÷ù
+Ù£¬÷ïß{ˆà¹Ïgµ|6cÔð˜O”ìß«ZÍc‡heöË—;Ø¥Ó´tµ•9,]ºtZ:ÉÖ(¢‚”2ŸC­2B#Û)RGG©µJ…lMx¸lB#S+5Ju¬ÑÉ÷¤UÊù¸,èÌÏ·÷ðÙ‘|Î:'g'[çev²ÿv/SidJ•6D©–ò
+å~ŒgÇ0†Í4Á¬0ì ³Á°/1l‰ æ„c§ó!°R ?a6F=1o,ËÇʰÜ—ã øþÖd­I¾É„`³@!º ¿þ!Ú :AÄN"8+¶ï›š›z™^00s6‹2ùÈö£VsQjz÷º çåM‚t!—:é=•J@j£Ð*øV¯$C·(0S9â)bÏ´«o\3eÔÑ’ : ZÁí„ãøÏatØHŸàæä&ª
+… 5X¡°ýqWAÁe¾1×ä>®¶0Ι¿<ȤRên¦vÐðéŸåìÝ»ÏÁD
+xÈÃm·™o‡Kh½Á#ùØv܃:y¾<»žçÖÈ1E[læ!/UXFV #‰çÇm
+óYÉE~ºÂ>¸h¤ ’Ç,Çá<‘r®$­”½¡±-¯(ºÑ.½£m ¾ÂTÊ=Î9Óë}“YË>s1«šžèÜg¿t«¿U¤&óäAV’¤än „ÆY´ Â@×”QšÊþ¸.¼øóÍöÛˆ¨cí*ƒ.wH¯WÜ~Ù^ðh1CÖ—ðû.ŒÜY°‘FŸ:¹Y-îù
+Läì Uå~OéFÿ]^>g/(Irq,÷ú>û Øgià^CÐý©k ÄêºBc!½fvYT p”lä졉ú5ø-Z°Íû°ZΜó/oÈ¿N¿ÉÈsWH“ÄÈ+cÞVd&]ß´á·Þæòêï™,‚LÈÙ&!RÊô×j¤. ÙøMZRjt$H¾•Þ«,mûðÂ_õ¬äž®O˹õBxœÅà8T>#aE&ìÓèC™!‚l<9"Ê$<ªZ£ûhÀÀd Ö€µëïh¦›Ê/œÕÃONÄø”;u:óTVs¯¨µægz¢iÙ—Hà·Ún«M{<›š›–—'•øòÛÇúðêgÎæ ¥S‡&~M/ZÛ Âßï<Á²D]1{®[”¯ÙïO#‡ùG Ñ‚‰`Ýu³0ï<+i×õ+þ×lõ3¸8ÎÓc3@¡½¸:& b5̬"ç Ù¼X
+ˆÐi{~)™$!x63áú”'(&}÷¹ŸÓÜhg¹1Ì…æ‹H ›ÅÁÙ_šrŽ L Ãi œ‘?Ü Ù»bd[Ý! íëäÙÖøõeh1µšíÔ”ýÒ௤½Éhh¢gù¦šZS5™›_œ]®O÷˜Î"5ä‰ë8Â1×x—ïøûQÞo‰ã½ÕebÁ‰¹éCiçhIW‰Û+ºxæìˆÿ;åÉ6ªcs-rñ»veìö}þŠž,ë*ÿLTüõaÉ¡B·SN X’U°›‚± s¸|½IlgÝF.>Þ—×\ä‘SÇ:.¨|do·Õê¢uAL§VÊÈeï [`lÅÂh¾à'M¨8²’±7°2ŒûÙRVA¤ 
+endstream endobj 166 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 165 0 obj [/ICCBased 170 0 R] endobj 170 0 obj <</Filter/FlateDecode/Length 2574/N 3>>stream
+H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó
+ 
+V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚ó
+€x¯Íú·¶Ò-
+¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9
+N'çÎ)Î].ÂuæJ¸rî
+î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö
+n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=G</zÁ^Á^j¯­^—¼ Þ¡ÞZïQïBº0FX'Ü+œòáû¤útøŒû<öuñ-ôÝà{Ö÷µ__•ߘß-G”,ê}çïé/÷ñ¿ÀHh 8ðm W 2p[àŸƒ¸AiA«‚Ný#8$X¼?øAˆKHIÈ{!7Ä<q†¸Wüy(!46´-ôãÐaÁa†°ƒa†W†ï ¿¿@°@¹`lÁݧYÄŽˆÉH,²$òýÈÉ(Ç(YÔhÔ7ÑÎÑŠèÑ÷b<b*böÅ<Žõ‹ÕÇ~ûL&Y&9‡Ä%ÆuÇMÄsâsã‡ã¿NpJP%ìM˜I JlN<žDHJIÚtCj'•KwKg’C’—%ŸN¡§d§ §|“ꙪO=–§%§mL»½Ðu¡váx:H—¦oL¿“!È¨ÉøC&13#s$ó/Y¢¬–¬³ÙÜìâì=ÙOsbsúrnåºçsOæ1óŠòvç=ËËïÏŸ\ä»hÙ¢óÖê‚#…¤Â¼Â…³‹ãoZ<]TÔUt}‰`IÃ’sK­—V-ý¤˜Y,+>TB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO
+¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ
+endstream endobj 159 0 obj [/ICCBased 171 0 R] endobj 171 0 obj <</Length 3144/N 3>>stream
+
+
+
+'
+=
+T
+j
+
+ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý#
+#8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<'<e<¤<ã="=a=¡=à> >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·O
+kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ—
+—u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°
+¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ
+endstream endobj 158 0 obj <</LastModified(D:20090730214335-05'00')/Private 172 0 R>> endobj 172 0 obj <</AIMetaData 173 0 R/AIPrivateData1 174 0 R/AIPrivateData10 175 0 R/AIPrivateData11 176 0 R/AIPrivateData12 177 0 R/AIPrivateData13 178 0 R/AIPrivateData14 179 0 R/AIPrivateData15 180 0 R/AIPrivateData16 181 0 R/AIPrivateData2 182 0 R/AIPrivateData3 183 0 R/AIPrivateData4 184 0 R/AIPrivateData5 185 0 R/AIPrivateData6 186 0 R/AIPrivateData7 187 0 R/AIPrivateData8 188 0 R/AIPrivateData9 189 0 R/ContainerVersion 9/CreatorVersion 14/NumBlock 16/RoundtripVersion 11>> endobj 173 0 obj <</Length 894>>stream
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 11.0
+%%AI8_CreatorVersion: 14.0.0
+%%For: (Administrator) ()
+%%Title: (colorbox.ai)
+%%CreationDate: 7/30/2009 9:43 PM
+%%Canvassize: 16383
+%%BoundingBox: 0 73 508 701
+%%HiResBoundingBox: 0 73 508 701
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 7.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%AI3_TemplateBox: 512.5 383.5 512.5 383.5
+%AI3_TileBox: 116 78 908 690
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 14400 14400
+%AI5_RulerUnits: 6
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: 93.25 700 8 1780 1006 18 0 0 45 111 1 0 1 1 1 0 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:0 0
+%AI7_GridSettings: 100 4 100 4 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream endobj 174 0 obj <</Length 6746>>stream
+%%BoundingBox: 0 73 508 701
+%%HiResBoundingBox: 0 73 508 701
+%AI7_Thumbnail: 104 128 8
+%%BeginData: 6616 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FDA0FFA8A8A8FFA8FFA8A87DA8A8FD5DFF5227FD06FF7D27A8FD5D
+%FF5252FD06FF52277DFD5DFF5252FD06FF7D27A8FD2AFF7D527D527D527D
+%527D52A8FD04FF7D7D527D527D527D527D7DFFFFFFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFFFFFA8FFA8A8A8FF5252FD06FF5227A8FD2AFF522727522752
+%27522752A8FD04FF7D2752275227522752277DFFA852A8A8FF527DA8FF7D
+%52527DFFA852A8CAFFA8525252A85252FD06FF7D27A8FD2AFF5227A8A8FF
+%A8A8A85227A8FD04FF52277DFFA8FFA8FF7D277DA8F82727A85227F87DA8
+%A827F87DFFA82727A8A8A8275252FF5252FD06FF5227A8FD2AFF5252FD06
+%FF7D27A8FD04FF7D27A8FD06FF277DA87D52A8A8A85252A8FF7D52527DFF
+%FF277DA8FFA8525252FF7D52FD06FF7D27A8FD2AFF5252FD06FF7D27A8FD
+%04FF5227A8FD05FF7D277DFFA8A8A8FFA8A8A8FFA8A8A8FF7DFFA8A8A8FF
+%A8A87DA87DFF5252FD06FF5227A8FD2AFF5252FD06FF7D27A8FD04FF7D27
+%A8FD05FFA8277DFFFFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFA8FFA8
+%FFA85252FD06FF7D27A8FD2AFF5227FFFFFFA8FFFF7DF8A8FD04FF7D277D
+%FFFFFFA8FF7D277DFFA8A8A8FFA8A87DFFA8A87DA87DFFA8A8A8FFA8FF7D
+%7D7DFF5252A8FD05FF52277DFD2AFF527DA8FFA8FFA8FF7D27A8FD04FF7D
+%27A8FFFFA8FFFFA827A8A87D52A8CAA8527DA8FFA87D52A8A8FF527DA8FF
+%A87D7DA8FF5252FD06FF7D27A8FD2AFF5252FFA8FFA8FFFF7DF8A8FD04FF
+%7D27A8FFA8FFA8FFA8277DFF7D7D7DFFA87D7DFFA8A8527D7DFFA87D7DFF
+%A8FF527D7DFF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF7D27A8FD04
+%FF7D27A8A8FFA8FFA8A8277DFFFFA8FFA8FFA8FFA8FFFD04A8CAFFA8FFA8
+%FFFD05A85252FD06FF7D27A8FD2AFF5252FFA8FFA8FFA87D27A8FD04FF52
+%27A8FFA8FFA8FF7D277DFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF7D27A8FD04FF
+%7D27A8A8FFA8FFA8A8277DFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA87D52FD06FF7D27A8FD2AFF5252FFA8FFA8FFFF7D27A8FD04
+%FF5252A8FFA8FFA8FFA8527DFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA8FF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF5227A8FD
+%04FF7D277DA8FFA8FFA87D277DFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA8FFA85252FD06FF7D27A8FD2AFF52FD0927A8FD04FF52FD09
+%2752FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FF5252A8
+%FD05FF52277DFD2AFF7DA87D7D7DA87D7D7DA8A8FD04FFA87DA87D7D7DA8
+%7D7D7DA8FD19FF5252FD06FF7D27A8FD5DFF5252FD06FF5227A8FD5DFF52
+%52FD06FF7D27A8FD5DFF5252A8FFA8FFFFFF5227A8FD5EFFFD09A8FD62FF
+%A8FFA8FDFCFFFDD3FFA87DA87DA87DA8A8FD5AFF52FD05FFA827F827F8F8
+%27FFFFFFA8FFFF7DA8FD53FFF8F82727277DFF52F85252F87DFFA8FD0427
+%F8FD54FFFD05F827FF7DF827F8F87DFF27FD05F8A8FD53FFFD05F827FFFF
+%7D272752FFFF27FD05F8FD54FFF8F827F8F827A8FD07FFF8F8F827F8F8A8
+%FD53FFF8277D522727FD08FF27F8525252F8FD54FFF852277DF827FD08FF
+%F8F852525227A8FD53FFF8275227F827FD08FF27F8275227F8FD54FFFD05
+%F827FD08FFF8F8F827F8F8A8FD53FFFD05F827FD08FF27FD05F8FD54FFFD
+%05F827FD08FF27FD05F8A8FD53FFF827525252A8FD09FFFD0452F8FD54FF
+%7DFD05FFA8FD0CFFA8A8FD53FFA8FD12FF7DFD54FFF827275227A8FD08FF
+%A852272727F8A8FD53FFFD05F827FD08FF27FD05F8FD54FFFD05F827FD08
+%FFFD06F8A8FD53FFF8F852F8F827FD08FF27F82752F8F8FD54FFF87DFF7D
+%F827FD08FFF8277DFF52F8A8FD53FF52FFFFFF52F8FD08FF2727FFFFFF52
+%FD54FFF87DA8A8F827A8FD07FFF8277DFF5227A8FD53FFF8F852F8F827FD
+%08FF27F82752F8F8FD54FFFD05F8277D525252275252A8FD05F827A8FD53
+%FFFD05F827FF27F85252F852FF27FD05F8FD54FFF8272727F8A8FF76F87D
+%52F87DFF7D27F827F8F8A8FD53FF7DFD06FFA827F8F8F8FD07FF52FD5CFF
+%A87D7DA8FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC
+%FFFDFCFFFDFCFFFDFCFFFD80FFA8FD07FFA8FD53FF7DA8FFFFFF7DA8FFFF
+%FF7D7DFFFFFF7DA8FFFFFFA87DFD52FF52A8FFFFA87D7DFFFFFF7D7DFFFF
+%FF7D7DFFFFFF7D7DFD67FFA8FDFCFFFD26FF277DFFFFA82752FFFFFF2752
+%FFFFFF7D7DFFFFFF2752A8FD50FFA8F827FFFFA8F852FFFFFF2727FFFFFF
+%277DFFFFFF5227FD52FFA8FD09FFA8A8A8FD07FF7DA8FDFCFFFDFCFFFDA2
+%FFA8FFA8FD64FFA8FFA8FFA8FD62FFA8FD05FFA8FD66FFA8FD62FFA8FD04
+%FFA8A8FD60FFA8FD05FFA8FD22FFA8FD04FFA8527D7DFFFFFFA8FFA8FFFF
+%FFA8FFFFFFA8FFA8FFFFA8527D7D7D527D7DFFFFFFA87D52A8FD16FFA8FD
+%05FFA8FD21FFA8FD04FFA87D52A8FFFFA9FD0EFFA8527D527D527D527D7D
+%FFFFA8527DA8FD15FFA8FD05FFA8FD22FFA8FD04FFA852527DFFFFFFA87D
+%A8FFA8FF52A8A8FFA87DA8FF527D527D527D527D527DA8FF7D5252A8FD0C
+%FFA8FFA8FFA8FD05FFA8FD05FFA8FD26FFA87D52A8FFFFFFA97DFFFFFFA8
+%A8A8FFA8FF7DFFA87D527DA8FFFFFF7D7D52FFFFA8527DA8FD0BFFA8FD09
+%FFA8FD05FFA8FD27FFA852527DFFFFFFA8FFA8FFCFFFA8FFFFFFA8FFA8FF
+%52527DFD04FFA8527DA8FF7D5252A8FD0BFFA8A8FFFFFFA8FD05FFA8FD04
+%FFA8A8FD26FFA87D52A8FD04FFA8FD09FFA8FFFF7D527DFD04FFA87D7DFF
+%FFA8527DA8FD0BFFA8FD05FFA8FD09FFA8FD27FFA852527DFFFFFFA8FFA8
+%FFA8FD05FFA8FFCFFF527D7DFD04FFA8527DA8FF7D5252A8FD0BFFA8A8FD
+%09FFA8FD04FFA8A8FD26FFA87D52A8FFFFCFAF53FFA8FFA85AA8FFFFAF53
+%A9FF7D527D7DA8A8A8527D52FFFFA8527DA8FD0DFFA8FFFFFFA8FFFFFFA8
+%FD05FFA8FD22FF7DFD04FFA852527DFFFFFF847EA8FFA8A953A9A8FFA85A
+%A8FFFD07527D527DA8FF7D5252A8FD0CFFA8A8A8FFA8FD05FFA8FD05FFA8
+%FD21FFA8FD04FFA85252A8FD0AFFA8FD06FFA8527D527D527D527D7DFFFF
+%A8527DA8FD15FFA8FD05FFA8FD22FFA8FD05FF7DA8A8FD13FF7DA87DA87D
+%A8A8FFFFFFA8A87DFD17FFA8FD05FFA8FD60FFA8FD05FFA8FD4CFFA8FFA8
+%A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFFD05A8FD04FFA8A8FD60FFA8FD05FF
+%A8FD4CFFA8FD15FFA8FFFFFFA8FFA8FD62FFA8FFA8FFFFFFA8FD4AFFA8FD
+%19FFA8FFA8FD4CFFA8FD68FFA8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FF
+%A8A8A8FFA8A8A8FDD4FFFF
+%%EndData
+
+endstream endobj 175 0 obj <</Filter[/FlateDecode]/Length 15093>>stream
+H‰ìWiw›ÈýþÎyÿoÊxY‹·$Úmy¤Ä±;/{ ZvC“¦QìùõS  ˜VVœ—|˜ã·ºëVUWÝ2ðcië¿ÿYûx$e41;ÇLÅ&Ÿü¼ûºÝzN5,zÿWÓU®S±»ñ`uk
+ñï÷îŒ!à=NV™ (ƒ¿ !Þ 6[ËKˆÏ¯TJ…RrOÈt»~‹T±™a—
+Q¼óÊýÎ $\¥„².ê,BàçTô·³"T½ÁZÕåfÿN¼¼lyM¦n‹“û‘^4 Ê $ô~¸7±æÌ9à¾[öuÚÍÊòAAÉÉ…\Òì
+ YêL‹Fé˜^Iµ`Þ× ¯Ä
+hI* U°býðÔ(ÊäŽýG|= Èù¼RÌfsÿoz`ÿø#¢jÃÆã¸U6À½ã9X&Êt>4„xG™¥‚}òpa”:¬lçˆÀ㎠Uˆt´åáN/Ü´‰‘õÃÃ?Bð
+Á_Í0›/$ÉÓ1¼œI2?:YN"¨Át€n‰™ŠM1ý²HÑDš_p¯3Ôû|¢ 6© 
+ñï÷îiBãd-§l~'•)ÐÕìú-RÅJd†MÍb«ºý§‹zDHGüœŠþvV„ª7XïÄ…——-¯ÉÔMÀbqr?Ò«ÄõõçºÃ`Þ9¸tDˆZ\7ô[P©rÌîI…æHC}g¾Ù™ªŽ!:ö}è±ùÛ6ÖtÇ.°M‰ã¦ü½ï rSQ¤ÚÄD‚bp,©A\1ob&3lc.=Ÿß
+ùü^>ö,I‘zóØùü‚”L³(ݘ0<¨Ã¥£Žu?V‡ #ŽáTljÞ©³ùYÖ\'ÚØ΢â±öÕÆÄ$ŸÍe÷ãÏJl¶%B Ï^Þpå…Ã- –àLÖw:gÈ´-ïK½ƒ“u ’7 w¢+¾p'¦Æïv"x%ï±–ºø–KuЦ¨§ß…”Ô3l!sà –Ω5Ë|FÉíÈ;²ïß”› ‡©ñ%f®º†¯¡ZÜ9bð’!ÔvÝèaíœÑ¾Nðßø.è
+«EUDÜ!`{€h•9CC1kÖXÿwOÞ»WGºy¡†™üÜ¥–ÿc~úñ„P¨Œ l9ÄôñiÌ:+©êf­K¥òäù.fÌEÕo-ʸ‹«v:±¡
+ÿà©î)§ÝvKª õÆíÛ¦&5 ï)#>œb±˜UæEeUõÏœd¤ÔáÐÿ£iy¯l<ñ¤lû¬ýS3êð¹HŒFÐךc]u'Sšˆ''¤
+¢‘>#—Ñ]¯ìÇá0Ž…çܧDƒjJ?¿9µ:ÎÝl.à^œó»æ¾>jº¸ BMz'Ëùiƒ\Ö0÷µ†{SÃý% ³Ój9XÒPYIvÓù(fcK>mt” Í_6xTL¬“û1IH0+~YáëÌâJ,Á,®ÀÌö¾Î,ûufJdK²’CT’ULuÅããÊ+45fVˆK¯Lý6ºýøQm¤F ?èJ75úÅûëƒèa©è?ªiªÄѰôº}3ì¨uwO‹÷2 N¨½gÍ1î°md¹’À'Ñe“î|ëe3x·v¥k|xŠ]! p|ÇBª§h-~WÅ„Dè°E£ÚÒGxf‚£Câ1Ž88 ²â]ãwÛ Ê ´ ù¢ð0Âæ’#—Ìù”ÂÒqØ8Ìb®‡
+®©õå³^äi«Åƒ~ñòåÛwånuç2þV?îð}éø¦ñ¾th­5§‘9Ñúp¯Æ§/œZÿýU±BJäõa¿2äÕañˆÈ§õšª´>—ŽŸm\§íê‡Á
+­®5µæ£Êöþõj¹³½bŽx4®9¸Îlªu5ÿ2Sæ>—×öÖ7+Ï·>m–ª¯Uìüõôòlex¤ªèÆýK߬÷[ÃñÕŠ¼‹ŠL_ýt¨8Ó*díÙÆ6Û|ç”[õÏ.Ç¥£³á\S8º|_*›ê†±ù¤}´[4Þ=Ñ‹Å]û_Ö«t=Y‹^‹Z­Š ‚ *aRQëDkÕ:á\m­ÓýŸ$  íûž>çûþð
+X;¶Ò¤\¼9.¢ yô/ïb
+ðÜÆk­¿Ù÷÷Ƹ³„Mã£äèKvþUÝjĺ—û)9Öî„°iƒÞÝæfÁg­7í–ÕóiÑüìÿîµ›{¹þòÍs-š?êËÒ¹t£Ï­;Òëmxʚǡ¿ÝôzÈzs0îÄÑnu¨nY1žhÛÆÕˆöÝ´–údGJ•ü9d,Õ£cy'6,ßÔ<.`áþZÝ¿t¬õ‚MÓt9Ö÷ê\OþgÄ® ¼. ;ì ç­ã\‹ÿdõ'ÅõébÂs­Òç`t.AÿmýØÃ6ÿfúêjaw¤'×û CêêAF™?ªÌdùväÒÖâMÆ3}Pœ>ªó¸HËÓ©ú…ðÖ@ï¾gÔN§™ŸÇ(o•ï{Šž3áj„4-Æ`ï 7W"âËc%e¾« 5%Ó§ïhØ\¿¦Œ˜|VÊáÏ
+Í¥Š<2ÂHÚÒyŸ»
+µf²¿áŸV¹j¡Ãm{ƒ Ì k„:Ú8jkã&8kAž5ÜBr~ž6eˆ§f¤Û"P†v»«>1BX<ƹ hE•¥ç_w¬<•õ=i‘^ó ›*jî,Ôˆ8¯ÎöTÙ$üWH4¶hl»áAÀ{Æ(V¥ìõî—ýí;ESÎÙýâ¥2LŸ{îÉ×"#îÓÁ‹iˆÐçÃÆ!ÏÆ9÷|õÌ»¯¥ù§ÉñjXºƒñ?¨#Í2Å]lè î,‡[
+‡ê‡k9váMü(2€½à×ñrDgdÂÙ,»¸"š®à#43ӪǾêЃ”ê•ax²ëÛñø1V‹ÿÝh™0ïØLŽM4 Ý…õ¥ð€Ðµ^q0ZLx~Ð[c¿q*æŸaattö1@.Ì>B‡ýA ܆qq ·@¾67Ó­êxêˆCrüAØ“—t[lÞÎH#‚ºÆdÃ,=e9•вC胈˜•>ZëošwÞh€Ÿ€‡+Òé
+‡t#1«BY”P¶‡’éÎêz(·;‚oë3ïÂ
+\;7 ê(u†],gùoÍ€Ô³/Ý„Ýi³ÂJÝ[DŽÉq'À½ñ޾[ä=W÷à"™êÝ2ò“™ÄØlþ¬£ÐfQâeùÊùj¥´ã´úedíî?›ùm
+³"˜É=²[nV@“Œ¸—KŸK¬üŒ
+kx*y¼ò§Ïú³:âcìFŽÎo:wÇÿS
+‘0&‹^Ü–üˆ3ßFšüS'HÖYlHdªÐZ“1™½å˜ù©Å…ÔIÆJH¦Äˆ±{¬›9Eóg'Ä,iáÛAËi°€´8{XNRy‹Æct<Mh„x”Lt“è ­È·Œh®—
+‹IÒé­ß(rGÞ3I5gbÜŒáXDƒ‚*jÃØ‰b2ƒ˜,ºPûðx‘ÝÇKékÔb$”KC1É@ŽarN ý3‡… a³_¾Û"Ø©‰F
+é1Ɖ{çb]„ÝßJÎr¶{É“Ñ,$ËTÍeîs¥JhÝs,´3ð%n,†ªðpKÂQx40Ѓ rü"¡’HYlç/4 tTòœð¡—³"˜ú•nÜ7/ª‘ø™HßXÀòhÏ”K{-O÷Yúšñ9j1Ü&r“ŒëeG"t Š+g‹²%,¡D@oa3 ¥lm¦`èÊl²Ÿ–aÐIª1Ƶ—3ÅLxK&ˆ´ù¸3)yK”Cþ¶ÕŽlÏMìñ=BíðPbúåÙç[ÜH\"‰9]hˆÚi\‹¨ÇG0j¸xÔVåàò²qP
+Ö &0`Ó2е¨O, ¨G ËÓlMB4~b ~à.HÕÐpƒÂ颊òœ’
+—•zmáG‹O§–Y^©=¢©±o;n„çÜ¢Äï,QSÍ4'Ï©øy0ô' È-ЍÈ@õíC-˜„"ÿû"|g¸ÎÞZ¦a™à­b/ÃKR¬ŽÕE™D˜í%ç/Ä[[ÿ_D«\—¹çhíK]Ö¬•8ÿ‹ÇˆDÁ1~ïñr7=âºTŠˆá2omòKg"÷ᒫ†D>âDq Ä2ùBEÎ `q#Ùe½µe¢@É Úã¡oͤéìOü ©š‘ûê¯ÓÐè­·¥ÃýàTüwv÷=KÈžÒagc5êÛ•ªþ±uú?©¯}«5uc^©º;…˱qêÄFšÎZI“Kœ@+OÁMnô¿ Òp¡(âFÐ’sé°‡2¾ƒüõ´Ú@•Ȫèb6Mª‰øZtïÊépáçöª1ô櫵!S"‰æµø‰²vçùRƒÙÆE1Lå6‹°£Æhb Û;ËS%i˜=>ÄõIK4DI…¢â„A\æ¹"/N»¤6pHâ^ û 
+.—‡áìE"ÅTRœh ¨Un2C¿¦XGLüàuÄ½ÊØçÜøñB"ã?6"òh H™«’ºgöÅð—9ç| °v¢d›á\:U©ºsyº‡€xq¾#“ð‹dŒTŽ i¢s& ¦°SÈÌ’§ÜàK½™:Ñ——9Ìs>5(mDÆKƒT†,ýM‡ŠÌE/={ÈÀÍ2U¤w¬/}Þ¨gB§AÜv‹ ºvR+'ÿüH&rè3ƒ‹WwDUwÀ‚;Pÿ¸Ýu‹Ÿà„ÝFŸ©æ}””ͧ§} 9>6£Ó1¤ê¬ ¯³ö?A#­`Rްô â_iÐŽ>RQg4ž¾HFÜ)ðƒÛ÷”óµ)Ò4ro`Šº€økKNX °’b³„³§râî‡Qa¿z  ›©ûÆ£6бKe`I|Ýìó>HÓ
+íJ}³1lè÷üDï¬6¼³ryV¹¨hRç½ý$T.xÌ/*Ç[ízvúÜ|½) ¾^Õ÷ࣼ°hnNy¯Ïÿ×<ÒùûQõ<#CX®/Nö÷ëg'Õ«Ic8ÜqÂacØUÊ‘>oñÜ4 »ñ}ý´mÇü¸x¸v“ý«_æ®Nƒ·Ù¸#ê2wZ“i+{ô“®=7µ¯ýÌòûý.>—ù±Röô|í иñz8OÏKÖã«3™‚òå±=OÐ+9£´Æ¾Ñ—L»[(îÿ<¶=tJ Ùoa8™}*¯—Žw«wx7˾]² }¹¯¶—ÄÖÊÝÁb}¥/ïæ}kKªöÅý’Í:/1e‡£bëEùh«ñÎz²þ…mo#Œ•{c½æ6w¤Íþ÷0w³'¥ë(_«O7•pÖòãSAhVomV^w×…Ÿ‡›úA­ÆZÆòE$ë—Rù±ÆÊ½b¥p~NÃ,¼ß—ZCi X÷÷‚~ÙžÏY{ÛÛ¼ЇüÔfšânCêøSûL_Ú=ÎZ[Mmù¥læî÷ÃY‹¿ÃXÆ&®Þj6q«Lÿ9,~ g½éìn¼W­n+Û0š‚ÍjÎw/ê%½øÎZÎ<fkÚýM+TÓ_™Ý³Ñ®`å4Nj:§A®nlh-‚õñ¥ ¼\ôC}]Xmë-ÿ0
+4ó ß »õ¯gk<È…ý ëõ׿ãœõqÿ¬Wgc¢@ý-6°FÐÄ
+X0–Ø£Æh4ñ4‰(øÿowAAXïò…»¸°ïM{3ã5 ÆÚµMOAåÆþÌÖ—<Uq
+þ¾{ÿ§`qZN‹±ÎúÄðëŒ/êC§8§ÕŸWkiÊðŸ×ë﨎Xœ~ï¶¡Í2a8Õ2m8ižFkóçÿè”äæÓé®wTFÌél
+•F«ð OMz´g¦ß’cB²ÚiVô¥Å# T((NPâ}ý·$OÅ>Í/h厊´ýàßj †ÑƒÛ Ó*ÖdZþð«ªVï Á~ˆ>šéTåƒ&§Ÿ…O€Õ{×X¥÷ûˆìv
+7åùðŸÌ܇V\µ9ОýIºY¦ܸ¡ßꘙif!°GÙÇÀþ˜<ê8ñÍlÙWw ëŠÂîáw1ñ—¯(ÚÌ
+
+q›÷Ʊ!'u°MKáôAî7qÒÚš‰Vø¿]¥rJy_”°œ
+^5µ2Oác±µ-b#…—dWF
+¾;g˜p#ÃÒg¤Åt³Ð 1eÍ! ø÷ ËÜxl,¥³Ö¤?[¿á­UÃ.·í=ßô~`5øãyZÏϘâ<ãt ÙˆósNõž`–×êpyœ~!,k7ÍÐ/ÉØ¯p)¨/Yî6f£€´–%lÓìCÒN'`žS6–åayÁq:I83
+,¬± «á¾<¼·Õ ,ÓW çÒÆ0kÏ8‚³U­C³Vxø×s°p‰e“†Öà –'|ˆ—1U(E·´v¨:ëq`™Ó­¡~‘Ô,Ñû¾ýѵö8²jih„ #Cƒ¹ð 44¿V†f¸tnh07côžeQ‹ªæœÌás3 ïÉmhÞâÞ$/€gx ¨uÌ u­hLåÇЀœnÃû2wϸ‚ÌÓÐ`ê6Êf Î 6H$nõYFŽch`¿âØZÀjâþ‰´ëWAœþvcú¦Ñ±‡…Là›F‰7Í*$gˆå–_V4,Cx:ó¾@’O–dzߌ‡»ñ0ú€gà¯OÖ½!GÞ´x:I›CŽ=Ç“ï}Ä÷„N;€ò_VL¾'Å-Ç~B¾mýŠI|Ù˜B°7ÜäÈŒ%ð È­³¼²Î°ãÑàé4$K/+,¡)<˜ …”úêâk›ÆµûdÈ™å⻀g©?·µ‡VX‚ÇÆ§Áqåóx°„.´“±° x^ mð2L,×α´•ƒä0^Ä#b „$¨É–öW@L4‡¾âÅsa*U¿ò}h
+3‹ç,y`‚J¨™(–ùÿø`£í47ÑØúOåâíéíBzTzíBì·t#¯F¹—\GšÇË¥XíAòMkm)Öî¤#a~§BÜ€ÿ(+ý¡2¹œÅ»bGúw&˜zLÝT®ÂƒH¾p•ªŸƒñù.”×—†_9M\'´ª“oZŠ6•[9ü|+¥Â ¯ÎÔ?#é­#%c·éï
+æŸ>­óÊ%Lâ–-åó-S›¡M™^å]´M 5íäüNzµ¶>çˆ&ÜLgû¦yU1Ã1‚“û·m» ð4-]ñ'³/¶Ñª}#ÁÅuâ³Ø)~+[©nڪ̈́ã'‰»÷M™?†” ë'½÷9óW›—ù‰á`_§žx:{oAÊ·ô´UÀIðÏ Wŧÿÿ*e¶ ¯b¼4|—¢­nXñœ=‰è_5[6r«=™n‡Y“´tíÀãçáÖûu©:ÉcÓ¾.²ÍûF±½é& MÝíhMB§SõÈfÊ•Êlk¯Ó$ðV@¡…‚³±P, ]4„¥¥,ÅfSÉÛ3Huv´•£hÌP¨i aÍ “£`ȉÚ9Rè¡Ù¸Õz€‡·VøŒÝÞƒ;‡V@ŸÃXùÛ—L"Tb"®[p·äU†ã|’ÄéÇ´·ïÄ uƒùwî'~ZúP¬³C73Á·À²ï_àbêp‰iîTªVjšMÆ©.ƒð ÔËÜ@tqâ§Åì7ƒu.Qz¼¬1;WÀf´´û5³î—L9^en¸î— [¥r¹µ.è¸iQ[+ﱂûÒlÔHN<oJu߆>úà
+PB÷–?¤OÛWm¹®‚à™âÅÈ…f Pž]TR½¾,]_VüÛ훨â$ðW¶co ¤ÑG_Õ#ìWe+n2À[ýµ£Ù«^6&j\~^«(;(ÕÝ%hÊn´±æ[¸iœÇ%HîøQZ€ˆfI¹û2ùjAãqÄa$ýÙú -;ðŒ«a|[fGЪ~lØ RH‡¢Î0ÕÒLq;O¯†‡©àž5vÊÆ½Ó
+?Ð<‚U©0³ÃÎ"i«+KßÃß¼àÄö¶ö$ï%ê(+ŠS·Æ $r¤£áÆ&Püàºà3 Pâ( bƒ®
+(ñÚFS1öÝ·n=Zµ÷Û–uNÌ0¹5Ž´@NÃ¥óœöÊ”©5é­2\¿Þ_•‘ØxM^znðÐD ·ùί„áVƒ'Û¢NšB—¸]Ô±)1®€ý”êtÜþ/À
+endstream endobj 176 0 obj <</Filter[/FlateDecode]/Length 17828>>stream
+H‰¬WYWâÌ}¿kÝ„!B2…  ai@Ú¡‘ÿÿUUBÈP_jÙm<óÙ{ŸÁ,Î$¦_Ûh±(£EZ Ñóÿÿ£Õ‹H57ÝÜd/}Õp;µMÚÑÒ
+³1¥ ªu6À˜Âû nÎØ8áF†À VC¥Ñú<€½Ñ{É,YÿèwêeZc¸ž˜›lW´~ÑÅ;ÈëÆX¹ÝÑí6øú¼@Dºÿ–¿ò±NŸ}ÑGƘÈÛÂÒ«º7{ÇK÷Y>(fNŽxËDædõ¯_$Ú4v ‘šÝô@“o\“º½‡½éᣦI«Z£
+¦ÛõŸ¯1P¯ô1øSÀl°îMÄÈŽ€[Cóg3ª¢l@/õ·z-s¡ÓX e³¯Í…Ô!3lÁb1›¬ÆMòVö€{“‡"HQ@Kj±U@¬0®Zò’BX"ÈÐ}à þ÷ý2ÊAÓî L"è¤`Úh!‚°È5iÊôI‚oàI©×šõ‚°hOgŒíö¡ÃcÌŸ¿€j7miÒpp´ö®€{ÚÔëÄ[Æ¡h¬¹hl`Î[Í‹oö” ܘYT£U.¬¬Ux¼A” úlV~ñwΰ‹>+ßã²²‰’¡°K÷V>Èu€|ó ,Ú}Èʦ4uÉÁÊp6pYÙ”¡Z´Ã$Õ :î÷” ¯µ³ëeÁÊ&
+UÙ“•¡I<V6Ù;œ4KVÎ…h[VÖú®§ d4¬œ 1Žý*3‹Ÿ~<þ—ÈÑèQíÍ’adO#éC“G獅½„Jk.ø…{Á®l¾!1.¸a´Ä6šX°z¢¢€sÎiÌ5²¡ ’`Q’?±°ê9{´È…b&´PÜ#¾úŠ4ý¥ C®1ö%@ÕlÙSÚÁ¤ŠKˆQ_ƒ•>QÜpT©®2µ5ßhl¸âU-ð¦×ˆÉ'8Ku­ezÆï¢åTqù#™Ýµõ…$½T[Å
+‡JÎÖ@¿
+ çÀ€”)±IïÆ.±ùÅWÆ5Í4LÝòS÷¢ùÅm
+ÃÙ\¬ænIL§hÙZðîoëÅ5Í&…S´l-ð/™Ÿ¸Z«“Ö
+’´fíûlkº©­…°°†y7ñHëaTi ­'S¾srÝ€jÍÿ{•ûRn>(BM‡’¡ýQ¢ëÏ>äu•üÈ3‹·ÅÀ¹rzÑŒ•sÐt…áF§^G.©ÍЭµ¸û%7ê‰k€‰tú†kã-7ºY‡l¤’ÛöÍskÜÃÕ§ÊiD`]¹fjŒ]9GD#0¢ÿÙ¡`u°zï’Z4Ö\Â:c¤ ëÚ±l0¾û±¢å"ð~S> ‰§×°:
+±­Õ m×NÑæ†ž¿Ö¬ݘç\²èqi7ÜÜ’Sä(DEƒ‡(˜–šm€X°£A¬­¸ý)‘s£k,Ké’›Ä<^k¶†p ÀÊŠÖÝó+y±&+ˆÖN1”ðÎê<4„³çX𸧏…|ãH¯L}c;‘̲™[-žé¾±Ú½ÝÑA¼Á×ç
+¨Sþ;“oßɕ€ÉÝêK^‡›&àКæ FÉF*3aFk£ 24èt°æ€ìL©{¬½_Õ‰y€àb tP:.¹–ØF#W¤ÜûPʵ[çTÎHpFäO|FAø-S”åâ=mW(Ð'Ím÷l®%0Ú?^-Ú~÷ìØà­Ž$ʉ•;P°r“ÿX¯ÖµÄ‘ ú,L@@D”{ @tÅ뀺¢#¼ÿvw’tº“NàO¾™Ý¡ªºêœS§~÷×¹ÔƇj¹t.õ°©ªn}ùNÁtäl^£œ‚ßm§×ÕP̧Y§Ô¢Lé»íœ¹õœE¡´Ï¬“à‘DZæ€ÚQ¨Iåal­ˆ‹ÇZ0QhD¡FZ裨<uq¦#ùLÃáÉ"yÖqÚ¦<z¡¹=-lo4Så§ûäÖ+C„ùwÆWY¤ša
+¥°WË•`ø4rmPSH¶…ÄÛR-Sx»PákhÔõËÛ…J’M¼§¤ä­®ÐNå»Âþx«"±¡P×oKƒBŒ
+F†#ùn( okM5©»oAM&" 
+—••·è(ô,kgÞZ ”ŠQw?¼g/OHC³ö52ŠÛ6GVÌ|Œ£$¦tGŒá5ŽU`tC%/~ß°í]èNV†‚!}¸{-øVÇÙëû­=Ásf<€Àšb$‹À[ 6b‡¾^h5PÎ*ãÅîz
+ihÀm4èí0½ÀÓF€µÅ·vL¡ m
+_㵕aH¿[‹§§qnå|4NÝÊ ÚÀóT°­dêVÎGE×y•ÅÙzLþÇåãè£o¾×t ‹gŠM>*í'ä6^ÊŒ·¥'A¿X/8ÐÃŽyßX8ZGG%I½d’Ó)#gC~s–‘F”5a«NSÎ7“Ã…à¡«E>š ªHƒ#ùñsT0ü—õ¹ô/¡I ,žnÕñº.¡ú~ðUp…Nª:Wj§Í…¬ªËjñ¬ùܶ˜%T§ 5Í™e½×'óUÕÑÔu™]w·
+ëR œ<Êo}9¼ÊýDI¿WÔÛ:·Êý)õL)Ê>_[õ×ãrö$†²zÙfÅ Çm§åÊM|1º·€#¢<;¬€æšÅ|í~l4ƒÿ®üÈ‘£"—={Úw÷•þýÍÄF‰ôåÛVHƒø»yÎK Š ñðʳº,9íÅ =
+OHâí 7ijuÐf
+w7`(Ph½&Þê¸ïFí­s­zc³Ùð8sU¿û»œbÃÈŒ>.Ͻ¢uËVC@Ä¢¥û/÷h`^…”g´,Ç-³› )Ô4kßE†h™?ò³Ç3ÃU†¥iYŽ¿œ}L½¢)bÞ³°\¤9¸þïêų¶K!Zä_úü‰¥i-ž J v¢¸J}Uú•ú_­¨ÚLÝÒyÍÍ$ _B¤ŸApýåïæi~`çbö/ßú-ý,· Ý(`Ñ¥Áÿ½Ë”/Žœþß"Y¹>/\)ýÉã³(U'ïr¢7ˆ7BG÷¢Å˜Mù‚ë¥qÝÛÞ7D§€Ä&ïm¹¯Ê­iˆM‡ÿ¦Ý72Á“ÉŽÝj3dÐ@Q<ˆÖ^ÑpkÒÉ“¬ ²ƒ~‰¯W)2•±;Ävñ‘£ÁP¿¤PºòmÅP˜éÑk\n$óuls˜:HO½@!´·Î a,RÀsøÑî;«á䣘á„p‹‚4[œ·(Žø^gŸ³á.˜Ûž¸Û¹@–êÞ„åU #Å\ø¥L–˜Fd³íj×4×p6ÈZ[NÁñq”t
+J‡•ód@”¬:è\ªzwÖÞWç.37´ÑêMÓ¢YàJíÑ.¢•ÓÇP´´X¤\¦uØ´©ðRw¿‚Ø*¬Kõ‡•B
+ҘѴϬ“ài' ÐåùYËëð‰×ãÚGP;Ò¹7>vˆ‚íúAã>Ø~z+¯uRuˆ7’zÉt™)*¯…€ÃúdÂQ7Hc½Ÿc<ÒÊ ã §º8Ij½Þ4[÷•áÓ%ëY“‰x­ù)ËY“C
+XÇ(K®ø*‹³õ ‰<–Eì^ÂkÓÅ,Llžéý/Ú7Û~~éÙ6=„Îæ%<ÚxG¨&Ì&/Ôæªb6š†~ô;‚@$ÊKøŠ¹Ã†¹%ÍÍ2Å>4g<¤[ƒ¬­÷ƒ¯Ê€+ôÁsÅpåæ+ôÛ¨çzI+úæ9¢ l /빕I»VR Ô<·öU Wu¯é¦Yî: 6À«@£º3{‡ ”ewÓ£áÏ­¼}&ñ­éT¼Ü,Û0¶ÕEÐ?iö4ŒR¾{E­!Íß0r¿L–ÖÆ ”F ñ$R‚¡ ûAL£йÌ0çèCئŠék÷èܯôšî=44Í*D.=tc MsXy]í±‡Pl ÉõC‹"(¸¦¦­‹,W+Ó·.n|…Dë—ªŽ>BÞ-5¶7x0y6M‚U&€±/i0®K˜Æ³U¬V¹Iðɲ9ÂH†Ì{3]ö¯Xï+ê‰ pÀ$X„Ó
+‹b?š´%$tXýl°–C½o` Çí¨(EÐ;r:l²¦YË6uúâ[-qï rCvsíXÒ€2ÊlíÆ½ë‘™xoJ•[Ó‚
+…ˆÐ—gnŽÛH‡Ñ 7W\¨&Íò®‰æƒNk;{ ›ŸËÈ„G±Æ.·¯c¬H§Ý ÷"Vÿs¥”}||[
+ѳHâ/ºÅ¨Ê6›ÐÍã ½ˆ ñ¥f¢Ò~ì=”KÒ×±áÉ?^îÇøhÝ•YЪßb‘=AnúÖn”àƒï˜ >DÍ¿æøâ¦L£‡½Qì†úŽØåñÍkkƒ#¦$nRBË«jVÆw{îÍ- ÂRœa„¨›-“gØ\š4;5ÏìíúæÜ« y nk8"?Î9˜ÜýèÜ §š›¸^Ы‰Ù¼Ú²[e³Í[ÙŸ„S?!BÉÔöc‡H:táÊü¸ý¡‚¾ßlèãþzŠb¥ïǺÛLL¨òot*è³g¹¶Ší—kª –ú£Ýe3Q[˜V÷gpeþkñÝñúÎÏ∗w4wÅö•v}Ó¸ÀŸêáôe¥=hòš‚r%¿¦€¶$­ULˆ ³
+~‘ºœÂhØügÖ) Í}ø‡Þ3¡€Î؆[³ü§à»ˆõBÝØÖÌ4 ü&¹ÌŽÓݰ¹Ù€•£úM„F40H"ÈŒ‚V¨k
+h?ÓÆ \âå³õ¥›
+ ›{"¨rAGÐ&-äR@(š V†óËu›•;–ÌÒ+_P²áæÈ>‹÷O„tÕ ämAÿ +¿-¬|1 ›ÿ`ekà¡X Z»î/XùüMnƒÖþ„•;–¬çf„; ý@BͱòÅP8VÚY.ÍÊG¼íù7¬l˜<°ò…½}¥ý'+Ã=$Ç]ce„°v¤dèæ×¬ }5Ö÷òõŠrã£Ê>êðÑØšìXÖ‰&ß7÷M^³‡ÜÜ1ÙÅþfƒÛ)íb‰ûå×Òý6V͘#é“´Ü xf7+no1ÅùÁ Ó*›
+Ø(Õ³iq¦làÛ*÷Ç?ë²w§¿ÌÄZñö ›_˜\{4TràÙDé­…Á{À§˜®È¡‚×°¼#é¥ÁÅ w䟄d¬Kª*uköÕg&Žï@;™ˆ]žêM¹PCÓ"y'iÐtó IH¹ó-’ê×K«»ºI¹ó-ÊÍPô0&)×j&à+¤{Ø=¯ÖþýÉ/z¼f™ih£Zo'ã }:+oƺ6G“owµÞÏ&TáУª”êÇpht°6ØSxû<…2¥`®8…%ø&•Ï;¨÷Êt¹ì[èµ®õZëîkn´¹ß·»–EÏUÁÖõAC£ã8“÷ó…9צAõ+êÒûùb‡ŒS+…¬éDbÝZÌ”¨Ò÷m}¥Vó¡ÒÎl @±ÅA“W …ÌÓ<·|î±{9øí¾Ñ
+m¿Ò¤?g»ø{¼C.H_J¯7Ç3èf{¬jäþ2½‘<¯£¨®Ó«‚“4L׋í /Õç‰%*[h]ÑB¼Ü¬˜} `x(˜s^Ìct¤˜u±Óˆ
+ iÔ{ ë\y@‘ÅŸ@±õ,€òg·*øl*ßTi¨>w%Ð|¨ ¹öh •rÏ@ÛY°ƒvô„ntýÅë+¾É諹#¥o"ëÆÊº†&“:ƒ\Ñ+0#Ìù1ÏÅË–;$:ø g­ÔKqÛL÷*:ÐzÁÛÅHÈRJ÷Ü®’’Ããùè€AàbÐ _òvŸu=@–\1¯»ŠŒ9¶ù>•Ò¾¨å\ ¶ôÕGÚ
+èü›•6¹”úzָȢÉ~oí“l*¨úsÐ Ç–òwõ”dë™V˜ïå;ONêE:}¹×–sè95W4êŽ\…Ù
+GÁâ½)~ŒJ-a:àc{!{Päzo$0‡Ñž»A$°Ã/ÖÆç¡_*¾Ã’}óœÞ‰+Æ·è¡3vq#Õ•&YûYl&
+’/bßÂy×Ñ4ç]õY%lää*燩šÅÓŠöÆ'¬ ÓK.ú¬PïUñ¤4µ8TbÖ(úk)|½ÆŸ RáBèò—Òq?MÄ‘«n5J ƒéûcÕ±ª6tI”}£ÉTбÃÃpή‰p
+å]ŠLg‘ ÙÂE4bŒÀý@|g …Æ/­d¼ÿ&rlzƒSÕµ±ß?]C}£HOO3qåÄQ %?ŠR©*f¹œ±ù„‰)ˤ8jô6ì 4­B4ƒcCXxÍ-Æ,"«Új=hªNïx‘±áŠô9lË='VÜòß!©i¦(»1wyÿ¯¿ *°K©Ï¥¼?«ÃR¥ÑÎô³iŸ‹™eÙ&÷òIȶ+Ât†»%!S)?9³ò%©lC3-5ÕZ
+1oû¤¡»ñ
+M¶°ûk4«5~–t.Ï„IæSWÚYGÐ%W´$¯V«saÚï“|©¢‘R*U Ã¹´;­ÈÙJHÁ(ǯϠ5˜<E6cÊ{“l\14ÇŸŒÚ¨n®Ù
+3Cº¹êæ™ê—ìa6…ð
+a‚o«¬x$–†¨>òJzžq‡'›SS®ØñÎÕÏ…$/-·!ý»‰øþfü…˜^NäñÊK/€“ü,²€æ}"!ˆŠ>ì@nlO˜µpxiÀí«œæ»çc˜JL˜dÕÜCO ´Þ¸`!Ñ
+w 2Æ×™\š±¯vE°Kd’áqô×>){¾ä³ €~XÚÍŽé¢EÊi§_¬V$f` †«whž¦Y{W½=q èµ²Ÿ¶ÎTjK©QZæz–“„
+ª ƒ0(\äµî¦ûÚ-ZÿB;  íiáþzظ‘&ºë ÉÞ)]ÙoT­¡)Æ&ðš ËÉŸ(z¬Tªaá¦^fÆ<+£j*êdäÊɸ?Šè—±X£¶ÓÙêBÊo m=ÐögŸØó´4Ã)ðœ=™&½U͉ÆCb­[ž­‡aƒÃ}ÕÉâs*\0Í Ýa΢‹Äé#¾Á&OpFÙâ;y§3YÊ„…Ú(©äçj—CƉûpeðÌIŒý K~»uµ¸ŽÖž.Òyašåh]Àž» ~TɨÇ÷b¬\†ø…ÎØ2£«ôGêâ»ú u™>„)¾ÎÙlv¼eЬ¯Å–Z[Ó6tiG›cæ&µ%ô÷ó¬Cg<ø–dKÆ„è$®;€9ëpÓnÆwN „€
+ÜÊw&ÞF^]0ö™}L诼OT˜ ¡E2n´cu¼ Qgª@¯Ã.ä
+Ð73dxK&~8¨Y€ºÖifÕ–6çzݸ…Yr6à´DÀʉ±Î)YyLsóÜÔ–ô£KÃ2tG»dV8£Å7öèFû h·?ƒ;éº:IuèòtnCí‰*½\[ ×jÝ€®¸Q·˜è`58îüÉ“mÉ#=™•£YµåÙwF}s‹qA]ŰUdönöDmi3…\gÔ5Ãþô„Šl|&0ÈØNíÌ-°×zÿb–qÆÊäüÉÂ÷^
+Ùn@úñï¢ðáŒ&¹~R®ž˜>!§Ò}"±êíxi„ƒL‹sºú¦¢ùæØØœÂ¥3¨ˆvò8]Q>*ß«êeê¼y§Â>Xµ«@lé (y°ÏëÊL`¥2 ohï¢7{——%âѪ†´Ã†Ú@€#gœP®«7£Œ^4ŒÚ±D{uDßEN‰{9Å-'4x<’ÖiµùPN(Ì1-Ê8­cÏܹ*BõÝÍ©a~vUôC9!²y$­ŸåÄèÔiø‚”ÿ.ª:wsjsB®óFZØÈR^ÞH‹ýaNæ¡´ɉ;ç„úæOQå°ÜÊIë›cZþöÊ÷z#-þפ
+[½Õ_ŸÈ†TËþúÕ¹ªî†óøªo„åÙÜ´{tÉé0/œûMô‹fœ‘U-¯y
+o³‚ÐëȲ3.v¶ú¹ÍIÿD%f%íPÍC§† ABØ £zÜ'Ì Ô\‰æ] ×d…Æ(’ªoáçÝÑ_KóèM‚`ÍŒ´ºW¸‚0A Eí~ZW¸‚0ø´öA+Ùx’½¼!´žJûù´Q¥Bî ‡ Uìlî@‹S*¼~ÂÕ‰Ól­€÷.´WÐ:âj0ÔEa~¤Ï_@ë
+WÿBÀZa‹Ó·¡E¨Ow)+ aºÓ{ÍZ~ª„aÆÐJ°[ù´|® ‹ŸquÐíô8kݧ¬ Bkg2„žä*£[ÐÒULb†ÕE }}n³#Ÿ+T™Òs…5q+YÍŠÅõ7Xö7{˜¾Ã²'Ší=N±—óÍc­ðmŠí*£ìÁ@Ýð?To¤7ßdY|Ú£ðR,„ù.Ë>J±og\A˜ï²ìo(özĽɲý_@w<ôÇ Ê74‰©+\]VÓû ´ìlkÜ3¤XÄFÐò¹zA±1´FŸߥØ[€þ)´–ª!e¡jþ„µîS
+ó´¤Á¯¡u…«k@ÿ€µèû3‡v(RÏÿwæÐp…Xà -±çqCë õF/lDY Õvá´à‘oB«9W ¡õäþ£½Êše–èûDÌ»]@EqDv÷QlÜm7÷]#¾§ûÛohoã̯ïÌ‹ÑteVåÉsN®^q…jóÃ`ÙéýÁ™ÃÆ•c9Œéß›9ÞAà_Aë—3Ç]ʲ½À;þø$kÙäq—²ò„Š<ô_ž9l\¡Óü6ku.?7†¿VCó·fcþŠ«»€ÆK¿€Vôù´¢§þ=Êz |üj°w %’ùÑ£ò¯ õW7üIhMfÀ\½;Íÿ-—Oîk?¥,#—ˆÝ‡Öd~ü$´>àê. ? -Ëø)e½ôŸgïQ£î@ëž×úÝqöÞ,ûŽÓ>;ΔþµÑ‚0ŸgÏhq{lºDæv¶ÎpçÚ@ÜT¹DTìD
+¨–QqU!Î<Sì·ã‘r3Ö†q ÕÅ©J¥™T]þ'$p1¯\*¸ôë_Ek•ÏôcõH`EûÈHIØäÚÙÌÉÉ7ÒbŽ8Ë¿Ëæ=Ñ#lvåäÖZ«£aõ ÔõÀH.b8¥«C
+@v0„dpœà:„ˆ‚“-]ce‹ìú%+3¯IóøPÏMÙ aØ ÅlÅV·ÓGÕÐtÙCÿTTÆ£ü3€“<K¹ŽðXê‹5{ pœâA
+z³
+[t‡èmÿ9ó\RÂèÒf6’ êèAÈî‘Ñ3#¤jžY›)ŠFKÍžr5uÔì
+O„»"U2[‰4k!Po£|5­Úíe`SLr;ëÇ”‰Ö®8(…¨,ÕÎIJ=~¾±[g-M[Á–li§!bþ†ªDŽn98> ,»„³Þôlëk@b L6OÙ¸£¨1W<…(«BÆ¢å³: 6Ó†KåÚ$èõ¼ý·e¤-ˆ^¹=Ê$…ªdö¹¨Îàñ6ðÿŽªJsº´¿zõ9˜Su>½NQLZ.aFö'‚.l[è?Šv{zt]šÍN®±t¡Ï#œn®Ë¹wMÙÓág3VÙ\/§ñ^É^KŸ1‹ôb´àE»vÄ—ÍÅ®—óäúެéJâu7ŠT{¼oÚ•F¸}’Í6{y‰«hÆàr%/ä”÷!
+ÑSÐJ¾¹â¹ÍZ.âMÕ¨ó6ú8ÜCÅ\ÆU?R•½}8ÈÝ{°…€:ïÓèÒTa=ÞÜV0޹ H+º³3Â÷*¯b¥\ÊáØhÈïq{'ß)àCý àÓüÏfIÕC¨6 œ[Ä­º´XRa`¾Öå-¡"ëMDz‹K7²Á<ŠÆNºÍ9ò,ê½2Û"}ç›@¼b§Ö’inçr(Dµ ÏA½÷t“x¨8¢cc.²BïY 
+a¢ÅèfŽ6ÒèR].LÙ#"€…£»’‹%u¯¯bÛ»§iÆh¾N¥,*³œlµ¿c¬|Xªä¾‚
+‰¾K¦va ÌøìBOÚ ³Vß®úÊÄëGÔ‰|U Χńê7ÄêŇ!ÂÌËÖà„«ž ?è·l‘ë·Äànväu·‹f#è †#y÷IG*
+;{D‚Qä™ÝÁ a@Â:˜P_ïýŽÿŠ ÅZØ*mìŒøþ5’Q_¦VLt_K°m
+—^)ª)æu|nÓ:—Îu¸]c†úñ·B j"ØÂ±œ×ô/RuÂ\)á…FȪbÉj%„¯½Ô­°2¯:¨Ép¨MM‚>ý‡ûú…¦èÔ·d‚N| ×/kóX=.f‹í·à×/Ì×/a¡‰4¶Óz4MÝüç,ïŒËÆÜž¿¥¿……'©PH»©‰þ¥B¸ùÞ~€Ù°T\‹
+üA`ñluÄÑ­9eÌÿ²^ÝÉ*Aø·Ø*b‰b£K좉=¯]1vôÿßÙÅr“¿x”•ÙÙ™§Ð¶þÕÖ©—?8$“§MÞ<»ËS­È²…
+2y¤cR轚‘Ȫñí1P̧MRÌ¡ž·‹ ßþ‘O
+[D»¡ÏŽ6ßcغxÆ3ä-“-_¦ÛqÒü¸Z~;oä9]ÐÿÙJcì,Ÿc+Š:ËçØJ4ž†Îò9¶ÆÐY>ÇV¢0t–ϱ•úx8ËçØJ47†Îò9¶C§‘³|ޭIJÄÈY>ÇV¢0¿ñ³´•¸ÓŒœåsl%Cgù[‰•©‘³|Ž­D mè,Ÿc+1­9ËçØÊGÆñ|Ómå±µB„‚‰K$¢šn®¢z¸µVD]]µ>
+‰ý]ËÆËY0.
+j­ÚÅÆÇµž¢MoÏ!k&W
+º’Xx½V½w*Œ/Á-:1÷&„¹q»ñÉ"3•˜)ÓÑJ¿Zn0ûö?ìvcZØPžøcz`¶Ì.Ú8zj Õ„hͱ²W ­@›$µž]”þ±åE½ïD½lÖE5÷mZùãÿßR7˜ü°JßšN~|ècƒÉ-K©0„¡¸F3/|£1ö®žTÙ¾DRF;ÝÝ;Rbn‹ã8ø½Ö¶®!ìæ´ãNOÙ«´êI5×>Tª”lQ2>Ü‘HreAš™N““ïä©¿bŽM² ™&3`WiÓZxmG,~59p%]uzåYKãÄgr®€ØÕ2$EìL¨h@?îÈ)FÝÑá!:@Ïñ/» ¬rEûg“ÙN¦+Ô£<ºûùCÑñ>ëj8ttCPNÇLO‘ËÏÚd [˜qaW‡9OÖš ‡6¦Ðé¤,Ó¶0(P8˶%(ýu¡5óŒSsŒ¦ße5k’«¬Òt‘;ÔÅÖÈÖ¼<çyy—ùÞ'ç GÁëýüŠ›õ
+Ne;=à¶æd/OY“=ÁwÐ0²µäÒHTlM´«:óÂÄ!€Ø³žl¸1ˆ~ AnFΤ€fTf«³âUµ>`jJ´* ®Q…¼m´'Ûc2ïÃ*NJ,¨Šs'|›‰žYCÖ·Ÿ'ˆAÐ ,žïÕïa™ûdE(•c/êýåï‹/ æCuTäÍ7åMA1FH&ñYêHn{Éÿ  ¤Óæ S\äPQ
+Ìî0|Áì²
+[«Ùrx /€Nä*\Ä&™âªo§ÕVLô”JÚ»2c]´ÇÛøÔd›‹ÃfâYÿZ, `Vý*A§ðëL½b3£?,1SøÕÔ›x½ ¿yýZ
+PlÄŠ"a©Ÿ»žÄ¶
+ø.9á»ùqZ½âÜH‰‹”æa ã§$n@ S±Òû´$}tÖ 9šÄŠ.’‹‘ƒ¬ƒã}Ø›”Ã0P‹³inÚl)/·¾EÍ%Êç)"¾‰wÿY€)¼ë@ßœy=ÅuM˜¬‹îë~ i¡x5Éy¾G Ïܶ„i}cA²·… Õ)×MU[U^/mãNÔ΃º.”{u=¡Àÿ^7¸[×´SØ=¨«~®+†Îï¥õ$âËcZ™ý˘ Þ÷/«ña©pÌ)ëßm²ëœÐxêi²Úã´Ú»ààáuë•xœÓâ µÀ¯Ò:æD—÷¿Êé6?Më9¥2ïkcøND¦ß¡@·wÜ÷·#
+‘ÚIü`
+Žà¹ž2…§Öh7}u§¡ŸB077|l‡­5þck¡M»—MqѾ×_[Öµ{}l£ž‘ïõ¾Ã›M¯$ðèÈo´o³ýh߉q²úiŒó}ÂÜêa¾Œ.L×öÅLÝ\ÍmÄ‚Ày{XÔ`ÅGûâAÄb …^H 
+x³­ÙjË´ç¨^aŽé»?ºÈû?tèLoijàW™xö³/[|¶.«Ô:q@Æu?¨û¼Trý‰¿AÊ3˜Âº¥˜
+ãÝŽ`—ë¼ê[ô |g23s »€0¼úíÕµ¤:¶CßoÕüƒÉÑÆ'B·3±OCC“ih‚ÁM°»fÎË|ûh›Øgέº/ª\¶¼-ioIKKŸ
+¦iT›½N~ÈBÚ±Sz§W†õ½ LMµj<^¡'åEš¤>B ×cÁPeïSrNÔ Ö¢pJó´>Ÿ‡’ÈÙPêšK.D”¤=ñ4éZ\ØBÏŠ%VrkóÐlБm›¨gÖK-ü0ZLñ• ÃK6¢)õÎí†7¦“W H4š[‹h‚ý”òŽHù{ESd¦ÀŽprµÄM¼+$¤zKÙîc8ÒöNÒ[—U6‡\DiÊaNɺ©¡·§”fâÃWØÈ4+óã…‹´ôïóÒWÓ*‹b
+†ÆhH¨~ÝÐéDòá8èÐd#1JæëüH­xœUQ¦ÝýÍ×%ûÁý¢q(û‘ƒ° ›ÒÑ3býÉ‚‚F¼®5?—¹5Ð_ÁFøªVž¢FA/Žï°‡È­?âQv ]¹çʯÞºhá4ÏA>/QfKÔ »0NÆêJ³_"¯7!†o»–1*×—ò«ªôµZ%й¿@±9¿[‘U¿Î‹q< ½þ.Ëp_«lS?
+-±À§ _ОºöÞºRÎùHèóÍAô¡P[Z6ÚºZE¹´ÛÊv$æ®Ýà,—"¥Ñ—>këìC¥}O­;¹™ÜVßMe+„„2QÖ¥üîI=£€…¼5úÊ–T®»©,ækø¥gp™((ªôµL0ÁS³z%AÒxЬvª*/]¶aÄk%‘¬²‘ÈË:>HË "3pTª´ä:äZÚ2ùThzÛ8Ÿ/z+fó»¶²¡z{?G(äascds¥[R•ˆä—¹Èþüøµ©7r–ªºh,xBM$o¿4P*ެžüèeyÕg6ûg)G&
+@o¥jý£‘Œ',©Ú…>Ú]Ò*
+ ¢1åÖ±SBmŠD±IÆŽžž²Và~#ºCMr
+Mr“Pv©hÿ¬­öì´`½Ó*_‡2­áÃP)W^½˜ cUÕS'=ª®GLZ&Ÿ<Þg[®ãùtPÚÎS,BöÀ£ö6¯Ï¢IhSp­à9-œ±z.ò0š±Ò¹Ô“_Ør»NêSΙKsµO)öIAK"·Ë¨âÂ`ü5褿Ðñ/@t» º¹òðáBŸE3Ôò eÛû<‰Vz} ZâÇ$â×VŽÚ&]*vMUòÇ¨ÐÆÔŸ+¹ÝiŸôÁÒ^ê!f‹c¿,Ô.Ç·xÉ€)JýÑÕ÷ˆÅeïŸM­Z°I’—À“¾2⦀ú¶œz3¥q’w¬·Æ|$r¥ÄÀ™k „Ò”mpoð….7AÍB½¸©§ÛfæÁ1Ú“Öys{8d O=¯]†¤DùÌ:Ë*´å¡©©§¾Møé ,íUËj»>1CuóSE½-Ò‹5”–úÆEPý‚qdhév̇NSn5ZZ£øüü³J÷aòß
+w_ ûËb/ØpLb‹?àtUšg ’8ŒEB³¶gXdˆîÂúƒã³7áíóß
+?7ÿ[8.gáùÇ΀àY’F;ƒ=sãß4MŸ7Íe¯;ƒ}
+)ò‡eiž xGÎÓ$AgaõM†<ÊœÈ2w- )”eÀœ(2–
+endstream endobj 177 0 obj <</Filter[/FlateDecode]/Length 8499>>stream
+H‰ÌW]o\·} ÿÀ2PÓüþhž$(lÀ®QE!(’ì:XI… #õ¿ïÉË{÷ÊÒn‚"Q¼¸{–3Ι™kœTÆ;aev*áL”:¦(’T9†0oŽ>½?>zqþúôþá/Ÿ/>ßÝ^Ü&ì;ú8>Êâ䥸ðã£/xŽ2…wYæ’¸)˜NPÆd‘­LQ|·Òz+V*cûwl£Œ>¦m
+à!+œPåïÃéñ‘?-~Á·_C’.ËûSÝ0cVå CLïŽL–:ÇùR“$îbg©?íÒü€§_Ö¯Ç6J“i —ÎÒ6 ² * Ú!‡LÓ^88µn¹â ”„Ð\…7ÒDç& ~|Ñ=aAI•ž<O@Ý­a-È͈i ¥,²B›8‘³Cö›VélVÈzÂ:%Õó’¢=k™¢«Ðþ¯ ¡«©–
+r'Î=¤kaà!¤B:´tqˆ
+Ð70— +ðìŒôê ¨T„P—™YdCJ3o§Hºíšr_GtàˆA7sgƒÔÚ¦ŠÙluÁŒeiµHP5}ö±ìr5å{*óf¶°¨T,X´|°R€ý\Ø+gÿ&)¼¿½½¸¹¾Ÿî/®>_ß>m^‚_­Bò¼R¤%T1hä?Ý-DH‹™=î9 ƒr4h]åÅÄ Î>ajd †–¾Â—˜"‡´,
+ Ú€Œ<») €˜ÎË×# ^ÿíîáíõåÝý"ÿý^‚Bò+½~{}±ýñâáþóÉDœ¼9ýþ¯õØÿxwÿ½d߉“Ó«»Ÿ¯ÏO¿ÏçˆèÝÃ×íõùF[ÆÉ zć«]†Í! snó'±ÈÄ„–ÿZœþ‡ê“–
+Ô£üÇjŒAÒá¸×^•ÇM}Œå±/Z|å…ŸP+Yivo”*›ú.+¥êt÷ûó6ø2ü¯*#^PÎô|‹v†ºˆˆs)3Ð)L):.„ZFˆmk
+rI†4‹äaÙ–ÁH¥x°õ2·eÉ;?"†Ã¨Þ*ˆÚb1l U(ƒÿ =-¨HñÖ®à–Áz®nÛÏŽnò5"‘øœQ”i*ôìm
+ži‹Ò"¶ bØ©ûë! (rlÝ…åUâøé ÅŽO­Ä +Ù„eË ÑŠAŠÅ€@üÆ'1Riî¡Õ0çŨ[h5JÃÔ`‘G%w8“¢Ý5Úøôø5R¡¯´1I
+y*ÅÞí§\8lª¡E”§X·ÕHo7N)Wœ‚­ÅÊsOÏô¾ê,×5Ç$0¼ŸšZýðV8 Ž ã`G¥/³5´º.ÏçÐBë= ïVH –*¸öb8S-õ•5>}i J7Ö
+G½yL„·3"¥]®¥îS³ q¤bäÙeM3x?E’éŠ&>H•lº£Ë¼Ÿ2ÉtE› ¤Î‘°AŸ x…’åŠF>H¥0]Ñ)£)•cÙÑ*é•éÚÑ+Ç(v-½Ÿ3¹ì«ÛçN.£¨ü µ!ë ¼ÙIï’Œ›…“ux>_€ç ´®ÓHh¾q¡u*Âè’ÛY=tFn‡©hç8OÌ.ûÓúÇš]Œ5˜ÑRUZƨ~³
+†±^gõ¬\˜¼÷S±0¥V= BœvzV,ŒÍR¬W
+‚Œ7yªRëÄd6•‰ÁÿT$†0j‰B­%¢ž(ÌJŸÝÆé=¯’Ƶú0^ëà iõa÷BŸÙÑÝoéè¸~e%hòÙ?×÷~“Áoðÿä±*Œ¼4FÓY;=Xdº"†’™îˆ„ÁCdB–+Baø ©éŠX˜Äƒä²vÑ{´Óg‹æ™ít–:y%ëfxT&¥E'¤»p&ØE'VpFËÔ w#y^'܃‘e'ü}$þ¼Žº¿ßµæ{`ÏÕFÆTFz }C7 úTø†ô2.oT¬©v™ªMR{éR:•Êe$0$e
+h”‡ÒFÄëÄÌ0êØôœŠ¼P£tæ6 P¥\…Sê‰FŒQÏÃ`Wœa莦¾ iWCÃÜSðûPQ: 戥TCò¦0pcbŸ‡ñ‘¨@Å5Αè›Ç¦<
+’²Óé· ZŽ€iÍ
+ÛÅW‚ú¼›îeË êP®oBê Ov5æ½lÃ<0—³#`ÕßÑL§À³@?9uœ„md‚¨—¤L‡j$ŽsÝ ëuÖ[Á”žê86]^X“Ib¸à©yP ‹·–1cl-¯z =õF„3tårHÓé»´Hæq4,l_®éó‰ê±ÁU®œÉõMÔÛVϱm²EQQÚ€$åš‹ãg[DŠþŠÆØ`”MÃ*è¶w¤Qp—‹‘:‡´t\ `r
+d¹{¸¥gšHLÎË0 Z½Y†¼X‹P]MÇîw‡Œß>÷­Ç¥ÕÂk|¦Öý_ `7 ÐÚr<8Ï…ÁÓ2BT[Sº|Ú¢
+tœJ
+Ä߯˜VZ?Ƥi´•áÑ´8˜( „®µ÷>gï}î¹3ç^®3œ¥Î|³×Úß^{½¶‹®«œ sO˜Ïe,¦ÿ›  %>³°!C‘çêƒ0Æà#&4ÉÀ:
+Ö°[«ûgÅB>ž‘¼B±øD*DÕ{Dx²F!c¨}5Že5 †¡®®„·…YIð´ƒ„š†±¦AA‡ þµ ÈIT¬}@$.³4DYK'`Mƒú\V79; !>®„ic®‹\¸™Š<P=> |ò¢¨ˆ‰è8TYƒŠ‹°#Í [+‰Í¾8—"m8ÔÜ Ë+„H,}È? R[ƒã3õ
+CmMÂLM4-˜XF*㊣Y+Sjz¸+‰S𡦉¨
+~GRJ[vI¨-;êƒ
+ê•;
+KkŽ*+’Ŷâ8Hl_mZÍkß)7–FRl,դؘ^±Ñgç¡Wj¬‹’JcݘTI*Mý… Â[ ˜^LJÁM2fEm77ˆÜ‚ýöÌ,¹Ù“›ÉOÕíÞ-çªæd‘†[Ê#T­Ë$ ¶’K¨™“Mn)ŸP5'£´[Ê©¼‹n¢{άvvo/¾â¼Ðt/‹°(Ê4^¼(Áži¼vµ×x=ßÙÆ[ϤXãmÂmÙÆÛžbQ¬7o7¯×ÿ”-ž²á0Ro‘*E¨ ŒÔ¥@ÇpÈ¡P=HWbZ…j™q™Pªf`¦@F$䬋HÆEÅS iik0“E*Q¡ÚÑHwe
+uß,3ö„8ÖD ¦P'`-˜”²oºˆ:EìI6%ìlz.«›œÝÚO'`ëü6'ëîê¬ë='`]W9‘éž0žË€µ1ÂôÅ?æQü !Ãèå<ŒÑË¡àqΆ2% B`Ä
+àCÄB5A †Bƒp**â™ÀD½šg³ª®ùgÈZ:L9Š <o`L„@'‚‰€RP9Š1lI4Äq
+–qʃÎ&êÕ<›
+ÇE¡Z/à?›¯V;?=úÒèú
+¥‚ˆþ¾íûnÞɲ }r›Ðh É9ãSœÛ¼Pš™Ø<RjDl¾¡Üž¬øÄ曋•’Uq)Y5%·!¥%«f¤dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\JVÅ¥dU\n&2ßD<¹ YÝtd¾¹X)Y—›¾Ì7#·!«›y2ߤòYÍ/±F”æ‘ØÌ”æžX>sÉ­Y>?Ïvq˜G¹Å[èh$ wvv.ÌøCgV Vwuu÷ô6žžî®…®NGgWÏ¢¾»ú–åÉÀÒþ%‹{»A'UXؽhÉÀ=÷¯|pphhh•'
+¨åq;}ŒÏO{Æx:¥ÝNpwYšáNÎëóÑ^·¿Ðá|rŸ¢2Œ ëd¾@Iƒ¢Ûéõ”‹Œ; wSê—¦TM½l©ZIô€²ºTÞËËå•ESòEXL™–âU¦^,_ØR±G®(6B1’Ð]vzð¢Ô¶ ®Ðx¦79”I¦Åøø:µSð
+ïášbŽTªÄsðê÷“|ñ$« '¨#e"œµ<žâ®¤•›+ŠðšÅþƒÈ“ Ò«<9>éíÆHï7é z.9–Êí3‰KI±ø>…A·WIâuù¥ÈÐàRÒ>7CæÁW6
+àTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTèàTè<,rÔAJ<,㨳”À©ÐyþS='Á>ÂQ'‚<šêȃUŒt´Á騂=1Ò3Άžçò)c-O9÷ªC8¬³N§«®8ñˆ ôÖë ÆšC0ôzàRôFQORTC(Ь'LF}™¥ªÚ`ª£[,­mV«µ]ÚZ--TÉP]¥Œ`¨57Y::.–ã8
+ °.Gg‡¥É\k(Ž¢Ó›ÌÍív®»'‰F4D£‘pO7goo6›ô:yc]S»#Ž #£)QL«ÅÔèˆ íMuÆÂ Uze±û…ôäÔÌìÜU s³3S“i¡?h·P&½ì ;¸°01=¿°¸´œÕ°¼´¸0?=!„¹ŽF¢àÐê[:»céékÙ•Õµõ ëk«+ÙkÓéXwgK½AšˆÎHZ=Âä|öúæÖöÎM ;Û[›×³ó“BÃBuÒÄk¨VWxdjaeóÆî^.wKE.··{cseaj$ìj¥jàÔ«ªk¨662:³¸ºµ{{?Ÿ¿£"Ÿß¿½»µº83aÛ¨šê‚£ÁÊES³KkÛ{ûwîi8¸»¿·½¶4›ŠrÖ†r‡8·¼¾“ËÜ áþA>·³¾<'jâÕìÆÍ\þÞíOîÁ½|îæFöª8Pîh÷ ¤¡ãÖJŽ;· #=àiÇìÀìÀìÀìÀìÀìÀìÀìÀŽÿw‡•¡#—¯äÈç Cà¬åލ8·¼¾“ËÜ áþA>·³¾<'F5ŽÔìÒÚöÞþ݃{îîïm¯-ͦÊTY\ÝÚ½½ŸÏßQ‘ÏïßÞÝZ]œ°mTÁ¡«¡Z]á‘©…•Í»{¹Ü-¹ÜÞîÍ•…©‘°«•ªÑÇ1‘´8z„ÉùìõÍ­í›v¶·6¯gç'…‡…4êŽA‡¡¾¥³;–ž¾–]Y][ßа¾¶º’½6Žuw¶Ô$G•žhìàÂÂÄôüÂâÒrVÃòÒâÂüô„æ: }UÁa¢,ö`¿žœš™»ªanvfj2-ôíÊ$;tƺ¦vG0FFS¢˜V!Š©Ñ!:Ú›êŒÒÄÁDô&ss»ëî G¢Ñ Ñh$ÜÓÍÙÛ›Í&½4 8ˆ¡ÖÜdéèt¸XŽã<*€Àº–&s­AÞDƒ©Žjl±´¶Y­Öv@hkµ´4Ru&CuÑ
+¸tÕ'Àéc•¨:„ŠÑ±ÙΊýñLœ$Ã$a õñP^‹_Î$ÆI"J$ÁС·HÂM÷ÂÃ
+ð²E¤{uÀ¯Ó>&Ô6ñBÆ*›C*'I¬äß² ÑLQý3Í%’3Ômàü`
+endstream endobj 178 0 obj <</Filter[/FlateDecode]/Length 15049>>stream
+H‰ì—}lUÀ÷§©6Ì%,_¶4-l»;ß-¨]»v]:0ÛŠe)w]e]·µÛbd ˆ3þá2•1,3Gâã¶ „„@Œòp¢ã5? K`‰Æ@âóœ¯÷¼·wYœÑ¸÷¶ïÇï¾ç¼ÏyÎóÙ1ÖÓÞÖ1ÖÞF‹®ÞéÓ7#›ÚÛöÄ?Rôî‚cMYaXgN ž•TÂ…4\Qü¡ü©ã0Z÷ÙS+QÓ„«BIQ£Tðb‡‡ÂP[B$LZî#„9B“ŽpMhÑ%¯)JD¡«IÍx1ì!A¢U€
+ïTxÁˆ°Šã~\‚hQÎb)‹ì} 1#Ö á$(Í@^†$?0m¹-Ê51ÚzâU
+¡dXKóÇdMÂ\ŽH-XNhÍxcŸè¡Ò5%e#ƒB7Tíî™U~vcàéDp.MjBkZBœ ^ÆX‘Àž£6Î*s"k–éó¤5"•гHjœ
+if) RÔ+(Snwuƒ­Rµ•
+)&ì µà,R·Hδ[ŸeQ/ A¹WƒáIõœ8D¹_´„$`†£ö!Çø$RL,% ¹¬Ï v×@"ʦ‚4B¬ßZx£q„j,,ʆ愩.®‚‚ÖHþÃq¹ív\˜à¨—ÈÁH´N;çõ'ñWëmÝëØåÓª“ðÌI$X 1ùcªt7Êœ›¨¯tUé¿ÉñólRB
+Ê`¢„ÔX6•+$Ä$¨XCô®@>Å|Øóóƒ „@˜åÖD“Àç0ï*Äú Äx¯¥Ü`«vÝw cÇä´¡½mViPŸmmoSE—/û€Ùxë¿~<܆ÉLâ0a)ÖpwAs)‹À›bÁWI\­‚¯Uð}¨
+¾XÕ]òÂ[å]«¼k•w­ò®U޵ʻÿgy×1¶¢wf®r|nrçt}fÑíØÚúìv9r ÷àÁ•}xÚ†§ŽÞ!96095ÑîVNl›œ^WŸ›˜AoÄ6ˆ—£p…¯‡¥H( z‹Æ¨éusˆ?îîË?‹¿øçýŸIO“BÀ—8i:œ(ýõ¹zw!9ooj[pÅŸ«®n6øz²bÑ|Ú9¸~°«vôŽÍî· tÙ{¿yô»÷¯¯ÒåcýôéÓ?|èÎA»ìÚH—ÞùàϽöû³/žüÎ}Û7ÚküøòM~ðÜïþzáí?¾|êØ¡Ý·u:\ ì8ü“WÞºø¯¾óæ‹'ÞûùšÃ‹×ì>òÔ«€ÿñι~|ôÀ(qøš›ïzàøóçþ~áí?¼ô³Çͬ_êßx]Ïø¡ÏŸ=wö…'˜ºã³‹£(+¶:~úÙ3utuY²0 N6ß÷íï½Cãâoº}Ç—öMôÌÓÔ{ë¦5ËækpÁ§8½® ^°ð“k†¯øƒv²jz+Z‰³ôÕÉ–f<€ç*©‚‡—â±èç¹±X†×´X±rçΩ¢kxrzûÄÖF:4ýʼn™¹ÄIä}S“»vMNokäý“³õ-SéùxÕC¿Œ˜úVàèlûÑË×ÀÝ=p·Üam1º™[ÛÁ¹Öý' ÌN‚w‘0uÃð=ÍÚBe…Á&PqˆÔpbTB}€UTäøCùïª^M“ë®òÞÐ@3FEÞáÆ²¬>/I–JˆeñQ6‡¾/
+ Žpæ‹ FüŠ
+ªTqè&TÃN¸íQ {6\©‹‰ó—N™Á’Ý$qó&©„Á^«0¶bIG©]+=„W<ž’ÕÇŒÖ"k„]',ô‘RÅ`¤cÕŽ<ž[m}kª­Ë4¡]
+§'V¤ŒAYhw!Ð{íÇ.C=±lTùÁcjF|éóããÂ`Í‘ÃHá ¥ÆCeHf(šÛ{ˆ?†§EB¬ƒ–rã¬f˜I„0¡ÂV b0Y6;éOcÄÞÀ½ŽKsm´ê¾f¦~ÙžÐVË»¼¶Ó³(u`½Üñ‚àvAnIE¬[e]«¬û–u±v»ä…ÿ¶Š¸V×*âZE\«ˆkqÿ“"®clEïÌ\ÿäøÜäÎéúÌþ¢Û±µõÙíþrä<îÁƒ+îð´ O½Crl`rj¢;Ý­œØ69½®>;71ƒ Þl/Gá
+_V¥%,E¢ŒPaƒ7`à] ÜÝ—ñÏû£IO“BÀ—8i:œ(ýõ¹zw!)°‘¡¶WðùÈG›Ñk»:ͧ«Ö®\2ÚúFºþ+GŽÜÂÒýÂ%ìÓkÆ:~êÔ‰oíètñªÍ3<òÔ¯~ûÆK§¾·C§§ËGö~â™×ÿ|áÂ[¯Ÿytß­78Êêyõü{ï¿ÿÞŸ~yâëã=Ÿ@Jž~åüÅ>¸xþ×O~câ3Nîå›ö ¿ùË»ïþígûòú¥ ‘ÞÐ7ºûkGþò¹7_{æñƒ£KýÛ®ZLoºëОþÅÉGï]^YÅí~øÁ{;«k럛ÞHWܵús}pÁ¢Zíúùšl»zá|ø_|Ð VMoEsp&ýoö«&DÏ«
+w)‘`A\XÞ¶”LH3¹?ï{Rè|iÚ +‰m!ÄÉdˆÓNgÒtÒ´ ]ˆQQWJպЅ `]‚µh»±bAWR7…¶Ë<çÞsî9÷›)¥
+.$ùùæýž¹ï½çžß繯e, ’¯Çñ£ÔD“6°ø~ P%‡;ñÙG–¶·7‡…•­GÖ/ΣË[O¬_Ùi¸a|¶¹qùòÆÖ¥yüØÆã«6Ûú»à¨å| üÀafpúAöcU=…å|¾= ß®AÞŸΞ3ÃÅýPE§ÞK©/F–l§ìGNï\ ‡…¥¥»×Ö®>zj{g÷†ª8CVÌtu/Aò˜Pþý~8;ùA’z !ÿ‘òB›\tÇR…@b‘Ÿ †À8RD¡B„‰ ¨H…Iã´íY»ˆJâ 8fëúeѺ,‘ìrÔÇÀLÌm-q,4¼ID’w¢p4@GCEߨmHߨÓDß³¼ ¾ëYßÈ ÅÏóјí¢NßøˆCÜd`‘~`¡“GœÆó?%üyê‚>:Eûª¥Þ5Ƀ@p´„5óaÑg;уàä‘Û°èq>b=ˆL–h‹ô¬™ˆ°èApt(YôtH=êE=r„=b ‹±–DÜIT\^ÉqËq# ñ¶Ò=B&9½ CDÕVtBújË{U[æj##êî:–}È…W¿ô* ò?/ sYN)^!BáTôWDeæµÊQ¾sT0&ô˲Ÿ&¡¿Îc:&ßÑ_ŒaLÆwôc?N$o™þ«‹Ö›ÜÑßRôÑäŽþºXd6Iè/"Þ;a¿`C‰¶&5cD~Õ>D~kɹ#¿Õ°Âˆ…üÖ+ôÜ·Þµô#á¾Å+£q÷ç1÷·8ïJ‡Ù^9ò®Ü7÷#KÏ«ò{T
+— qhûd`H`å° ž+‰a?ã‘Ô®T¬FåCºÚ"†Ä, Gje„¼P㯗•‘8‘ø@ÊñšrHCbà/y‰A7´Ô„ê…3œÊðZzY-½U­):¯ØÀŧ=Ñj´Ùßê¸]±•»ö„…kºqÒË"nëõV\ï
+gPwx ÒJC*jc Hr&I°P)¡Áš9²g—H)8£n…²„s•|á2ۖшx•òò½Õ…‚JñèMjé£Jv^à‚%/äiÔu-×¾¼E@6GëæÕâ!í—c¦[tßÉg{µwâ©85ÁóÈ¿áÁM˜júþx„yD?ÿ³(¢0mhtädCCk¹ C‚ˆ©"ÖzÏN4‘rd´Ö²!*hb¬N$$HÅÝäE9x®\õD‘´+ -IM` 8W2„^‚"H9ôVáʤšš
+}×
+k¬Äs ba¨dC=¦_cÑ*$—-çÒü(+ ´Ö%µaarA)1ô*†Ðû&›õ2¤VÙ *Å3+`Ó ¿¬Ç! œL8lL…! ˆ¡°Ú‰é7&i„Fþ¬¾Ø@oB}‘¶Š˜ÈµÚꉀÀ=ZZGs¸ŒïmÛ„ÄcÊlÛ¥Q‹5Y?($.cƒ:bÉ4¾=Îè׬Nš<¸Æ¿8ùåU‹¢¨È*œìÄñå»L
+Âî—÷(JLSR}<ÛJŽ<~U‚
+"dìßÿÌ`†3÷ï ÃÂÁáÌCËü|µü3ØpÌp?¸¾E’b’[ rG iàýq0åoOÖ˜R‡ªú@“Ȫ!„h²ÔÐâ¶id·ÜštA0Q+¯ò£?Ç#!TÅ’^Vô”Þ‰x8£îW䙦Ê,âÚšÎk—Ô,¢ k4‹j”e¬,e+ÒŸÚM¨2‰§®“ë5™ë Âz@^$Ù@b‚\±ÂÝcT2d’*ÂzFƒUô¨ª*Òç¡vênÄ"‹š«óJ‰Áwí»ª54Q' I?Þ‡µ¡FrÆ}6õê¶E£IÒ±&[5_iê¶Å_/+)";q"iqÛRûJ œâ%/K«A7´Ô„êE ï‚P†×BÐËj±è­jMÑy¤cjñiO´mö·:nWÔl¥y¢iFYƺR¶bù©]Ñ„*‰ÚsH…¸r,IÜbK°P)¡Áš9²g—H)H­Ó{ú˜«+̱‚UˆW)/ß[](¨Þ¤˜>ª”aç.XòBžF]ׂpíË‹Ô"f<A¨-µæÕâ!í—c¦[tßÉ»±Â ‹þxœïøPÿöƒ‚y. Š"J… ³nÆÌòVS~¸¹‰”EŽË ìI©AXÙÈ‹$€¨r¡D¼§«&§P¿D²¬³Š\gUÓy‚”÷ª^¤0Ökk)Û¼Óô';°IT° ¢ØTj[VY‹Þ©
+­dYé€íä‘{U‘C˜­>Õ¡Z ÿf¿Úb¬¼ªð<“΃IË%üÜ/µ‡ÿÿ÷kê0S˜iÐ6(:ÁÃÌ™8Ì03‘Ø›@iPR[ÓÆ[}­¶IK|mÚ÷Æ'S›X_äÑú }°Ñq­}]ÿ™À1a€3û|ì½öZk{ío•]¯±GBݳýæz´d*´raCÿv¹¦¦"ö†1€Ø?Æ é{œ$sèFӴб&S"å+æ^†<ž’½@kòt” §–yRø ³•ÉÓÇ7]NYGŽQÄÑ0-ôd­xH]q-r?!á~¤…þùÅ5v²1Gñ^Æ<Æ»K_ÉÔ†S¡ÓÜÉ%Sá€éTÀâ]–"pÏ1ë·β
+Ò™>”ñäs¥Ó,“%Ïõ°Ÿ¿8îRÐ\Ä»“j”L)ëÖè){z—(²kõáÅáL½WêB‹Z†J/‡aiŠÀ%×õÑæ"6‡Ñ`èãžé Io›Ñ4-4¬ÉRèk©kÀ¯‚á“ú¯a¡cS¤=D1çZ¨„N‹‚®!K¦BÓw ½ç`QúW7vqfè½o®i+ZÏ´Ð5¨v‡}èd‡ƒÚ¬4¼1‘€t—(FJ”?•4+\²Î7lXax_Èø9ÊPÏ"³¢½È¾¸gzHˆg±MÓBÚL…¾–ºOœRJǤٗÎ3/9ImBBúÓ:JA”h)«çg†“÷[@Þ8! ,¨DG"ŠD®%0P2™
+´;v[ßBôôâÅ$¥›™n{wQ诫^~ì]ó,Ï÷.“Ù¶íÙ¡¯[lssgßÌÜ@§5×™žYÈvYlßèì„ú~žÆ<;à~Å_›û†DsOg²½+~ÛÝ>Ú™zltv®=ƒìbn/G`„Ûã#’{Ö)Ñ@m{2“Áý
+¿à=
+™ZBT/V:熴“Øib—jûP(æ©ÁŒ =æ+KÐ¥2K汪Úr½ˆ5f@3–:hLæ f¤ k%JKIÌ' HÆ"Ü®€!ªh>E¼H]Ö\%‡“Ù§ÓÈá‡!)–¸?x •8£€”ø
+™‚ˆPts'ô5’"Õ@بAÚ6É~lœh ².P¬ÁZF׉ʒÚOH•좇C\Ñ~ŒòƒÕñ#<§Q•§ÿ$ª<™I0îÆYE6ƒøQ M­ai
+N’éÒL'ƒÔ€°’ý¨²RR‰Kég)ÓpJà•˜¤ ×’ØOÉti¦âŠöSìÝyë¯KæM…KÖUÆŠ¬ïä-U²ÅT?±ˆê‘é²›é~ŠEZ%'Ó•^’éuDoÕ}r1ÑË,™¯ÝϱH+¤Ÿp2¹t(k
+D«.k“ö0Aþ
+fr›ÍX†yEK›²ôÏ0¥Áž@õ}KîžÇm<O'ýñ*áoú¶ö&@`‚‚¾(–Ðþq†ýng¹Ï›KþR¨JþÞµ›·n^s×êÁá½j-·>Úl7‡¶âpç¡é3S_kàYxvþ[%eû™çŸn «Ÿ;ç¿Îzâ¹\èhšÉç_¼xœ ­7_|ÎMÐÇ/\>ÌÕÑï^zv\âP´ž¼ðQŽÃòð™'O8|ààÄÌÄãV†oÙ»‡«åÀà€°þÞ³zã–kzoQõî¿£U¯/Û·Z7n¬•‹º·¥QBôú¨¸Ñ ÌŽ»3•%}Õ˜–ðS˜ˆjd ¸bdjÉÛÝ733êÇó¬ïôÜtæØÐùv{{¶óñ¹8¯t,ãÓcí&αÙöÌ™öxóÑöBÓÍšínQ¶õMMOe‚ ú
+çþþl0k”F’>Áü²¡¸Oœ“Ѐ”¦TfG„j–
+û`?‰ÿ˜PÒ8¤ÔÓÆA7T.
+ºÖ4˜Î9µšç
+Ô6L9?ì@Â1]0‘!Pð¶dP­¹áUD
+…ÙÎ@³ µõÁúŠEr§­íi'÷TÆè,…ˆÖBe)A/¤€Dš‚Nuá
+msÙ09ˆ§~·Ðƒ ódáRAA^ÛµR+ X!‰
+0Ît5i ù«T5i%ž²ÐY:JÏ*‹ûë¨í³k ™Ê¹Á{RŠ\ËÊ tˆ†»’Zý]½6À†¼ð×F‚YGW@GkŠT¹’×q%‚dØ®åE)íñê.²x¤J;¼Wd-/ dá…¤@•+¬Ž+,pEh¼MÑ< eW<RåŠ} .¬¸6†ÜÐÕ*BÙ’×±%lQ&‹g_å"ªHBx-‹ê4®ÝwéÊ~‚’ Nm¹3à^Ž1Beb‡arf,&Y KÔ/† |/r[îtÞh‡ð¼d¡všÂ¸ÚiT¡Bí\[A«¬‚(È[F`5s”Š[ ¥ræÎ-z 6¶¤zg9 X–"@JrãBG3ÉBAÅô Ó™O³K`â~÷ [{ð¨\]¹>UÐoÄTA@[à™tH`DXC1††Ã÷Ìö•@\(ŸÁJeã3ÀaBiçsY@²„W+GaJŒ‹Z@Þ´¹6˜0H¯{¥ ù9^…„¸·¬ß­óœ­ç™X‚W¤2ój‹ØDõS×Mÿa¿zc£8®8#RWQuÁ²l0>ÏÌþ›±CZÿÇ–D8€SÇrûdÌÙØç€U5$iMP©ú!ˆ¶!DUš
+¤©´T5(%Š%ªR’(”Ð’mEèŸDH R«*‘úÞÌìÌìú
+UúéîN»³¿›Ý}óæ½÷û=ÙEPŸIðX$aGÁ¸`¹"D9#yœçÇh*ÿ1Œ Pźò1 Ù$áN’
+Ô¥; b;+FW^r6×7v$§Í‰º^"¦3RPÒ&“–‚†µn8Pß*}Ué«J_UúªÒW•¾þŸôU7ÚÜ6Sî,Ž•‹S¥ü̼×"±üìN5Ú€Ç9<HJÃÓžêÚzÃÑîâd¡Å\µ&Š¥MùÙra1x [‡a„¯Ç %¹˜ËlÁªz#Ô*ømÛo:ÿPÓÕ›ÉÄ àK¤-uÒÎ|9ßâ…¾¿bùPïòe·ü¹ãÎJ7ßCšW-Eë{{²`]ÛèìܘȠëÞóƒ#?~r06.ûÕËg~và‘±~e‚6>òô‰WßýÓÅ7Nýè‰[Ä]ürÓÖ}?}õ¿öá_ÞZ<vp÷õöºwúåÛW¯ÿçß½ÿÆ©#3'á5}»Ÿ~à}tùõ_Ù7L$|×½î?þÚå^ûðÏçýÂÁ™ÁFõÆ»[Çž|íâ勯¿thßäÃßX“˜Ò¼íàñ3¯œ}ñ;Ãm1œŒ<ñßyrsvñëÚõ­½…Ö%žª÷oí[¿ÔƒË¾æÓ»+ÀËj¾ú¥Jð-0NºJã%2Î7š0Ôq7d¢¥“ñè5@ê¬õÖã˜zÍíSS“^C±´³0žE{KfÊ' Þ1Yœž.–&²xgq6¿mÒÌo…WõŠQÌÊÁ ˆI©69ÞW;àj¤Ã€7<B¼ñ[›>Oþë§]D?:sû\òsoÈx
+©‚9TiJ]ÿƹ„ "¼Ê$0”Áqi‚(ò4…¹`0y+c\^Ç’!
+ £ e7Âc¡½¶Á¿e¾îÌ
+
+T–`+„v[cM»”¬{ª€ðd7äÊ“æ«? ×Ú-ñ iጟÝN@PÙn§‡é‘T§X8×™ÚÄ+Õ&rò^­_“^ÖV'¤ªSèH_pô*έ1·.O!Çô³Hº<…•ÊS˜”§
+_[ž¨¾fQæV³pˆذ0¸õ‰WªO<©OŒ†jãÔ–¸±ŸÎ·w´:½#Úˆô`U7gö=J™[D›#mdÖp³b§r[,G²Èm"ëcÝ^D™­ûe6­?š¶&y¾m},‡™È1æº]“uĦ@Ó›™þÍfOeÌ
+ÓÓÀƒÓ1òö0ÝXÒ ©E1c,Ý‚BÊû"ºYU‹¸Sr8vµ¡©4•` ÏŽôLp™mzb±‰rLÑ´ÀŠnÍ"êF B1£$öœGAÉTU²ˆR.Ψ*¨Ò6¹÷’G£d!B‚Ö™ÔÙ˜I¾„J2½èä*ˆC˜)UÊ–L¢\ù؆k6ª;*…úM›D‘V|ë2’ÏÐÓ ê[å©*OUyªÊSUžªòÔÂSu£Ím3åÎâX¹8UÊÏÌ{-ÈÏîTá xœÃƒä.<Mà©®­7í.NZÌU{a¢XÚ”Ÿ-fƒ·
+¢Ð3o_¹þÙgׯüþ¥ï¾.ínÚºžð‡¿}üñ?.½ò·k]Ý1¼û»G~óÖå÷ß=÷âÂp£zÛkè½½üùË¿=uôñá¦Ô*ZxöÙ§wôÔ§×Ö2V.m¡Ù7l|°£> .[•ËݳԓËï¬Y
+þ ˆ®Ò8†ƒ è&^µÑÚ™F»ÁäF<z #k½õ8¦^sûÔÔ¤×Ð_,í,ŒgÑÞÒc…™²ÁI‚wL§§‹¥‰,ÞYœÍo›4ó[áU½bÓ/Að€TF µ1ú1§æ1™ûàj\í¸ð†Gˆ7¾’hÓçIô†&?G
+­×<Xž ½†öö¶±±¹]›¦Êyœœ6„èŒ#ڊ̛撟«vCƨŒPŸDTòÒ^C„G,+ PCÙ„Bˆô'É 8f‚ʤo1@j)ª%wG›YБÌÁõÓ¸8ÖRkD‚Œ)Ë$;¤¦Å” ‰ÄBp‰&b‰€m’qÈ?¢¾âx®´Bª!äI
+0§BoÄÃZá£mÛo:ÿPÓÕ‘›ÉZ˜À#Ò–:ivk-^Hê]~+mßm·WBW6Ô­ZŠÖw ´×.AE~÷ä–\|êðá…mÌ\×Ô²ûúF_\<ùÌtwF×tÌìîô›ï]:¿øüüæz…6 í=tâÜ…®]»záìѽ÷¯–(Ë/;û_ö«.ƪ«
+Ï3 ±BJZ¬á€ —ýö 2w  J¥jÑ †;zaœa(CˆVˆDš¦IM µÖøbª­RÒ§R+øL4þµ¶>ˆ!1­JM+®µ×93M%Ô·¹39³ï7û¬½þ×·{íí÷Þ{û/W~ú­ÎÆÛ倾ô›kï¼ÿþ;×~uþ‘±ÍNïu ¯þõúõ7ÿð‹|õþµ·!º¼=täÔ“/þú?ýþòO­õ§}lß4°ïìO~~é…§¾6´®fÅçOŸ;÷̓÷Ü]·mCgz⋼iqïöûÚw7Áž¥­Ö'g{rÁâÛfƒ·ðÁ„Ø:1Šéàz{ÊW@s¶nÇ«ˆ4ÄaóZ|½P#áË‹õ}““ãEï`wâÐØh˜xhlj:á,âíñîáÃ݉M¼¿{tdÿxÚ¿Ž¨†±ü"‚ ¦f?ÖÔ ,æðí |;y¿³ÚËŠÑ…PD»o¦Ð{×Iœ³º’«‹õ÷OO†Eo_ß–NçØWvONàæº",T Z4N:)íѪ
+ïiJI¼âBàLÀÑÃti±F”zŽ…ãBz§‰÷Gf€²*« "Ât˜×¢DFÃuË2æ'šÆþŽm’Ãý”a›ÄY"”ë¹€Çñ3ÇT0ÑZxÂQ¢&ˆ(­MF:þE©mUß]¸. fb™ÎCL,VUY1T‚™–ÕŠ¨€æ‚ØW–:0 £ËÛ4:ÛRQF¤­;‚C³Úºé똢S¦·R€Ó*õGZ_z¦¥@eKSz¾§ªhÌ;In”ÓßXîg¯bFÖ7;á½ÂÐ.¨$c!xµãJmlÝ"d°A^ ´Î c`’ÚiϬUQÊé@Ëฎ-€`d)¼ÙÂpÍ‘ÏæÓT«,™gÇÑÑÀ¿rÜAùp
+«‹2GÓ1¥ÈF$øÁ'
+"Ðü[x«Â¼ Ã.!CECÅÀÂHc=ÂyÅ£Y’Dñ2úP1å1f}B@‚oPV~ Jˆ Ë£ò÷ wÅôq¾‡)] 3
+o_¶²1°Þl…µ¦ŒõÞÁ{/¯|0³âjH\5ð‹ú6éʇJâ:Ì*w {š/&h·Sû^°\þªÐtLi|F‹ÆˆHl†RUõmŒkNE1,Tž 
+UÖ]-ÙVŠ
+ =VÆÜóƒÝp?}VR–¶6<’Ïç(ÝæÒ8K
+¹Ï …ã‹‚ú"ÕNîQ&»LÎÑÛðÑ_k…¶Ö
+}¤#ˆ=¦¬Jå^¤Bf?Ù
+“xt" V¦D‚™¨òÆ
+Vì]¸À½«‹=8¬Šëcî×Q7l:¬ØåH\dj¸ð?ó”mž²ÍS¶yÊ6OÙæ)Û<e›§ló”íÿGÙV ¯ß25ÝßíLw''F¦N¶säè!¿Üó|Ç£qøç
+÷þ矰·LàšýO\~ý­üýÍ?^úöþu\¾ëÄ÷_^ýÝ•‹OŸÜåuX²¹sê©ç.<ÿÌ3ç/<÷ÝSû7ßá¶nðë>~v¦3vò‘ÇûFw`¢Ëú÷M?2¤zzÔБ™©}[ g±¾whh —½;††ÕíNðbS¹Ì¼¬ÜÄ–%>þ‰ÅQÉEKýO"Lˆ­£˜.¥·§Œ4çë6|¸šHؼŸE/TÉêâÓ¸æÅú¾ÉÉñ¢w°;qhl´‰L<465pñöx÷ðáîÄ&Þß=:²<íßG TÃX€ÁrÖ˜å«ê–óøv¾‡¼ßY íeÅèB¨¢Ý7SêAzãêÖ¸¹ihdÐè 47îBiws«˜†žˆ5ÈÒg/ð:ÇB•2§¹ÐLJçÞç2 }’³*ƒˆhôÑÐJ3 ™ßÒöïyP™– M€0ú Ñ,;­k¡I‹ˆ8i@á•°DiÚOe4y× Ý4T~FL––À¨ð £YI|¶<j‘ö\^óÝbµãÕbð‘.&´ð?š‰T‚"޶fbŠª)åíäЋ)R·Óƒ ;=ˆ×"ü¡^~ºLQCÍ\†š( âWY+é»QÈ0"?!üð`#?íJò“í4?ä\ùGlbêùŸ„©g1y(ãiJÖ¸´
+ŒÕ 6U))B<@êé‚'$³¦ÈòóÊN%-»ßfOC”L)(ï4Àn š‰ü„PO'z:ƒÑ®$?ÛÞô[{.g~(™™ k4¶´« #[¢2U½¸2ª–¾š•Фà#Pó^kÞK`ê3Q|îEQ ÚÇ ®•nô1 B¬ ï /­¢òBë;‚µúŽ`2+ŠÏ–G-h›åµ[écÔÎÜÇ€7ëÐëe´S–¡ƒ‡>–ºlØéÁÜÇ¢üÔ‹¨¡f.CsuÉôMˆg¥•‘Fvx°‘LVyéÙn’r®Ü˜ÕÃò?IËbHƒÓ•1ôRµ^BåÐZOõrk^Ž`î1Q~îCÉ¡¤‡e×Óf[% ÷Ìð.ˆµLQù©ù9‚5?'0ÙågÛ›~kÏåÌ[ëa7Ãâx±åp½ß•š!„æ[t¸`nQ¬U1nT$hPU:—Cï—ÈX UJ«ªªà€J¸hâߨ ³—ãÿe¿lv¢(ܵ‰ïÀÆmãŒà€Ë¦iÓÄ0išÆ…iMnúþöþÌŒ?ÐNa ™£Æ{ðÎð1G°„ÞŽ=þPÚÁlRêÇnvsSfx>ÁW߆­4©¢ùiWŠæ?!€'83˜¤~ÍŸÓj×­õ}rvyZŠ`öNÂ뀆Á¬­QÚPÛ…1mE ƒ€Ëþ⫈ÒLJ¡Î­Íïáå…öBÀvøÏ?˜R꥚+½Î‹ LLï˜ Ä„%æ’I½Îàeš³YrîP&1玥ÒQÛÁð·J“Â;æ‚»‚s´à Î fsîÌß8ÇRn‚‘sKùhÖÖ,…ŽJˆ+cÚZä&ÎrÃS.((
+¾_£Χ}¾[éúa÷±/Ìí' CÛótòª„UÉðPÑ[«‘àT›ÏêÏÑs?ÓhßE­1<æ°Ëíïqû½]E©Jät²y™ƒ¼ê®±†IÕ3­;Xw¨]°ý#g×xŽýàÝ Ù'Þ ý㵂ô…×Ò/kÔ„¾ÑN
+„î8+ºkt„¾qªÝÝÝÝÝÝ5.ÂBKòMt­@è®2á  +ña+ýF8È?ðFAè²Ï/dC¼ã
+endstream endobj 179 0 obj <</Filter[/FlateDecode]/Length 5613>>stream
+H‰ì—}LSWǧPÚÞö¶¥-¥€À-Ø®å¥Ð7JyQÞ*¢DEHS+/JZP|¦”eÙÂ6<ËFÍMƒÑ %ã12õq$0§$è24ÆDÍÌþó9÷¶ååT)ƒ{>MÚ{ç{ßs¾ç¾ðò%à=·óréüÃí¹Ó¤ËöÜcò-í-«Ïwåí[]&coéÖ® yû}õv¬›Ç뼉Ò9Þà ÀÚ×hpM¡x9 P1!|…h€Â‹J¥ÑéN£R½€’Ð-.òÀ%4:ƒ‰²Øl€Íf¡LP¡Çb2»ˆJG˜,—Ç|ŸÇå°˜º¨ Q¼hÊæò}ýƒ1
+ †Ê2ómlë¹<0tstl||lôæÐÀåž¶Æ£ó3ä¡À"Õ¹ö`1(4” Q&e›­õg;/ ŒŒÞ™˜|ð`râÎèÈÀ¥Î³õVsv’RÀCÁÄfU`ZRMÚ®âšÓíç¯ Þ½?õèñãGS÷ïŽ];ß~º¦xWšF&6£ZïáEg ‚Ãb3rËŽ5uô^¿yçþÃ'O§§Ÿ>yxÿÎÍë½MÇÊr3bÂlº—cqÂ`:}~yÝ™®+ƒ£SO¦Ÿ=þlúÉÔÄèà•®3uåùz]&`#³*O/„ã+ŠŒÏ4ZN6w÷ M>zúìÏ/þ|öôÑäØp_wóI‹13>RäËAœK?«2+ë[z®ŽŒ?x<ýüÅ_½x>ýøÁøÈÕž–úJ£áݪ–æÐµÕpiå]KÙÅåÊîuíJqùªtéàÒÝÆµ;›«wQ—îØ®=\|¹öÔsñ ëâÓÜÅ7ßR\|#zϵ·¯áßôæ+— XNÄâ-…iæ*3ŠänEq²^c=;Ͷª"+Šd¡H5Š(°äJ‰Æ¶ƒ/y4@¥À^s`ÿäšq è&>¹GPD­Š‘k0…Z¾Ëg›
+yŒ&Z©U*¹J ¤ªXЯVêð¿Ç`°2z¦ùh*bä1jÎ9X¡šw*GSãÐÚ›µSkoÆÊUj] 6{ªQ—(Duu3M\;cÒ>Ø>…™S9šj‡vÎ|¶Ev¡ˆ“ʰÜ=ıØ•l­J+-¨*µT˜­G°8¼/ÿÂ׬Z!ŠÄ8b“ã„ĔˉûTˆÜœaŽdAǬ¤âU>@ŸÕì8–&ë±äê* fߥÿ*’aQ9UÖÒŠXa“&Zö™’õ:Óöý¶"ë¡¢BSfÑ“}”MægŸœ ¯°T`±:e´}vÕøŒñm†o$5±gÄ®!¶dzéEqŽã”¢¥Î
+Ö Ë@‘|ÇVS`*µS(µ˜L;ÓàçÊ-Y|
+°²H…Z«‹OHLÜäFâuZµ"R¶ pY `s¾KÜ$…Æ`ó„A¡²(MÜæÔt}¦!+k»ÉÊ2dêÓS7Çi¢d¡AB›A£Ì· ò¦PÏ/X©ŽOÙš•³'ÏhÚg6ïwfó>“1oONÖÖ”xu¤$ØÇB¨ùü¼é(W,‰Ò&éwäš
+KË+­¶ªêêêCnª²Y+ËK M¹;ôIÚ(I°‹ÒçeŽ/%ÁŠå±)Ûvï+©<ôaíÉ>n8åF>þèd퇇*KöíÞ–+
+8 ó9‹I,%‹ï¡MÉÚ[d9R×ðéÍçZÛÚÿí6ÚÛZÏ5ñiCÝKÑÞ¬mD¨?ŸE,æLàžTÇ7X¦ÚlØ[l;~êóÖ¯:»¿ýîû .\t  Ð÷ß}ÛÝùUëç§ŽÛŠ÷6«dÁ¾ÕÓÃ98åù‡Êã¶î.´Õ~r®ã›‹—ûúøÁõeÆ^eàÇþ¾Ë¿é8÷I­­p÷Ö8y¨?¥ÏFŽް}‚¤êäl“åxck×Å~þùÆ­[ÿʽÌEnݺñóðO?\ìjm<n1e'«¥A>ld6rà.Eè2ö¨ihéìí¼ñËØ¯¿Ý½woÂMÜ»w÷·_Ç~¹1ØßÛÙÒPs`O†.B$Ä#w¸÷!
+Éõ߸Íh©ýìë ýC·Ç'&ÿcjê¡Û˜šúã÷ɉñÛCý¾þ¬ÖbÜ–½ÑŸË¤Q÷"pñPh(oƒD•¼ãì—{P×ÀÇyl²IHBB ! " IH@D@+>‚`1<¤ D ÄgÅ¢¶Nµ•Q±^Ñëè@}Lõvt”ªs¯£Su¬ÓÚ‡Ú©Sø[‹´p-×ëé=»y½ê‘Ìì/3a÷ã|çû³g7gËíw>uñ«[Ýw{~íí½O½½¿öÜíî¼õÕÅS‡wm´—ÿ%-!B.BÁ³è±%› Pë3gW­úpï§g¯Þè¼Ósÿ·þQÆÀ@ÿo÷{îtÞ¸zöÓ½®ªš©W+xìa–JMb–yQãÖ¶ŸýcwO_ÿƒ?ÿMƒƒ<èïëéþñëÏO´mm\dÎJÔ(=-ßð·¸DmÊžW÷ÎöŸ]úö§_zû >üà%•>èïýå§o/}v`û;uó²MÑJ ¸É"§%“”Sl]·ãàé/¾ïºÛ7
+1:Äüö«ðÉù¥K×mo;vöÊõ›·»¨ÿ…ìº}óú•³ÇÚ¶¯[Zš?Wùí!vþ²°Øä좚U›[8{ùÚ77nQ¸Ù ··n|síòÙ‡Z7¯ª)ÊNŽ “ù“»qî="(£ Sf–-mjÞsèø™s¯\½FÍÆÍµu»võÊÅsgŽÚÓÜ´´læC”R"@˜;7â…B®ŠKÉ1WÙ×7·¶9ÞqƵ íMðùó®]ð™ŽãGÚ[›×Û«Ì9)q*9ñJá±  “ëª1¤ç—TÛ›6·ìÞàðªß(Ž>°wËæ&{uI~ºAèÏõx=#&جËUZSfAI•mõúMÍ-;wíÞCåÛٞݻv¶4oZ¿ÚVURiÒªä`«ÎôxÕuN¦T‰'gæ•ÕØV¬iÚðÕoºïmhZ³ÂVSV”Ÿ™ŒG*¥C¦Òù‰ðD2L›Òs ç-XXc]b«o°ÛíË(j¨·-±Ö,\0¯07Ý„«1™ˆ‡x¼B’—L&‡/
+UO0¤däÌ2Ï/]`±”Q†Å² t~±yVANFŠa‚:4HÌçSé¶$'“Áæ
+ÄAJU4nHNÍÈÊΑ——O!yy3r³³2R“ x´J$pÙ Ï©tL&¡ÉÊC#4Úx½1)ybÊ$JI™˜œdÔÇk5¡ò@Ÿ”ôœJç5g°9<a€LŽ…G¨51±ZíJÑjcc4êˆpL. ò8l†ß0I—& AùB±T¬Pb¡aaaáÊ…bJE°L*òQ„5‚¤ó¢û1Ù—'ŠÄ©4 £ ¢šT*‹„a3ý†_nOM“ÅæpQŸ/
+lÕÖ*,†¦N«X\VYš–m*Í/«¯´-«¬(Í­\YêhUålç-š[[1£)>Î1\;1Ä%¡Ž\o8¹âÈå<µº¶2Éyœ^YUmu-n0Y YŠ;—)ŽétF,OÀæcz†ƒË&ö­‘çÎFÎ?F,Xù‰dc°˜±8PUE–$î°$,>N‡À–üIãmžçéøzZyÅFl´U_­Û+÷==xO
+Ü`$©Ô{ Iêõ^HÒ[zÏ/ùšzWÏÁ˜6ô¶Úcƨ¡·¥†CÂ3æ ½­32´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<´!<cËð5”üó ¼m4Úž' _+ÉõÆ„ák"ù ½1aèuÉÿ«7& ½(ùœzÞ’|!=ê%_BJO½Ñ–„w=ÏWëö
+UGUì¥m©·¢Ì¢z%ŒóàÅ3ž3“hòÀÇ qöìDGН¯Ÿ__2óéyDHñc0˜,›„Åb2DæÓòˆBD
+“ÅF8\”G‚r¹›E$úŒ˜Fòe0Ù—Ç÷ŠÅ’€
+©ˆÏa±y~@$)Â5¸qRFN~ásQ‘yNaAîÔTS|Œ*$PÄC˜~žÅˆR 6*”†¨bô)™3fÍ[PñVMmí¢êJKÉ켩“ Úˆ@!Êfx#J±8‰b|¬!5»°¤¢Ö¶|uãÚµo¯¨¯[øæìÜ4£V¥¸,bd)„'
+
+‹6¤æÎ±ÔÚ×lØ´eë¶m[›7¿Û¸¬®Ü<#=1&<XÌC<Š9JùK•ê„I¹s+–¬~wËG{öµ}üqûþ¿ílÞ¸fieÑôɺ(LêïY dQ‰‚Çk“²f—/iÜ´cï£ÇNvtœ<~ôà¾6¯µUÌ™–<a|°ŒÌ# ò%!j]Zþ›uooúkÛÑŽœ¿péÒ…óÿìø{û®—¤ë¢B$|RÑ=,&Ç?04Æ”õ?…§—·O[²a×á“ç.^¾|éü©Ã»7.ÞQ‘áa¥«$!ÈÍó##Ð[<ÂR*v¾qù ¬Û}ôÜÕ›wîÝ»{ëêùc{Ö/œØ˜çgg *- òB'¯ˆŒº‰SPriûŒÛœ»~ïÑÓçÏŸ=¾wãü‘+gv”¥;™¨ËŠðrÂuƒOTNÓÌ5,£ºwþú}§¯Ý{úòÍ»wo_=½íôþ óûª3ÃÝÌ5åDùàÁÒ ymK¨œúIK¶¹pûÉ«w?þôþÕ“Ûl]2©>'ÊÓR[(ºÄt¬¼bò›¦®ØyâÊýçï>}ýöíë§w/î_=±sÅ´æüXokEq$]À€WÔµñ‰+l±j÷©ë^}øòýçÏï_?¼ztýôžÕ3Z‹â|lô%àAÒÅ- ¡¤gë_Ü6kÍÞ37¿ùôíç¯_?¿}zóäæ™}kgµ'øÙê)Ip£ëÒ·õK(阽nÿ¹[Oß~þþë÷ï_ß?¿}zëÜþu³;JýlõÑt"YYßÎ?±´cP×md]·ÏX?§³4ÑßN_Í]’]sÖ8ûÙ»/?~ýùóëÇ—wÏnŸ?°~ngiH—$V]I¥sºî ëºC’®ßþü†êÚ@@WYçÜ Xu•ÑF×Á ¨º.Õ5ªkTר®§ À
+endstream endobj 180 0 obj <</Filter[/FlateDecode]/Length 9111>>stream
+H‰ìW{PTׯ^ Ëû©‚d/÷ž{îËq×RŠŽvUZ`Ôšhú°>ÒšêLŒI´1míÃG:£mª‰:¡N3hš«X1>ZGiê3¢ô;÷µ÷.`Bf2Îpavïýöû}¯s¾ßùn]û†ŽŸ¾p­ûî?~ôÅÝîkN?°cC{]yaÁ˜´¸È°áC‡| ®!C‡‡EÆ¥)(,¯D ¢Qƒ¨AÔ ê:vÊŠ:uì›Aµmر¿OTÛWDõ<~Ü£¡ö?ånÛ°P]fTדP©*jýö}G;»®Þºó çÑ£žwn]íê<¶û†67A¥ZP¡‘±©YSÊú׿¨ófÔùΣû^_ïw—M)ÈJ BÑSf×¶þäµß½ûѹÏnÞ¾ÿ°§çáýÛ7¯œûè½½¯­k]X6…FÙbS2“Kk–­Ýö›Ãž½|ãó»>|pïó—Ïž<òÛmk[jJ'Ó™©±¶
+ ŒKÖÌõ,]µvÓÖí;ßÚ½{×›;^yiÝó˼óJŸÂ¹TJIË@)!F'ŒÈš L-™ãnl{þÇ7mÞ²eóK/®]ÝÞT_=Û%æ™­¨¡4g±ÉécÂÔâʞƖå«V¯Y³ú¹­M‹jªJœžkv¥9‹°Ç§ddçóSfÌ~vþBÏ’ï66~¯Áë^PU6³P Çe¤ÆCV&Wª³0[t|Jú˜<V*œþtyåœêyóªçT>S2sªŒò³3R¢mafWª3ˆ`£2Çå³Â¤§\3f͘6u²ˆ9Yé) 1‘á!WÄÄn³Ç%¥¥gŽËs°/J’(`–ž0>+cDr|tdxèp‹+ÅÙ°ádTL|RÚ¨ÑYÙãsróòòrÇg¡ÒG$'ÄÚm*È‚Òaá‘ö˜øÄä´£Ò3FÎÈ52-%)>ÖÒ¤À
+#ÀôRÝ)Àá!Æ€ôÑpHýªBž€1€Á×—@ú@~5Ä7xegÏhöLwûÝv[õ,»-ÛYÌׂ¤ÂÝê÷¶Ømev[›ÝÆRÎ¥vC•ÃÍÀűÔnÔ¿j7€Xù«^i·aI Aà)–‘iY–©&‹L Y,c
+Kͳ‚
+—EE+&P¢’­2bÊHG¶Æ0\+0µÈn«²Ûd*'—ªž«Üg×8[üÓêý ¾fwËJj"‘M"¤øPvÝ&è€ìZ“U¤¯
+ˆæ9‘"è‰fxX+ı´,’E5Ä)
+ú#¬ÂÍ ›t°Õ¶xQ Š„‡Ê±ŒH,ðV/¼ bDbè «ìeQeÏqÈ4†D9Pâ—ËY_ßÖTá󻉲µ˜yJá”æ§bx C—³"‡ò-q¬hîN.±¯Âܽè›È28 „dàA E¬?˜«§<K4‡”JéX‘Ó°Ú
+iÚ
+!IL:X2™PÌ«#™œX#6küÓzeTª”ž¥¦¿ˆæ\(—!Dˆ¸¡D,¯=˜s•”%F2–©
+Z:N—‰4{”,%Y$NZ„@Ú£–%PŒYó´Äq&3†Àœ­&ƒrÈœÒyºÓˆaÕëÕSã1tô 3ÁyÌU§pÐL·ÇK«Í]ÒàFs0¤[1’¡TŽEh,KÚñH Mh‘‘h Y¸€¥jgÇ:X²+eÊÈ™£·ü@EILƒ˜ªnÒQÆ”C” J’Ù~<%10krè¸ê¿ŽK×@]ªåÔü-"Äåê÷œ0 ¨‚2Ÿ¿Â[ïkñx=*KõW½‚
+¯»q¶nQ£r¦9‹‹ZÜžo³ÿÙE¾–&õ·Ü>ˆ¢Ò¿²Ñ[p­© œ=Ih¤/È–@Þä“lµ@Foét,ð b ó"DÅ‘Ç<!hŽ'T ߌ ËÛÇ:šU(Ó'‚W²Jˆg$Ár£Ó:ˆâÉú]íÔç;¤ÍwpFðÔr;i%ØZ2´¦Á<«òGcŽçÂR‹¡±ÄbUhÀû’Þ¡+‰3*M8T›„̤‰˜ÃB&†]ɱAŽ`¶“9!HˆÖoYð0Ë’Lp-””yZ`§6±°%•¾Yå°QíÄ LŠ26)A²,´ †ae Ò' k¬Q4dEðÂÞ‚>EʤñÊ0‚눬¬¡Á)S  «+S½CpWUs³» zl±Ö2ìx¨ŸÌAUõ½Šaeø¯L_Ä
+Ewp05Àb"žÕ’„#š•Qß&ÈP¡~Á2!1¥% õ"±8î‹Éžì+\†9™ÿ?$3ÆŽ•„¯Ifß#ýð™:+)VÆÊf‡£ÂÒ‡rM“Š€¥•àµI¹V™ÔEu ‰6&LjX€#[aÝT@¢yT€º N"샀)2W!Ò—†G]¢ j`†š¼aªWŽ
+©áÓ’ ÑÒîpÒÌmSmeëêŸêñ:J—â+mCGY¥Bÿ•®Ÿ |©Bý€‹½˜sËZjñ¥¶¡£¬Tp!ì¿C—Üæ¶µÖv¨µ-µÞZGás3ôƼoÙtT(­r•¦£Ú¶ÍUèP«4%>$¨TGI3øjƒé¨­P“³8´
+€¹£:¼’3%>cÉf_×o®£ð»Qƒ]®"Qx
+)½œ“52•”²ÜAHís>½kN‘R7ãëÃïZêvZ
+oD‡¨bˆ~Е'½‚
+áR®n.M Ñ›µzâË­¯1ù¶÷¼K4×yVKá‡g‚¤$üA•¢2-•ZïÒǘb éRuCM‰–fr*oD_(…LN¥š“¾TSNUìÝ81:=±dŠ_ÂÐS ï*~fnµ(¨Â¶]×ÿeU«N×D,óT+;§kd2 *|¶·ŽÍì‰Oõ³O'A•jL_aG{`‚Šðeˆœ±QÝ,FD–Ѱ A…DB¹èÒª R‹ò‚
+ªáÆ?TPI¨iÑŒ|ÁâT±ãMž¡x19¹ŒÃ¢Ô ‚j¸Ùâ-Ô¡Æo@P!»ÊÍ´ êØ© xAE>H
+{zEµžPw'4•œPr! íN'¹äÑK*6:|v¨ÈKªhÄjõ’Jj!ÐBÓß¾TUT)à^Q­ŸÉ,Õ+*ý]€ý‡8sG/¨üN*mK¥·TÁ Û'¨ZL\¤ ª-Ĺ
+j‘&¨Äœ â0à•ëU-p1ã$Jyn¨¯ä¼¦ bŸà‡Ù×õ9U9!PÀi›Vê!‰X ŸÕ6`z
+ƒ§Û)Au›œOïšSôÐÔ¯Ž>„žú°¶å‡!«THáÅÂ[‚ à9 5ðUxÞ%õi¼”†ÒDaàåŒ*zbÄ«†×zñÄ#…ÔÛnzD­:ß½’°[O\Ÿ(óãÉ‹s—PX…‘ðºÔE"aí±OÔmgË#"fîxqÞˆãZ·h0íÆ%ÿ»W1¹±ÞŒÝ«°Uú¾©0²|”üS…±[ô*¬SSô" ?W}ÜœÛðnÓÞL†ÕQôà5cG÷ ¨iVÿ¹5 ›£š/…
+D~ò§#‹Æ”`ìN‚I(ðŒ2òõr °1ÍHd¥¹|jPȘú«0òNùÅaå}ê ÁVjHMMhP,kíw8Em>Y}ð‚²ƒiërRíd>y ’—,<E,Q…“E€5 ¸)¶ó5ì³<Tõ¥µ¡j›Ž5ˆ‚F¢ª¬¶ÖtංƸePx§Æ\ÜÓ¾žPw'$
+Ê|è-³4XNgsÉm®­m]ÿ³CE^}éZ|­ *[­+-Ô(ƒ¥VãÀû:çÂZ+øZA5”ùäæBä¶ÿ]r››×Zó¡Ö¼Ôz[ýå>‘³?ä?þP ‹ªYî§Úp©¡!mÑžˆ:§n a®Y‡º'¢²Ì‡~°0ðìͰÊ,‹C«`%¦ûß§Z³õ˜•1Âìëúuï긧øŽ‘0¥»·õ~ â/ÚjÄEFläN<yúRx" ¾4¥våñèº0•Š: ,uÑiü5'|Jè±ÆËÅXçXÅf³OÙ°SFžÎ¤
+Çä…3Þ]JK7,ÚĆÅm3BíËûp8 „Ìß½³É"]@p8Ì>lñö.:XƒÀ’…¦€‘l븳Ñá°ÏnJp8,>a öY*ÇÝ6Ýáp×Ú¸²mà·Bq˜>Ø9w¿¯'ÔÝ ‹$Òît’KûøcøìP‘Çá8àqÖêpXkUαÊ`©Uq¸â ÷õ3™¥:ÖRaF
+Ñu:2b ]6¦bœá)´\BÛÌ'/FÌ]BØ%kZeÝêÎO›òjËc=ŠÝoN¾|íöÆ UÇî9tV
+±{Ž’AÁs4Y>JîÉÑì=G'À› Ž£S„¢]Êq4
+­~Çèûbtðœ¹iÇ ž£SÞø6MŽÞjãv<Aš,Úý'I³x”æPàQš2òýò,“<“¥;?™ž¥É¢oÀdiv ž¥9ԡƇÓú†c›z°këoýÀؾ$ƒ®_Hîâh;¢¬ æEÍ‘ŸHîÒü³åÇ›1{íÇâzö™Ô¥RߣýŽ5r’1”ç –xrˆÎ—ëÜO¥zô¾-´Þn[ä)¾ ü¬2å\]…fÊf6ú·ãqx[êKÁ»¡Ÿ1l>ò/Û§q$Zü=¾[66CèÜ Ì†#ÛüÂNÙÆÜËñ>yÚzØ·n)ÕùõâJS Ë×ÌcùšÙÕýt^ç׃’%ÇÒÓ­?¾{|v‡Z`½©<þ-káoi´ŽÑEä6Ë>—Ý»6s¶­¢7?«^]¿þç«÷š“¦ªý¿¯_¾u4g–¨i<©Oþö§Ë¿>ÿ¾í~ü9=ûñ/o^_]ã¯?þø» z•ŸÇ@2ºŒOž¾}‹^¼»~1‚Ä‚„`«pñä9>«~¢06‡’üùíËëHq‹?ã2~¾yó/tøáÅ{Üý¿xýÓˆüûwï^ý®^½~óòÝõ8•±ªñgúßûÿýûz–tøóÇo>Œ¿?_;zïG<1!ÆýÒE=ºzûö«®·mc‰¾ð и¡÷ûãÑν¸uá4@ãâæÍ%Vv«H%·iý=Cr—K[Ž©~$2² ¯Ž†Ã™ÙÙ³sVÛz½Ü<ø Á6‹ &ß¾t‚#Òš.·ÓŨĂésIm;­Õv\Sv¦Ï%µÕf3]ŒëÇh{ÉsÇ´× Í~šQõúî–øqDŽÑö r±wõrTbÝA$õä ðkUoO–7‹Õ¨ÄëƒHo²Z¯;Oƒ4¯¦³_¨ÝVóQy¦æ‘è“ûx½®ÿ¿‰õA¤ÇÂìõh~³j¹¼¨>nÏ6ß^¼9•äýGþµO*SEþñª¿LjßÌæÓíôÕ¦šµãþÓ•½_È{!íêÕýB
+;wÁ4ÿ¨†ë,CG7ï¥Ö£TÞÞRuÃÞvjŠ“LR¬ÑQ½xâš–08ïm?¥£¤Þ­£vª¨^tE¥ØxuÉ÷RÜã³:Ò\­ëyUg•eT–QŸ%¹cØqRè]·v–QYFe•eT–QYF=Ö«YFí”QÅÉíÑ V¼ÅGÉðOòâ‹öÿû)t¾àB“þŒ5ËóniUésò"«ûß[ÓŸº{ ÄºÈXÙ³–yb™'²&˼¹²¼Ëò.˻ϑÜ1no@¯&뻬ïHd}—õ]ÖwYß=W}÷œõ“Ü_?i)œÌúé@H7맬Ÿ²~úÉ5úI{+´Íú)ë§Ã™»³~Êú)맬Ÿž­~‚<ºÕO‰hbƒ¥è¥T»|T?õ’èÏé'¡÷ÐOjoý¤™´Leýt ¤;¹Z×óªs}f•uÔÁ¤öÜu”cJ³¬£²Ž:œù;먬£²ŽÊ:êÙê(Vˆ £°lÅýI—"J*ñ'uT¯žPRb/%¥÷WR‚iγ’:ÚÌÖ«m½^n²–ÊZ*k©Ï’ܱrž;a]–RYJО¥T–RYJe)õL¥ÔÝÑ V¼…bb¥²’ZˆR¦H[¥˜7V
+ /iÍ,3pVJh)Ö
+@Ä—ÖJ5¨3œã¬ ÊŒ×7ì6P5Ñ«8¢E Ñ"–Œh‹=Ày\$=€œ}:¢ÅfÉf\ÐÄ ¸QÌÐÄ Sª›@Dÿö#42<&h_ŒkZÓqí
+ÑEÎ
+$¬3Mh+–#ÐV,X ­´Õc‘¶z¨£­¸‡~âF'¼"á­Ø5‹}x«zÞzÐ{ñ–¨‘£CÄs(Csˆ@¼\€ ÷Ó–¦Ä0Í Z(*ÓÒÒÀîYÕl9]%¾:m9¦äÿoý€Òj&hKmD-˜Í´ Qa.;¡vùüŒo¿t±®xN!¶Ì€z$M;?zñ)ãèy;4%‰'íÓvÒ”ø«ŸÖoGÒ¶L!1Ë*ß¼&@ Åâ<p>~8¥Cˆ‰Á;C|‹ÖŽÀë£àa•ê1øA¯B\ò3¬”–ñÞsto‡§ˆ… ÏSLƒ†„- F'Ž¿±8ŠýzGU)7¼Yù¤ª±$çû%zÝœ³§šÇ‡¦Ñˆ”5¡]N,JŒSåÍ~x9—çM¹$m½¶1f"EAo¶Òí­ØšùƒMs[ï $'/õÑŠrØP[êL3^ =nÀ¤”ƒ8°'ˆ#F«|÷dZ“”é 4„%ANŠÖì~=Î÷áXî%ÃE„S£pCâ|£ÓI‘îC°˜½½2­)(£™Ín&jÜG\‰¯“Q?Qà'è”a›¡À=è‹ÖŒ¶¦_ƒóÔ_VÕ—KÖÖ§˜\W7‹ëm—|uðo7óíu‡FÛP,¼"@¡0ÇïßœÿxöoìÖäò£|}ùny3«°úÏ她|YPyÏ8£Êª{†ǧë5œLëjüp­½Ñ
+û[Ÿ¡|“ yŠÏÐ{¾_Ï«}2âg„ññÃrƒWÓ-vÿên[m‚瓺ž>´›]ß,çuµê¬DUø™>¶¿ßV}J~þuº¼ ¿OZÛãwxùj1´£¾é»1qú¥“šÌÖ«m½^n |`›Åˆ“o_:ÁiM—Û‹ébTbÁô¹¤¶Ö‹j;®);Óç’Ú‡j³™.Æõc´=ˆäŽ­‘W8þ FYÔë»[âÇ9FÛƒÈqÄÞÕËQ‰5v‘Ô“7À¯U½=YÞ,V£K¬"½Éj½zì< Ò¼šÎ~¡v[ÍG噚D¢Oîãõºþcü>&Ö‘ ³×£ùͪåò¢ú¸=Û|{ñæ|T’÷ù×>©üMùÇ «þ2©}3›O·ÓW›ª mLeïò^H»zu¿ÂÎD0ÍÄ?ªá:ËÐÑÍ{©õ(•··Tݰ·pãÅÉ-´•#…¤Sa%Ù:O éÜ]Q=RбÂjz7­8–xTéÁ²[±°z\б݂N³]‚N±’þÇ+:»¿¢³ÜZ•ݰÿäj]Ï«šgA—]tŸ%¹ÿ³_.­mA
+7Š”ßF£è‰F•áÇ{TÚÞ£R¢„âQyèveţģģ^åäö‘ŸƒÁcˆQDJDj:ÀE¤D¤D¤D¤Þ¨H9ã]…Ù… ',N›„œ+ p8ä$­Þõ¡V衊“áå*:NØÅresÌ}ñV«ÏÝRz"]ÂCóó©€ï£Ë< òÉ7 Dë8q‚³%±H!$õ¥V–*‚‚PùìE\Õ¢ok¬‚œ®¯-ûÎÆãÚµV
+rå“e¦s¤À‰ë¨\5™JB1†¤Àò„ÐB¸*w°«O˜—aCmÙw>0×Nø¶˜c>FËc~5—}\›÷5ʹwCíß¾Cµr±Îµ:f€S_iÌ»÷¦¾x¾ÃC9/^0¼FyCSÿæúá)};¹¹]tùÑâûÍÝÙåÏ_‹{­x`nöQ«/üÙvâ“©
+endstream endobj 181 0 obj <</Filter[/FlateDecode]/Length 2284>>stream
+H‰ìW}lçoœÄI.$$9>Rœ6±ïÃ_G ­!ép’iÒÜ‹}8û.;_€TíP'1P¡ ›öê6UZ©:ÊH¢Jûø±j+$ªTUê¦B›ðÇP+¦R ¦‚ÂÞ;ßï.çp¡-1Òý"Ìù¹çyî÷¼ïs¯Ÿß#èâ®
+Ì7—,LVÆqWù¦#"YÝÕÃ|“Òg5¿ÄrQšGb³SzðÄŒðyÜæÊç‡àù}q˜G|Ç](ȅ΋¥Pà†E¼‹ŠŠ­%9`µZ”1–"k©md·WêÁ^•—•ƒ9 °¸´Ü¾hiõŠÚºººz€¡®¶fÙ’…P™U)°—U,®^¹¶É…á8îV0¤¹qMmU¥ÍZ(FXŠJ+ªêñ§6µ;;»´èìØÜú´·iղʲâÌC
+,ÖòÅõMëÚzB;v&hšQƒNìê'{ƒUUPIæ!E¥öêÆu!æÅý‡†GŽh1|øÀ¾døÇšj–‰¶E+ñ¶ÐàÁ£o?96®ÁØè‰c¯
+½k–”[„2Š,]ûTsðõñSï˜Ô`âÜ™Óïüáp²÷éÆe5a…ª›6…^<:þÏ?ùlú¢ÓSç?:óÎkûÈÖæš
++_z¥Ä¾ÂÕ¶cÿ§>œúüJ*uMÔ•/¦?:}ì@ÿf¤Ö^"D–Øk±àÎCÇßûäó/¯§Ó7UH§¯ùÅù3'ïêÀê*…Å•uxgbøäÙÏ®\ÿæÖm n}sýÊÔ¹ÑáD'®Ž GÆ&¦Sé[ßÞÑàÛ[éÔôÄØºKÑEŸ¼˜Jß¾£}åîÜN_»89~„QEÔ»»>âÚM½ˆ›b„»ÞŒ0#Ì3ÂŒ0#̈!ýžÏ¡33äš
+Ïr‘ùë%ù`þz‡ ›×ãô¡>?ìEQ'A¸Q8¡´!N°·ìu;q¯Ï{ÆÉ‹‰’! ÙpŸ#|DÖ6ÓëVÚp·è$¥ÎÐl&É#g’mnÒ Ë™ÙLféñ’$’iJ6H®E²ÉÕŠ™³ß±l"í*D; [d#`G#Ü»]¸n¹,× s1†&Ù!xo{’ÿà—,x¤’BrViu¼U®T²UV‰vP•AߪÊ@ç"l,)^;íp`càLÇÅ^ a×6ŽÑQ¸I¨v"L
+´¡®¾$Åî¦"¡-ÔP(ã•lý2U£Àfh؃™ª³=ëwûP?ß¡€=F>Ç•ÍK (áå/ü„Á‰ìE¶‘1m#»Q§{F#g·M¿¹Q¿º¹·WÛÜ8ŠÎèmî¿ßÞ41?¡¦$Q—»kÖŽ"t:IQ¼Âª(_iË€œ¹Àx_‹ hgÅ2蔟µqÕ=–Y D<·ò-†¸×Ë·êAO¸ðà¸OÙb~ù_o çáøøpp‘Po `·Ý‹!Â?Px#P®_ØŸ¬Ñç–_S›bú6)8¨—s.”Ï»¶RdvôS±h?'¾£&Û÷Ä"\¿h¹%ó^ÑäÍš†D“«·#ØÓÞ¯ƒ¡½ø¦Ð¶x,L«ÖPˆ5Âü9ÑŽ"!ÀxI™a×F†IH–"¥<`KšÈ»Úiv$ùLr ÿœN&B‰gÕŒÃköÛ€ÆÞDœÍ$¨¾AŽ’Ž(å¹§ð ÷Çâ–¢¥EYI·ùnh€Ê–4ãön2>(Ýwd|¥3TåG“ É <_‘t¾‹r„šc™x2qU™* ¨ø6ß(‹ŒsÝdÔPa’ëÃRG²QŠ3Ö”¢ëÃRZ‚J&ɨ±~”}ó¢8†"êÃ0÷½Ž”(Ë ð¤"eß¼(ÒÀ²qC… ~yQÔ=vS,ˆÇ¢´¡ÂÞyQžÌV¹^(U™}dxßntÄPJ÷¼(ôžûØÏ°/ßG…w^”‡HÃWÎúÂT<ÞMíåÚ“mÝACEjCšæRÊ÷´"?øÂêÈs;ÔV‡#$G6')š‘•Õ.¤†’^¯Î’´syAFù 5œè)u´ð\¾õøRºøÕ•öVÔ^n‚×H¼à⯀BɃ(¯ÀÝ ìw2
+ÕQ ÝwÒP@:ÍYDá‚`¦ˆÊ“óÖÑǰŠ5%”)¡L õ@Šs¡˜Ûãó{ÔgJ(SBåÏèmJ(SB™Ê”P©„
+nÿÚ=¡V:$‡(¶¹ž¿üÝ,‹S,d‹&ÉÝLÒ4Ñ5
+endstream endobj 182 0 obj <</Filter[/FlateDecode]/Length 16119>>stream
+H‰ìWkoÛÈý.@ÿaú!@ü!ÚrÈáE>Sëİ]‹B`,Æa+“%e7ýõ=w†/Éò#Þ¤M»Ò@5CÞ™{:»x.ê÷Å+wÆÙtòâEÜùºnŽ™™f'ËåfµnhêåùbÆé©ð$˜·OþT4«²®Ž™3nW3zÿe¸¸)«²}ùˆ½<¢¥Ër½,°xU/ëæ}ýÛ,/úm!&É×XV?¸ü‡sÍô±tÙÙ©y$¯>å«Uù/< |7pi2ª7Õ¢¬®£ú·cÆ™r™Ç¦¸ Å¿–çÅêÁ'’újsST볦¾*V«˜Nµ:fñç¼b§ù5Vrö·b¹¬eÑ2¿ú'Þ O¼yV. (y“¯™2*‡'îܼün…· €îͼšŸÜ`ê¢X¯qÈ6¿ŽÆ[ÒÁh¼ü弸¶‹¿µ’/‹›Û%€1*x™y êã:ºïÅÉÌcBøLLCW_wGÔ->•ůÇìM]­Na³¾°ØrG2åíüùfY4ïªr³ûfN[UOëE±ÄãÃûÙ27š!†kûÄeÞ\k˜¤^nÖ†2ïÖÞln~Ì?¾h7y{[T—õOæœÚ9ŒÆYÀ„
+ —sŸ‰Àì!=h+ÌV‚µ¿­X’A:ÙŠÀ?ƒ=Þ6åuYw‡Só×M¹ŒñLvWÚdŒ¾ºû¶'…ÞëuQuGÎ<>œÏN/hß´ZÄõ á¿2Ô…©+°`Y_·«Ã³›ÛV31‡¹Îš²"ÁÓÉ»ÌÏ–,¾nêÍíIõ¡žN^Zß½lò+<ÉÞ¾ÿGqµ†¶ÃÝŦ\pÁÛ£GD-ó*o˜Y8bíäå'¬ä8³ïae˜{ŠØ¤ø
+x Š¢0ÒQ©ÈUe„“FnäD"âa¦aBH…a¨Ã T>h-C7©BriT':Ö‘ÆCZë
+ñ¡¨ê,»–µþ ‡m}cÙÇlk­;Ø7Øcߌlkllì+[ß·Þ¯ŒƒÞÂ] Hwl,FvvMQ0XÛÚ»³t¸eé¤i7þŠÉ}Å£ÛÙgš¾=‚ÄpƱh_Þ±ÍQÚÆ â©g"Pß(:°mËRâhÐfpÓDÑþ6ט‚¿3¾i
+CÃBj ©!¤ì‚3¤¸–™Ð»è£Á(Ä 0‰¶ñÀ2yLL1q‰ß P©@B¡Ô•H÷Ê÷•ÉC‘Ü—ÉÚÚ±+Œ|“­º²ˆ÷¥aÔǪ-Ž%4và~’Âg[Œÿ„@%
+vŽ¿ù’uÓÄĽó8ˆ»ËEÑsq›z\*öíͽ…"568éý 븱Ùnmtß°¶ÍÐÖÀ˜~ÛÚè¾m½ÛÞøöbëNôW«{wuzÿè‹iH$d,:öjqê®^;üþj=ʆª/¾éK˜â
+‰ºÇW·yw%D–âÉŽ>ä‹ÏK–£t‰T‰„Ù§Ëç'˧¥ÊQ¢y:éDZ%F3Òíßì—MnÝH„÷|‡9@‹,Ö’ÅŸ9Io{1÷_LDdV>ROÝm÷èÍ0É$>²22ò ¾Ýo¸^–(½©¹
+<‡ÍSàªóà‰ðLf O†gÃÓa qF<%\8£]§E¼Ø”+WUѹñä„7z¿Î¬ãsáŽo?ó“ú‘jï…;¾ÿt{¯‡§âÍ€ àEŒ`ö"ÿ4Õ®PwàPÑ¢EÃ
+®lÞ< ás8Ò?s"ަ •Nlô{ |_èkðkøk
+ „ï(ì u
+ßAø…Áå†Á‚_,
+.zù‘jR—Š [Ñ.ÙíjªMtçñí:’]òæHì)¸n–óÒ{“ü—5È…/91½øÓ‘ya²äÌUîÜÃÌ"—¦OgyõD)4 ŒëG#Ê·y7Ý›þM¯án_øÄU´pÇûÿןªòUáŽ_ý|ùÁšßë-þ>JÊßFÇþ×F«\±VþÞ ‡œ¿¼Å’ hþΊ¹.þQ×óÇÛ•©ŽÓ¿¦ù£Îóí‰~í}=ÈYKc~yÇ”Ë0óŽ ¬*ów*¸iͼãøƒËŸÓݯºåOF¾ÿç·ß~@ö§Ÿ AË ¯}¼^v®û` ‘IÀ$·X˜+ì¶¹±­,3Õ†zôñ„Ó®²ï˜=¡Q0xýçh¸i…³,. ¬ °Ó©³ie­©K(JHÅ0agñ ¥×_`Ïß¾¾¼#ñÈÐÝ?YO|šã:RW¡w…ÌíY`Ÿ¼Æ¨/ÞèÂÄÛ;? È
+„żª¨·)î5E¾Ýc”KþžÄ󞲌‘Ä2¼ég Õ;Ù[­þf›¿Ý®ÕurÚô–£&Ð>4
+§º³TME7ä)¤*ix’vM³MZ½´XèÔ¦­Ó¡-˜1”gkÅÌ·uÓÅšÕæ¾T´R_)£VJV¦±•²Â¯±q~vå£ ÇÏ 5)[-Ä›7§ã8l5Á•†€*Š øpÜ
+µõe]¦.”=¨ßºÙ¥´Ø ÚêU\yVZP'Uh5Ý"hŠ j5ôR,íu>J‡%ÒÔwëS̉MÉbóqÄd¬þl}*FŸˆOÜŠû?ÙÕï¿>¯)žzßn:§Æ±Ÿ¤ñ1Ô}„®k׳tl]»§+ÖTZſŨ\ÙéüÍ7±9G¬äŦ™À+V•>¹ŒNÊKRÀÆCƒh
+K®ŒG&v“¨É©7ys¢ß>ó¹N©ŸSÕ9•ðƒÉOŠHÒ}àuV¯Óz4ë“þ~^¯4“u^J28«ËÏê~R·SúþM§4¾ŸRœPyœ‹Éé'Ñ"Ï Ëà,Š'™žb”` @É„ã½k$ˆÑ4Sšba`@Ëp{âðÁ}3YÞÃ+ÏhÁ(‡¢3U9Ñ,¢÷Ðuè6¶oÖØ4¶eNŸ›>5xk›ÍMŸšÕ7‰æÅ§Åf…;ã™ï8œ Î…¦½¶-`½¶.«¿Þ[vÖzJõ»s«M4½{çØ7tÆ:çÙúîʶnY§Zt‰Äʽ?ïçiJ Ê4%MÒbÏR–¤˜¢6¥¨½§(ÏPÉ
+Éi¡T#=5§U®ŒË“e¥ìÔºà4\y5Ù÷!Ç»èˆðÐQn9ÉEg¹Xqž5¢mè—Q-¹–>ÊÕ)ÅßáÖ3iœ pwtÒ´_ŒwI¼Ü@KPïª-eìÛÂ}ùr›Wó{ÚuĽuá®ßdöYÉ7œ[2ûî³ÏîŸoOП¢?Éæ[´þq‡]§—íÝÎè¬Ñ+y™…e¯ÙË¡Á·{Ѧg©‰ß¿9á[ùšì/zƇŸ¯ëê¥40ôÓ‹TU<WµHVCd«ÙÓUU¾Rºš/ÏW“'¬b {¡Áyh'RÖ œ5)i-žµ¶Ðú:ÏÒùo®ï‹3,u'W÷âº6URõ办j®®då0éx´,5›†‹˜Áô»G&<•M"”—nk(lÿ¼Q†K€=Ži¤©fÏ»–hñh¸á¡¦_i@‰×DW…·.pÙUŽ»É÷²€(Oz3o§æ•i2pp.ZC•¿7y=Å{j+Òg’veöΪ·xܪÝÑÔaëñÉíÂ]¬N'¹XV¿ÙñU¯ÚP-ú~ÒÙ{tšýOÚl³4°È/×"Y¶¢I]'÷¤±±¼6I“’¨íZ¥•*½˜?6Aäá.)§„‚Æ[%÷ÌÉ…;Ê=ÍAwQsR»ª×(¹îòÑ=ïÞ{ìݵ¾®êéÎ^NøEï!»·‰PØ· =Kê–Í O úuù ÚöùÛoógÓ—uîUg­3ö©ãÌŸ9œN×¶Kß,6o}£h›ø&Éš´¢£áœisÜfÌ' œjÛ¢oбOXlˆ×tÙ|=7Ãs+`¶àææÞgx5=Z¾~üi„ÛvíÞ*W…SvO Ù¸w¾ó¸;ä5ª¦¨9J'îYÞ­§3Ëf–Ër0‘QÑ)¬9UÏ^‹§.¸”2×+oYÎÚšzº*NO³ç©ž¤†ÈOGOMð½-ÒRq®š#¥ž‚"÷ZªM¼E⪑"òbBiˆÀ&ÑnPZ¹ª­©#R Él¬"´R-êZ†Éb&™$·Å4Ì4—¯½Ã™}×dÚ¤V§÷ÕgÚ&|vŽÏÎò=û¤Nõ¢«Á“ÐåhœßkjÚ¬Dl[ß |È~+SHèEð:J^¦¯Á*ö²]”d:²ê»½ïz?Úàþø:?tžÀàŽ“Ô׫ˆ‰ôx¹*­^W§šY@›Æ>5jzä5ß*GM¯ÂÓ­Æ[ ¯2†‹:u< ^ò~µ·Úþ êÙ¯–·‘+º7ààÆÀÌF¨ë5;–HÈÎH6YFºc4’t
+ÌR™ÀÜg/ÈÌ•‰3eÒdÆÊ|å:W±N“«ST&S5d®“1‰>GQµa†²¢éš
+/ð
+øçšÆŽâz²øùò…ÆPKDtt½N/ú(+.Ùî<ßßIþØ€
+C\$lK»í1ÄQ.`9ŒåÑîn0ƒ1šŸA+ÅE?¾÷áÓ-×Ì¿sAá¬,ßcLpzàç<¤1¸°£S)â¡)†ÕeI385${0@Àfs7X¬ì
+V†ˆŸFSc, )ÜÈï§uðüZ¾}Qï§ËBÞ, °ÙÕ +»¢q6q{Ôf"wí
+ÏÈw †å¥‘ú,Òʃ£ø› ^ëU[{tklŒ3}œÇUb#‚a Œ%,KLÜ„ /ñ"Õp±H¼Ð/Ü>`0üa;0\5`xk’¨‡xÁ€Wã…“HWâÅQÆZã›‘Øæ$²E jŒh³ˆÄ
+‹Õ¹¶„XÃV–@µÐ9ÕÈa
+žNˆº†©Ðq• [b‘[@YC—Þ ¬`ì„2_S@<ÃÚ´A\-Ä£s_9ïëE˜ÈKgŒ-gìX˜8ñÆÄÃÓˆ(x¸‚ˆÑˆ :GDéxØ#â(&®!¢à¡!â{˜h¨hìÒø¥ábÝá¢0 ⨰LP¸EƲC†îè8áÃW|ìÑ1W ½ìØGu|\"ÄmprÂÊ1ÀÄ 7{ìL 5g˜¸Ñëÿº¢Þ”©ek] ‰íãaÅKÆ;×D »ò1MŽ+x&𠖉䢂è ]ª»D.™l׈†©+0jEí9‰t@_æ Íc!"
+<Î@e:0À¾ˆµÀ­6J¯àçhÎ@uºPî€v ÔkÍÙB;1 8rÌŽ“â™p1Aø8§ï o˜xÃÄ&þ
+!𳄇Œ¹¿žÁÂõ & ì”ÁRMaó¸
+‰ê™HK¶P5W´Ÿ–/ÎJÖhy£dŽö#…CO!QØsêi¤Ô±Ö,É„?‹0îÚSŠ&6’V0ÍøÛ
+?;É.L/^X;HЉÂⓤæ&f¤ÄY¾Œ–|ăN@œèÕ!IÞI¢Y0tYGD’¶V°4Z¿9·vj§ßºŸâµß§sÕrší„¥°¢Ùû)ßr^9}»éÃéÞØ«^cÅËw•+»ùÄéžÝ=±íž~ËŠ§w_^ÛþÍt?™’]‹f6™‘¼…çÙ:øŸxž­ãÿ¹çÙ:øŸö< yp™ô™tšôšt›ô›tœôœtôtžôžtŸš#JJJJ'J/Š=‘<f)=)])}))½)ݩ氢[ì;Æž±kì;ÇÞ±{ìf=dÙGv’½Ôyô“eOÙUö•eoÙ]ö—fÙeö™F'8Ö$tœ=g×ga³,n—~7 ÓA€ö‰ƒîàåáëT+õнB-ßËõkÙVXÑÔÒ½T+äR§×ÜëX+÷’¯„Þ–n¦ÞÓØ;Ûºë{]ïtë¶í=¯}ÇŠºõ¿”  !aéx˜;*2ò¥Ë…ÔÅàÄ,—Å5·6\ìï`ºF-Æ Ž ïK/zƒÅŠ™ñÒÀw•’¯º[ƒiמ~¥]`Æ£¯yœÛ¬÷jëcâuëƒûgÖG„6ˆì–
+µü¦¶r]j+»ª4ov"t.?v#Wf'n•ü»Pª.FVp²Ã$†àHÙ©§°‘rÊ÷"‚M±¦LGˆó$¢¼R;DнXºIìÍ\±r´q4qbáªyÛZ7±m4mmw ­ D6Wi΀òH}¤@R!)‘Ô˜À72¾–yå0a¤t·‘ãˆóTmÂ0s´˜±eYéC„8à*…Z¨§‘Q¡&ò+gs¹Ëõüµ<Só³%,ŽOT~¦¦}ujµB‚Jènb›„À‚PÕ(¤¤…|¡
+OÁñ"5VD†#f
+Ú@žm*Ìê%½*kt
+[š ‘>åt‡÷’#â[Àƒ.‰õUËJÅ»Œ"óÙ¨Ù-Á6·]3Eê#zFù/¹uQo²Ü« Õ^çSK:µ[:u›òß­ðdÅR ãSu9î’ôJ΋›ŒW^Kw¾æºIrSÝ
+lÑ1
+á £J ”¸­£0HtdVü™Ã€Ñµï¡²Ž{¦Æ—VÜY¨Ëj3»7â/°áO˜p°ÀƆ_3á»y|SÕ7U}SÕ?‡ª"DÄ‹w>ÎäÓ#ïrÜ‹½¢ª¯Y¦ªê ³Õøg ·Qù¶ØŸXëÇ'Ä~´áéœF ‘FPi#Ódª„N­ª¯”: ©¿,Djµâ{ ¹f@x‚Å7‚u•bÆ€$»Íj¡Y'D1H¹P-8M9ƒQ³;ºÍn!mç v¢7AüŽ`×,H¥Ò˜ tÊ
+26f[µAÈ9FþÇ~Ùô¸+Qt߀ÿƒ7f6 Q%qð6¢>³¼Õ[4t#Èbz‘™ÿwXEJ”ew’N0+›H`8±,U{ë¿\P¢#ØÊn×1¼'¥N¬l´ {^ð¸ú fLüêÊLŸ¨ :¨™“‘ž6òsz‚”¡D‘p´§(s”H‚£L’’l" –$Äe𔧍kLu+W^
+™‡:ñ°'"ò°¡<d"¾ÆD¦"»Kö—ÌŲãB† '.}¦ß‘1ïÈ0+mâcOÇ$Σ|lîS­| q'+10±q³ggÈÔ\0ñ“^ÿêMq.—’f„mÚdWÇãŠGÇ»œ‰ÓaÕPžeÕ–#É:é Ó ŒìöiÑXÄÅxíÓŠ±À¨•iç!r‚Dƒú<ÌÍÐfa¬ë 05C’…œ^F¶†
+úíéàÄ„1L®žÑÀ$+Âpæ–30$âú2ËúÂêrz@(ݺ°ŒyU!€[YQÚ5´/²*Œë=HwHÆÉÒû®0Ï/ãü¬þ}q¾wÖ;ê⨎¥Ff¨ÐÑŒ¦F6P½ž¶T2ÆËeV(uF³#ÚP1÷HÕ[jßÐÅW¨ÆFÜ` ;==jéTC¿jºVá#3éã@7{zÚÒÙ†þÖt™{t ¾4Ñ÷@÷= tààÁâe&-ºzèâ¡k‡.ºrè¡ë÷(ë†.²h¤5C— ]1tÁÐõB— ]-X, »ƒríê‰Ú¢¨’£ Ê‚RZTÓÄyTw&îLÜ™¸3ñML4çOዬ¥ÕcÐÖœßx£§>»êlªGj¿þçéáÃÓû¾þŽ¿Û9Æ6ÿ­¥“½•7OÉ_™¶9Wrä{Þ=V®)ö_Ž¿H
+²‡Æ*å:i¥´VR­T/­˜ŽpêvmÔÔ.šó#>€¨uFø®+§†ïÖ<Þô]åú>~R×z5ój7z~üj:Šªª­ë6N‘–‘*°]ëüîJ1]ü?Lu'£§­y—ÛþÆ~Âå~x\9{}\ñ9nËq•G€‘K6Ó'[ ¤‰©Zð;CÊ œ$Ž–äÑ“@’H¤f"—,¸™!©°Á’YxL9.xprŽŒNF†Œùbdt ¡•Ã"Òàhžôvc£apt ŸFÇ”†Gu ­ŒŸ†…-I,›uœô6Ž” C%z …ˆcE 7†KøL D=â áࢌ›8px|,#Ž8x&Òb%q
+qŒ°óË#‘qÆÞ q’©ŽP: Ìc 49C"iM<mªmfbY–y™HAVŒ^'ñ?†ûj^æ™ ;JÜõ)êºsMЏE¼ç—8àïã=|ç€ÞñË€O½ßŒø¾Ã%~añ ÷à%ž g\tx–þÖt™{d‡šéùˆK @Ñ´¸W5dTlT3”Œ¸ÜÐx¨é`Çá–ÉhØ(œqÂ!ò÷–{Ä9[¸k ¯†ÂŠmkÆaGÈ0›N[hmpâv+v¯’Gˆ ›4 åÚ-ÔµµÄDz€ö²ž:YgùzUÝ™¸3qgâÎÄ71Ñœ?<…/ÂFÞGÖý$ï+yÑ×c·Gw ݇t7¢0\Ñ¥­I7(ݦòn%±5n]iÿš¤çcºø ½÷Òÿ^R­€ '$4’®jåAˆX$‰M’ÜÃJFf#Ó‘ùX A¶…~eD)ù&N®‘Bz-HJ”‘’=%{6 ÃrÅ•Œ#%7©€‰IÒ”2±QQp¡ Nýâr/9ì-»½¦H¬[ïú”rÛ‹6)#kÍ¡“e/ÉßÚÏnßS’¸tµè«j?ì:›õ¯{»u7÷—Ÿ.¼ ÷X»|Íb§7G8x~a®ðUOHŽpÕN×]aç — ¬Ñ²;Px˜PÔ#IäõFDÁÄe¯‡bké×Sn8ÛÞ³íB+\Ѧ­)QPp $L”‚ƒ¬îx¸Ó•†yGC/4¨Ò7­g6µg½gÅãe‰ˆ·™ÈTlúW*Ž“‚+^L‹o¥¢¿5)`B=!rQRqËJoÈî'Fø>&Š”pÈ$Í1”Ù &ƒ†TPɬ 4¸C<–\Äyína¤æVfðôÜÑ銮Žt³£‡–œé™§SŽ:3ÑO/]0t V Þ=•57Ô;ª0V;ÖZ]7VY7VWj+•U§J‹ÕÙ+µ<=ÜrÙ]%‡uúæJnµÌõÔšêmÒùI/®ø“__¿bf‚·†ç²<«ã¹;jà©E *ÕYxLC½,usÔ¯£Žžz¨ðBQ õ¶TÝÁ3s.xzèÉDgÊgè“E Ž®uôΣ’€Z&ú¹PfƒŠ,jrtº£ßž®z?¡8(£ Z¸pÐÑÁˆG§b&”»Ð0ƒ’-Švh»Cåµt?á
+_þpOóëóï_>>~yý'}^>}~ÍŸývþ忯¯ÿzy>JMÛÿzz¸þ¹<Ux–îýGÖ”(Ä馯Kñ–¹é(ÈBŽ¥ UŽ“Èñ¶ GYHR¢}’å*Ê€(÷²Ü„¹Isg!OÊúá
+‘n2E¨²ÞYvš$Ôÿs_-¹‘ëHpÿ€>ÈlâŸ\R”tÿ#Mdð#J¥¶Ûváa0J¸,W•©d222¢·jmVi×Ö°¢ÄWC4®´®4¯´¯4°´p`×FF JU$Õ…RRQ©Ç_züÌaHÂýÕ¶ÀV¼¾g)c«œõ$í‘B7’Âå§¿fþôWˆb¬XMF!Ñ—fF7RþFù|Hˆ”¦¤a­hT GA}µÞ"¿=äxäpˆå"Í3íÎÆ1!Ì$ò]kÊx¹Ä"9
+{/£D- UE®„ð–"~%,1ì€á0U½×¼
+x5…ç §39ŵfœî°¢ž,Âü ;Ô|&¶™‹n3Üø +ö{ùÌݾoÇï~Ö ó?Êsfú/ûðwû¼¡ú7+A¬é §s-—vßmFçSÖŸó¸XÌH“é0Ò F›ØšÍ‚±—Ñ5ýãÑM¥1ôÜŽî+h&`=Ñ}j1X5 µ¤ãvC?¯hÙ„ã¢Û-:_ƒ°ÁV(hË žˆà æ°`œ(ไ̲að¯àšB à2
+œ#QÑ‘Ñ#H#âa„áj`ÅŽ#;¡éÄ”ÈR'¾&”k-€µó*#Ö)x`¯²â"G=‡ŽªÂN›8+=Ø¿È;à«(Å¢ÅÐzooX¬‰G£”øP+ëÔ³
+–Ü%²3ü’øÜ €Q?ò7'ð7>à×?†;gÁ
+$¤™`ÚÚ>Sì¤o}'ØZÒƒ6O:š SHhotÏ&vÒ- él‚´§¬þòù¯Ãfx}~%èþüªD2Ãg¦;½¾™ðîtÿžðnTö.Â…¢mÔõIùü/g€ç?çk¯ô£u ¦v°K&°ƒ“]. Í„ó”›
+°6€·Ìàž
+¼…ð‰B1MpÁ‡bÈa  ´àÐMtÑÇSÌq…ÙýîYPb“lò)¤˜rZÓ'v
+cm‘‰[†oá–]“mLu Öt—ö˜~‘€ÎBV#3#Ö
+RÏàÀ&ü/ûå¶£6 EÑ÷‘æ_’‹óhrùÿOêÚÛ± ` }iÕX•*†˜ÄÇ>{­žDmé‹ Û¶b.kâµ"}3Ð=û±£b¸líŠí¹Pĉ.ImuÜïèÀ'úpIÑ•)ðDÊG:u ó{úvK÷n8&[z¡ô=Òá¾§ß·ôý†£Ä3²Ý6ÅD.Dò!ÀÊ‹–ìh8raa»LpI$aIÓ“8-ÉÓp4+ŽÇÂ6šÈ¦HFñŒN¬Žü:‘dµ8‹í<›Ï"‰Ì€™±¹RÛ;±}£ÖoU›Z‡Ãj\o„„ŠoõþýŠSsj½UýãšßTýûëR÷7ªþ¤îÔzWù§uYùí ¡Kæ'9mªN:4(¨Ìph»ô‡zìµò£Û?ÙUöˆìx,²ãS‘ýÝ‹5cÆÇ°Gí¯¿çÁŒwб/ãÑŒÏî9žñ'ßUÛçe/ã9œmw=Õ˜½È$•I8
+ÑËœô¿|¡1u®Œ[ÁªkÌâ˜&­™¬Vް²óÉr#½é6½! 8ö£?™èf0[uµžo;éj­<•'Xx¤<’ž¬=³[΢æc.T+J‹% ’I„¤B“IGlµZ‰*=š~B_OZ´‰Q°I¢©Eœ$2“gÖ%©ÒÉÑ©‹ŽëÆ-Mj·b:’éûË$ÜX¢¤Q)©”dJ:ݼEf‹¥JZu[Õz«g[ê˜Tô¼!´ª–pÙ
+j(VT£‹p6 !º gp6Õ´hžŠd¯tVK­ì©¬©Vó¼KΫ˜ÄrðšY(Y©¬”W( å´)ee©lY‹ÁëpNRÉ»7gÌRIàE€gk‘ÊŽˆ „e$6g‹eÅ‹H-;–2´’Ë™è]õòl—ÆÚQ–˜ŽÍ™ð^Ù¼’Í–b¡›„|$ì'B™VKgÃ&k7ñIò3аÌ+Ç„úhÛ²™:Ê<çG`ƒ<VÊÁ¢j›±xx‹?èªæî‘”ãky{À5Ì8¿5¦Wƒo?;¿=â~0cüÁ>˜ñZã~>†ãÁŒþ²Óûq§žy…óäg̳d½ÌZ¹)åN'-’ì¶©HdÈ,ŽY³,Q,’˜õ0ká¸Ao(:˜E0+`Ñ¿"~Yù²ìeÑËŠP&½+bW¤®è\¹,q£ÁYè<¸mvh!´¤)a´Fe˜Ng žl€ÑX-°Z ®…×l!¶ »1h׊9-ý÷—oœ ÝÂn·Ð[ð-ü€ ÁáÂpxó_2ÿEɼW šrßË ˆ5fâ?¬OÂÜǾåõ,u=ðÙ‘sü™ùþ. éûC ácÿÆÛR¿þJºv¨tÏ]ˆÒ#H¿Q†ÜP8H+G
+äá€õÆsÁ†#y;´±šc,Ôé9Ú#GܨCƒ4èì0g¤Aœ7Ì©
+ètn×u
+endstream endobj 183 0 obj <</Filter[/FlateDecode]/Length 17413>>stream
+H‰ì—mk$ÇÇß/Ìw˜7ß ‹~~0!ÐÝÓclÇä0˜ R„Bn“è΄|ûü«º{wVZ݃ï$ÜÒŽz5=]Õ¿þWUTQG³ÑñOˆ>Ƙð“cÁÏë´K"®I&T2É%›|Š)à'§”JZÒšjYe™u60›}v9ä”éZr͵ˆ"aºØb¦]ñ%ÀbÉ…®¥¬e]Ä¢`f±0¿XZÊB×Z%LW[Mu5ÀR-°ºÊUÃì´[ýêÖ0í~?í~7íÄg¾þ—f1@<¶fŸ1óŒédžÛzÆä³&ÎÛ´«ë3öܵ<c¥fìŸ- ™¸6 \EEXÏôrH!†|pÁtPAáW_ýâ‹Ï>ùèƒ÷Þyë×^yé±b„²ºÅ—]rÑçsÖ§rÒ „´àb³M6XoµÖXm••V °Õ,¦à$»`ü´3ÎXcŒ6ÊH#àª]tÖIG´×N[m´ÖJK-èŠcRTVIE”WNYe”VJI%ä:ípXyˆ{Ñüž°/^°/Í›æÏð¨ùÔ¼j~5ÏØ·iïšÉFøØ¼l~O›¯ÍÛæïð>ÃãæsóZ!ðüà{ó¾ùß"Ðb0¢Àqè‘h±hÑñ@D¦b‚¨p Ì|q•¦Ý/8!—tB´œÅ¥‰œÂ1J9|Ap諨¤õôÏ^Øf5[1 šîå´»¸ú<³å7m]!Ðó1*-"Ýx#T䉤䛨¬¡O)b†nŒ”Þµy¤8]×§ÏFëÊØí‹ô½ªû›o®oîo÷oûH¾½»ß±oæ¯~Þï¯_ßÞÌw}hö/¦Ý¹Q¸¬æ|Ãûq”j)öÔ s`3ˆK"‹"±J,[*©±H ½ 2Ê$3åÀ^åªð×´åØx"€È@c$+€‘€Ç
+’4È¡†²ÄŠå·ö‘ÚF´ŒÜ,R£[‹ˆQÌ=$'qc¸”
+y—¨‘Õ{S! ™ÛжP ÄâѺCÛ³¢XÐOf¤±¤=7?†´"Ü\PÑê"°÷¨©±Ô˜KV±¬˜yÁ2ÞЈ÷:¼Ý`
+«hV+ÖV°Æ„µ¬ØQ[‹æVAX2Y…G~%xࣃ§þ*x &a+bP‰„xïp& Ή¹8Ggªà„%D/¼¯A¼?²‘y_ƒšgÛÈÄieÞÝÈ€²neZ#¢È Ütâȧ³…íÄi@Èq6êipj u8â _˜øÂÄ&>ˆ 3_\ånKÅ¥·HŸ³¸tˆhÐ|#ð6ÜD!A+¸µbÆóôäËiwqõÑæ7ô6*4=õìM3~lû¶|Þ–‘ï/Òwöªîo¾}¸¾¹¿Ý¿í#ùöî~?ƾ™¿úy¿¿~}{3ßõ¡9ªÓîì0û”o8zT˜²çf1Û¿o€íEθ3Ó§†5oÖi™4J¥q¯6¶-«Ú_òl+¡{á{Q¸¸¢ÂŠÊªVTQIõ¸ ¢¡T@–šƒÖ$n
+¨%h "5±—Tµ·£1Œ½°ªTþÕA(?+?b‚F½Î"d†
+¡Q
+å^õ‚ˆ‹",–
+#”ü.Oõ=d,AÎPkAØj]!sX> µÞÊÕïÝ24 "‰Iyuƒª! §W}‡-ï4z
+ÛöyÆò;,ÚAÞ£ŒŸq–pìËoñS «ë²8„qHãÇ!C ‡D‘„L²H™ÄùhRyË!—C0‡dѲ9„“¥ó© b³•€h]ê ¬#CŠQv«31d:§¼á¯xèœ8~–éºdj%£ß>éå½­òa6«¢¡!8# Ÿ2Í'Ëi8/§áKöQNY‚Z_·vÒ,Dî EÔÝ-,G‚û;Þç/¥ÖåA–°Ë†{=ÏÝ^>ô{Š;¾&Nå)“<A PÈø™ß¢ð¨"*‚ŒÊ`!å˜vPwâÌ zpÞsOQUê ýŠ|ðT~?Óõ_›‘’ˆè‰åà ê1‡º *4º2{Á¡¯ÜãJÈ€æN×BHþ%ÓUH‹¡±ØXˆ‰ÂùÆF@h RÓAZ£x¡3 QjI`¤€–
+¿Ý‚­yç< ÆR%Y}\z¥Q3Ñ
+ÒkòÌÁ¹ j&Í}í
+|^jõ¶3|ÑTÐg¤öH„«8ßIf`þéë×l_*Þ:È¥«\Â}«¶wÒ~דÜPLÒÊeÌED:]ˆ@QŸJ8Wÿ {5¤‡'huÂ7‚ý^^ñιM~S.³Ë…Ø'¢;ìB{;øÌ»¾ÅæçÃ-bmÿï YìwøçOÿúÇâúêÛÏŸÿöñãß%}ý)=Ð0Åþüéw?Í?×É÷~÷Œ˜íYˆ ‚M5«c¾¡:
+^<Æ¿®xŒ²b2ÜInÁ“á³Zó']oÚè¨4Í’^‹ý@ºíÙ\gºÌîWg ø¢”W¾wÊS÷B3¼†mª6½6?SÁW
+eš§eƒÑC¯%Çab¿®¦ò°ƒ™ÅªªA@è®IÌ„<s`}æÜŠs[E:cî©á!–`@»½¥µæ ÷‹“ê@Öq7ã/9H9‡½¹·`VœÂm:XJrZN-Š´ð½NΛù¡®Å÷6p’
+bLÊ‘³´L&DÛåΠÙX#nÖa&ÈQË¢[í:é6t¨Ôf Zíó˜nµ÷ðî÷(æíÀ©¬:²À„KÃg9Ì޾,y¥SfË{ã–N
+Õ âEPÕ#gkRp·Xýïf‰BPJó0¦©RÖÀÃÙALã~ÑÊ´R
+J÷Û0[òîǘ
+úè ㉠ÊG{€sì·¨¥Öätén‹¡ñWÕ¡Wà§œ„†„m¤ËŽcy1÷5Øä]*`Α¿1”´¦ï5G)˜‘I1G-G"FªÑˆÃ=ñR s0v¨Ì‘|e×;’È¿ÖØ—ƒº›C‰™­“DcÞyõ<-øWà³À[ ’˜¯µ-4rp¬„±ylæÑÙ‹“jšÎ,˜‹[Ô
+-™MÎÀα¼ J`-zYĔ֯Éþ
+‚˜ÁÐk4›(‡~UÞPïXP|·
+Ï+p,°ÑY¬ºîö6í6æÑÂcú‰£ÛäÿÐ]5i“¦ ìJ*ø·žmÝÿ<„ Uß̦Ÿî´Å‹$!Ûì 1€Wíê`_=JV ‚aaÍéøNkY[4z›®'
+ð/[¯>劰d2ÙÜdn-ÀæÏ L
+ßáü-´$Ó~`Ÿ59e3êÜì¦gw÷ê– ¿ö!ü´ˆ)‚ÀÁÒý*ˆíe7póá}$€µ9wä¼¾x– ” {¯:¨õ¥ ŒÐÇfä ]€\/Ha7 Oy¥ìlõN¥§k¿Æ¢ÛRçhm‚“2û¦^Ç=ÂŒtÍNµ¿µ`ÔGËEø¤M%¦|P8%õ÷Zg€Ïmn"ððC–n·›è<>t]¾×qxçÚèÓ×Nb"Ù6ç?aЊ¸Ôèæ0”[ʆ#"È ž,íБ3`ïÊvï,¹çÂÖ*¡ƒlGKíà‘€±ŒDoÊó§–Xsi~š›`÷}åï6Ä\,ûæïÏkß`xõ>Ìw–}ˆc{þŽ-.Ü{”l„A°tk‰Öú]HË'Êq«SF†.>WiwÕ!r ȶvü~¬íàêe<ÿý=ÒJ6k,$7Õ'±i6Ñoá¢ä\7×\¸P€{S‘´*`'éÚÄòìÈ6ÍÎ×ZJQ4éÍ` ñÁATeC—0-
+·Þé+AÜ•ê%~h±ëÚµªÀ«æ*ô“€™Ṽ!›b@z!(›$ÑÒ~ cm¶ÒQ&îèðc;RîŒ+ÞnÀóO|„=½®6e[œÇËOïMy2ÄÕÜóéf«Ø¡«ÆÝh_¿á·°&ãAÆô¾´¬;{>bTO°ýð!|¥ýʈq3è~mä×`Øôám­KFPÖ&¶°Y©~ûšûX…g]6ÊG䲶ËD¤µxc·JÐìVFÞøOrN*,œ/­Q[ˆs‰}.Û›iÄ’FÏ=[˜3
+é‡A¸¼ôÈܺð=ÖÕ1Àg+ñ¹cÊõbl.qjÞ
+Ðï6‹Ô8¬BÞ¡+³¨ÂújzŸ¡Oê.üZÛ””v=Àž{âmw;Âæ9kËÁ«¸Õ˜ËÀa‘MÒÆ“ÃÚ¤³eÜõíà±-Ä5Ûçu„b Î³àxôàDæŒX5Š&ùØá©Bmáâ Ôêä,5U¨NÞ†Gd¤„0#¬JåU¹Ì;†±¯ûœ` _¶p¾Üx´P7é Ö²þmž…RãkG¶:áέ֋(}PÛ<f„ût:]€Úç:ç~)Ü…Æw.io„Ü_%ˆ‚yòsè¡äˈ!:~$#,©¤¥šW…\už5Sš—ªm<9„’°1k“‡ëb;l·ö­ºô#¼@©Ñ€“,>MÆáéÎÕ°xKûÔíà%•žTV}Ë zëµE„Ò…_æ
+ }eæ$=ÒÚϽÚ&%äB·Ï͘êaÐÁ9)Ûpçq#œö.çú_Nhßó°žÉüÁÛ/ÿMÜÐö›q$ƒc²²Ã¤nFõÒR?·˜º# ¹u >c{„5${]¿ëÃiP¯kU’C‚2¬½n„²•5[ƒÝwÀ2èKÎé£k—»>ÇÛêY3‰‘¢4¶v|7R[#Hâ mä*ZÒã
+ÌׯYehF(õ‰À%Ž{Ì)?Õl."Y–­ ¹Ðy;.ñ/ÝÕ×ãÕqCß‘ø¿—H µdÆ3ž?í>¤ÝªUÓTHU!تîÑ"¾}ŽÇÇsovAHh9Ìúz<öñ9Á”È¡9ùá‰5Cê<'Ïj*§—ž%r«y?(×J&²ójyœó GJã¾h®5¬-Ô¤ +ÇêÞh Ä5.;3>g•Ùw»væ ‡Š2\?}NrcØo1Ì3Å«ŸsÀÔŽøœª»
+€E#¤Â°f“TN¿žS«§&sɬš1i#Kôn96ÆFsñ``‹Aî²³Âóõ8™Ë‰+q#~.v4è¯*‡Æ5ÕE°í
+qzâ«À¥5^zsåÜŽµ(;ÄÕb‹o(F_ý¸v¨ƒ‡42¼Çd#‚«½$‹ß%oÿºV¯äxår%o*Iµ$Ó©Æn]ô Ù™×AQaIådtærŠü[7-yG
+Xæ¢FjA4,™{#Ã0]ÌÙ½.G1Öê–&Ù5#@ _2&•F´U3·‘øÅ:=$nwŽÀY*vlçJ2®m–øÞì”üX©×˜zß} ¤©AŸKr0‚I¡‘3 aë ³£FØBü^nq·ÒB^4û½6O¸ƒË9.°ÃL¢Q2›I s ”ì>Õ@ØÅª-Jéì§XN½ë•öp±›]Þ{}KœS€Ö§›P°„V‚«› 4¡^x óI ¡G‰ƒ{Ø1pÙfWiÞS
+¹%!ØZâ%ROåˆSDÀrô͵;M'Á0k‚…Ú¶5Ài«éØ©#¤ºûl³_…lî1Çáaq²Äcf˜¡ˆP]¯¢Å"
+^-}âQ”`­)^LuåâLPL}Ž8;â÷×£x‡»,mïoœMNà
+¼‹0~÷ŠÆ-_AÖî
+^а÷RxyÊ.|n‰ñ:² ÍSø
+(W-Õ¯¼½Ñ4U½>³L®è1gÖÌÇ´—µôÐøÃtœƒÒ¢ë—nØN# <lªŒM iY?à9²€%Á‘¢øÌÓù”€Cóåù‡xÆT:[r¹Î›ûx5ýÕh«&9•Ïþbà¸vYB<v‘{‡3x{.ût
+{™dãxœ..ŽŽ° æÞê½ÜdDŽχ÷ÕÎaÔÁkõÕ_?ÿx÷Íû7wïÿwûúã§Ëï {ò§§—¯¿»ûøþöÇË“ïÞ½þpýâ¿×·o±KßýýӇ맗߬S/¾xêÛoxæ÷ö—í4{Ü-ŠžOϬjb› Üì-vYÒõoè;l$ü[l—á‡Û,ÙŠjÝ9"\Ž· Üċ߷‹`–_ù…öjG’è¶¹«|‡ íd‹$ø í 8RYpº¡ßÞ ¿Çç*«J£@Ò¨Ó4A°qd,]Ÿ ÚQVÚ-‚3§DýÁ0ÉÀNRð¶Î2ñ`Å\H®”,ßl…EÚ—
+ç$!. C`£Ï´?æf®]]µŽ­6Üÿ —©`X@Ý:I—ÓEÈ·=ý¹qXéAU4–²_Žs>>B@Ó8Õ=%c0\ñ‹ÖAÉA ‡+'¾B ݈‹|ä  ‰, Ç`+-Ò¾t0‘)Á‡A¸¹')sbqѹe€eâ-…?œAd¢(2<´oßðsãÄ6h‰ÈeôuÚ?)ÏÐê{GLÊß½á<ïM)íâtP0…G5¼g>X!Z§óby
+šÂ’m öºíKSûEãÖlð¨8­´mÜdcþ€½el+\Ó˜û8ÚÃøb0ÂÐI5ÛÊ\ÎVvr¦®ït>Æ• ÄS¾h—žè
+曾w¦HëàI!ÌšsÇ´ñõ`…l«˜Æ’‚‚¦±äƒ½²@{« wöÓ{¶â ö‡‚¬s«Â^ós‰¡kæuÔÆ§Ð÷’ƺ&Ü—Xq8¨ES$®}; taïK}½Ÿ‡U@©¯#—qózXè¢uPr°CR³Oí¾Ñâž—L뙃‚¦±$ƒ½´@ûÒÁDƤ¥#$NЧ0Œç^ÒFÈ8OW‡E?#ÙõCÏ®`‹p}‡]K2®Øl41ÿ8ñ¦fU–Mß:(_ÁèÀ–ÛEë äà—@p¥|=h!YK6©$M_I8{iö¥ƒê w•h`áVãb̹†Äܳõô,ÄU7ÁÙO·xvûX‡°½w'Ë »,Œ4Ç
+©ën³AS9MÝ…,{]×­Éh#¸s0ÅÑDC›XXÙÛ-YRPÐD–|c°Wæ¬/Lcvy;l½»wñ.ÒSã"b`»íü'ŒkLM3ººÆŠg¶·YR5˳€íI Ĭ´-¦ÏÑ®`H4Ò¼h”ü” ¯}êàUZ^mÚ•ÂÁLbM×Cc½ÆùáHœÅ×U°†íù[KÉ[_˜òúÈ
+}a&
+ÿiqwSºWý±²ë¬0N6[ò™°)r­’¶rêó]QÖ—Zñ8]œžß·ï;ŒLO!õ6ôß?˜i¬©ÆŽõRó®ÿ+Îß~óŠó o98¦ýϯÿáÿÃÿõç?õ¯¿üõë×î½ôß ÿc»œ‰·—ÒªÔ÷Í‚­,ÛÓ”+¶ÛâÅ·ïœ3bÜåœJòc(¿`„¿—'’ÒŸ‡@yí QlÈñî[AÙ–…àˆF
+O8‡Òœö­ƒL³Oì ÄþHÄc}©ÈGCJuðfMlZ?K%ª«‰f
+†n£¬ö¤  ä`"+ŽldqZ^laíŸ9(h"KÂ1ØKsÚ·Ÿ\A‘ÇêU|ÈZÖÉó9& l‰S+ME†(4‘ñræg0@8³ö¤ àIÁÆ­ç÷`Ýwý¼¨ž‚‚¦±äƒ½2§}©ðÁÜ4²ºé>ŠK¬8†|±vI7½5äšáï“(€RûÜ”ŸÁPˆÖi8§  ä`+²Ü%£…B£Éƒg9((9XÂ1ØK ´/>³‚r¼O{MƒT_Ça_x; e _áSÛà£tÐôÍ25=¸ìnÎOÚ
+ÉV8ºù¶ˆci1øM]d¼BŒª@«¾½‚aÊ‹ÖÁƒŸ“ásÊãä´¬QWƒ&üöÒí¥Ãç÷P~JÖ’“„ºˆD¼ÕºôÎö$Ãk$‰Ø‰¦c^¥ŒÏ:J)/NwFà8šIÛYYB3ЗdëÁº”ö-Âú—ß¹þý7/¤ÿ•èZHiáFWѾ¼Â=u²"ƒœêñÆ«œ ¨â{뼞c¨•{7_Á-ª{®Ñ:øXHŽÉEý0-žýœ3=sPP,áJsÚ·æ3×*Ê;•C[ùú¹ñ
+›&¥á7r“•¤v“×e¬=Ê›9÷g0>ÎóŽZ%apœGòúz°B0¢³ýx
+
+šº’o•ë[…O®£p°2Wy—ø¹qx³•EažG´Ä~ê”GmFPÊã¯zWx岞¬ŽIvDŠóÕ•V5Vˆ†/´g
+
+šÂ’o…9í[….£H#Õ¢‹`×5)À„Vª{ÐV¼¥eÈÚѪI\ªî(4‰k›í
+Æ ¯*±Ñ:xRð!SUâÙ¨}=XyùšrH–‚‚Â`ùÆ`¯,ÐÞ*|r­ÜèS¼œTÐXqÂf0†hœÊ5Ÿ¦qÆïÐ4Îy–+˜ÐXª±Ñ:(9ƒâÜM”v‘~å  ‰¬ ‡`/-оtøà2Z¨ã¼÷‹jw‘/ßsä,"ÒݦBGaJP
+,¼~ÐLüÄÍ‹ÖAÉÁ¯BR‰àJ¾ž¬¨¾RÐ4Ö|C°Wæ¬/>³Šò°Â˜/‹×ÔÕUO+žQ—ps¥û\Âcç
+ ©›J]WpG
+¹\´žL\…ÑNy~=HÙ'ù¾e  Xº1Ø sÖ[ƒîƒ8àœõØvTv­!scƒ•ž¥ )¯Ö:(åáÿè´unö’ڞ؃‘?{X¾öóæ´Pm±Axä  I, Ç`/-оtøàFr‚
+b 0~n˜¾iH\jíG5ʽJyT3Ð$VK‚q¿áCŸ¬Ž| CVûúz’¢RiWšÀšnöºí­Á'÷AÃ-ÊéåÔB++œr‰‰²ÎŽ4uc 
+Åí]-ÃÔáœRØK±HîŒòÏ+á¹^:m“ä“RÚ0¨SÚJ}¯JzðdŸ95IO×ÕÌ^‡S)Ô+ÏDÌq™Ë½K6¸AuêlÅy¬ím£]À¡A §å+m-=nÐ<VÁ®ØZSÚÇ'3 Ø[Š’³ÂÕÍeà E9öF¸SЯ«;P;¼/çQ\;´ÞŒAñ–Iì0Z£¦ »1lbµÐšr„›ÿC ¯w~à HxJΨ(ÎP¹Uÿ}æŽ{ RÁ¸êE¡i
+Ñ8#e)l+U[ã–BØ
+Z»ŸNG2
+ÛÏMŒÿÔ„Y©ÈwŒ[Ÿ|§¹¿.ìº6â7·!›‰‚Ÿ¡aÈm…åœç­Dkµ'ro—j¾d®˜PÜãFk kЯ!8–‚Tî+âhÑFÒ¯)4Y°+¶ÖíáÃqÆ’/˜*E3Yð4vÑÊ&הط[–C%ªÉõšo”+&$°¶ÓÈÔdÁáF›Û®£½†ƒ›„‰©Å"×J­/Çy˜ð`Ú9*9 Œ‹ô¶Ã #åÊbp»ø ʘCwò!nHíÍ<:])îw§¸‘ý7S>vz­¬£ùœ ™»¬Õ•ZWŽtwàɼ!É
+C’gpÁ{¹dÚR´ÑQ;·‡]§;PŽ×·âª¯¿£õà­AlUÀ'*¯•s±]»Õd슭5G{øð`ây;öMpCÌdÃUá®L×b®òÆ`Šƒ¶:¿±Qz>Ý?mçŸqì#±ÌãWç¿_qnÚîw4[Y¤+¶fãÑù3A¼9V ±UƒÞ‚»Ç­á}äC—‹ö$Þ ÷†÷¼÷¶×ϰpî´¼5¨µ‚Ûªçh.¨´Mƒê¯vÅÖš£=|x2èG–ßÙ\<ޱ-¯[«½r~ËYž–8f›êré¿PÜz)­¬A ¯A—1¡ÅósÜ40h.ףط¬´‡Oæ½{Ha¿Z4—¶äÏz õ(É9
+¥EªGØ
+>"\˜çwl°tÙñ™‚¸Û.
+TwÓ|f}ñÈ.)l´²f0A&Qy-´uL¾ÚW 2ƒ
+vÅ®5£=}x.‰Žo]bä§OO“ }b2Fû–)É)º•¨&GÚJ3V©¬@-G·z9RœA ̸þ¾€j0‹uÅ®-#==x0ŒX‡eèrŠ<nKŒlpow²€kËtm,ÁwbP YN±gÜý^6Z§uX`Ø:ÛÂzßó«¬TY¯/¶ÎíîÂsItpÓÕdý¨ÍbÁ1Ü£œv­I¡Ss Z|Å­ïN£Ô@V`T“ÅGHžÚ‹¯ø¸Üëï ȯb}±µåHɤ·‚+pjC\Hâ­á8#”MjàÉco~ÐÜ[Ô¬ãŠ1B¡d£55Øg;]éµÒâôå6 ª¿"Ø[kŽöðáÁLz?–û°Ž˜ËææN–Ã’åb±«“Õe¢­tœ¿¸“È
+Ü Ùc“OJ¼Ó2æöû êï‹XWlm9ÒÃóè­¯Õ&‘­ê2ìq i¦¤(³Ù:,­gj‡5Ë7rŵõ~Ðxk0Å[ã—Îh‡GmT¼[kŽvóáñDzŸ™vqÃþAâµÇKÎõ ƒ #LÎW˜ÏĬ˸&<ߣ÷ÏëŸFvðœËý’_gPÿ^”®÷F{RÒÀgÒèO¥ÑŸ4ýüVá“’»â.|:<ccâèˆ/S{»0vݹ•]zRœŸ¡6L‡\ÖâJŸ]4¼Ñ:p ŸÇDNu2(-ûBZ5È Iûâ䆵О>ènù«b'‹kŽ \èñþ¼í8–»Î0ð4MÇrU{ÍÆ\½½8m-†cX{ÃJë@Ö ö
+>Æq-¬0 ‘±¯TwY¯/¶Î”õtáÉø‰í"&™©#?¼í8v²Øa,·4M»Æ5Û£¢Ùdηb­¬cú‰Wwž>c…iøƒ²JPf½¾Ø3ÚÓ…'Ã'æd’ j3‡N¸9³Åˆ\qÁ’Õ↽Öj1Òe]‹Ç OWZN 6d4•×Â:WãO¯T‹Y¯/¶ÎŒöpáÉô TÏlQê±á|Ds& šåÊqîjêq/¹:P=Æ¢•×b€xh¥u kPÁñ±ƒÐÞKHÝ40È&›`Wl­íéÃäxù9ô”«™,8R …À&·<“ÆWâI†-‘Bs 7xiì°âqIάÐ:5ØU 9ɽËàµðñ\nTE¯+¶ÎŒõpá™:†É6ØBËæ®àxZ±,s”
+‰Ë$î†ÖŠÕ]H [1äõy¦þM{•Iƒ°T&ßGP“ÿw¡
+ȶÍü„Çžb*ÑÜ‹Þô°6ÚúÔÙ¯b~¼/Zc®x“œ¸ÑòÑ>[`LoíZ©Íå84{þ&þSd.©b‹ƒ/t?Öå³èˆNä2Iϰä¢
+ïƒK˜Úé"Kgq#µàÿ@ëÀ-:ÜL™Ñ²CfϺõ
+endstream endobj 184 0 obj <</Filter[/FlateDecode]/Length 5796>>stream
+H‰´WKÏ]GÜ[ò8$[‚“y?`eœ "HI„wÈJ ±Äg,Ë,ü艹éžî3'¡\ޝëvêV×Ìô#çГ?Þ¼}þì75¦ûÑr §w9O;ûrèΚZž`w-˜ûÙRˆüa0ävöˆº·Ó÷^¯´d ‹Ap¼§ãJëÎè|Û408Œ` 6©)íÝ0üíù3w–šjé‡;Swe|¾•ð„9$|ˆ-EORMÙãïâsiŘR*“ܹ +Ü¢÷ì1ÈËt(;±¸§Ücú‚‡„¶³¤’¯œÐ9sBÈÅJ!u …%W .E¬›´”öfÁ²7yܰ‚ðÁ×P !ÎÅT‡ñø“Sv¾†­¡fã¬s)Íßj½%µVðpB\fks-|ù\Ï•A‡“7à27Ÿ¯Á
+Ô†î¨Nô˸ð1Å਄„Š›?êM§‹Nbž
+º‚bËßR\¹†–³•Z7NÇÏ/wÕyÌp’ºÖ·ßgPÝe­l²2ÓãfÀòÖ•˜éJæŽéŽ!ºpo£Yb:
+ô!\W*‰F;ò?_6ÁL‹MáÙÖ—µ¥ƒpÈR"2ÕžùÀi_˜ùÕг—ÁXê\q‘\Ýhd ‹Ap˜ÑÅbay·MƒËbÑ«Á&³Åzwá{ È]2ËQ¡zºã•Kh_ i<ãj/Í·¦'×Ðcc»†Vúíz¥´˜­ŸŠ{zyR„”Êb.›
+²½ÿ OxªÇ•-?ö]ƒê¯—v¸‚mÊ‹öæÃ#AªT1¯U×uYq *¢/fÇól©Yh§Â¤àrõ)ß‚cñm£µàаÇÍ‚êãJÖÞa4»¤Á&XS3´7¹
+Òi'ÙT14uYpHiRˆešG¿õQ4»Ö’—E­¯æ,Á(™qm‚̪+XŠgLhÇ•e´U¿I`py¬Û‡ Ö„íÍ…G.‚¤õœ¯–w]=V<× *àù¥×ÄH ¸2ôÉû{°“=ÎÐ*84(ÃÂ[ªR³”¶—›‚nj±Š]š”!Üøö@¼úøÜ#Úuìv{ÚqLyŒj‘fV/ ȸұâvh N+—ÀŒ[ê6>Å.[ Áéæ¶qs 'åè·_ŸÿÿªSC5ÃyKž/þôü—-‚ Ç{à‡G’ÔYÁ#í
+ß_ Žy%d¹°Ú]èqSÀ ÌrM°¦eho<f%oÉAÛ²V nZ]ÈE`š•ÜpÀÙ€ËÝP{Û‚qýè]i-84è`\çACë‘êÜŒ—¿"Økj†öæÃ#WBkh÷œãfÓBñ@E\z]ðŽ“’’4š–J0àr95ÆÓò­‚¬a1(^üÏ„Í*¤°i`P]fÁ&ئ¼ho><r%åªò+ë®uYð ó@;= †ìQ”{„=(pyTš·àÔrÛhd æœ/EÚ«°R% u“Àà2Yôš`›±°Þ\˜ó6òÅðrâ-£F?‹à¹¹àe¥(§S«UpÙÔÖÔk‚±>”Ö‚$a(\q*Ç•õrÅEƒj4ë½\\ÍlÑî.¬ÝðWýêÕ§Ï_¿ÿáóû~xûéËñ[Â^üñåñÕ·Ÿ?½ÿð÷ãÅ·?½ýøî÷ÿx÷áÇ?¿ýüÓw_>¾{yüzD½úQøšc~Gÿù¯+è÷?ƒ9»“þâ«pÛI;žG”½pÜÒ§ÇÄèÜð¯7¼ä:N cTñTˆQ6±²µnÀq,(Péâ58`”ok´d ¯pm3ÿfÇ“8Ôò–æÏÕZïÚ8µ9šÉEçŽZæc»ÐZÐjûß¾w‰”4Z¥è«Ô1†¢=-CÐw€gôŽb=Óñ4Fy7ÓÖf:˜Ó¸ì A›`Ä o%Ó ![^ÆXJ2æ":çÞgGÈ”cŸ†dJ¿…³LMüo7Ëk)ó´;M‹~úíftªNÏ5¼Ñ×iœ°cAshï³QL°äDæU¿V¸^ ¡ø Ž—ùZJ)¤¡RCÏlOîc%¤3¬nÍÕЕ™ïÕ‘ŽmVÜLˆ¬—äDɾO'µ³éÎ`€ál~Úãɾqa°÷z—)»Q8p¡Õy #8ÁKvý~ø¯ù^P‚aÎ<8g¨—Õ ":ñC`ë|sÿf¿lzÛÖ•0¼?ÀùÞ8‹¦‘»IoVqÜšÔiqw-"¶4©C‘ŽÝ_©'rrMÒ¤\!hcØ#‡gæyË“|ð
+sf.ß+¼Õp!Ý]¾ùûýâ›Ín0©öy–Æ¡HivC}³×v¿g—qxP ;SmÞ‡AÙQã¼£3«›«xV—Ãþa™R3ß7½j.cxä—Ù3Š_)nïý ÏÞ ¬J³oõã{ýaþæÁ; 2­ºkÓý¢Ñ3í;ôK:0.¯€ ËšzßÏM’¹˜™ 6W{äå¼&ÉýþQQÂæú›<ä;v™Óoy9œÖ$íóff|¨Èö›“OG³<IÆFùHž¿;ÌÞ]~eæƒ2#bo¯|7”W?ùû¯‹$ÿÌ÷Чß&g”™¯úû¯ý»×ÙdÚÿïùç Bþz{h=ñÑqïŸÕ‚qóáž9 ¤s­ Íç“™}’<Œ bÊB <è÷ö?quÿaöŸÚŒÀ|Ï{S™Õ %aºŒŠÞĪ&Ž“EfN° |ë4Î- UŒ )ãlÁ`PVŒ•ÛkÂÚÂɧ٠Kb2ó›Qhˆ`É‚lÁˆùwÔHhš3ŽD]ùT˜¢\»¾rªRÜVô[Škš¨´œkãh¾â©Æk¹ûrk@Í(RÍ0"¿ ´&*ï¼a3Μ¤p&á_m‰‘˜ñ¶à¸˜*ª‚ºñTLó¸kÊ
+ŒH@%êvÕ*Î}¨e=:‹D¤õnÁm@Œ…D:² ‡w±˜†ÿa±ß1y¨ãÜbðÝÎÆáÀö™H’Ä4عøŒ ïüLdT]Zk¤Ú8‰¤*^€ÂÔÚ=1®ÍVE)¨Óu){¡ØLè9ÈÈn²•Û^Av3¯z
+›' LB÷ÇõŽM^¦ß&gù3.ê†?ðÞ4Wh ô&ÆÌ¸M µµÐÇàÜÒPÅš2ÎÌÞÁ²Bp¬,2 êk€XÛƒ8ù4;‚$ÀÏ:é©êyˆÑóИ‡@„æ¡9ãHÔÕÐ#ÕûÊ©Jp[ÑÈ©åœ2¾«3)Õ埄Tcndh×kž°$&;à41 ®7!‚¡5Ö2¤ŒÔú®–ÛÊs!“X0qƒRÚÝ’±]¯ùˆ‚¡¯N¼~Ý=4§%Ę‡Ð¢{Àô»óšåï‚h! ^¢Z6ü2ŠR@œ×ÁæŽ$ a‚¦õ-žkLËÝ×;[aî÷:bat¿×1[o[6³ÃÏI
+gþÕÀÌH|o‹‹©¢*ˆ›Ó<îš2À8•­h[pÃf*®—F—(¨j°åÁs­å\3S;Uvpø ê- 3rʸnæ¼öÌáuAÛ}‹ˆ²rt" Z3:OšYÖ§1áØJHÕãGlñ}iæ[=Ÿïñ#–§Í˜¦ #,€«s’´rä,ˆùºÕŽ8¯·ùé=zéo½lÎ_bÖŸM ËÊèþ¨ìÂŒB@¼dFÙÔ¸SÁ„<J$ÜÖ7Ta9ßËæ~w Z³Á!ìMªÂ1,)É΃1l[áÈ®w­Û" ð³nO¨ê
+e q'E˜Ã9ޤX`8ò0[ˆ¾S³Û ‹ u›X"Ô‘GÙ 얬(FÞ‘H!,"­íÜœ9Ü flg ¡Ø¨»?~‘4Â=ˆ·É(R×(¼€°àܼ… »µÅGLz¡Q¨tU‚maIH 0daH]¢¸îB­: Â镈·¯u‚&D§)%|Ä0“ÃAs³w„˜ŠkÌP\[ô;`ÐÄ®è¼AÃ@¼Ä Ù™.£(ÄylîH’@v!hŠ˜
+&äùS"á¶¾¡
+ËùîîBw Z³Á!ìMªÂ1,)É΃1l[á–»~BtšRÂGL#6³_O‚sªi¸g¨†Í\žƒ¼ì[©ßó.Žd‚ü©‰xÕSØ<e
+ò¾?†¨wlò2ý69ËŸqQ²O>ÍÆ”3ŒzÆ²ÔÆù…¸IBª1þvhkÕš
+-˜H’Ä4Øe>Ì«´D$ ‰ˆ­„ÚV!“Ø8Æ›u§k¿]×Þwº†¸‚N×:]ët­ºöQšwºu­[×\–5ÈŠ´SµNÕž§jݲÖ-kªuª¶+ª6!:M)á#¦ålЉâ
+RŽaIIvÄel‡[n¢jº»6z¥6:ìÚq]umô°®è
+Ø#ë™ÿ{{È
+ÐÐë ½fŽ"‹_
+Kø•S…g,£[ªb‰XÄ +Ã] ³—qß«K[…$Ä(ae‹ƒ°[²F HH‘
+c_7‘¶0™™Ã Ê·–qÖª¬ç÷½ž?4ÿ{=óïØ¼6¿Í½fÊü%F^6¶8)!¢FÝò !¢Æ¨ÖªÄÚBkšd²»¿|‘#4Ò=ˆ·E˜&ŒrDâ‚só‚ì>Ô$z¡©­Û­tU‚ma™†`$À…!U´v\oqÝ…Zu „Ó*Oß½•´L…–œ°$&ˆ3¸lN­y½l“UÁa˜uG3ä^”ÚÂ9lfIU8†%%ÙyDÛáV›?‚ ÑiJ ÕgÍm @vëÍ_HÙD’$¦†§êÛ#
+Ä"©ÙM/u]Ÿ·Qj+©#D ̪}jYN7éj¥
+xÍIù1@¤# ²æZ ˜®ÿa±é1y¨ãÜbðÝÎÆá -âÛ’éˆ^ô[5åÖšáH$Uñf…ù£‡$µûÌ¢}ލØÌé9ÈÈ.•ÓW=…ÍP¦
+ÏXF#uƵZ–°Ë:iؾ†»ö?âË aˆ¢Wñ¡Û®·ºñcu`š–’ ÞÞÒjI„Ø¿f×Ńò2ÉÌÅlmjeËL\BBÁL©yÐP™Y¤Œn ©¶º:ƒÆú›Sí–mcviÁÎ9"-åj¹qpþÊ¡žA‹Û7xŠè9e¬–ÚÖôÊÌÖ?Ÿf…M»/^ËP8xªU#Ó³$öEÒ Õ’
+}
+endstream endobj 185 0 obj <</Filter[/FlateDecode]/Length 4444>>stream
+H‰ì—_oܶÅß ô;ø¥@ Ô±×ŽÓ ûd{k#€cØ´÷¾\‘Z1á’
+EúO>ý•´»¶d_ZÇNÝ¡¶z âõ‘—?ÍpÎgåÌ;Qü²õë?ìZËn¶ÞýøÃxëçë…Ò†‹í$“Š[¡kÅÞÖÎ{íî~YýãnrQÿòç™òö—­©³RÏÛ¢K¦üJ%y@£Ùb))¿½U'úóòWÕ™v&2qÒhfï‘9÷ÏcXQxå
+ç·n–Âñ‰¸”¬:@Ô–ÿú}‡=vøÎ“§â”ù¢L…«Ö8ûãEˆ¸Ý$R©éÚŒË4õ…Ø€û“ôfŒºYVÐÇFŽiêÁÓ- 0M˜
+•õa¹Vj*ª¡”¹êFSrž¹R°e€ øà*ÀÀ—¼MY"кµå /ÅfV,Ì%0|R©ðN–2²«yP
+*¹`nݳ†–
+ ²´Þíן׈÷ôt˜Z0
+ñø»§Éow’|“ ï2¤"k%U›½p„*ªN
+ÞMEœ&Õýè6ºn¸ÂÛ´4Ëi™FlË£[5ìï×ys4Ò!¼e}Úc£ëqýÀ»G@§‰m¨Z±0ÁÜÖ´©ð^–2ºní° -„œrdêŠÝ
+á:z ¤IöM.¼ËЬ•¤“¯›H†V»&L%¢âx”E¨ò§ê4
+Ü|j!]pî†1¹°Ì³gçNJ<™ŽÍ"7Exˆ{
+ÊÔ!½û
+n´Û¥ý⢜ƒ—USÜÓ±oÅÂ\¿´8…9¡Šüf¦Ö,’ZFGò`±`CGqºD î̼TQa0uÅn
+@¹0®ãF¥Ü& ÂáûOwýiðŽØ§#2³Ï"qGÆk^žñÈ„zèÁÐû³Ü¸B‹d®¥-#¶ÁèºbYãí,Ÿê|-·œ ¨ÅŠÂ+dÒ¯…d“åÕîA7ÎŒâÄŠ¯¾,$2gîéé6É©“. yT°¨u¥ÈÅl©©àÞvSi¿¸H»„ šbâ|Úó]Ã67lsÃ67ls±à Û\L½Úæ€9ls›°Í¥–•QY ûÜÿ…¡ßç^ë\×9 lÃ:ñ„Ö¹aÖ¹8×¹ƒÍZç œž¬sÛ£ Xè0ˆøWºÿÃç–!“uØç6aŸ[f‚SËòL&qfʇ\«O½‹aôf'V›Âñ‰¸”¬:´±5åÄí”ù¢L…«÷‚Ô‡#æÅ Ý a@R'ŒàôŠ}›4-Dh.õi /Aªkm?TyÆ^f(S¯‹ÇŠ÷ØJUW·£Œ}7S,ù2ÞZ~dr–Hwón÷ä<7J@–Së¨z±ÆÜ€;rôíT×Ë[„6V?\çiÃZê=ˆj«È7WÇrûÿ)G% ^‘ŒÉ…e.XË&Δx¶›En
+¯}2¶B¯’±CX9€äl j¦Ðk$”'w˘…¶ÞåÇ‘«³ððàB5!°ÚChŒ‘çp(ˆµt2ÅP|‹åó€ ûpÛ”l(Çɺ„w[ÊŦ8Ђ¬£ÕRgu2u¾‚N ~WBÒ–Ê5
+¯›h m
+^íÊOÃŒF¶µ á:FqðEK
+endstream endobj 186 0 obj <</Filter[/FlateDecode]/Length 17759>>stream
+H‰lWÉŽ7¼?àýCm.p'óÚ=ðÉ€OÆèªiy;H‡Áøÿ'r#‹õlKr+œE&s‰Œ<Fíí %?öVó™j¬°z|<;”Oª$få,¥eÆÒIÔôÛz¶ª‚¡•y@;¥Âx<ãhUŒûÙSL †3×^ ¤ÑÀFgn=ù ãL-³qgNý„ZøØÖÏ
+˜ZËŠ J[>ô¢x93n>L&
+€kñÙ¡XjÛqüÈvb¨Á‘æI@8ࡘxMzW=S!v€“4* ߥ$–Ißg'4ä)4Å+§WA÷`𨆴0ûù*µí¦9”Ú6Fïg.šW 1×P(nŒÕ&¯EI˜«¾+ 0L\\ýÚ HsMífœÏˆ€˜G40#?zu²€·+.w0Xµ¬-bQmÚ
+~l\ÈŠ«ØÑ‚ÞõëúóóñöŸç#úïÛŸÏG<¾ûõÛ·Ï_ûrüñßÏ_þúíÛÿŽXèû# Åÿ—JÌöù,=# Q¾Ö?ßþx>JåðüýGÿ‹æ+¥¡µ9*îûú|üÎ÷¿½=??àw8Ã
+p&¢«Ù¦F4f;>}Þ_Úþ×ñÕÁÐQûjäb—”Qc³Ø'Ï . ‹^=3INŸh4£ ]u4Ë}ÉBMé+ö¨Æ˜ÈðX†•u)V€m”6ë/ô h'Äý~7øQÑyA_€h9f+“›ž€´Nf<ºuQGÕÕ¡ÏJJ„Ü„¥]°wob0L»›–¬O@TH+`ÒnF›T”̰ˆµbÞ‚Gj¶È¤ ã€'w96£GÁðïNd#éÓ_<™Œ†ÇIæ ÂNÒlĵ‹²±’·Ð ³í7lå*0v£TÞç”S‹þ
+Ph'™ÀÁJ>PrÖª4´ÜÅóÆ]
+‡ÈmI8v ½-ù©…dÈŒ¢$?]AØldLßN6Q*g`œÂÓ/é±(z ~H£6î¹ #ë°F¥„Zm0wÜ sp˜.`y0—uS
+±æ<¯' Ò—3†#«^ˆÚ—þ¨Hª lJH
+VÍ\‹2|X-ðœywePy‰
+)åc–x3¹
+ávS=9j‰ ;‹°z?)•· ‹‚(Â4'D0}‘Òì ›%,Š©€9q8,9íÓ Ê ¯~X£ Ê@ó:ñxà¿
+ƒy3i¯.3pÅ(=ùi$§ULËÕäWè– ²†Ý”^º½†Z¢——ï¸nX0$¯*(ÀÔ½D *9•›1º+ªñJ*Ø•Ö_*
+0ó xq%Qf‘¨ZIIú…75Oâ,(—2B]uä’8)±lÅUy2¾J§´I/-Ùeºj›µÛ«ú3pLÏýf<Û«róÞŠŒ1-OÛcµµ 9qsËÚWéìÂôYC[&pPS9
+ ‡8^.eeGßä-"ù~â/‘•#ö—g÷è“LpÝOxí)¡mÁܶ¦wÀ¢ñn¦©÷á¹¾øaðÇ—ÄC‹ÅîÞz•
+¹ æ^Š‹y–¯W*«×Y¾^Óºo¼7@«Ø3‹L¢Ù,8ðL¤²Î›Š¹po@àI){ukÃsBˆ{__AÀš<q=q2Š^/T¹ÑÏÅÕIU—'9Öó…þÒò¾Nþ4ª¼u‘ªf@'öÆÀ+]B×Ùsh‰½»TŽ›m
+HÉTÚG†ÔVëÛlá2„ª¼!®ØÜwS)íTöÑ&}úËÔ¦É7ãÙ]kº®NÜ'ñjÛËØž½m³}ÿ﯊àççã÷çã‡_Ÿü
+G8>}y>ÚñÝ÷ǧÿ3ö·ü
+,/Âñ‹«æDÂðµ$$ñë\HxÉ’‚,1(£¼r-Zº¹Ål`Ö™Œ:ÜÀJÒÐÈ$l†x‹vScùž³åû"”²ª*ä;Ƈª˜B4¼–îÆY„Aó
+¼<dU£cVÒê,üjÙ(-›¥ª±¥4ÓœÕS4U¢1̃Æt"Ô„¸W½ UÝŠ.:èêfíO'–Ž¢ E_ ·(e‚a`Õ¾
+º†¨å?Œ€Ìü-·²ÎDOšqá•C¶¢’s3”ÅA¸õÃÛ¤!>T¬
+•E"”owÙÜtU4Çþ8dOš¤×ÀÃCV¢Ê±'´Ôådû‡ ¢Ò¿dªÎ¨\9#ï^ EçÃyd|9u[´|¯C­EÍ9mÕÜÙu‘]p¡q£‹ŠŽ9€qè^'¤SÛü˜Ó;Hx®Æ¨€îÆ)GÔ¤ÀÅäµ
+‰¥&´ t\ZÖ~pœèLŒË|!˜€Éù™=/?||ùÂ.¯¼¿¿¼»¾Zn/¯n¯ï?-ùd9¥=¢sЧ$j1_ d+ÈÍ.$-äçáwà»1á§žÜ)r; kœZ4“\¤2¶%…•,|NŠË”†¥Ñ&æ ¤… BÏ}½‰–jŸÈ„ê–Ãñï~ëá/kÑ„ÞÌ}éH:¬¯^}x{öøéÝíñÓíÃýåãÓò%ÅÌòö=jøúì½5Ëñáî÷‡?ÿþrùûõr÷pu}²üƒŽ}E?^¾pZF(µ§çUÜÿã[êÿ¼o{ð]üáëû«žî>>üÖ‡ë›Ûûz}¸¼º¹^@=Ëw—÷7×'/ÍrF¯¸ø<Äæwôc~ä7øíWÄ>/aùvùég³\á“ß 5Ââxæýh¸EcÚÈ´A“´p.󇿠pvÅ÷p¦Áàã@€O¾Å©•‘Õ¦'s.ƒ„¿œ88l@ ¯PE¼`±Á+ø¼³ø¤³¸;Zå ««Y•€Žø ÛT
+yžXv©ƒyyEn_
+ãDP>ß ðÎ7u'CéZ“‚}@ú¹‡‚<m{
+‡K¡W›vub˜[&¾ŸÇÎðLþsæð‡E8r~)ÌÜV’3Ƕ•äéO¼²zÑWG×ýY]=÷“SIuÛÿUêŒܸ}ê¯QFcOgT’Á‹ <ŠCAú®îú£8?B6:*‡_ž'gëÊÉ‚ýRCI`g(”LÚ,Ž—iÞ±³§iäïÓö‡ÈÄ*x¢ÇcK5v~Ãì~Aó ¿7ðE1Ùhùú7N7Ð/%`*ýÓÄRçUÈé\\N`3Ðý:È´ÐT’p1„Qä'‹Öb½¤É:=Ïz@[
+ Ϲ-”TWò3lTYy)½1%×qµ‘½q㛌U+ñ•.€†qA²a0H•reI¦-&-(–K Î ì,Ç®5JÖx­e‘®ë¾'h;ù<^˜s/ü§|D)L†xµ_¤ëKÊBШC‡)Nù¨äaa@³¥ÐËñ&Sc·*¨²uŠÂ?ºUè`Š“Ø­e@§z~â†^ÑE†7F‰˜k¬`Á©"D‡ks‡”'d¬DFˆY!Ë-×8>]ŒªeFÈŠ
+«!`è¤Ý̲Ae?a€çàö1@bc–yrÏÅÈ=gÞòÉrŠo)žÔì`ë àf¹ûvçÝ` í̾­¢úËiØð4cލ-ñ
+ñئ»D£ñj%ÌOdUJ±€,A—™Ö[P/Àx%·= kÖSˆì!Äà¼Õ þÛv
+:In 8¼˜•8Ä~ÕþUo¾”Ü® PˆÚ<íÀ5ñþ€®2ÞHɱ÷ïalFVjröÓ‹,¡zŽ
+Ë´LœÈ á|áIEÙ qyzš“:¾Šéj7
+)+”Þ’fH°ˆÂÿÏ©Ñö½-D—|ýÙ®:Óˆð›!L¨’‹cŒ@c\€aî¸ÍÓV"P GxÕŸ3Â5 ]t
+\Έ‘­’Â`ÊúS0ÝÂ@o†™‚Ú‡Ét!%Gnÿ&Óp~ÃwÀ¨ AüêÁ<T½˜ç\µ=»+~„+ȹ?-ÆuÚ2¯á3Á((ÙÎ@ûWЦÝ"ƒ•Ü´b²ÎŠç®`Ì]ûp<éy)œÛ%;Õ`öHß ÝùpWPâ´´TÐP„¼ºñNŽ‚ 5›¶5ND8÷9–VÕ>öFD 1‰?‹Gfß éc3ÁNñ@(¶<—“qó•%ùLÜK-m×ï’„3&¿°Ë²Ž¹6@®'%‰³aSPz³µÔ²›‚B.SeHÙ`ê}ô«×f¦€'XUFñ HÉwÀ/31fïP’…ËÑʈó&3
+½æ£°¬Xg¾Õ‚ ÄÜ;‡´ .ß¾DH^2·[±`¬aTÞ`Ür… ²øŠW«
+§ZÈ$;oiÑK¢Ù"D áDs’(–O"%dŽ^é’7JÍ[èàYëþÛ]rU=÷‹;§Ã6ž' a?ïàx€Û/ì×Úæâx×yÜ)š žÅçøè˜œ¹WoÅ
+Q½AlÓ\» 63l±úãš-±bµÝsxÙ¶=²jñ×l‹lóÂm4"—b2ûÃÑ%/.n´’1©Ç®z”€òš’—Ëø6C¾ý°’$…Ë<oæ§Ý9ü¼aÉ7]î}×^ºîH›ïø°¹óÈ›eT²)ùŽ0›¿ÏÅÁôG2Ú²pÇ(Ñq¤Gæµ)OéL¤©I¸¢œèX‘³íÜ'zw¥Ã§‰ßþýý-?þö2³%Ll›YIÏD¹ú#NeN¾ÕŸË§×bGË“d"×:ªâò|yX+†Öy˜= ÝÆbÉ5\‹Ùj)½,5wƒî7lbýõ3¿¥™ÅOÛ†©â
+” 0ņ@GŠ0èÕØMµ…c¢é„5›ZDÚ*Æ=ËÀ`R…þŒ#€Â.L7‡`߸+ £)’c uõÈEk³:=åè/e[ÜÜVQkOѧ½„iì9”ÎvêŸëÂwJUlm\ >žL§âúOaÞ8¾½gêóq½*Š«(¸v  ö­Õ¶›˜ø#bÖnâäÓˆéÞÄ–6SßsäŽr”5†íáB±ôWÇĵp\6²{éžm`æÓgÅÍ0$Òx.x±ñ\õ†"×Z‹0n»ùÑ¢C à– §iÞ~{jœ±%8 ¶þ؇í~r³{|”³Ažt­èö¾É‘D®k“Zk^·0…<Ù<aÙc^aj¿;ʠץ椗2ùñÖ¢üÒx8±L~ZŸãðš' rk<¯áãaŽñõIÅïzŒ¯Ï4<nß0zÇ~¥`Á†?”%Ò âMÉ,á@Ô‹RöFëÀuRÊ7®Ï¢?ÀQ
+ž8w FÑχÍÚf5¨ê¸Ò aØ×ú+ûô=øÓ¨òxÔMªÚÙôfàÝ.¡ëê=´ÆÄ.S rs©€ŒL_·dÈl º´…ǰQ}–!žØJ÷RíÒni$zÑAM}ZèÚ꺑x+ñ†í!ÛmÓöKþ?^Áïo¿½¿}÷Óûþ¤Gz|þåým<¾ùöñùŸ_¯ý%Û‹ôø‡ JN2O
+‡¤F㬳‘ld:+Í ÁYKMª&»4IüäKÈù¤.…°ÀC$§þš9lê²raÿšu®›®³™:ë즔B0¾­†
+Ü¡¢;”¦ºŽK¤¡—ÀÑ“ƒ¬1ƒA+b¼Q¬­“_bˆåã*Âe7]iYÞ²¸þ¥1B8ïòßWõšô¸b虿%&`þ›‘,䵊ï
+ 2ÊçÒÌd§R]A«¦!r—Û<†-¨´‚>«%ÆiqôRâÜ•¨Ü‹9O•à -âi™ÑŸ ‘ñKXÏ\³ÖˆÇäyÖj‹}BD†©Å/î~Ñ€×Åò¨Z\DVÌ”,W@ýªï€wMÉ"dµ™Øýqzr%IšÿŇLÜpö‡„ª:Nú^40Q§I8(JáçEÝŒðîÅàµzç¶x›‘«Áï@Í•õ8.Ø‹»ÌÓݯÀ•g»Ÿ EŒëqQD«óK'ˆÓdy^œ\—ŽŽ1 ûÀà›?…W¹È©,M²ä
+#éÉÕDœ‹9{£ÐaÞ@ùQ ÀfÅCµ(à°£* ¡“)^åf
+PØ5` (‚µ´UÕHr Èpüï{8$ï̽»rU×6dÍÙY‡CÖõf*"Íw}Wjiyn
+'h<L̨’ 7}æmLÉÀÅ©ϹP’÷2‰zV-ã0‘"Èεn‹ühâ™A&j «ˆèÑK}!gbËØŠWÏF ¸jåû­Åµ³ð AÈÜ*JÞ†èeri2ƒ¯eA
+ÿD`ûUÉÁ9(ÏM¬üÔÍ£.É<¥‡CÔßzs“š²^ñÑF7_0ÚC<X~l~$ze”1‡$!ѪÎT:¥™B†é)‚ƒJÆ­ˆÄ²Þ3niÈä‹Ûø†æ
+Roü”3ƒ!àý¶úIJ9Ÿ ˜Z‹˜PV›¢rñœ#¨§¨$!É&ö óL]0<윢¤ƒv¬ÎpCï@lP¸vÙeÈ\C=hIÀ2}•Í¥$½å@¬ž…’áv°U ¹Tiv†HžÁ„ ²Å„<}̯#BT‘—r¦Qhñ<+{HÉn¡ÏÐÒvó\%)'ovó³=[FÛÌwêŒÖ´TIò4ÖVDPçPAÚsMnú¯ióêô¹©oˆóQ½PƒŽÍR¥òÌPÆC€4²I{Mç'!„¶j ˆa””j X'`{ÒEÛ¼M£ -pÍ“k 5Ñæë–ÒƒzË<… :% àhZæ'»”?Éñ8Ô-Ø$›­ËrZµ7€ ±XL+ Yu5kß7Z]ØL-BÜe-@•ƒj˜Ž>å×e;ND-Ѭí1²m
+Cß°üLÙ‰À”„‡Í®èœ§»)+mzó°é&I™`GÓ%x’åTF%¢“"/‚&¼ÓѰ1*w{Ræ \KÏaP ³>¨ÞX¯-¸+MÛc³³Ìå¤á!g©«§gÙ>ð4šHD럯K·[‰:ˆÔÚú@KsÚV-¸bds޵ˆ…àÚ³ª¡ãðµÙ‚ñÓIËFiYcÓ2JÉr”7‚,BÊëÝÙzÊX;ìæty¬íÍö‡X¶¿˜/Àpêi‘[¿û||Ï7?¿xywÿêêüþêÃíîîóôGÂþD?NžTÝøÍˬùù»Û‹7ŸoÞ¸V`³¿¼ºUèéf÷Û/ûûg'fzIg½ûÔ’öÛô¯${ ^Ô@7†Vðíã(@§ÕXé øò޾`Îÿˆßþ ìÓ¦Ÿ¦¿ÿÃL8ëÝk¦ˆZÓDm@’š$5A8ÔåHO'ó‰K™
+% õ¬÷Ê~)‡œ%‹´2ÅÏf½ì}XIÑñ¼3G ˜Í ¾‰e{êY Q#¨x÷3öú;·d_áw<“$xŪãGÖœ¢¡ãf £h±V¹b|VúEldì\u£Mõ [í1›vuþV—ÀÏ¡ùž­q¨6—ã´8 wl›Ž)Ø…_bÜŽ™ k¶ÇCÆÅ'˜mdîXs€ûÅ1£iœs„0ù&Ù83#Aüz«;fÓ­Îßê÷^sÀû­ûaC|ºcË`öKŒ›ã1³qíÃöxÈæ`–ÅlÊ:˜Ü/ÐrÛí*4'ñÆ1˜ÅCŰ>ë[Ý1›nu>;Üáe0¼ßº6ħ;¶ f¿Ä¸93×>l‡lfM§Ñ¹ƒ2à~ñJV²[D˜‘c0k@sOe¹Õ³éWçÏÚAàe0¼ßº6ħ;¶ f¿Ä¸93›Ö>l‡Œƒùí[M#PIScØ¢é‰yÖ⢠F®Y™ó¤TP–á–@,štÊF¢]`rt°èx ®<êu³ªÁÎ\òÁ‘HJÔ²ª¤l› É{ŸçQ K¢ÚŒ[ ´l2ûâûÚòç¬Ú¶ˆµ›Ò 5U6X†ŒmÛÔ]ÏuæKÉÞë,6¹z J¹ÚÞ
+Ñ0pô…¶Z a¼°4<¨_Ûäæ"b˜„ÚþfÅÛŽûæ[#VL›yšk<¤á]Náà~¡\2µÖ° À1|²ô Kyx†³š_j°ÜŸsŽÍ,¼8[ëGÜËB¬h†Óœ—å –ú0hÍHxÆMaw‘ª¨Y¿L8u°°UudbkÍ4ë@æ¨jòB$8”l›GSÉåÑB2x•d4ói2©¹ž ‡¼Æ‰&™áîYüœó
+´hˆœg ÛU”pÕê! ΔÏU‚ÄF:H©BÙ}4ÎÛ…BC\ߨC)ê;e>Å9´&ð¡ÁðÔ¥þÇpµs+
+®ÈÒUfƒ ®Z…æÓ<×,!ùÕf‰‹kv0ÛÁ…œíf‡KFà|¦âÇ7½ø#ÜS þ¯»ûûýÝíw¿ÿúáîþoŸÝ?›þ@{ÌôbóáÃõrÓíîýõþûWûßd›=4õSÌo÷w;:r0ˆÉ+”‰ªÍ£ ÛxZ¦
+YWžÑ$9xŒWжsÉÉ+ðÏÍåɇi-¢ƒÐú¹.ZÝÒ‘P²{s#L±Ù´%úÛxØ>Åå"ü‡Q°¦-~(2dö4šXÀ¼ø¨bªÓ»ÝZíŠøØ·¡—™»IYˆ³š\×=¤iPZÅD”VÅVt=˜nJí%5ÓA÷æFݯ‡”Z&ÔÒÇn‹ï É´L%úîŸ{ïc´jš{^iÒ˧t˜ç,‹óB£Á+¯ZŽuLš’D£?ÑöÄîcLı¨x¥à•8¥&š»ó½¶‹[žlÚ¨àâäIRÊ9†}ìéÆ$r)!–8Ôó„áh~Ü`eˆBƒÆYKäW 6Ø%Ø:C=ª3„äˆ%냋ýØŸn¶]9,ð™¦}$­2ZˆyÞÚê`Šêï1Cý‚Ã-
+ËØ-@ä‰N"ÚV0i«}R&Áµº
+½®BŸ° ¶:ÓÁ†ÒcþÄVE_Zíà|³Í7ëPulta¿¦iáÖcæ% ÷|þB»á`°­;Ë”9ˆrÑlÉBië Ñg5 £þ€gŸƒ•èÞÄŒyÏÑ¿kM6é“ö¡ÏŠ
+ÄP9½»é߯O°ÿ/_NW5Ì}þÿ½ùŠ£#Ý#·£ç¦ñ…¢×ž¤Ê`µ£þü”yA•VºÕpv^÷ún3hËVmì 1ï[‘`*ÆÌ%ŸŠúâØ/·Ý6Ž$ ¿Êܰ/4ÛçÃ¥i{
+×€ d“k9IA(~ûý»§O53$%Ã’„7‚¦Ø]}¨êªÿËßIâÉÎ9g
+N=jÛ¬œŸ1}ÁdãÃãKæÇ[ÞíÞœdèN"¥d
+ÅI3í\(WÌ;&}®I™!×缩 åÑø]ï×Û5„s_Ãq†›ä^E[‰sãXd ñ5|7ùE³‹î±úÎ2‹æÕ¨lfšl…`iª®B¨e²âéðQ% $t'àM.4ïjFµûѼfy¨uãBœÑ„d´®›Ê.¼ïšs½&§$u{®ÞÎæ\L¨²~V m½ŸÕÐ# ½CAOtv÷L:¨É•EB+Ë¥Ý'¡%
+€`VÝZ
+"™ãìŸ
+àšÔùãV]<~U„C
+ÿt¤¨sÜ…E˜» ùPãÛÚYcW½³#O@Wn:¾Í“Ø¿*Ç¡8Lƃn„ÊùÜÚQÍÚõœ=Ÿw|®ÆÞÒE9_T$åžê¾²}f¿ÍúIļžÞk{À4“ï^ú!÷=k§û™µF˜”“ì)æ±¾ÿ–óïíõýùõr†bŽ óã@F¸—a@¯Pƒ™Š
+1ªÆ-K¥–*¶;®¸>ŽžlÚ³½“uõ§ØÒ^z¨`vâ â„;0Û0H Ç'¥æ‘kÿ µÃ•jëø¨ÖDuê$÷Ìbž‘ð(¦hÿ±–ó M™¡VCÊjá£låºÕd‘ê‚Ì1âJg1®WÓ0§¡Ø“Ó[§.¨Äï:ý®ƒzήÚÀý™{˜[zäb½
+°]T ̰ÌzóPª«éßË·?èSL1÷í_WÛëÛpñüÛí%´9ÿx¹úùîËru“†ñ©«30ïÍíuÜYãp¼»ŸBaùãífùîëúãö2˜½É¦‹»ËËÕmwÒ®þwû°û*Ü݇ûZdÞ™K;â/øïOØî;ÕýÚýö;ë–˜þálÄ†ëŒ ‰jMÚD¾•8³¥›¾•[ù»¡Úê52Eś¨ pz]‘"Qmž‘‚xM–*¹tßÊîü]wÞxM§Ë SöQï#ÕS–îrq1_[9j+*ª:oøOh¦BÃAçä\7©°
+/Rj¿OòÇ C˜ºéQct¬j¥.e’AÁc
+½.hE®q˜¨¤8w±9 Š“fÚ¹P®˜wLú\“2H®3A$Ø S
+¥ñ»Þ¯!·kì6¾†ã 7+È½Šª¸ìƱÈâkønò‹fÝcõ5œ!eÍ«QÙÌHÙªÁ ®’¨e²2êðQu $ˆ'êM.4ïjFµûѼfy¨uãB¦Ñg´®›Ê.¼ïšs½&§$u{®ÞΨæ\L¨¼~V!m½ŸÒ#½CFOTtv÷L*:¨É•EG+˥ݧ£%
+€`VâZp
+Zõ‰ôxˆ´Í9Â,&¯Gvë{¡J.4vÄ™ØÕœÝ„lÈ95oÇj1u32ûýf¼¶32Ð#>5™4¼dàìñiS¬ûq¶œ•öȇ×M]¥¡À Ôæ™›i7‰ év˜Ç÷®vÄc´Á=öƒ¤ò„ räpÊÙ—ÏGP9‚ÊTŽ r•#¨üAÅ¡ÊÚ˜z R2"PbPT-M4fÂ$—vÊ<Æö•¦lu(•ÉŸVD>ïXAî œvÿ\Ð\=V&ë.¾aÝ'†D†‰ÜVLè" Z’¡”ªÈîÆÜ† Ù75û!9WgÍ„u/c;;`'Zz|Úë:Všõ‰?Ï
+Äì²îHÏ_]2SîAP2ÉèÉP
++³ö#¬ü`Xyu$•#©IåH*GR9’Ê?‘TP4½Óƒ†TVš¬§ŠÝÊÞòš—²JMíPW8FÖÇLȪ¤2ŽŽ×/÷Ùó~Nwìó» Æ();y†UÆê?ä B½ž GÛ:0W…weÇÀò¨e'Àò€e¹ùD¼BÏ$áaí`oj€tu|kÇ ÚÕœ aE›(VåD™µS?ÄÞ¬ë$paÆîCbi1ÝçähŸ$¿[+ŠJ]q1=YÖŽó‰z¾z¯»ìÔÁ.fnu²Ë=öƒô"{®8êÿÐËc]ÿ½èåöv»A;éþs}¾ù¼ša˜oÆ«Ñ×C/ò¥#X %&£àÏvêPQbÚ¡B£M’¢1…÷&•êˆG‡ôf0–å³q þ™à=f&Dò×:â$H÷d¹ÆøÞ«m7Žãˆ~Aþa^ HA´ê{w%O"ã8Nd ü`À zE8 xh:6ÿ>§º«o3»+S±Ô왞ªêºžªf P7Ø/:¨¯àùo˜K:…ÂfL$œ¬lFyj0½0„¾œð
+MðyM…Ø=9®oÊÊ“‘}¯)Ÿ©VZ”ƒ[ý6 ¼¢H~™$"iª{¦Bì>ž ·û˜¥#ÅIˆgÒ$mê°G¾AÝüAb¿èohgÕ[O\-tzHÖ‹_aè¨\å*ÑPH ¬ºå¯×GÕÎ’?€‹ˆMŒlhÉBzéiÌiƒCˆÖ] ¯è>¨0‚†‹½žX«2ÍHÚ‘Ÿw4‹à6Äa9ùqð8æÑ¹™<YåÙǨô<Ž9ôþ¥­r–ûÊÙë¼·î”Ö)³é2í¹qy…‚ãÆ¥ˆ[Xm\šûg‰®'×púm8ûQtÜâ"b®h„[Þ'.l7+<pŽRÝé”=”I+'ðòÆz‡ŒD9âødÙtªêù_ˆù4ÄÎa4YÍaC¾uNçó´TÚ­AÿÓëÛv:× ô¿„mc™„ׯ ¿¥ëa…
+Ôù› ¶~Å­UŽtÑØ©[ƒº©ƒ°|ŸA~Ÿo½ð+¸šš×«Ù¨\8JÖ9«½‹Ìw"x¤¡™ï(1ˆ‹(`û:ÿÁ¯=wš¨ÚÓuŸ}”nøm‡µÕ2¦ÖsMq i&¯
+,ñ-O<VØGulyâ°o,“8\Ư3eçäÊÎä,&Û¿åj0­jDÅ
+iGQ×ÉÍ&p«ƒ±>àeǰ–dQ1Õ™4ñ]ANˆhHuV†Áõ¬YU„Û¡(õ¦Lö«2ɹ騕‰‘ªsÔ[j¶^°u©¼.–&a]Ž6å²_•K7=ƒ…7·;2¦“Š+wð&À}&×EAM•›œ| Rç9/ŽL|š x%Þ
+¨|¦KJ|ejÃÒ7à
+‡Õ~&G±Ê 3g+â%66d@¯ÕBˆÕŽŒs`ëZÄkªŠ™¢Í[e+,5©šh¾LG&œcü¾óÀ ÷3}ºÎ³ÑÉ.„»ô!œÐ­` jÇ&g¸SMÞæ‡ˆ"ÊœšÙnæÆÞPî/X…ÚM´®c1QQÕ9Ö®ÖamGaŠ¼Š˜ #ÂnÚ{²Á×’l8ä©`«dÔFõFÄ ¼çõgß½|uÿðç«ýÃÕÝíÅýãòGÆž½
+\$8‡²uA8!ÙX5޹iÄ8‰…8Šúò±Öƒ¥…ßò§:šéZ¬$GðÄ 7Þ"ÊÝìZuUÖÏAÀ*ˆÌ
+H:ó`€6®Ö3-¸Âßœ¨+í2o«²õ(áð!é–¡®ä]Ð š%Éð©v©ìF;g4IŠDç3×q ¨i•öž¿ •-¡¨÷TS>ìñèsád±6 ØK/Û Eí†RÍæ¾®8õ|-³&í&pÉkoOødv- Ƭ"¶M®ó#IwšJmåfyù%xÎ34lû‹‡‡ËûÛÏywÿðõãûK™jyyvww=º½øþúò‹Ÿ®Þ]þ(ÇôVÔL€îóÀ‚ScgM šþ·‹C?3ilœ‰¹¿|syqýÕf×/üÅ$•Þ^_í/ßî/®1ؾ¸¿z÷÷ËÇ#ãìWM¦¿^^¿_O¥ÿÓHò‹FíÁÔ= ºŸû›EªxiI«Ü±â"ý÷µèDý-RÓÆD£„¨4« ®l_ºC¡ç2M<ÆT™ äòáÔx4ÍhEwÓå]ÀWÙÚfw¶ZËå‹vyÛî;Hè®™”9[k§6€ý
+[ßîZŠ•@IY´/Oâv®çÈ}Ôó¨”b™R¶-õ›¤ê÷€†«©½% !2fÁ-msÐW<¯såÜÐBa˜@ÉC™LY‚ÉÞYâú¦Ž¤6a¶õL1Õ÷|Ÿ¨ÛÛ~éAD÷ЬÏQƒqì×8àã}ëP¬ëH( œŠ·É›jÊ8®fu ã+•¹ÄĘdX7P"‚1 C®†KÀBT11¿¨2NoAÍ©¢Í—DseÓ‹§-ºSI1˜IF}òa­ª >ñL/nÒ;ÞÕ^WØ
+¥²Å«…¶$b?NËøÆä°Uø_»œÆ
+Å”™Ö%ûyá‘Ãy¿÷ÄÂ4*(Ḫ¡Õa<ªìKÎ „Ò£¨Šµ¸qóNäõÓ†+øR"”(È 5ÚÐ
+DL¼ª—p\I#Ú‚Iu‰2±ô¸(¼:¯¯Êê*¿Ø0¼÷`EKñŒ$!.£0 Åí¹Ì{c]s£)L8|n| ¢ãœpbVÀ¨TæßŒŠª¸¦òEH£/uÎwwå0xžŸ!ðÁÐéÉ„ƒ9 ña7Ø`ìAœçL^S­‘°!
+ü`
+endstream endobj 187 0 obj <</Filter[/FlateDecode]/Length 14501>>stream
+H‰ÌWÛnÇ}'Àè¤aû^Ýö—r&’2L ˆåîŠÙ€äë,þ}Nõe¦g–ŽhƒbÒÌٞ꺞ª"ïLgIjùNjåĻÃò6vd¤cÜtÊû
+ÛNûÈpQÑ0þñð@Š7éwª8Òg ö±‹1}VàwØSú<cçt¿Sì´4ªàª”h»@1|Ð||~Ï¢lð×?àÿ¯nN϶»7ëÅn½yœoŸÄ·Œiqzñ¸GgÊü}¾Û­¶ßþe³Ý}xúeu,¾á3RœÎ6›ûñ¡Çùíýêí§õrõk9¦öE]®îÖ¿î¶s¾²¨¨3ÞYát'£WÂRGNz¡\•BâÏéåj~ÿ~¾Û®?ó'#±ñê~½X]-æ÷ëÇ»·Ûõòo«§"ú;þë𠊣cqý3^ð™¼ùþqyõôp»¹¯À Š=VèèÇí­8³ûO«ãC)Î8G®;<øtx ÄÙ/üú#?ª¤~{bè¯xú7°ß„ïÅ?þ)Å__æäcK„ÂwÚS²«Áu§-‚Ź%;ÒÄq6‘ß)æÇEÎê4éþWRp2b$¢Ë}éãw¸7b$1•Tpý¥õ=ß<èÕœ,h$î› ³[vSþ3û;ðè§ÇÇùÃj)î¶óåz…d1渜€{;euȯvR‰¥Œï,¨ùÐy mfw‡ÆÀ,íÓÙb/H£ŠIz æg¥èg³ß+Ó§?lv—«Åf»„ž9[_¦×^žŸ]¼-v~ø¸Ù>äßjž"¡—›ÛÕÍÙE¼RW»§ûÕÍ É8Ù=×Ë}—ê/¹´ü›ÎßU7øZŸÒÿ²äx›Þ5!XI^—ìEâ(émƒsŠ©.˜œb± ´3 T¨´ªùØã®‚­X¯q}6–·>C4¾=ƒ+Ÿ’®‘5€£‹|ÐrÚØ3¶û|ßï^–Ùʇcq";)•µ™c`¼±ŽÎª@a/8Æv
+ÿ央/év°¤Õ¹ AjœÔˆà×Å.X2
+y
+ñZáARÐЕÜ&8‘¿L¹\ÚÊk¯ç½‰ìZWÛ êðU0{Ðæ¹/ã¬î>¯î.8Ü­M,ÑËd_=vwzÏ#œ¥<:Ç™ãBM³"±G×7x£k/¶7i0Ÿý…ãø¦q†²^“µq*$*è3'š ÁÒ‹V¢ÃFŽ(ïç[?>×ð q
+,5Ò¡‚Y‡Aáæpcò vß/l˜ÊþzGÚSáüXu¬…N#öà…qŒðEpŠ¿ˆª3ÒR­ƒ˜¸]vMiÆϨ3h:ï½kÀ"×iirØçÑb$µÇª‹J ‡1‹‘ÔÈœÕX…
+ ½¾íáÁàFìž^#BœÆf‡ŸÔ—ªoo°£q²:’RÀ¼¡ ÈãaŠƒé´­Q‘:²•Þ`qÈUƒ­IΫ`ïÔ`£Ÿh’*LÄ`Ñ¡HèqBÁ[ëÄH,éÎÅèÇ:T°KQ¸=ܛ֊ÝóÃk„Åb±²”N}éõ­—9»¬…ÖåÍwÆèa‰¬0&gíRŒQAÙdI2õD²¨Óœ½ÌWxôˆÉat>ˆ˜ˆÀ¬Â¢2j…c?§÷R½D‡Œ&ŒTèÁ"¡êÛn,Äîyá5b‚²öʸ“úRÔÕ’†Ë&|6c]çtêµÄ©uÓÀÇ ƒ˜#¥Ôh$„|ö‚×Ìä0L™â±˜UBÜÃQ‰±T¡ò‚بPÀ"aз9ÜÜ‹záUÚ “°”æ†S^ªºZÕËÌ^Õ
+•cG¸•á°Çâô
+ß?Þ‰£Ùìl±øôp¹ÙÍùt•ȱÁJ\/sBê?šS
+ËÞóâèX\ÿœˆèÌ»4»¼YbBØ\ª^äq©3H]LÛ—è Šr9a ¯D•ò4s^%›¨à²Œ·hï1–Æ*&UtãyvQ¹1D_n#“Ë ESLédÛ)˜b„ÓÃü†Ã”f*äv–Dbà³ä:¤.¹ÏóÒ’ÉŠ©Ö×µGvšœÍx’œA :ªd¥ê.äU0Àžó:1Y2>ã2L‡P‡tWÕ“HüYZBΡɦŒ‡Ñéß´èACv9⦡»CI\É_…ÌNŠàH8ì5ìÒYЦCÂÊ%µ.•ò$›âåx¾Oôä±î ™¡h04îTÚ=#@i”8Å„‘;±Ž2E“¸‘›OxîãçnO<ƒÆI+ØXæŸý–›¡K݇ÙʺÂQ/Õ<É—š è#˜W¡©?®ÿ[)$+Ê\ÿ¿°Ù*på¥Ý ¬MiÙ*b•C÷b£ˆK\C’ç$rŸ/…NÒ"º201o©LÓ\¦=±è5Ï@eƒ–UªT†28ì޲¤)ߦcb6Œ­^™¤.žHå$„U¼‹TøYÕGB`<3Ï2ü]b°4•AN%½<71WÉŠ§>Ìc˜b2* k™@ƒª  6ƒiÂüóU×bÉmDAþC¿²†¹H*I%=îŽHpXH0,„`l¯q<›`0&ÿ>§>Ô­î{Ù½ã¹c&ñÜZu©T§Îq2‰µj5\²îwŽªÈVšñÆ‹•xZáµÖöĺ uqAÊ´áÙ9
+0ò FƒÙ”n:ˆxˆrsःŠ#ƒ²ba†uÞ›p_dO*v°kàœ)™dEp¿Nµ§Œ]
+S4v„çwÕ\8) ‰×eCªhê;ZÛ°Põ“*Je톚IÈZ“¾€ì£èÑÖyuùº1©Ì„T-º
+Í–Ö7Œv5‡ëR1*…d“%#„
+Çõº¦$u…¨UF¤D
+8œ@Gˆ
++çg…¤€
+ˆ–‡
+•³zgÊ¢(EFÖ
+©æq°®œYúá FpqMNtrwlAÅtØõ …âÄŠ\\{„¶š ‡‹Q°¬dFêa
+ñN¤^ºc‹®Ú.LXž¦º ?5욊zJg`¦¡}‰¤Š3NFgÛÙÈ—!,)3[ pO.Ù@g
+Ë]'j¦Q/~.4Ø‹!dPLÐ6^„à@!¨T]Í\w» 
+l ŸBâ" T’yñ[!«Ü%çÐp ÿîÒíÊÐåû„>µ}™”•Ý„=²VσJè%Š)”—
+È’$œ“ U—Ø›p„ˆ|J· ¨~ {†ú\„!¹•é'60+„ºÑb!éµ:L¡XX@e_Å45°ÑóSÆqˆRtUÇ´”ˤ“DÔˆp¿ôé¥{c0Ä -‚mÄ ~/}YQ\Ü,%
+'È(é/ÿWF}fsçb6ú}úñdÇ¢Õ ¿óˆ]“±×KÇoÇŒ5®éÜö‚Éãùs3‚§ìÍ?/ãÑ+?ôb@°÷¬­S‘Š
+¢áå ø8_Æö”î!4«Öd,Yº;Y¸M/#ŽnÓúÄq»2®ßjÞæ”^š½]J?¹þ~¾°û´DÐ1(ÏÃhÂjžìÒ\µ8?jªµf#’bŠ£W»pìØê2»­àa¼ö¡ÿZ»°uªóW(ÄÞ×fÜ]<Ù·(7§Ó{öï¾?OÅ—×õtLíÕ¢"æ,òðxŒ›`aŽ RäXʧˆÿY;&RA
+#\[rM Ì ¬z
+?AÞá¿!-ïó!¹’<!8Ì$`gˆ ã‘ÁÁ¶‚ñ0ñÛç«Ãßj©;“–-}ánUïCí:¬ZË8’¡fþjÆs5ü¬»<¬Šc0í`-+²É$AUá–Í^²‹#“Ú Ü¥Æ4Û4£R3×•é ¯ ´™cÜ>­Öc6’¾ˆ×³¶ýD\¼VBm6š¥B¢*È{4æH…+ÕG5ShÂêö2Õì-˜Ãsi¾¸à±ãè¾2·¾¦e¡v¹.Iä¡h0ê¤
+h5íĨ ÓÉ$c?ôf¸dÕoÕ­ã3ñhÅk­ìs×­­È©ä¥
+Ï.QР÷i¢´ZP± /…›C€‡6jðÅMä§4-‡t±vüpö+XQŠdaÈ5µdieIØþþÔf*F!c \”7JÏg^…»ÌÓT«L–£n¼‰ÌÎ.˜OèKníàV²BV1èŠÁÜÑŽ«x]¶7¡Ö㞀êΙzœBEò¾˜Š{ 5²r†YŒÁ8¥BÎÄ Ô¥_1ñ•“B`¡‚ÈÛ°Q(¢j?_·§!öÚÄX^fì}nR•jdÖ® CUtaðØ!?ÑÈw)ÒÔ&¦h4‰çO- VÆV­‡›1™o;j Xºb#Vé»Ágʪˆú/¯HI‘Õz@­Na7La„³E7"»¡k󬕲ëu©§"ع*¦ 3±–ƒ¹ø|­7²Êôe1ÐâÓ­”>·çÎ9NQ¨Ã@jÒæšLmÑBnN#3@ª
+Ùõ¼&)¨[¥Fʨ
+MYxq:t¯2i-N…·œ‰ç5ù"¥V` Ò"”î^$ß]³ô`D*·
+=VQNp¾(€5 «1W8c)ÕŒUçñW2ò&§¶æ>”–ÊikŠB‘‚P+^!ÜŸQì:ªšU¥f¢”l±@d‰.+G0>5½Ôtå6䍿šMíz–g¾87ãS”m
+ÝW*.Zfô×µ £Ïµ»ÂÄ›gb/sñÔ©$âE±qŠ÷*k#P›’¨X@¼ ‚~æâ"/£R\„E¢½–$§umM”®¥¯ˆ‡|¤ÚLÁXÓ†q!LŠ„‹ÂÿÆþn*@ž
+¡þ‡qb…£”  $/3}Ô½FxZÁ¥@àì$’šµY3„ í±&z´”mÖ…Áº¶t·ä<Ñ3ôüUp%Ó*»hì†Þ×
+®u£Ô £Y§ÒÿÒ>Í„U^y£¥–]Á‰½J¦Í>£¯U²¬6‘6¶˜‘y]ض̆¬síà E¸¸E§;e:´±R«¿¡æ¸ËLkÃ{DSJ³0rzU‚•-›1‹ð´¤SñIì%˜
+MÍÍ5Íq· ª`ƒ‚
+¿‰ ©óà^¡¬}JÌ‘r©ÄUÁéºìO!5—I™Ù½ð£;æêaP‰ZÊȈú5€R’÷ß”p à)MÉŽˆõÝŠ1)e
+BÛ¶h5QPB(’B„P,¦àJ† 7µË„s[¨Ò²¨ÁÙÓz@Iѽ€ Ž1L(t¢¹bŽsB6 fÊjä¹L/ 9få[×þ
+å×b+8™Õ]ƒFâÀh^2nØubû‹LË3æ9|1S}_ <]@_ïÑŒI¤©'Óa· ‡eâÑR«F§#í~"¾€+M¢¬š A-þ2—¡µ°$”)”–8‡p„Ø›V IMœ¤ÙKe† CH"91ä>œ"o4Wļ5G)rÅü!CÐUºi0Fö6§ÂrS¦ †)7¾”ÅAê#Š¿Äþ¨kahaàfau@ãÀ¾Fb‹¦…ðN*áüXoU/Ž”4Ï‚§¥ßUº{n˜dþ¶ó×
+ ôG´Í ÂÂÓÈd‚äÁ<Í™”0ŒÌÁo@7\YŸÊ$Iÿ€ÂD@JrSÄCþ¤!C YÙq]µ’.á@žò<í¹üÊv"29@ÑùÉç_~~çËG1Õe&Ü Å8&ÄÒ½Göä~YüŸFüAÎÙmAý|usÅÜù~8rîÞvá7gOcxñ‡÷¯žz÷ãÕÛÕpþú§7ïWÓɳçÏý&,gréÅ/
+
+ÁAá/JdkHQê®iÞCJÂifˆPwúåm ËŸøö/l¿,eù~ùû?ÂòŠ‹.žY;„Cç9Ð[
+ÞW‹%¢diÿo¶N©n~Þ]ˆöÁެáâ)÷'rý,èŽ[1úî÷üè{îxò›éõpÁW:çütu}µòœË0&þð¹å/!·$Üâ:EzóÍBœØÅà&3z©1bˆsÖ4-ÆÖ
+å̬;Ø) I’/:¥bFñìÕ(X–FÒÚgdåÐLs5öÁiÈ:/Ò•sKzö[pœuuìÙâŒÔ@PcNv0¼9näKí·(³N¬†Z±4x>#Eªº¦jC½†¤¡Æ§@”m‡¼ö¨n±C/ úº¾‘Q÷BeVcþ.©ñ×y¬d'ýÑeÇ–@Š}ÝnyŒ’ÔÅÑ
+åá ó3kf!zÌ*#˜ËPçi¨¶ÔDq\SwöÊ Ôu#Nˆ =Ý8â¾’ÒÆ³R¶¡¨€À…“¡j¬—@¨! CÂb€!MdÉN±%,Õ¨‹“sn•ä“ú±ë,íb¯qboÌ‹XBÌÑé1pÑÖ”&q_&Éé‘ä12ýáÕGèô»‰<“¯ß¯~| ¼z½ún³ùi»ýpùâúV¹rN~‡šù—D¾€1tÎý©f”ìÈ4úãÑ÷öìfu²zvsöûþuRø¦ÿÑt-‘v‘ 5‰ùm}H§OË«Q´PŽ
+*Ï;V¯³¨L«aœ]ÑŠ–
+ Ô³S_XQ5q7Q/…ùR”ÊÜïmŒLŽœiÿRÅ`~ìÙ aÚüj™'ÿmÞh3}uuuv¹;_½¾9;»Cvx´U”"š0º½M–A Ž…ÔŠ&šƒíïæõ7ñpY öý¤1¥‚â²u
+5Ym.µ’ð³Íص1abJ•ŽY•½tl&rúnçk%¬W´p8ÏaÚDS÷9 ¥~˜4h½—CókL݃°û . eŒƒ²£Ù]M=Òßµ£…! &‘HR *ÚÁå!¥Ç vh\^‹æ t&2½jÌ µhj§Á"H ¯³xZÀ°Ž’Êæ|)
+s[]E`ÃÙågG‡³’Ó£c0%ßÅ}éó¦Á‡t7¿Šðp¤ˆ)~ŽÆŒ
+ar2êîë®°"°fu Òù{ 
+?b
+Òð•uùÏ¥ü4pgË «ø©¸½€f‹ #ð­6ÛO~ëæ¾oEÿ*Y9µV3VÉ[‡®q”’܈6nµ½¾|wýáê|õþÍÙ»Ýêòú|7‡¿‡ ÷e±‡½¥~™l÷
+‹øyñzª"Dñqèʇº¹@W¦ÃÐ5Ø ]¹ÃË}˜+~6æ
+d.Þ;ö§!W=‚\uátA.ïž¹ò£‹ï\ùQÈÅO\ÇðÊ=^ÑŽWü¼Bj«²<€±Ò1–?ÌXîs2În´'=±””vPý÷`,š0ÖÃߺ¹ï[ÿ\Œõ‰¸óvûßÏ‹ÝùÓáN
+Z{ÑŽA $3hG<4óãé³÷¥,"U_ƒ@>±5ТÒR
+òr°ï'ý‹8=¯ñ'Š;¥AC`g õ¡³®ŠíeóR䃃SÈ>8Ç\ì †IxK°¬$ŸCœ—Ä,÷’HVöƒÕÜî{]*SSîþ !nkXÉB"÷¸Ö’Z½+c‰|‹ °7Žl=v/.±‚0S3Î8ÄOÒÖ¥2Y#é{È '¦~Á0¹ê°Óè‰ÓNL“ÐŒ†ZLÂj’ÍÉvVcÿ>¾šìlì ­¦¿Ž ¾íŠÝaÈbê®Õ½ó¹'ˆQl¬ïãÄÞŒ”S7–ÑèóÄ8„;'×h 8Ù§¤šp+[g¤¡ü‹ÄHžhü>fÎÌ+’€¬ün^|z:óðÇYê_Íàê«v~AÚ™’AW!{‘ÎBÞ©0bf=Ø—Î
+±¤á ¥D:‹†$ (I>Ä\ÁøôU5¿ªæŸZ5%Ô.è –FL² MÌ8%Ó¡1²YÔ}¥–…QvÛ¶Ï…˜IæKeôJžÛ0ŒŒ0Ør0IEÊ‹ 5Å’K´Å:bÊ®õá‚íÚ‹ Ö»eÛ3ŽEv†er Ëä:úlfœª~3%¬ – óW…h /¡
+Ô|·Ô¤I•`ÄÌd;`q‰lqt±®fÞ”mÇN4÷üö®‘4 ×àçIôH]þ\{ª~É¡ÖAtî$ˆÇä8MŽx›Œ‹Á™úÔn­R™,˘u&Åc•é°@%óáŸæ€XVé&™âË:~ê[7÷|kµ9)÷RײÇþHzÇ8yx&› g-©SOSátˆ¹j‘­ÌIuíŠj–Ð~¬MÄŽÀ±Ç5•Ú”áCûÓZŸÙS•õ b÷ìUvJA¿²ÍË`‰K&×¼NÁ¥^0°ç¢š‚w¸’Ôa8^.²C‰ÿg¿J{ÛÆµè÷ùü2@L®Z^?Å]Þt^ÛM0(03[MÜ:’!+É´¿þ’¢K^âlÄq“ÊW$/yyî¹çö|ßò¡¨CTã9Ôgó]õ²¥°+§÷ÎN¥ Ýx:– ñ›Û@}ò}W¥©và_pje¬ëgBÂ
+á/Ã
+ÊÓÕ€RJø&Í1×çž2sîœë¤BOë N-qê”[×oe¿ ŸzF§@C‡xšMu-ô‚µ’½]µ/J»r¢Œ¾“Ù¾2à×wA•*6»‹µ—ìiî’CuY!…4TAe| MÒ¶/Æ!Å­hA7º3”
+ØÆá.ʬG5Ïàž=¤™¸>$-n4*,€t1'}ú`>Â]f(ºÝC"3=”sÐ+fj£‡ú¯±°žÏþŠ>A—ÜW†ìAEh']7‡üdÙé‰@ºùËÀÉc jz7èQ<
+†,'Cs Z6ᕊ[ÂZÛsχíR}iŽo¥]7úŠ€ëûñª ®ìúRÚž„«•›qdø¬‰Âh «¨Â^\1â ™V‹è{wð-ÝÕÅÞìÊL¶A2;O&3Ú÷·H<„;úH *$_”PB,Ç¥õ:“fù¥s™´œIˆ9î¯ãWÀkw©K¥ƒáåf/«ÑaÚ%ß6]‹ºJÔÍ!ºjA˜.Ím\¼\¼.´
+jIl¡
+  fÁ‹zdú–eॷzºðÞÔ{-ïÊG½G¶(òŽ%0¿k tK`Á» ½±ÏzÞQèíÀV¡÷jCk…Þç¤UèíЙB盧гn ¬.qç, j¼6ÃWÝ(ίø»Ø‘TJhlèò)f°áÂàQ q>Sôwe
+´ïï~Ú=ÑÑ9yµ˜.j÷æÎ]¥Ý[æxQ»7wîÚíÞ­ôŽÒßO>¦Éa6JòQr¶»[Ø ª¿ÙzñqbÞöÝáøN¿ÆƒBi˜žÆ¤Ÿ]NÏɇ(‰Îâ ¢ig;Ë^ûöU4€‹ÉùhP =NÓñä×$«Ïí¡ e½F}‚Z8¡c¨]ãí8Ê—Nf§ô26ÇÚ5:føóf´Çgaª=÷{FùycíWçQ6H«sb”]£cìqüON^®FûâUíÑ$ΪGy–~‹±·^qû@LóîïGs"¤áRŽù®ã¥ÿQjÍ7›0tñ®×ÜAHëŸëGÐí9ßìÞ|‹Ùà |ÜÑkŸ{qn#¯óÄúVD9òÂsr홯»cÂÆœÝ“s6æ>>7Žù]§HWîêí9N°[Ý#®äÚQ˜@øq¶=bbÇz¼,»·ˆã¼m7èdvsœvïé^wT#ĹÁÊã,!^µ9 -†'}]—)‡4Ò\ú–3u{böNWßû:Àí;í(ÿ>ާ[/öþ—¤×‰ù¦Ëÿö~’&;dï#ŽC~Åë}ˆƒ«¸|¿÷*½˜hD¿qF3È%ıf«ÍöŠ1¿vO;Ê£Á·›O[Å[?šŽ W<‹'qóe|ƒõ:ui„˜¤ù§xB Í[;° i¶#”üާ¯°]I>?ÿ¦d¸…wŸ*)¶÷:þB^’­d»¶ÔŽ^û%1¾ ´Ù;Œ²¼óXýqœ —„bñÌ
+ÍðNPÛyµÂü/>Å«4^Žòy'hN¾#@蛾Mà0´:@c2ß\ÅÉÁphŽo TÅSw©= ëöž§xhüPˆBÐ M!e¡g${hÑ_>|ŽfÝÅÈb³È*7ôÔqõdŽ„9oþ‰—z/ö¥Y¢›ª ~p|=?[–!¯Ò,‰³éމAmÒvãu/M°1[¶0(v[ÜžYeïx”Wà[ô§8BÎeÑpt9]€ç5‹Í3©7âÛG"Î[eÂ{ªXå0÷M(>σ)Ć)ž SX‰åtÔÜûy5µ8*6;^gé„GÃôºµ—ó3£±ÂªyÁ\H'Ñ(›L_Q®#‘êÂ<PιU©žtÁ»m(§ƒ±ÝNÿ.ÉÉö`š vŠmÚô=O³MËUœåÖB©³ £ì›];uÆtÙÅJ.8_fn1ãïtœ [ÿeA¨çQhOm
+ÃÆ;ÐCÖ/”&<O°@ÿÇ™b
+*Ó/ªß‡()s’é]ü“ÿŽ×."õnPCfV.gXg8Ë¿OÔRõ@ªÐÓEàñ„œ!FA÷)n÷3W‰þi…÷V6½Ž 6EmSÔžd·£ÈÙc·1O˜7 olxãIò†¯¨VQ=Ͻ@˜ʹV\!ežtq{
+É8`™€ä¸W,¡ŽÍ+ÍuÎ/ÈLÅîÁ0¢û%«Ã\RÓ‹RSñÕÿ#¡õç ƒ<äâÙÔ,‡$¢tÎÌ-ÈA”Îz•h×;%JK¨MãAZu- À-{x`8¥ƒ srBªb€å~ ^OxæÛ€
+î9ùå
+¦Àªe´b­X°W,
+endstream endobj 188 0 obj <</Filter[/FlateDecode]/Length 6788>>stream
+H‰ìWkOËýŽÄè/‘@ŠÙ~?®ÅÖ/ÝäÚF‡#˺vØËx–Ìvð¯OUõôÌô.ð#ÉÌŠeèé>]}ªêT5ãìÍõögbœýÆûÈ4{ÉÞ¾ãl¾ ïŽðüooMž–§ì1ÛÞb;ÏUuÜ^Wå.ûãöÖc6yº˜µì1¼šMKƒã&Óbµ˜Áª¶lØOÛ[;óåIÉ~®køÿEµü¸ ;s6éfÀЧÍò’Ÿóåǽbq¹ `ÕÕÙ¢†)å«â}I“Æ
+ÉlÕÌhà‘Ü6“óeó)Ö›Ñà‡²‰EÈô½Ä¼h.hˆï¹þŠº¼,"¤…KJ<©®òOªzþC—oÑå·0^\Uí»±4/Þ_Vƒ4Q®EWqI÷K¬WHh%<.¬NÇ?xH¬‰k‡ Mmv¸?ü~}VÏš–Œ_ÑÁ¡__-ëÃ,ê³Gºñi ©vXTeÛ–QtOîoöÎÛ#X¿j›Y~·K}ó IÍ_loÎJàÎßÏmÙ/½'‘E)T¿Í=CPÁ{–mÖ¯9z1eGå|XeEðrl`°F@Že–Žÿ£¬*P§´ÞJgIX†­z¨|ዦ,ë~.(7ÞWH£BÈ—‹aù“ëbXí½²ÖÀ\gƒ°7}”VO««biCàxf„ru£w²Õ/‹3h‹@Ø
+Ή$
+蘢©/#A´:,²Q£Çìà18%RÚ
+Wï(ܤåÖÂÓ Å1ù—áqdÓ ¹æ ‡ÍXp€HèÌO"9¾?tL‘WéþÌBŒ½Ö¤©{²TgLç&颩‚”ÂnšjQ„qƒÌGiy{0ÔâÉc¹@"Q#-nÕÁê˜h©”Cîzgqh¤Õy
+G AT"€£ÜÉZ КHÐÉØX[¤…yŽÂÚHx^b;å’Š )—(•P³磀7’L­]²†ïRzŒ
+=H6˜õ+%Ǽç¡}ƒÛu0†,
+€Úº™2ýKk¢çúüt©,=ä'è"Òéœä7‚{A* ql¹'O3ïcI`xô0R'ÑÉÔAF)õNRȨNV*£•½,ÉÄeà74+ ú†ëµÌjV”}ØÛa¼e%K‘“¤
+µô˜× ZR…AgÍŠKd±ªá–Ãáo yO©4¢
+†¦LtcNI°Ösª26Ž’2i ¯Á?˶PšRÞ¤96/(¤Î<sd3Pé‹kª**+® X\Ñó~„ëLìÏ,ׂpÁCžà ƒ >MõÚ9MÆÐáz4˜ßš³ÖE1õ*?,Ôð¨}mT@,ZI;ʱϰ†
+5
+Ø7­6
+l=¥²V×÷¿)t¸¦n«|ýˆ×†î|LÑ×gó»^²oý¡oH8Ýì0ÞåøB
+ý[.Ml†‡»+Aùßþ¢K-”Æ0€ï!Vc¨C Ð2»ÞöÝ=ntqYçhUs£¦Š Ïx„¶<fS?¢SãàRg"ã}xŶz·Ù÷Šâ
+Fjäÿêiø%¿U~ú8÷¾ý‹…_HZÜÉÇ3%ìÛgξˆ„É„å—ÐçµúÌ/?û(ä£<¤ô>Édþ7~ûD¿“M*ÿ¸©.Á;.’gÎdý²ê=Æ$ä»âÿ¾$ìéjF·4-žæŒÑüNùîÊ»Z+éG!ÈÁüß{yÑ×ò÷››c(yÜõ@4z¿o…ròÃÇÃjÉÓâ§þ‘ÿý;¾*¬Eëâ¿3’=Ñ"7 A|£|È6OYÞ×ÇG%Û¤y*¯úW_“(–µ7ŸøŽÕ^ÜÓïuÅÖµÇYî—vD„µ—ÿæB¿ûU,ó¿
+Â"£̌ùb¶‘’³ü4Ÿx9¬½\eCV¼©kÊ?Wø2aDÕwŠRþxSÿNùn”¿S碌2 žhèWå;tØù99Üè‚äU¬•£¥´Ç3ù‰›U~Ì>™ŸûŸ¾ ô‹«åcÈ„3"Çÿ}¸ÿÌsyúã_®zûUÊrAŸH)’åFÒìæêg%.Ïæßø3oôW ]'i(òŠ”ªáÕ`ž§ªú¸øGÖôøqïŸ,û¶%"ûåæjð˜ÿÕµ[R‹£¸ø {AÈÈJëŽÑdõÇ‹OãŒB²”ò¼ BPš´ôg€Ë„…yÀ.2?3T~V4
+¸{ëx¾§J{ÛE‚oÖÀ¶«´(܈¦t( ¬VdK…ü˜&jx=ÆÙKýTÃ\’à©8n,qšr Ö:Æ\<Ãëh¨Qàå[ÎŒó6ŸÐ4]нœgw‹‡{dó+×Ë×'vüê¡v„D’~FUhÌ6ÙéÔY=/$]9Á(sŽÄRð®mdßbšD1Ì€i)ŠâZÉvI(cØQ‰…«}ô—Zˆ_6 ]×÷’‹
+ÈÕ]2
+÷ ¨=¢±è
+÷ ¨=¢±è
+ _> 5
+¼ã쥆ªa.IðT7‚8M9
+Pkc.žáu4Ô(ðr£2ã¼Í¨è½ržÝ-îAͯ4×ÍV”7ÊÈ»'vüê¡v„D’~FUhÌ6ÙéÔY=/$]9Á(wŽÄRð® °äÄ4‰b˜ÓR3ĵ’í’PÆ °£ Wûè/µÃl8º®/î%!«»d
+žf뻤
+H@w‘T.HbÓÒKA“DDv—i饠­h–‘6+-
+¸Át2ò'#ÇslmWì`k`ÛUZŒ€nD
+S:PV#²¥B·PC¯Ç8{©Ÿj˜K<Ç… NSŽÔZǘ‹gx 5
+¼|¬Ì8oó)zÁœgw‹‡{dó+ͽ³å2òz¨]!‘¤ŸQ$³ÍD6B:uVÏ IWE0Ê‚#±¼ëFsûJÓ$ŠaLKQ ÏŽ¶KBƒÈŽJ`Öá_j!ŽÙ°t]_ÝK.B*\Èí]B
+H@{‘T.HbÓÒKA“DDv—i饠­h–‘6+-
+¸Á­7M'Cç”®ÆXì`k`ÛUZŒ€nD
+S:PV#²¥B·PC¯Ç8{©Ÿj˜K<Ç… NSŽÔZǘ‹gx 5
+¼ÜxÍ8oó)zÁœgw‹‡{dó+ͽ³å2òî‰=åƒÎj×AH$égT…Él3‘NÕóBÒ•CŒ2‡àH,ïºÑÆÖ… ¦IÃü—–¢!ž}yÛ%¡ŒAdG%
+0ëè/µ¿lº®/î%!CÈÝ]B
+
+šf2àØ8«¤·‚¶æJ±
+qjQ©nÌõ¼˜¿BÝ'ÝÓó$Ê…<ruÇjÈç5µ;ÏgšÝ+^š†x¶ëÈŽI‡rõ<“ªÈ‘0¦ÜaK ï»Ð\Çx„<
+Bl«¤$zˆm$ûˆ|B`ßJ*\§[ÿ—Y˜]߃{)¤Ï%2º¿
+ª…¹dÞ{‘n‰q6å$@q …üÄãØP“ÀË•G!N-*Õyù¢žóW²û¤{užD¹G®îØñ_7µ;ÏgšÝ+^š†x¶ëÈŽI‡rõ<“ªÈ‘0¦ÜéX¢`S ¹×wÍOFSãyò(±m°’’ègŽefûˆ|BhßJdæ“2ƒ˜2"<îƒhíˆ
+endstream endobj 189 0 obj <</Filter[/FlateDecode]/Length 3958>>stream
+H‰ì—Qoã8Ç߸ï0@q@¸Eã4IÛÛ§¹6)\ƒ¦÷vPd: *K$§í·?ÚÓm­Ä‰h4måŒý0ƒ™6"Eþù;¿_ŠXƒüíÛ?ÿþ·ü/úv:‘ö[ç)RÅð{þ‡}^ÁËÏßNgV/åÂ5X3‘ýeÑŠ?@|¥„Òæ·j{ÉÒ¿Ìÿøù×é§ÿùùö¯â_×Kn—J2ýüó?þxóg_8Ï,˜—7œ~ךmÛœ‹çD³ûebGm÷‘QÝLÆc¥SfƒˆÆ2½
+x…Óçܬ·¢òd)€^Žùf1îÅ ¿Bþ­”ØW"šI³bøFþL+Ç!ˆÒèúîPÆÐè^,ƒÀê€ß\¥â5ÄYàw±PziïSp•[ô]oéj%„Zƒž2cAÿ`[Ö®£Ú€®öl7ˬºÍÓFƒ-›7„Pª)~
+­Fbt‚ ìœŒ‹‡rwÓz´ih¬þŒ.%^4Á8Ä$²yc¹Èb¸b«<2"¥ëio0ôS™¥ô5ªl`Ôõê…ç ÎÐ$M@nxêÅ|„y±7ÖÝò Ï?I2³ûâU¤·žNÚò9¦5ÐÝÌè‰qZ‰¼ÚÖ:¢ÝÁW­¹¥à çyÿ¹csARLŸSÑï§Š?@LïÄMá*²U4™‘D[ Ã}dT7“ñXi”^ADc™^€áÞ‚vËþW÷¡ªŸ÷`O®IýhÛ)Œ™å«(‡<Y
+ ×Ÿc~L“*òN*«™4+†oäÏ´òp‚( ¯rÊÝ‹eXð›ë]cØaÔgE€õ„Z•[ô~‘¥•j zÊŒÅe‚ lY$Ų˳!Ü,³ê6O ¶lÞB©¦øi(´‰Ñu‚²s2.ÊÝMëѦ¡±"‰M01m'*™7†‹,†+¶Ê##Rº.AöCß8•YJ_£ÊÖA
+W‘­¢ÉŒ$Úî#£º™ŒÇJ£ô
+"Ëôì ÷´;Xö¿ºõ}ËÅž\“úѶS3ËWQy²@¯?Çü˜&UäTV3iV ßÈŸiåá8Q^å&”14ºË °:à7׻ưè!Ί
+ —¢c~LC+ò-«™4+†oäÏ´q‚(ÿhÆüâ²D\¬ÞŒB'Õ´´íRÖ Ç!ÊÎɸx(—;­G›†ÆJ’+P0N¬Ø²y0‚Òß±[9p
+czamõú{‹ËaO–è¥è˜ÓÔŠ¼SËj&ÍŠáù3­@‡ ŠÃ?›1¿¸C÷7ã†Ð¹ /eßp‚ ìœŒ‹‡r¹Óz´ih¬-)ßV^Šœ,™£(ý»•çóËáYwà]e[9ÐÊV´r •±¶r •“ƒþÙù°×­²kå@+Z9ÐÊV´r •¿„ˆ¢Á`؆çç­hõ@«Z=ÐêV´zà—Õ½þàübpýrz࢕­¨ª ð›k ”ú¬ð»X(½´÷)‰»Ê-zÿpÑJµ=eÇÆ&ðrï:ª èjφp³ÌªÛ<m4زyC[!Ø
+AW~5ao0ôÉ™¥ENH’¬l`Ôíú
+W‘­¢ÉŒ$Úî#£ò®¯ŸŽezv†rí–þ¯nD§Ñå êºçÝKßðr`rMjMÛNaŒ/,®^ou9ìÉR
+¼ý*†iS+C§4g)ÖgÉÒ/Ûüðv¤·NÚò9¦5ÐÝìø™ Z‰¼Ù¶º¢æàÙþà UÿyàsIRL_Sѧ’Z<BFïÄ]árÙrMf¬ÐèpŸÕdš¦Ú ôŠ"š‚›%÷¸· ÝÁ²ÿÝ}蜖ô»Î.ÿ¦7¤Î´íÇô
+Õ–G¾XI W¢g~L3‹gVa¸²kŽ/´òð¢(à;ÚZÝ«eX= ðÌMÓ@ö d¥ °dÛå}Xn-¥Þ€™q[àZÁ%¶,’viòì7/ }W¥[7ï¡Ò3<œj#1úQPöÎR÷QÞnÞŽ6•°)|h’ ÈhÛQͼ3„B–\óu‘Òw‰‚t\…Æ©*súBU·Žõƒz!Ã9ˆsŒ
+ú°Ü2ZJ½3ã¶Àµ‚KlY$íÒäÙn^ú®J ¶nÞB¥gx48ÕFbô¢ ì¥î£¼Ý¼m+a5RøÐ$Ѷ£šyg…,3¸æë*2"¥ïé ¹
+SUæô…ªn ëõB†sçŠ& ßyDÄ|‚¹Û Û€nùDŠ÷¿X”¶ùáíHo;´åsLk¡»Ùñ3´y³muEÍÁ³ýÁ.ªþóÀç’¤˜¾¦¢?N%µx„ŒÞ‰»Âå²åšÌX¡-Ðá>3ªÉ4MµAéE47K(îqoA»ƒeÿ»ûÐù ß%¿ú—Ipvù0½!u¦m§8¦×íŸÉàrouyì‹•z-zæÇ4µXpj†+»æøGñB+Ï!ŠâÏfÌ/nKÄÍê¿qG蔞ÕÖ]ʾá9DAÙ;KÝGyÜy;Ú<6V‚–TX’ bÅÖÍ£Q”áŽ}Ò‡Ò£á þ(=Òš'5ðƒÕÀþw µµ4ºWË(°z$à™ T<Ê—Òø[.µYsð.·(èÃ#Óh)õÌŒ[†·\bËjºªwл=;ÂÍËBßUi£ÁÖÍ;Bx’·'yëËÛ.
+YfpÍ×UdDJß%
+ÒAr§ªÌ]õ‘$uÝ:
+@Öê… ç Î0T³€ü'À
+endstream endobj 162 0 obj [/ICCBased 170 0 R] endobj 190 0 obj <</CreationDate(D:20090527042239-04'00')/Creator(Adobe Illustrator CS4)/ModDate(D:20090730214335-05'00')/Producer(Adobe PDF library 9.00)/Title(colorbox)>> endobj xref
+0 191
+0000000004 65535 f
+0000000016 00000 n
+0000000076 00000 n
+0000048436 00000 n
+0000000005 00000 f
+0000000006 00000 f
+0000000007 00000 f
+0000000008 00000 f
+0000000009 00000 f
+0000000010 00000 f
+0000000011 00000 f
+0000000012 00000 f
+0000000013 00000 f
+0000000014 00000 f
+0000000015 00000 f
+0000000016 00000 f
+0000000017 00000 f
+0000000018 00000 f
+0000000019 00000 f
+0000000020 00000 f
+0000000021 00000 f
+0000000022 00000 f
+0000000023 00000 f
+0000000024 00000 f
+0000000025 00000 f
+0000000026 00000 f
+0000000027 00000 f
+0000000028 00000 f
+0000000029 00000 f
+0000000030 00000 f
+0000000031 00000 f
+0000000032 00000 f
+0000000033 00000 f
+0000000034 00000 f
+0000000035 00000 f
+0000000036 00000 f
+0000000037 00000 f
+0000000038 00000 f
+0000000039 00000 f
+0000000040 00000 f
+0000000041 00000 f
+0000000042 00000 f
+0000000043 00000 f
+0000000044 00000 f
+0000000045 00000 f
+0000000046 00000 f
+0000000047 00000 f
+0000000048 00000 f
+0000000049 00000 f
+0000000050 00000 f
+0000000051 00000 f
+0000000052 00000 f
+0000000053 00000 f
+0000000054 00000 f
+0000000055 00000 f
+0000000056 00000 f
+0000000057 00000 f
+0000000058 00000 f
+0000000059 00000 f
+0000000060 00000 f
+0000000061 00000 f
+0000000062 00000 f
+0000000063 00000 f
+0000000064 00000 f
+0000000065 00000 f
+0000000066 00000 f
+0000000067 00000 f
+0000000068 00000 f
+0000000069 00000 f
+0000000070 00000 f
+0000000071 00000 f
+0000000072 00000 f
+0000000073 00000 f
+0000000074 00000 f
+0000000075 00000 f
+0000000076 00000 f
+0000000077 00000 f
+0000000078 00000 f
+0000000079 00000 f
+0000000080 00000 f
+0000000081 00000 f
+0000000082 00000 f
+0000000083 00000 f
+0000000084 00000 f
+0000000085 00000 f
+0000000086 00000 f
+0000000087 00000 f
+0000000088 00000 f
+0000000089 00000 f
+0000000090 00000 f
+0000000091 00000 f
+0000000092 00000 f
+0000000093 00000 f
+0000000094 00000 f
+0000000095 00000 f
+0000000096 00000 f
+0000000097 00000 f
+0000000098 00000 f
+0000000099 00000 f
+0000000100 00000 f
+0000000101 00000 f
+0000000102 00000 f
+0000000103 00000 f
+0000000104 00000 f
+0000000105 00000 f
+0000000106 00000 f
+0000000107 00000 f
+0000000108 00000 f
+0000000109 00000 f
+0000000110 00000 f
+0000000111 00000 f
+0000000112 00000 f
+0000000113 00000 f
+0000000114 00000 f
+0000000115 00000 f
+0000000117 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000051202 00000 n
+0000048489 00000 n
+0000048844 00000 n
+0000049045 00000 n
+0000061445 00000 n
+0000058207 00000 n
+0000050103 00000 n
+0000049109 00000 n
+0000231123 00000 n
+0000049538 00000 n
+0000049588 00000 n
+0000055520 00000 n
+0000055406 00000 n
+0000051720 00000 n
+0000051805 00000 n
+0000052189 00000 n
+0000055557 00000 n
+0000058244 00000 n
+0000061521 00000 n
+0000062006 00000 n
+0000062952 00000 n
+0000069751 00000 n
+0000084919 00000 n
+0000102822 00000 n
+0000111395 00000 n
+0000126519 00000 n
+0000132206 00000 n
+0000141391 00000 n
+0000143749 00000 n
+0000159943 00000 n
+0000177431 00000 n
+0000183301 00000 n
+0000187819 00000 n
+0000205653 00000 n
+0000220229 00000 n
+0000227091 00000 n
+0000231160 00000 n
+trailer
+<</Size 191/Root 1 0 R/Info 190 0 R/ID[<7EB5FF43BD08164184F35B8300F050C9><E617EB833E197F43BC059F7255614CEE>]>>
+startxref
+231333
+%%EOF
diff --git a/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox-min.js b/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox-min.js
new file mode 100644
index 000000000..9db7adf75
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox-min.js
@@ -0,0 +1,4 @@
+// ColorBox v1.3.19.3 - jQuery lightbox plugin
+// (c) 2011 Jack Moore - jacklmoore.com
+// License: http://www.opensource.org/licenses/mit-license.php
+(function(a,b,c){function Z(c,d,e){var g=b.createElement(c);return d&&(g.id=f+d),e&&(g.style.cssText=e),a(g)}function $(a){var b=y.length,c=(Q+a)%b;return c<0?b+c:c}function _(a,b){return Math.round((/%/.test(a)?(b==="x"?z.width():z.height())/100:1)*parseInt(a,10))}function ab(a){return K.photo||/\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(a)}function bb(){var b,c=a.data(P,e);c==null?(K=a.extend({},d),console&&console.log&&console.log("Error: cboxElement missing settings object")):K=a.extend({},c);for(b in K)a.isFunction(K[b])&&b.slice(0,2)!=="on"&&(K[b]=K[b].call(P));K.rel=K.rel||P.rel||"nofollow",K.href=K.href||a(P).attr("href"),K.title=K.title||P.title,typeof K.href=="string"&&(K.href=a.trim(K.href))}function cb(b,c){a.event.trigger(b),c&&c.call(P)}function db(){var a,b=f+"Slideshow_",c="click."+f,d,e,g;K.slideshow&&y[1]?(d=function(){F.text(K.slideshowStop).unbind(c).bind(j,function(){if(K.loop||y[Q+1])a=setTimeout(W.next,K.slideshowSpeed)}).bind(i,function(){clearTimeout(a)}).one(c+" "+k,e),r.removeClass(b+"off").addClass(b+"on"),a=setTimeout(W.next,K.slideshowSpeed)},e=function(){clearTimeout(a),F.text(K.slideshowStart).unbind([j,i,k,c].join(" ")).one(c,function(){W.next(),d()}),r.removeClass(b+"on").addClass(b+"off")},K.slideshowAuto?d():e()):r.removeClass(b+"off "+b+"on")}function eb(b){U||(P=b,bb(),y=a(P),Q=0,K.rel!=="nofollow"&&(y=a("."+g).filter(function(){var b=a.data(this,e),c;return b&&(c=b.rel||this.rel),c===K.rel}),Q=y.index(P),Q===-1&&(y=y.add(P),Q=y.length-1)),S||(S=T=!0,r.show(),K.returnFocus&&a(P).blur().one(l,function(){a(this).focus()}),q.css({opacity:+K.opacity,cursor:K.overlayClose?"pointer":"auto"}).show(),K.w=_(K.initialWidth,"x"),K.h=_(K.initialHeight,"y"),W.position(),o&&z.bind("resize."+p+" scroll."+p,function(){q.css({width:z.width(),height:z.height(),top:z.scrollTop(),left:z.scrollLeft()})}).trigger("resize."+p),cb(h,K.onOpen),J.add(D).hide(),I.html(K.close).show()),W.load(!0))}function fb(){!r&&b.body&&(Y=!1,z=a(c),r=Z(X).attr({id:e,"class":n?f+(o?"IE6":"IE"):""}).hide(),q=Z(X,"Overlay",o?"position:absolute":"").hide(),s=Z(X,"Wrapper"),t=Z(X,"Content").append(A=Z(X,"LoadedContent","width:0; height:0; overflow:hidden"),C=Z(X,"LoadingOverlay").add(Z(X,"LoadingGraphic")),D=Z(X,"Title"),E=Z(X,"Current"),G=Z(X,"Next"),H=Z(X,"Previous"),F=Z(X,"Slideshow").bind(h,db),I=Z(X,"Close")),s.append(Z(X).append(Z(X,"TopLeft"),u=Z(X,"TopCenter"),Z(X,"TopRight")),Z(X,!1,"clear:left").append(v=Z(X,"MiddleLeft"),t,w=Z(X,"MiddleRight")),Z(X,!1,"clear:left").append(Z(X,"BottomLeft"),x=Z(X,"BottomCenter"),Z(X,"BottomRight"))).find("div div").css({"float":"left"}),B=Z(X,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),J=G.add(H).add(E).add(F),a(b.body).append(q,r.append(s,B)))}function gb(){return r?(Y||(Y=!0,L=u.height()+x.height()+t.outerHeight(!0)-t.height(),M=v.width()+w.width()+t.outerWidth(!0)-t.width(),N=A.outerHeight(!0),O=A.outerWidth(!0),r.css({"padding-bottom":L,"padding-right":M}),G.click(function(){W.next()}),H.click(function(){W.prev()}),I.click(function(){W.close()}),q.click(function(){K.overlayClose&&W.close()}),a(b).bind("keydown."+f,function(a){var b=a.keyCode;S&&K.escKey&&b===27&&(a.preventDefault(),W.close()),S&&K.arrowKey&&y[1]&&(b===37?(a.preventDefault(),H.click()):b===39&&(a.preventDefault(),G.click()))}),a("."+g,b).live("click",function(a){a.which>1||a.shiftKey||a.altKey||a.metaKey||(a.preventDefault(),eb(this))})),!0):!1}var d={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:undefined},e="colorbox",f="cbox",g=f+"Element",h=f+"_open",i=f+"_load",j=f+"_complete",k=f+"_cleanup",l=f+"_closed",m=f+"_purge",n=!a.support.opacity&&!a.support.style,o=n&&!c.XMLHttpRequest,p=f+"_IE6",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X="div",Y;if(a.colorbox)return;a(fb),W=a.fn[e]=a[e]=function(b,c){var f=this;b=b||{},fb();if(gb()){if(!f[0]){if(f.selector)return f;f=a("<a/>"),b.open=!0}c&&(b.onComplete=c),f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b))}).addClass(g),(a.isFunction(b.open)&&b.open.call(f)||b.open)&&eb(f[0])}return f},W.position=function(a,b){function i(a){u[0].style.width=x[0].style.width=t[0].style.width=a.style.width,t[0].style.height=v[0].style.height=w[0].style.height=a.style.height}var c=0,d=0,e=r.offset(),g,h;z.unbind("resize."+f),r.css({top:-9e4,left:-9e4}),g=z.scrollTop(),h=z.scrollLeft(),K.fixed&&!o?(e.top-=g,e.left-=h,r.css({position:"fixed"})):(c=g,d=h,r.css({position:"absolute"})),K.right!==!1?d+=Math.max(z.width()-K.w-O-M-_(K.right,"x"),0):K.left!==!1?d+=_(K.left,"x"):d+=Math.round(Math.max(z.width()-K.w-O-M,0)/2),K.bottom!==!1?c+=Math.max(z.height()-K.h-N-L-_(K.bottom,"y"),0):K.top!==!1?c+=_(K.top,"y"):c+=Math.round(Math.max(z.height()-K.h-N-L,0)/2),r.css({top:e.top,left:e.left}),a=r.width()===K.w+O&&r.height()===K.h+N?0:a||0,s[0].style.width=s[0].style.height="9999px",r.dequeue().animate({width:K.w+O,height:K.h+N,top:c,left:d},{duration:a,complete:function(){i(this),T=!1,s[0].style.width=K.w+O+M+"px",s[0].style.height=K.h+N+L+"px",K.reposition&&setTimeout(function(){z.bind("resize."+f,W.position)},1),b&&b()},step:function(){i(this)}})},W.resize=function(a){S&&(a=a||{},a.width&&(K.w=_(a.width,"x")-O-M),a.innerWidth&&(K.w=_(a.innerWidth,"x")),A.css({width:K.w}),a.height&&(K.h=_(a.height,"y")-N-L),a.innerHeight&&(K.h=_(a.innerHeight,"y")),!a.innerHeight&&!a.height&&(A.css({height:"auto"}),K.h=A.height()),A.css({height:K.h}),W.position(K.transition==="none"?0:K.speed))},W.prep=function(b){function g(){return K.w=K.w||A.width(),K.w=K.mw&&K.mw<K.w?K.mw:K.w,K.w}function h(){return K.h=K.h||A.height(),K.h=K.mh&&K.mh<K.h?K.mh:K.h,K.h}if(!S)return;var c,d=K.transition==="none"?0:K.speed;A.remove(),A=Z(X,"LoadedContent").append(b),A.hide().appendTo(B.show()).css({width:g(),overflow:K.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(t),B.hide(),a(R).css({"float":"none"}),o&&a("select").not(r.find("select")).filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one(k,function(){this.style.visibility="inherit"}),c=function(){function s(){n&&r[0].style.removeAttribute("filter")}var b,c,g=y.length,h,i="frameBorder",k="allowTransparency",l,o,p,q;if(!S)return;l=function(){clearTimeout(V),C.hide(),cb(j,K.onComplete)},n&&R&&A.fadeIn(100),D.html(K.title).add(A).show();if(g>1){typeof K.current=="string"&&E.html(K.current.replace("{current}",Q+1).replace("{total}",g)).show(),G[K.loop||Q<g-1?"show":"hide"]().html(K.next),H[K.loop||Q?"show":"hide"]().html(K.previous),K.slideshow&&F.show();if(K.preloading){b=[$(-1),$(1)];while(c=y[b.pop()])q=a.data(c,e),q&&q.href?(o=q.href,a.isFunction(o)&&(o=o.call(c))):o=c.href,ab(o)&&(p=new Image,p.src=o)}}else J.hide();K.iframe?(h=Z("iframe")[0],i in h&&(h[i]=0),k in h&&(h[k]="true"),h.name=f+ +(new Date),K.fastIframe?l():a(h).one("load",l),h.src=K.href,K.scrolling||(h.scrolling="no"),a(h).addClass(f+"Iframe").appendTo(A).one(m,function(){h.src="//about:blank"})):l(),K.transition==="fade"?r.fadeTo(d,1,s):s()},K.transition==="fade"?r.fadeTo(d,0,function(){W.position(0,c)}):W.position(d,c)},W.load=function(b){var c,d,e=W.prep;T=!0,R=!1,P=y[Q],b||bb(),cb(m),cb(i,K.onLoad),K.h=K.height?_(K.height,"y")-N-L:K.innerHeight&&_(K.innerHeight,"y"),K.w=K.width?_(K.width,"x")-O-M:K.innerWidth&&_(K.innerWidth,"x"),K.mw=K.w,K.mh=K.h,K.maxWidth&&(K.mw=_(K.maxWidth,"x")-O-M,K.mw=K.w&&K.w<K.mw?K.w:K.mw),K.maxHeight&&(K.mh=_(K.maxHeight,"y")-N-L,K.mh=K.h&&K.h<K.mh?K.h:K.mh),c=K.href,V=setTimeout(function(){C.show()},100),K.inline?(Z(X).hide().insertBefore(a(c)[0]).one(m,function(){a(this).replaceWith(A.children())}),e(a(c))):K.iframe?e(" "):K.html?e(K.html):ab(c)?(a(R=new Image).addClass(f+"Photo").error(function(){K.title=!1,e(Z(X,"Error").html(K.imgError))}).load(function(){var a;R.onload=null,K.scalePhotos&&(d=function(){R.height-=R.height*a,R.width-=R.width*a},K.mw&&R.width>K.mw&&(a=(R.width-K.mw)/R.width,d()),K.mh&&R.height>K.mh&&(a=(R.height-K.mh)/R.height,d())),K.h&&(R.style.marginTop=Math.max(K.h-R.height,0)/2+"px"),y[1]&&(K.loop||y[Q+1])&&(R.style.cursor="pointer",R.onclick=function(){W.next()}),n&&(R.style.msInterpolationMode="bicubic"),setTimeout(function(){e(R)},1)}),setTimeout(function(){R.src=c},1)):c&&B.load(c,K.data,function(b,c,d){e(c==="error"?Z(X,"Error").html(K.xhrError):a(this).contents())})},W.next=function(){!T&&y[1]&&(K.loop||y[Q+1])&&(Q=$(1),W.load())},W.prev=function(){!T&&y[1]&&(K.loop||Q)&&(Q=$(-1),W.load())},W.close=function(){S&&!U&&(U=!0,S=!1,cb(k,K.onCleanup),z.unbind("."+f+" ."+p),q.fadeTo(200,0),r.stop().fadeTo(300,0,function(){r.add(q).css({opacity:1,cursor:"auto"}).hide(),cb(m),A.remove(),setTimeout(function(){U=!1,cb(l,K.onClosed)},1)}))},W.remove=function(){a([]).add(r).add(q).remove(),r=null,a("."+g).removeData(e).removeClass(g).die()},W.element=function(){return a(P)},W.settings=d})(jQuery,document,this); \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox.js b/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox.js
new file mode 100644
index 000000000..28673a45d
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox.js
@@ -0,0 +1,926 @@
+// ColorBox v1.3.19.3 - jQuery lightbox plugin
+// (c) 2011 Jack Moore - jacklmoore.com
+// License: http://www.opensource.org/licenses/mit-license.php
+(function ($, document, window) {
+ var
+ // Default settings object.
+ // See http://jacklmoore.com/colorbox for details.
+ defaults = {
+ transition: "elastic",
+ speed: 300,
+ width: false,
+ initialWidth: "600",
+ innerWidth: false,
+ maxWidth: false,
+ height: false,
+ initialHeight: "450",
+ innerHeight: false,
+ maxHeight: false,
+ scalePhotos: true,
+ scrolling: true,
+ inline: false,
+ html: false,
+ iframe: false,
+ fastIframe: true,
+ photo: false,
+ href: false,
+ title: false,
+ rel: false,
+ opacity: 0.9,
+ preloading: true,
+
+ current: "image {current} of {total}",
+ previous: "previous",
+ next: "next",
+ close: "close",
+ xhrError: "This content failed to load.",
+ imgError: "This image failed to load.",
+
+ open: false,
+ returnFocus: true,
+ reposition: true,
+ loop: true,
+ slideshow: false,
+ slideshowAuto: true,
+ slideshowSpeed: 2500,
+ slideshowStart: "start slideshow",
+ slideshowStop: "stop slideshow",
+ onOpen: false,
+ onLoad: false,
+ onComplete: false,
+ onCleanup: false,
+ onClosed: false,
+ overlayClose: true,
+ escKey: true,
+ arrowKey: true,
+ top: false,
+ bottom: false,
+ left: false,
+ right: false,
+ fixed: false,
+ data: undefined
+ },
+
+ // Abstracting the HTML and event identifiers for easy rebranding
+ colorbox = 'colorbox',
+ prefix = 'cbox',
+ boxElement = prefix + 'Element',
+
+ // Events
+ event_open = prefix + '_open',
+ event_load = prefix + '_load',
+ event_complete = prefix + '_complete',
+ event_cleanup = prefix + '_cleanup',
+ event_closed = prefix + '_closed',
+ event_purge = prefix + '_purge',
+
+ // Special Handling for IE
+ isIE = !$.support.opacity && !$.support.style, // IE7 & IE8
+ isIE6 = isIE && !window.XMLHttpRequest, // IE6
+ event_ie6 = prefix + '_IE6',
+
+ // Cached jQuery Object Variables
+ $overlay,
+ $box,
+ $wrap,
+ $content,
+ $topBorder,
+ $leftBorder,
+ $rightBorder,
+ $bottomBorder,
+ $related,
+ $window,
+ $loaded,
+ $loadingBay,
+ $loadingOverlay,
+ $title,
+ $current,
+ $slideshow,
+ $next,
+ $prev,
+ $close,
+ $groupControls,
+
+ // Variables for cached values or use across multiple functions
+ settings,
+ interfaceHeight,
+ interfaceWidth,
+ loadedHeight,
+ loadedWidth,
+ element,
+ index,
+ photo,
+ open,
+ active,
+ closing,
+ loadingTimer,
+ publicMethod,
+ div = "div",
+ init;
+
+ // ****************
+ // HELPER FUNCTIONS
+ // ****************
+
+ // Convience function for creating new jQuery objects
+ function $tag(tag, id, css) {
+ var element = document.createElement(tag);
+
+ if (id) {
+ element.id = prefix + id;
+ }
+
+ if (css) {
+ element.style.cssText = css;
+ }
+
+ return $(element);
+ }
+
+ // Determine the next and previous members in a group.
+ function getIndex(increment) {
+ var
+ max = $related.length,
+ newIndex = (index + increment) % max;
+
+ return (newIndex < 0) ? max + newIndex : newIndex;
+ }
+
+ // Convert '%' and 'px' values to integers
+ function setSize(size, dimension) {
+ return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
+ }
+
+ // Checks an href to see if it is a photo.
+ // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
+ function isImage(url) {
+ return settings.photo || /\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(url);
+ }
+
+ // Assigns function results to their respective properties
+ function makeSettings() {
+ var i,
+ data = $.data(element, colorbox);
+
+ if (data == null) {
+ settings = $.extend({}, defaults);
+ if (console && console.log) {
+ console.log('Error: cboxElement missing settings object')
+ }
+ } else {
+ settings = $.extend({}, data);
+ }
+
+ for (i in settings) {
+ if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
+ settings[i] = settings[i].call(element);
+ }
+ }
+
+ settings.rel = settings.rel || element.rel || 'nofollow';
+ settings.href = settings.href || $(element).attr('href');
+ settings.title = settings.title || element.title;
+
+ if (typeof settings.href === "string") {
+ settings.href = $.trim(settings.href);
+ }
+ }
+
+ function trigger(event, callback) {
+ $.event.trigger(event);
+ if (callback) {
+ callback.call(element);
+ }
+ }
+
+ // Slideshow functionality
+ function slideshow() {
+ var
+ timeOut,
+ className = prefix + "Slideshow_",
+ click = "click." + prefix,
+ start,
+ stop,
+ clear;
+
+ if (settings.slideshow && $related[1]) {
+ start = function () {
+ $slideshow
+ .text(settings.slideshowStop)
+ .unbind(click)
+ .bind(event_complete, function () {
+ if (settings.loop || $related[index + 1]) {
+ timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
+ }
+ })
+ .bind(event_load, function () {
+ clearTimeout(timeOut);
+ })
+ .one(click + ' ' + event_cleanup, stop);
+ $box.removeClass(className + "off").addClass(className + "on");
+ timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
+ };
+
+ stop = function () {
+ clearTimeout(timeOut);
+ $slideshow
+ .text(settings.slideshowStart)
+ .unbind([event_complete, event_load, event_cleanup, click].join(' '))
+ .one(click, function () {
+ publicMethod.next();
+ start();
+ });
+ $box.removeClass(className + "on").addClass(className + "off");
+ };
+
+ if (settings.slideshowAuto) {
+ start();
+ } else {
+ stop();
+ }
+ } else {
+ $box.removeClass(className + "off " + className + "on");
+ }
+ }
+
+ function launch(target) {
+ if (!closing) {
+
+ element = target;
+
+ makeSettings();
+
+ $related = $(element);
+
+ index = 0;
+
+ if (settings.rel !== 'nofollow') {
+ $related = $('.' + boxElement).filter(function () {
+ var data = $.data(this, colorbox),
+ relRelated;
+
+ if (data) {
+ relRelated = data.rel || this.rel;
+ }
+
+ return (relRelated === settings.rel);
+ });
+ index = $related.index(element);
+
+ // Check direct calls to ColorBox.
+ if (index === -1) {
+ $related = $related.add(element);
+ index = $related.length - 1;
+ }
+ }
+
+ if (!open) {
+ open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
+
+ $box.show();
+
+ if (settings.returnFocus) {
+ $(element).blur().one(event_closed, function () {
+ $(this).focus();
+ });
+ }
+
+ // +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
+ $overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
+
+ // Opens inital empty ColorBox prior to content being loaded.
+ settings.w = setSize(settings.initialWidth, 'x');
+ settings.h = setSize(settings.initialHeight, 'y');
+ publicMethod.position();
+
+ if (isIE6) {
+ $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
+ $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
+ }).trigger('resize.' + event_ie6);
+ }
+
+ trigger(event_open, settings.onOpen);
+
+ $groupControls.add($title).hide();
+
+ $close.html(settings.close).show();
+ }
+
+ publicMethod.load(true);
+ }
+ }
+
+ // ColorBox's markup needs to be added to the DOM prior to being called
+ // so that the browser will go ahead and load the CSS background images.
+ function appendHTML() {
+ if (!$box && document.body) {
+ init = false;
+
+ $window = $(window);
+ $box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();
+ $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
+ $wrap = $tag(div, "Wrapper");
+ $content = $tag(div, "Content").append(
+ $loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),
+ $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),
+ $title = $tag(div, "Title"),
+ $current = $tag(div, "Current"),
+ $next = $tag(div, "Next"),
+ $prev = $tag(div, "Previous"),
+ $slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),
+ $close = $tag(div, "Close")
+ );
+
+ $wrap.append( // The 3x3 Grid that makes up ColorBox
+ $tag(div).append(
+ $tag(div, "TopLeft"),
+ $topBorder = $tag(div, "TopCenter"),
+ $tag(div, "TopRight")
+ ),
+ $tag(div, false, 'clear:left').append(
+ $leftBorder = $tag(div, "MiddleLeft"),
+ $content,
+ $rightBorder = $tag(div, "MiddleRight")
+ ),
+ $tag(div, false, 'clear:left').append(
+ $tag(div, "BottomLeft"),
+ $bottomBorder = $tag(div, "BottomCenter"),
+ $tag(div, "BottomRight")
+ )
+ ).find('div div').css({'float': 'left'});
+
+ $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
+
+ $groupControls = $next.add($prev).add($current).add($slideshow);
+
+ $(document.body).append($overlay, $box.append($wrap, $loadingBay));
+ }
+ }
+
+ // Add ColorBox's event bindings
+ function addBindings() {
+ if ($box) {
+ if (!init) {
+ init = true;
+
+ // Cache values needed for size calculations
+ interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
+ interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
+ loadedHeight = $loaded.outerHeight(true);
+ loadedWidth = $loaded.outerWidth(true);
+
+ // Setting padding to remove the need to do size conversions during the animation step.
+ $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});
+
+ // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
+ $next.click(function () {
+ publicMethod.next();
+ });
+ $prev.click(function () {
+ publicMethod.prev();
+ });
+ $close.click(function () {
+ publicMethod.close();
+ });
+ $overlay.click(function () {
+ if (settings.overlayClose) {
+ publicMethod.close();
+ }
+ });
+
+ // Key Bindings
+ $(document).bind('keydown.' + prefix, function (e) {
+ var key = e.keyCode;
+ if (open && settings.escKey && key === 27) {
+ e.preventDefault();
+ publicMethod.close();
+ }
+ if (open && settings.arrowKey && $related[1]) {
+ if (key === 37) {
+ e.preventDefault();
+ $prev.click();
+ } else if (key === 39) {
+ e.preventDefault();
+ $next.click();
+ }
+ }
+ });
+
+ $('.' + boxElement, document).live('click', function (e) {
+ // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
+ // See: http://jacklmoore.com/notes/click-events/
+ if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
+ e.preventDefault();
+ launch(this);
+ }
+ });
+ }
+ return true;
+ }
+ return false;
+ }
+
+ // Don't do anything if ColorBox already exists.
+ if ($.colorbox) {
+ return;
+ }
+
+ // Append the HTML when the DOM loads
+ $(appendHTML);
+
+
+ // ****************
+ // PUBLIC FUNCTIONS
+ // Usage format: $.fn.colorbox.close();
+ // Usage from within an iframe: parent.$.fn.colorbox.close();
+ // ****************
+
+ publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
+ var $this = this;
+
+ options = options || {};
+
+ appendHTML();
+
+ if (addBindings()) {
+ if (!$this[0]) {
+ if ($this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
+ return $this;
+ }
+ // if no selector was given (ie. $.colorbox()), create a temporary element to work with
+ $this = $('<a/>');
+ options.open = true; // assume an immediate open
+ }
+
+ if (callback) {
+ options.onComplete = callback;
+ }
+
+ $this.each(function () {
+ $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
+ }).addClass(boxElement);
+
+ if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
+ launch($this[0]);
+ }
+ }
+
+ return $this;
+ };
+
+ publicMethod.position = function (speed, loadedCallback) {
+ var
+ top = 0,
+ left = 0,
+ offset = $box.offset(),
+ scrollTop,
+ scrollLeft;
+
+ $window.unbind('resize.' + prefix);
+
+ // remove the modal so that it doesn't influence the document width/height
+ $box.css({top: -9e4, left: -9e4});
+
+ scrollTop = $window.scrollTop();
+ scrollLeft = $window.scrollLeft();
+
+ if (settings.fixed && !isIE6) {
+ offset.top -= scrollTop;
+ offset.left -= scrollLeft;
+ $box.css({position: 'fixed'});
+ } else {
+ top = scrollTop;
+ left = scrollLeft;
+ $box.css({position: 'absolute'});
+ }
+
+ // keeps the top and left positions within the browser's viewport.
+ if (settings.right !== false) {
+ left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
+ } else if (settings.left !== false) {
+ left += setSize(settings.left, 'x');
+ } else {
+ left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
+ }
+
+ if (settings.bottom !== false) {
+ top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
+ } else if (settings.top !== false) {
+ top += setSize(settings.top, 'y');
+ } else {
+ top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
+ }
+
+ $box.css({top: offset.top, left: offset.left});
+
+ // setting the speed to 0 to reduce the delay between same-sized content.
+ speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
+
+ // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
+ // but it has to be shrank down around the size of div#colorbox when it's done. If not,
+ // it can invoke an obscure IE bug when using iframes.
+ $wrap[0].style.width = $wrap[0].style.height = "9999px";
+
+ function modalDimensions(that) {
+ $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
+ $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
+ }
+
+ $box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: top, left: left}, {
+ duration: speed,
+ complete: function () {
+ modalDimensions(this);
+
+ active = false;
+
+ // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
+ $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
+ $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
+
+ if (settings.reposition) {
+ setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
+ $window.bind('resize.' + prefix, publicMethod.position);
+ }, 1);
+ }
+
+ if (loadedCallback) {
+ loadedCallback();
+ }
+ },
+ step: function () {
+ modalDimensions(this);
+ }
+ });
+ };
+
+ publicMethod.resize = function (options) {
+ if (open) {
+ options = options || {};
+
+ if (options.width) {
+ settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
+ }
+ if (options.innerWidth) {
+ settings.w = setSize(options.innerWidth, 'x');
+ }
+ $loaded.css({width: settings.w});
+
+ if (options.height) {
+ settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
+ }
+ if (options.innerHeight) {
+ settings.h = setSize(options.innerHeight, 'y');
+ }
+ if (!options.innerHeight && !options.height) {
+ $loaded.css({height: "auto"});
+ settings.h = $loaded.height();
+ }
+ $loaded.css({height: settings.h});
+
+ publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
+ }
+ };
+
+ publicMethod.prep = function (object) {
+ if (!open) {
+ return;
+ }
+
+ var callback, speed = settings.transition === "none" ? 0 : settings.speed;
+
+ $loaded.remove();
+ $loaded = $tag(div, 'LoadedContent').append(object);
+
+ function getWidth() {
+ settings.w = settings.w || $loaded.width();
+ settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
+ return settings.w;
+ }
+ function getHeight() {
+ settings.h = settings.h || $loaded.height();
+ settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
+ return settings.h;
+ }
+
+ $loaded.hide()
+ .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
+ .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
+ .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
+ .prependTo($content);
+
+ $loadingBay.hide();
+
+ // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
+ //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
+
+ $(photo).css({'float': 'none'});
+
+ // Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
+ if (isIE6) {
+ $('select').not($box.find('select')).filter(function () {
+ return this.style.visibility !== 'hidden';
+ }).css({'visibility': 'hidden'}).one(event_cleanup, function () {
+ this.style.visibility = 'inherit';
+ });
+ }
+
+ callback = function () {
+ var preload,
+ i,
+ total = $related.length,
+ iframe,
+ frameBorder = 'frameBorder',
+ allowTransparency = 'allowTransparency',
+ complete,
+ src,
+ img,
+ data;
+
+ if (!open) {
+ return;
+ }
+
+ function removeFilter() {
+ if (isIE) {
+ $box[0].style.removeAttribute('filter');
+ }
+ }
+
+ complete = function () {
+ clearTimeout(loadingTimer);
+ $loadingOverlay.hide();
+ trigger(event_complete, settings.onComplete);
+ };
+
+ if (isIE) {
+ //This fadeIn helps the bicubic resampling to kick-in.
+ if (photo) {
+ $loaded.fadeIn(100);
+ }
+ }
+
+ $title.html(settings.title).add($loaded).show();
+
+ if (total > 1) { // handle grouping
+ if (typeof settings.current === "string") {
+ $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
+ }
+
+ $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
+ $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
+
+ if (settings.slideshow) {
+ $slideshow.show();
+ }
+
+ // Preloads images within a rel group
+ if (settings.preloading) {
+ preload = [
+ getIndex(-1),
+ getIndex(1)
+ ];
+ while (i = $related[preload.pop()]) {
+ data = $.data(i, colorbox);
+
+ if (data && data.href) {
+ src = data.href;
+ if ($.isFunction(src)) {
+ src = src.call(i);
+ }
+ } else {
+ src = i.href;
+ }
+
+ if (isImage(src)) {
+ img = new Image();
+ img.src = src;
+ }
+ }
+ }
+ } else {
+ $groupControls.hide();
+ }
+
+ if (settings.iframe) {
+ iframe = $tag('iframe')[0];
+
+ if (frameBorder in iframe) {
+ iframe[frameBorder] = 0;
+ }
+ if (allowTransparency in iframe) {
+ iframe[allowTransparency] = "true";
+ }
+ // give the iframe a unique name to prevent caching
+ iframe.name = prefix + (+new Date());
+ if (settings.fastIframe) {
+ complete();
+ } else {
+ $(iframe).one('load', complete);
+ }
+ iframe.src = settings.href;
+ if (!settings.scrolling) {
+ iframe.scrolling = "no";
+ }
+ $(iframe).addClass(prefix + 'Iframe').appendTo($loaded).one(event_purge, function () {
+ iframe.src = "//about:blank";
+ });
+ } else {
+ complete();
+ }
+
+ if (settings.transition === 'fade') {
+ $box.fadeTo(speed, 1, removeFilter);
+ } else {
+ removeFilter();
+ }
+ };
+
+ if (settings.transition === 'fade') {
+ $box.fadeTo(speed, 0, function () {
+ publicMethod.position(0, callback);
+ });
+ } else {
+ publicMethod.position(speed, callback);
+ }
+ };
+
+ publicMethod.load = function (launched) {
+ var href, setResize, prep = publicMethod.prep;
+
+ active = true;
+
+ photo = false;
+
+ element = $related[index];
+
+ if (!launched) {
+ makeSettings();
+ }
+
+ trigger(event_purge);
+
+ trigger(event_load, settings.onLoad);
+
+ settings.h = settings.height ?
+ setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
+ settings.innerHeight && setSize(settings.innerHeight, 'y');
+
+ settings.w = settings.width ?
+ setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
+ settings.innerWidth && setSize(settings.innerWidth, 'x');
+
+ // Sets the minimum dimensions for use in image scaling
+ settings.mw = settings.w;
+ settings.mh = settings.h;
+
+ // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
+ // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
+ if (settings.maxWidth) {
+ settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
+ settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
+ }
+ if (settings.maxHeight) {
+ settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
+ settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
+ }
+
+ href = settings.href;
+
+ loadingTimer = setTimeout(function () {
+ $loadingOverlay.show();
+ }, 100);
+
+ if (settings.inline) {
+ // Inserts an empty placeholder where inline content is being pulled from.
+ // An event is bound to put inline content back when ColorBox closes or loads new content.
+ $tag(div).hide().insertBefore($(href)[0]).one(event_purge, function () {
+ $(this).replaceWith($loaded.children());
+ });
+ prep($(href));
+ } else if (settings.iframe) {
+ // IFrame element won't be added to the DOM until it is ready to be displayed,
+ // to avoid problems with DOM-ready JS that might be trying to run in that iframe.
+ prep(" ");
+ } else if (settings.html) {
+ prep(settings.html);
+ } else if (isImage(href)) {
+ $(photo = new Image())
+ .addClass(prefix + 'Photo')
+ .error(function () {
+ settings.title = false;
+ prep($tag(div, 'Error').html(settings.imgError));
+ })
+ .load(function () {
+ var percent;
+ photo.onload = null; //stops animated gifs from firing the onload repeatedly.
+
+ if (settings.scalePhotos) {
+ setResize = function () {
+ photo.height -= photo.height * percent;
+ photo.width -= photo.width * percent;
+ };
+ if (settings.mw && photo.width > settings.mw) {
+ percent = (photo.width - settings.mw) / photo.width;
+ setResize();
+ }
+ if (settings.mh && photo.height > settings.mh) {
+ percent = (photo.height - settings.mh) / photo.height;
+ setResize();
+ }
+ }
+
+ if (settings.h) {
+ photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';
+ }
+
+ if ($related[1] && (settings.loop || $related[index + 1])) {
+ photo.style.cursor = 'pointer';
+ photo.onclick = function () {
+ publicMethod.next();
+ };
+ }
+
+ if (isIE) {
+ photo.style.msInterpolationMode = 'bicubic';
+ }
+
+ setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
+ prep(photo);
+ }, 1);
+ });
+
+ setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
+ photo.src = href;
+ }, 1);
+ } else if (href) {
+ $loadingBay.load(href, settings.data, function (data, status, xhr) {
+ prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
+ });
+ }
+ };
+
+ // Navigates to the next page/image in a set.
+ publicMethod.next = function () {
+ if (!active && $related[1] && (settings.loop || $related[index + 1])) {
+ index = getIndex(1);
+ publicMethod.load();
+ }
+ };
+
+ publicMethod.prev = function () {
+ if (!active && $related[1] && (settings.loop || index)) {
+ index = getIndex(-1);
+ publicMethod.load();
+ }
+ };
+
+ // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
+ publicMethod.close = function () {
+ if (open && !closing) {
+
+ closing = true;
+
+ open = false;
+
+ trigger(event_cleanup, settings.onCleanup);
+
+ $window.unbind('.' + prefix + ' .' + event_ie6);
+
+ $overlay.fadeTo(200, 0);
+
+ $box.stop().fadeTo(300, 0, function () {
+
+ $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
+
+ trigger(event_purge);
+
+ $loaded.remove();
+
+ setTimeout(function () {
+ closing = false;
+ trigger(event_closed, settings.onClosed);
+ }, 1);
+ });
+ }
+ };
+
+ // Removes changes ColorBox made to the document, but does not remove the plugin
+ // from jQuery.
+ publicMethod.remove = function () {
+ $([]).add($box).add($overlay).remove();
+ $box = null;
+ $('.' + boxElement)
+ .removeData(colorbox)
+ .removeClass(boxElement)
+ .die();
+ };
+
+ // A method for fetching the current element ColorBox is referencing.
+ // returns a jQuery object.
+ publicMethod.element = function () {
+ return $(element);
+ };
+
+ publicMethod.settings = defaults;
+
+}(jQuery, document, this)); \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/ajax.html b/mod/colorbox/vendors/jquery/colorbox/content/ajax.html
new file mode 100644
index 000000000..e772638ad
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/ajax.html
@@ -0,0 +1,11 @@
+<div id='homer' style="background:url(../content/homer.jpg) right center no-repeat #ececec; height:135px; width:280px; padding:30px 10px;">
+ <strong>Homer</strong><br/>
+ <em>\noun\</em><br/>
+ <strong>1.</strong> American bonehead<br/>
+ <strong>2. Pull a Homer-</strong><br/>
+ to succeed despite<br/>
+ idiocy
+</div>
+<script>
+ $('#homer strong').css({color:'red'});
+</script> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/flash.html b/mod/colorbox/vendors/jquery/colorbox/content/flash.html
new file mode 100644
index 000000000..c83f7c44f
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/flash.html
@@ -0,0 +1,8 @@
+<div style="width:504px; height:412px; overflow:hidden;">
+ <object>
+ <param name="allowfullscreen" value="true" /><param name="wmode" value="opaque" />
+ <param name="allowscriptaccess" value="always" />
+ <param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2285902&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" />
+ <embed src="http://vimeo.com/moogaloop.swf?clip_id=2285902&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" wmode="opaque" allowscriptaccess="always" width="504" height="412"></embed>
+ </object>
+</div> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/homer.jpg b/mod/colorbox/vendors/jquery/colorbox/content/homer.jpg
new file mode 100644
index 000000000..87ec76c99
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/homer.jpg
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/marylou.jpg b/mod/colorbox/vendors/jquery/colorbox/content/marylou.jpg
new file mode 100644
index 000000000..4c717d276
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/marylou.jpg
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/ohoopee1.jpg b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee1.jpg
new file mode 100644
index 000000000..aae19a3e6
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee1.jpg
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/ohoopee2.jpg b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee2.jpg
new file mode 100644
index 000000000..206894489
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee2.jpg
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/content/ohoopee3.jpg b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee3.jpg
new file mode 100644
index 000000000..4d64d2400
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/content/ohoopee3.jpg
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/colorbox.css b/mod/colorbox/vendors/jquery/colorbox/example1/colorbox.css
new file mode 100644
index 000000000..397fe3dca
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/colorbox.css
@@ -0,0 +1,86 @@
+/*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
+#colorbox{}
+ #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;}
+ #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;}
+ #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;}
+ #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;}
+ #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;}
+ #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;}
+ #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;}
+ #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;}
+ #cboxContent{background:#fff; overflow:hidden;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{margin-bottom:28px;}
+ #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
+ #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+ #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
+ #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
+ #cboxPrevious:hover{background-position:-75px -25px;}
+ #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
+ #cboxNext:hover{background-position:-50px -25px;}
+ #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+ #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
+ #cboxClose:hover{background-position:-25px -25px;}
+
+/*
+ The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+ when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
+ See: http://jacklmoore.com/notes/ie-transparency-problems/
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
+}
+
+/*
+ The following provides PNG transparency support for IE6
+ Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
+*/
+.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
+.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
+.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
+.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
+.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
+.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
+.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
+.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
+
+.cboxIE6 #cboxTopLeft,
+.cboxIE6 #cboxTopCenter,
+.cboxIE6 #cboxTopRight,
+.cboxIE6 #cboxBottomLeft,
+.cboxIE6 #cboxBottomCenter,
+.cboxIE6 #cboxBottomRight,
+.cboxIE6 #cboxMiddleLeft,
+.cboxIE6 #cboxMiddleRight {
+ _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
+}
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/border.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/border.png
new file mode 100644
index 000000000..f463a10d8
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/border.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/controls.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/controls.png
new file mode 100644
index 000000000..dcfd6fb9f
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/controls.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomCenter.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomCenter.png
new file mode 100644
index 000000000..0d4475edf
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomCenter.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomLeft.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomLeft.png
new file mode 100644
index 000000000..2775eba89
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomRight.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomRight.png
new file mode 100644
index 000000000..f7f51379c
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderBottomRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleLeft.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleLeft.png
new file mode 100644
index 000000000..a2d63d156
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleRight.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleRight.png
new file mode 100644
index 000000000..fd7c3e849
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderMiddleRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopCenter.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopCenter.png
new file mode 100644
index 000000000..2937a9cf9
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopCenter.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopLeft.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopLeft.png
new file mode 100644
index 000000000..f9d458b5b
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopRight.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopRight.png
new file mode 100644
index 000000000..74b8583cf
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/ie6/borderTopRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/loading.gif b/mod/colorbox/vendors/jquery/colorbox/example1/images/loading.gif
new file mode 100644
index 000000000..b4695d811
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/loading.gif
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/loading_background.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/loading_background.png
new file mode 100644
index 000000000..6ae83e697
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/loading_background.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/images/overlay.png b/mod/colorbox/vendors/jquery/colorbox/example1/images/overlay.png
new file mode 100644
index 000000000..53ea98f70
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/images/overlay.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example1/index.html b/mod/colorbox/vendors/jquery/colorbox/example1/index.html
new file mode 100644
index 000000000..44fcca860
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example1/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset='utf-8'/>
+ <title>ColorBox Examples</title>
+ <style>
+ body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+ a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+ h2{font-size:13px; margin:15px 0 0 0;}
+ </style>
+ <link rel="stylesheet" href="colorbox.css" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="../colorbox/jquery.colorbox.js"></script>
+ <script>
+ $(document).ready(function(){
+ //Examples of how to assign the ColorBox event to elements
+ $(".group1").colorbox({rel:'group1'});
+ $(".group2").colorbox({rel:'group2', transition:"fade"});
+ $(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
+ $(".group4").colorbox({rel:'group4', slideshow:true});
+ $(".ajax").colorbox();
+ $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
+ $(".inline").colorbox({inline:true, width:"50%"});
+ $(".callbacks").colorbox({
+ onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+ onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+ onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+ onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+ onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+ });
+
+ //Example of preserving a JavaScript event for inline calls.
+ $("#click").click(function(){
+ $('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+ return false;
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <h1>ColorBox Demonstration</h1>
+
+ <h2>Elastic Transition</h2>
+ <p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group1" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Fade Transition</h2>
+ <p><a class="group2" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+ <p><a class="group2" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group2" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>No Transition + fixed width and height (75% of screen size)</h2>
+ <p><a class="group3" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group3" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group3" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Slideshow</h2>
+ <p><a class="group4" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group4" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group4" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Other Content Types</h2>
+ <p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+ <p><a class='ajax' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='iframe' href="http://threadless.com">Outside Webpage (Iframe)</a></p>
+ <p><a class='inline' href="#inline_content">Inline HTML</a></p>
+
+ <h2>Demonstration of using callbacks</h2>
+ <p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <!-- This contains the hidden content for inline calls -->
+ <div style='display:none'>
+ <div id='inline_content' style='padding:10px; background:#fff;'>
+ <p><strong>This content comes from a hidden element on this page.</strong></p>
+ <p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
+ <p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+
+ <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p>Updating Content Example:<br />
+ <a class="ajax" href="../content/flash.html">Click here to load new content</a></p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example2/colorbox.css b/mod/colorbox/vendors/jquery/colorbox/example2/colorbox.css
new file mode 100644
index 000000000..fa42bf2f9
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example2/colorbox.css
@@ -0,0 +1,43 @@
+/*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#fff;}
+#colorbox{}
+ #cboxContent{margin-top:32px; overflow:visible;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{background:#000; padding:1px;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+ #cboxLoadingOverlay{background:#000;}
+ #cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
+ #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
+ #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+ #cboxPrevious{background-position:0px 0px; right:44px;}
+ #cboxPrevious:hover{background-position:0px -25px;}
+ #cboxNext{background-position:-25px 0px; right:22px;}
+ #cboxNext:hover{background-position:-25px -25px;}
+ #cboxClose{background-position:-50px 0px; right:0;}
+ #cboxClose:hover{background-position:-50px -25px;}
+ .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{right:66px;}
+ .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
+ .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}
+ .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
+ .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}
diff --git a/mod/colorbox/vendors/jquery/colorbox/example2/images/controls.png b/mod/colorbox/vendors/jquery/colorbox/example2/images/controls.png
new file mode 100644
index 000000000..8569b57f1
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example2/images/controls.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example2/images/loading.gif b/mod/colorbox/vendors/jquery/colorbox/example2/images/loading.gif
new file mode 100644
index 000000000..19c67bbd0
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example2/images/loading.gif
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example2/index.html b/mod/colorbox/vendors/jquery/colorbox/example2/index.html
new file mode 100644
index 000000000..44fcca860
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example2/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset='utf-8'/>
+ <title>ColorBox Examples</title>
+ <style>
+ body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+ a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+ h2{font-size:13px; margin:15px 0 0 0;}
+ </style>
+ <link rel="stylesheet" href="colorbox.css" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="../colorbox/jquery.colorbox.js"></script>
+ <script>
+ $(document).ready(function(){
+ //Examples of how to assign the ColorBox event to elements
+ $(".group1").colorbox({rel:'group1'});
+ $(".group2").colorbox({rel:'group2', transition:"fade"});
+ $(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
+ $(".group4").colorbox({rel:'group4', slideshow:true});
+ $(".ajax").colorbox();
+ $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
+ $(".inline").colorbox({inline:true, width:"50%"});
+ $(".callbacks").colorbox({
+ onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+ onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+ onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+ onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+ onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+ });
+
+ //Example of preserving a JavaScript event for inline calls.
+ $("#click").click(function(){
+ $('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+ return false;
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <h1>ColorBox Demonstration</h1>
+
+ <h2>Elastic Transition</h2>
+ <p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group1" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Fade Transition</h2>
+ <p><a class="group2" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+ <p><a class="group2" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group2" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>No Transition + fixed width and height (75% of screen size)</h2>
+ <p><a class="group3" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group3" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group3" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Slideshow</h2>
+ <p><a class="group4" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group4" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group4" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Other Content Types</h2>
+ <p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+ <p><a class='ajax' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='iframe' href="http://threadless.com">Outside Webpage (Iframe)</a></p>
+ <p><a class='inline' href="#inline_content">Inline HTML</a></p>
+
+ <h2>Demonstration of using callbacks</h2>
+ <p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <!-- This contains the hidden content for inline calls -->
+ <div style='display:none'>
+ <div id='inline_content' style='padding:10px; background:#fff;'>
+ <p><strong>This content comes from a hidden element on this page.</strong></p>
+ <p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
+ <p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+
+ <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p>Updating Content Example:<br />
+ <a class="ajax" href="../content/flash.html">Click here to load new content</a></p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example3/colorbox.css b/mod/colorbox/vendors/jquery/colorbox/example3/colorbox.css
new file mode 100644
index 000000000..36cc9ef42
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example3/colorbox.css
@@ -0,0 +1,38 @@
+/*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width: none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#000;}
+#colorbox{}
+ #cboxContent{margin-top:20px;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{border:5px solid #000; background:#fff;}
+ #cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
+ #cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
+ #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
+ #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
+ #cboxPrevious:hover{background-position:bottom left;}
+ #cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
+ #cboxNext:hover{background-position:bottom right;}
+ #cboxLoadingOverlay{background:#000;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+ #cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
+ #cboxClose:hover{background-position:bottom center;} \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example3/images/controls.png b/mod/colorbox/vendors/jquery/colorbox/example3/images/controls.png
new file mode 100644
index 000000000..e1e97982a
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example3/images/controls.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example3/images/loading.gif b/mod/colorbox/vendors/jquery/colorbox/example3/images/loading.gif
new file mode 100644
index 000000000..19c67bbd0
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example3/images/loading.gif
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example3/index.html b/mod/colorbox/vendors/jquery/colorbox/example3/index.html
new file mode 100644
index 000000000..44fcca860
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example3/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset='utf-8'/>
+ <title>ColorBox Examples</title>
+ <style>
+ body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+ a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+ h2{font-size:13px; margin:15px 0 0 0;}
+ </style>
+ <link rel="stylesheet" href="colorbox.css" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="../colorbox/jquery.colorbox.js"></script>
+ <script>
+ $(document).ready(function(){
+ //Examples of how to assign the ColorBox event to elements
+ $(".group1").colorbox({rel:'group1'});
+ $(".group2").colorbox({rel:'group2', transition:"fade"});
+ $(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
+ $(".group4").colorbox({rel:'group4', slideshow:true});
+ $(".ajax").colorbox();
+ $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
+ $(".inline").colorbox({inline:true, width:"50%"});
+ $(".callbacks").colorbox({
+ onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+ onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+ onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+ onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+ onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+ });
+
+ //Example of preserving a JavaScript event for inline calls.
+ $("#click").click(function(){
+ $('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+ return false;
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <h1>ColorBox Demonstration</h1>
+
+ <h2>Elastic Transition</h2>
+ <p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group1" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Fade Transition</h2>
+ <p><a class="group2" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+ <p><a class="group2" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group2" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>No Transition + fixed width and height (75% of screen size)</h2>
+ <p><a class="group3" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group3" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group3" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Slideshow</h2>
+ <p><a class="group4" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group4" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group4" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Other Content Types</h2>
+ <p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+ <p><a class='ajax' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='iframe' href="http://threadless.com">Outside Webpage (Iframe)</a></p>
+ <p><a class='inline' href="#inline_content">Inline HTML</a></p>
+
+ <h2>Demonstration of using callbacks</h2>
+ <p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <!-- This contains the hidden content for inline calls -->
+ <div style='display:none'>
+ <div id='inline_content' style='padding:10px; background:#fff;'>
+ <p><strong>This content comes from a hidden element on this page.</strong></p>
+ <p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
+ <p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+
+ <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p>Updating Content Example:<br />
+ <a class="ajax" href="../content/flash.html">Click here to load new content</a></p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/colorbox.css b/mod/colorbox/vendors/jquery/colorbox/example4/colorbox.css
new file mode 100644
index 000000000..bc5ef3e3d
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/colorbox.css
@@ -0,0 +1,82 @@
+/*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#fff;}
+#colorbox{}
+ #cboxTopLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 0;}
+ #cboxTopCenter{height:25px; background:url(images/border1.png) repeat-x 0 -50px;}
+ #cboxTopRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px 0;}
+ #cboxBottomLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 -25px;}
+ #cboxBottomCenter{height:25px; background:url(images/border1.png) repeat-x 0 -75px;}
+ #cboxBottomRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px -25px;}
+ #cboxMiddleLeft{width:25px; background:url(images/border2.png) repeat-y 0 0;}
+ #cboxMiddleRight{width:25px; background:url(images/border2.png) repeat-y -25px 0;}
+ #cboxContent{background:#fff; overflow:hidden;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{margin-bottom:20px;}
+ #cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
+ #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
+ #cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
+ #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
+ #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
+ #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
+ #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
+
+/*
+ The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+ when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
+ See: http://jacklmoore.com/notes/ie-transparency-problems/
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
+}
+
+/*
+ The following provides PNG transparency support for IE6
+ Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
+*/
+.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
+.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
+.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
+.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
+.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
+.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
+.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
+.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
+
+.cboxIE6 #cboxTopLeft,
+.cboxIE6 #cboxTopCenter,
+.cboxIE6 #cboxTopRight,
+.cboxIE6 #cboxBottomLeft,
+.cboxIE6 #cboxBottomCenter,
+.cboxIE6 #cboxBottomRight,
+.cboxIE6 #cboxMiddleLeft,
+.cboxIE6 #cboxMiddleRight {
+ _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
+}
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/border1.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/border1.png
new file mode 100644
index 000000000..0ddc70405
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/border1.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/border2.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/border2.png
new file mode 100644
index 000000000..aa62a0b72
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/border2.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomCenter.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomCenter.png
new file mode 100644
index 000000000..12e0e9ac0
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomCenter.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomLeft.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomLeft.png
new file mode 100644
index 000000000..b7a474ae0
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomRight.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomRight.png
new file mode 100644
index 000000000..6b6cb159b
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderBottomRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleLeft.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleLeft.png
new file mode 100644
index 000000000..8d0eb739d
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleRight.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleRight.png
new file mode 100644
index 000000000..d65509e30
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderMiddleRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopCenter.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopCenter.png
new file mode 100644
index 000000000..35d8da2d0
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopCenter.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopLeft.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopLeft.png
new file mode 100644
index 000000000..ae9bda040
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopLeft.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopRight.png b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopRight.png
new file mode 100644
index 000000000..0d8868399
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/ie6/borderTopRight.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/images/loading.gif b/mod/colorbox/vendors/jquery/colorbox/example4/images/loading.gif
new file mode 100644
index 000000000..602ce3c3a
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/images/loading.gif
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example4/index.html b/mod/colorbox/vendors/jquery/colorbox/example4/index.html
new file mode 100644
index 000000000..44fcca860
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example4/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset='utf-8'/>
+ <title>ColorBox Examples</title>
+ <style>
+ body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+ a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+ h2{font-size:13px; margin:15px 0 0 0;}
+ </style>
+ <link rel="stylesheet" href="colorbox.css" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="../colorbox/jquery.colorbox.js"></script>
+ <script>
+ $(document).ready(function(){
+ //Examples of how to assign the ColorBox event to elements
+ $(".group1").colorbox({rel:'group1'});
+ $(".group2").colorbox({rel:'group2', transition:"fade"});
+ $(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
+ $(".group4").colorbox({rel:'group4', slideshow:true});
+ $(".ajax").colorbox();
+ $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
+ $(".inline").colorbox({inline:true, width:"50%"});
+ $(".callbacks").colorbox({
+ onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+ onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+ onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+ onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+ onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+ });
+
+ //Example of preserving a JavaScript event for inline calls.
+ $("#click").click(function(){
+ $('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+ return false;
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <h1>ColorBox Demonstration</h1>
+
+ <h2>Elastic Transition</h2>
+ <p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group1" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Fade Transition</h2>
+ <p><a class="group2" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+ <p><a class="group2" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group2" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>No Transition + fixed width and height (75% of screen size)</h2>
+ <p><a class="group3" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group3" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group3" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Slideshow</h2>
+ <p><a class="group4" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group4" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group4" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Other Content Types</h2>
+ <p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+ <p><a class='ajax' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='iframe' href="http://threadless.com">Outside Webpage (Iframe)</a></p>
+ <p><a class='inline' href="#inline_content">Inline HTML</a></p>
+
+ <h2>Demonstration of using callbacks</h2>
+ <p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <!-- This contains the hidden content for inline calls -->
+ <div style='display:none'>
+ <div id='inline_content' style='padding:10px; background:#fff;'>
+ <p><strong>This content comes from a hidden element on this page.</strong></p>
+ <p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
+ <p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+
+ <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p>Updating Content Example:<br />
+ <a class="ajax" href="../content/flash.html">Click here to load new content</a></p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/colorbox.css b/mod/colorbox/vendors/jquery/colorbox/example5/colorbox.css
new file mode 100644
index 000000000..91301a9b1
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/colorbox.css
@@ -0,0 +1,52 @@
+/*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#000;}
+#colorbox{}
+ #cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
+ #cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
+ #cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
+ #cboxBottomLeft{width:14px; height:43px; background:url(images/controls.png) no-repeat 0 -32px;}
+ #cboxBottomCenter{height:43px; background:url(images/border.png) repeat-x bottom left;}
+ #cboxBottomRight{width:14px; height:43px; background:url(images/controls.png) no-repeat -36px -32px;}
+ #cboxMiddleLeft{width:14px; background:url(images/controls.png) repeat-y -175px 0;}
+ #cboxMiddleRight{width:14px; background:url(images/controls.png) repeat-y -211px 0;}
+ #cboxContent{background:#fff; overflow:visible;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{margin-bottom:5px;}
+ #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+ #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
+ #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
+
+ #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
+ #cboxPrevious{left:0px; background-position: -51px -25px;}
+ #cboxPrevious:hover{background-position:-51px 0px;}
+ #cboxNext{left:27px; background-position:-75px -25px;}
+ #cboxNext:hover{background-position:-75px 0px;}
+ #cboxClose{right:0; background-position:-100px -25px;}
+ #cboxClose:hover{background-position:-100px 0px;}
+
+ .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
+ .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
+ .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
+ .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;} \ No newline at end of file
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/images/border.png b/mod/colorbox/vendors/jquery/colorbox/example5/images/border.png
new file mode 100644
index 000000000..df13bb6da
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/images/border.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/images/controls.png b/mod/colorbox/vendors/jquery/colorbox/example5/images/controls.png
new file mode 100644
index 000000000..65cfd1dc9
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/images/controls.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/images/loading.gif b/mod/colorbox/vendors/jquery/colorbox/example5/images/loading.gif
new file mode 100644
index 000000000..b4695d811
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/images/loading.gif
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/images/loading_background.png b/mod/colorbox/vendors/jquery/colorbox/example5/images/loading_background.png
new file mode 100644
index 000000000..9de11f467
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/images/loading_background.png
Binary files differ
diff --git a/mod/colorbox/vendors/jquery/colorbox/example5/index.html b/mod/colorbox/vendors/jquery/colorbox/example5/index.html
new file mode 100644
index 000000000..44fcca860
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/example5/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset='utf-8'/>
+ <title>ColorBox Examples</title>
+ <style>
+ body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+ a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+ h2{font-size:13px; margin:15px 0 0 0;}
+ </style>
+ <link rel="stylesheet" href="colorbox.css" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="../colorbox/jquery.colorbox.js"></script>
+ <script>
+ $(document).ready(function(){
+ //Examples of how to assign the ColorBox event to elements
+ $(".group1").colorbox({rel:'group1'});
+ $(".group2").colorbox({rel:'group2', transition:"fade"});
+ $(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
+ $(".group4").colorbox({rel:'group4', slideshow:true});
+ $(".ajax").colorbox();
+ $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
+ $(".inline").colorbox({inline:true, width:"50%"});
+ $(".callbacks").colorbox({
+ onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+ onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+ onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+ onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+ onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+ });
+
+ //Example of preserving a JavaScript event for inline calls.
+ $("#click").click(function(){
+ $('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+ return false;
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <h1>ColorBox Demonstration</h1>
+
+ <h2>Elastic Transition</h2>
+ <p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group1" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Fade Transition</h2>
+ <p><a class="group2" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+ <p><a class="group2" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group2" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>No Transition + fixed width and height (75% of screen size)</h2>
+ <p><a class="group3" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group3" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group3" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Slideshow</h2>
+ <p><a class="group4" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+ <p><a class="group4" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+ <p><a class="group4" href="../content/ohoopee3.jpg" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+
+ <h2>Other Content Types</h2>
+ <p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+ <p><a class='ajax' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='iframe' href="http://threadless.com">Outside Webpage (Iframe)</a></p>
+ <p><a class='inline' href="#inline_content">Inline HTML</a></p>
+
+ <h2>Demonstration of using callbacks</h2>
+ <p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <!-- This contains the hidden content for inline calls -->
+ <div style='display:none'>
+ <div id='inline_content' style='padding:10px; background:#fff;'>
+ <p><strong>This content comes from a hidden element on this page.</strong></p>
+ <p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
+ <p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+
+ <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p>Updating Content Example:<br />
+ <a class="ajax" href="../content/flash.html">Click here to load new content</a></p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mod/colorbox/views/default/css/lightbox.php b/mod/colorbox/views/default/css/lightbox.php
new file mode 100644
index 000000000..e18c02bf8
--- /dev/null
+++ b/mod/colorbox/views/default/css/lightbox.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Colorbox -- Stylesheet
+ *
+ * Used as a view because we need to pass a full URL to AlphaImageLoader.
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$jquery_path = elgg_get_site_url() . 'mod/colorbox/vendors/jquery/';
+?>
+
+/*
+ * ColorBox - jQuery Plugin
+ * A lightweight customizable lightbox plugin for jQuery
+ *
+ */
+
+ /*
+ ColorBox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+body > #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width: none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+body > #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of ColorBox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#000;}
+body > #colorbox{}
+ #cboxContent{margin-top:20px;}
+ .cboxIframe{background:#fff;}
+ #cboxError{padding:50px; border:1px solid #ccc;}
+ #cboxLoadedContent{border:5px solid #000; background:#fff;}
+ #cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
+ #cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
+ #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
+ #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(<?php echo $jquery_path; ?>colorbox/example3/images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
+ #cboxPrevious:hover{background-position:bottom left;}
+ #cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(<?php echo $jquery_path; ?>colorbox/example3/images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
+ #cboxNext:hover{background-position:bottom right;}
+ #cboxLoadingOverlay{background:#000;}
+ #cboxLoadingGraphic{background:url(<?php echo $jquery_path; ?>colorbox/example3/images/loading.gif) no-repeat center center;}
+ #cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(<?php echo $jquery_path; ?>colorbox/example3/images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
+ #cboxClose:hover{background-position:bottom center;}
diff --git a/mod/colorbox/views/default/js/embed/embed.php b/mod/colorbox/views/default/js/embed/embed.php
new file mode 100644
index 000000000..ada6653a8
--- /dev/null
+++ b/mod/colorbox/views/default/js/embed/embed.php
@@ -0,0 +1,171 @@
+<?php
+/**
+ * Colorbox -- Javascript
+ *
+ * Used as a view because we need to pass a full URL to AlphaImageLoader.
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ * @override mod/embed/views/default/js/embed/embed.php
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+?>
+
+elgg.provide('elgg.embed');
+
+elgg.embed.init = function() {
+
+ // inserts the embed content into the textarea
+ $(".embed-item").live('click', elgg.embed.insert);
+
+ // caches the current textarea id
+ $(".embed-control").live('click', function() {
+ elgg.embed.textAreaId = /embed-control-(\S)+/.exec($(this).attr('class'))[1];
+ });
+
+ // special pagination helper for lightbox
+ $('.embed-wrapper .elgg-pagination a').live('click', elgg.embed.forward);
+
+ $('.embed-section').live('click', elgg.embed.forward);
+
+ $('.elgg-form-embed').live('submit', elgg.embed.submit);
+};
+
+/**
+ * Inserts data attached to an embed list item in textarea
+ *
+ * @todo generalize lightbox closing
+ *
+ * @param {Object} event
+ * @return void
+ */
+elgg.embed.insert = function(event) {
+ var textAreaId = elgg.embed.textAreaId;
+ var textArea = $('#' + textAreaId);
+
+ // generalize this based on a css class attached to what should be inserted
+ var content = ' ' + $(this).find(".embed-insert").parent().html() + ' ';
+
+ // this is a temporary work-around for #3971
+ if (content.indexOf('thumbnail.php') != -1) {
+ content = content.replace('size=small', 'size=medium');
+ }
+
+ textArea.val(textArea.val() + content);
+ textArea.focus();
+
+<?php
+// See the TinyMCE plugin for an example of this view
+echo elgg_view('embed/custom_insert_js');
+?>
+
+ elgg.ui.lightbox.close();
+
+ event.preventDefault();
+};
+
+/**
+ * Submit an upload form through Ajax
+ *
+ * Requires the jQuery Form Plugin. Because files cannot be uploaded with
+ * XMLHttpRequest, the plugin uses an invisible iframe. This results in the
+ * the X-Requested-With header not being set. To work around this, we are
+ * sending the header as a POST variable and Elgg's code checks for it in
+ * elgg_is_xhr().
+ *
+ * @param {Object} event
+ * @return bool
+ */
+elgg.embed.submit = function(event) {
+ $('.embed-wrapper .elgg-form-file-upload').hide();
+ $('.embed-throbber').show();
+
+ $(this).ajaxSubmit({
+ dataType : 'json',
+ data : { 'X-Requested-With' : 'XMLHttpRequest'},
+ success : function(response) {
+ if (response) {
+ if (response.system_messages) {
+ elgg.register_error(response.system_messages.error);
+ elgg.system_message(response.system_messages.success);
+ }
+ if (response.status >= 0) {
+ var forward = $('input[name=embed_forward]').val();
+ var url = elgg.normalize_url('embed/tab/' + forward);
+ url = elgg.embed.addContainerGUID(url);
+ $('.embed-wrapper').parent().load(url);
+ } else {
+ // incorrect response, presumably an error has been displayed
+ $('.embed-throbber').hide();
+ $('.embed-wrapper .elgg-form-file-upload').show();
+ }
+ }
+
+ // ie 7 and 8 have a null response because of the use of an iFrame
+ // so just show the list after upload.
+ // http://jquery.malsup.com/form/#file-upload claims you can wrap JSON
+ // in a textarea, but a quick test didn't work, and that is fairly
+ // intrusive to the rest of the ajax system.
+ else if (response === undefined && $.browser.msie) {
+ var forward = $('input[name=embed_forward]').val();
+ var url = elgg.normalize_url('embed/tab/' + forward);
+ url = elgg.embed.addContainerGUID(url);
+ $('.embed-wrapper').parent().load(url);
+ }
+ },
+ error : function(xhr, status) {
+ // @todo nothing for now
+ }
+ });
+
+ // this was bubbling up the DOM causing a submission
+ event.preventDefault();
+ event.stopPropagation();
+};
+
+/**
+ * Loads content within the lightbox
+ *
+ * @param {Object} event
+ * @return void
+ */
+elgg.embed.forward = function(event) {
+ // make sure container guid is passed
+ var url = $(this).attr('href');
+ url = elgg.embed.addContainerGUID(url);
+
+ $('.embed-wrapper').parent().load(url);
+ event.preventDefault();
+};
+
+/**
+ * Adds the container guid to a URL
+ *
+ * @param {string} url
+ * @return string
+ */
+elgg.embed.addContainerGUID = function(url) {
+ if (url.indexOf('container_guid=') == -1) {
+ var guid = $('input[name=embed_container_guid]').val();
+ return url + '?container_guid=' + guid;
+ } else {
+ return url;
+ }
+};
+
+elgg.register_hook_handler('init', 'system', elgg.embed.init);
diff --git a/mod/colorbox/views/default/js/lightbox.php b/mod/colorbox/views/default/js/lightbox.php
new file mode 100644
index 000000000..732092e2b
--- /dev/null
+++ b/mod/colorbox/views/default/js/lightbox.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Colorbox -- Stylesheet
+ *
+ * Used as a view because we need to pass a full URL to AlphaImageLoader.
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Usage
+ * Apply the class elgg-lightbox to links.
+ *
+ * Advanced Usage
+ * Elgg is distributed with the Colorbox jQuery library. Please go to
+ * http://www.jacklmoore.com/colorbox for more information on the options of this lightbox.
+ *
+ * Overriding
+ * In a plugin, override this view and override the registration for the
+ * lightbox JavaScript and CSS (@see elgg_views_boot()).
+ *
+ * @todo add support for passing options: $('#myplugin-lightbox').elgg.ui.lightbox(options);
+ */
+
+?>
+
+/**
+ * Lightbox initialization
+ */
+
+elgg.provide('elgg.ui.lightbox');
+
+elgg.ui.lightbox.init = function() {
+
+ $.extend($.colorbox.settings, {
+ current: elgg.echo('js:lightbox:current', ['{current}', '{total}']),
+ previous: elgg.echo('previous'),
+ next: elgg.echo('next'),
+ close: elgg.echo('close'),
+ xhrError: elgg.echo('error:default'),
+ imgError: elgg.echo('error:default'),
+ });
+
+ $(".elgg-lightbox").colorbox();
+ $(".elgg-lightbox-photo").colorbox({photo: true});
+ var n = 0;
+ $(".elgg-lightbox-gallery").each(function() {
+ $(this).find(".elgg-lightbox, .elgg-lightbox-photo")
+ .addClass("elgg-lightbox-" + n)
+ .colorbox({
+ rel: "elgg-lightbox-" + n++,
+ });
+ });
+}
+
+elgg.ui.lightbox.close = function() {
+ $.colorbox.close();
+}
+
+elgg.register_hook_handler('init', 'system', elgg.ui.lightbox.init);
+
+<?php
+
+$js_path = elgg_get_plugins_path();
+$js_path = "{$js_path}colorbox/vendors/jquery/colorbox/colorbox/jquery.colorbox-min.js";
+include $js_path;
diff --git a/mod/custom_index/index.php b/mod/custom_index/index.php
index 53990a006..05771f576 100644
--- a/mod/custom_index/index.php
+++ b/mod/custom_index/index.php
@@ -31,7 +31,7 @@ $files = elgg_list_entities($list_params);
//get the newest members who have an avatar
$newest_members = elgg_list_entities_from_metadata(array(
'metadata_names' => 'icontime',
- 'types' => 'user',
+ 'type' => 'user',
'limit' => 10,
'full_view' => false,
'pagination' => false,
diff --git a/mod/custom_index_widgets/index.php b/mod/custom_index_widgets/index.php
new file mode 100644
index 000000000..dac0db036
--- /dev/null
+++ b/mod/custom_index_widgets/index.php
@@ -0,0 +1,66 @@
+<?php
+
+ elgg_set_context('custom_index_widgets');
+ elgg_set_page_owner_guid(elgg_get_config('site_guid'));
+
+ $widgettypes = elgg_get_widget_types();
+
+ $page_owner = elgg_get_page_owner_guid();
+ $ciw_layout = elgg_get_plugin_setting("ciw_layout", "custom_index_widgets");
+ $ciw_showdashboard = elgg_get_plugin_setting("ciw_showdashboard", "custom_index_widgets");
+
+ $customwidgets = elgg_get_widgets($page_owner, elgg_get_context());
+ $area1widgets = isset($customwidgets[1]) ? $customwidgets[1] : FALSE;
+ $area2widgets = isset($customwidgets[2]) ? $customwidgets[2] : FALSE;
+ $area3widgets = isset($customwidgets[3]) ? $customwidgets[3] : FALSE;
+ /*
+ $area1widgets = elgg_get_widgets($page_owner,elgg_get_context(),1);
+ $area2widgets = elgg_get_widgets($page_owner,elgg_get_context(),2);
+ $area3widgets = elgg_get_widgets($page_owner,elgg_get_context(),3);
+ */
+
+ if (empty($area1widgets) && empty($area2widgets) && empty($area3widgets)) {
+
+ if (isset($vars['area3'])) $vars['area1'] = $vars['area3'];
+ if (isset($vars['area4'])) $vars['area2'] = $vars['area4'];
+ }
+
+ $leftcolumn_widgets_view = custom_index_build_columns($area1widgets,$widgettypes);
+ $middlecolumn_widgets_view = custom_index_build_columns($area2widgets,$widgettypes);
+ $rightcolumn_widgets_view = custom_index_build_columns($area3widgets,$widgettypes);
+
+
+ $content = elgg_view_layout($ciw_layout, array('area1' => $leftcolumn_widgets_view,'area2' => $middlecolumn_widgets_view,'area3' => $rightcolumn_widgets_view, 'layoutmode' => 'index_mode') );
+
+ if (elgg_is_logged_in() && $ciw_showdashboard=="yes"){
+
+ $user_guid = elgg_get_logged_in_user_guid();
+ elgg_set_page_owner_guid($user_guid);
+ elgg_set_context('dashboard');
+
+
+ $dashboardwidgets = elgg_get_widgets($user_guid, elgg_get_context());
+ $area1widgets = isset($dashboardwidgets[1]) ? $dashboardwidgets[1] : FALSE;
+ $area2widgets = isset($dashboardwidgets[2]) ? $dashboardwidgets[2] : FALSE;
+ $area3widgets = isset($dashboardwidgets[3]) ? $dashboardwidgets[3] : FALSE;
+ /*
+ $area1widgets = elgg_get_widgets($user_guid,elgg_get_context(),1);
+ $area2widgets = elgg_get_widgets($user_guid,elgg_get_context(),2);
+ $area3widgets = elgg_get_widgets($user_guid,elgg_get_context(),3);
+ */
+ if (empty($area1widgets) && empty($area2widgets) && empty($area3widgets)) {
+
+ if (isset($vars['area3'])) $vars['area1'] = $vars['area3'];
+ if (isset($vars['area4'])) $vars['area2'] = $vars['area4'];
+
+ }
+
+ $leftcolumn_widgets_view = custom_index_build_columns($area1widgets,$widgettypes);
+ $middlecolumn_widgets_view = custom_index_build_columns($area2widgets,$widgettypes);
+ $rightcolumn_widgets_view = custom_index_build_columns($area3widgets,$widgettypes);
+
+ $content .= elgg_view_layout($ciw_layout, array('area1' => $leftcolumn_widgets_view,'area2' => $middlecolumn_widgets_view,'area3' => $rightcolumn_widgets_view, 'layoutmode' => 'index_mode') );
+ }
+
+ echo elgg_view_page('Index', $content);
+?> \ No newline at end of file
diff --git a/mod/custom_index_widgets/languages/de.php b/mod/custom_index_widgets/languages/de.php
new file mode 100644
index 000000000..808b2fade
--- /dev/null
+++ b/mod/custom_index_widgets/languages/de.php
@@ -0,0 +1,78 @@
+ <?php
+
+ $german = array(
+
+
+ 'custom_index_widgets:latest_bookmarks_index' => "Neueste Lesezeichen",
+ 'custom_index_widgets:latest_groups_index' => "Neueste Gruppen",
+ 'custom_index_widgets:latest_files_index' => "Neueste Dateien",
+ 'custom_index_widgets:latest_blogs_index' => "Neueste Blogeintr&auml;ge",
+ 'custom_index_widgets:latest_members_index' => "Neueste Mitglieder",
+ 'custom_index_widgets:nofiles' => "Keine Dateien gefunden",
+ 'custom_index_widgets:nogroups' => "Keine Gruppen gefunden",
+ 'custom_index_widgets:latest_news_index' => "Neueste Nachrichten",
+ 'custom_index_widgets:latest_pages_index' => "Neueste Seiten",
+ 'custom_index_widgets:latest_events_index' => 'Eingehende Events',
+ 'custom_index_widgets:latest_wire_index' => 'Neuester Wire-Beitrag',
+ 'custom_index_widgets:inline_content_index' => 'Eigenes HTML',
+ 'custom_index_widgets:html_content' => 'Ihr Text',
+ 'custom_index_widgets:latest_generic_index'=>"Generischer Inhalt",
+ 'custom_index_widgets:latest_tasks_index'=>"Neueste Aufgaben",
+ 'custom_index_widgets:latest_activity_index' => 'Aktivit&auml;ten',
+ 'custom_index_widgets:cloud_generic_index'=>"Tag Cloud",
+ 'custom_index_widgets:widget_subtype'=>"Widget-Subtyp",
+ 'custom_index_widgets:metadata_name' => "Metadaten",
+ 'custom_index_widgets:threshold'=> "Thresold",
+ 'custom_index_widgets:latest_izap_videos_index' => 'Neueste Videos',
+ 'custom_index_widgets:display_avatar' => 'Avatar',
+
+ 'custom_index_widgets:rich_media_index' => "Multimedia Inhalte",
+ 'custom_index_widgets:widget_video_width' => "Breite (Nur Zahl, ohne px oder %)",
+ 'custom_index_widgets:widget_video_height' => "H&ouml;he (Nur Zahl, ohne px oder %)",
+ 'custom_index_widgets:widget_video_url' => "URL",
+ 'custom_index_widgets:widget_video_caption' => "&Uuml;berschrift",
+
+ 'custom_index_widgets:layout' => "Layout",
+
+ 'custom_index_widgets:index_2rmsb' => '2 Spalten, [Mittelbreit, Schmal] - [Big]',
+ 'custom_index_widgets:index_2rsmb' => '2 Spalten, [Schmal, Mittelbreit] - [Big]',
+ 'custom_index_widgets:index_2rhhb' => '2 Spalten, [Halbe Breite, Halbe Breite] - [Big]',
+ 'custom_index_widgets:index_1rsss' => '1 Spalte, [Schmal, Schmal, Schmal]',
+ 'custom_index_widgets:index_2rbhh' => '2 Spalten, [Big] -[Halbe Breite, Halbe Breite]',
+ 'custom_index_widgets:index_2rbsm' => '2 Spalten, [Big] -[Schmal, Mittelbreit]',
+ 'custom_index_widgets:index_2rbms' => '2 Spalten, [Big] -[Mittelbreit, Schmal]',
+
+ 'custom_index_widgets:area1' => 'Widgets Zone 1',
+ 'custom_index_widgets:area2' => 'Widgets Zone 2',
+ 'custom_index_widgets:area3' => 'Widgets Zone 3',
+
+ 'custom_index_widgets:admin:notfound' => 'Seite nicht gefunden',
+ 'custom_index_widgets:index' => "Widgets aktiv auf Index",
+ 'custom_index_widgets:num_items' => "Einzahl Module",
+ 'custom_index_widgets:reset' => "Zonen auf Standard setzen",
+
+ 'custom_index_widgets:pleaselogin' => "Anmelden f&uuml;r alle Details ...",
+
+ 'custom_index_widgets:widget_title' => "Widget-Titel &uuml;berschreiben (auf index-Seite anstelle des Standardtitels des Widgets)",
+ 'custom_index_widgets:context_mode' => "Layout-Stil",
+ 'custom_index_widgets:context_list' => "Liste",
+ 'custom_index_widgets:context_detail' => "Details",
+
+ 'custom_index_widgets:login_style'=>"Login-Position",
+ 'custom_index_widgets:inlayout'=>"Im Layout",
+ 'custom_index_widgets:topbar'=>"Top-Leiste",
+ 'custom_index_widgets:widget_all_groups' => "Alle Gruppen",
+
+ "custom_index_widgets:showdashboard"=>"End index with dashboard",
+ "custom_index_widgets:showdashboard_yes"=>"Ya",
+ "custom_index_widgets:showdashboard_no"=>"Nein",
+
+ "custom_index_widgets:guest_only" => "Guest only",
+ "custom_index_widgets:box_style" => "Box Style",
+ "custom_index_widgets:social_share_index" => "Social Share",
+ "custom_index_widgets:login_index"=>"Login",
+ "admin:appearance:custom_index_widgets" => "Index Widgets"
+
+ );
+
+ add_translation("de",$german);
diff --git a/mod/custom_index_widgets/languages/en.php b/mod/custom_index_widgets/languages/en.php
new file mode 100644
index 000000000..ba9cb4859
--- /dev/null
+++ b/mod/custom_index_widgets/languages/en.php
@@ -0,0 +1,82 @@
+<?php
+
+ $english = array(
+
+
+ 'custom_index_widgets:latest_bookmarks_index' => "Latest bookmarks",
+ 'custom_index_widgets:latest_groups_index' => "Latest groups",
+ 'custom_index_widgets:latest_files_index' => "Latest files",
+ 'custom_index_widgets:latest_blogs_index' => "Latest blog posts",
+ 'custom_index_widgets:latest_members_index' => "Newest members",
+ 'custom_index_widgets:nofiles' => "There are no files yet",
+ 'custom_index_widgets:nogroups' => "There are no groups yet",
+ 'custom_index_widgets:latest_news_index' => "Latest news",
+ 'custom_index_widgets:latest_pages_index' => "Latest pages",
+ 'custom_index_widgets:latest_events_index' => 'Incomming events',
+ 'custom_index_widgets:latest_wire_index' => 'Last wire posts',
+ 'custom_index_widgets:inline_content_index' => 'Free html',
+ 'custom_index_widgets:html_content' => 'Your text',
+ 'custom_index_widgets:latest_generic_index'=>"Generic content",
+ 'custom_index_widgets:latest_tasks_index'=>"Latest tasks",
+ 'custom_index_widgets:latest_activity_index' => 'In the river',
+ 'custom_index_widgets:cloud_generic_index'=>"Tag Cloud",
+ 'custom_index_widgets:widget_subtype'=>"Entity subtype",
+ 'custom_index_widgets:metadata_name' => "Metadata",
+ 'custom_index_widgets:threshold'=> "Thresold",
+ 'custom_index_widgets:latest_izap_videos_index' => 'Latest videos',
+ 'custom_index_widgets:display_avatar' => 'Avatar',
+
+ 'custom_index_widgets:rich_media_index' => "Multimédia content",
+ 'custom_index_widgets:widget_video_width' => "Width (number without px or %)",
+ 'custom_index_widgets:widget_video_height' => "Heigh (number without px or %)",
+ 'custom_index_widgets:widget_video_url' => "Url",
+ 'custom_index_widgets:widget_video_caption' => "Caption",
+
+ 'custom_index_widgets:layout' => "Layout",
+
+ 'custom_index_widgets:index_2rmsb' => '2 rows, [Medium, Small] - [Big]',
+ 'custom_index_widgets:index_2rsmb' => '2 rows, [Small, Medium] - [Big]',
+ 'custom_index_widgets:index_2rhhb' => '2 rows, [Half, Half] - [Big]',
+ 'custom_index_widgets:index_1rsss' => '1 row, [Small, Small, Small]',
+ 'custom_index_widgets:index_2rbhh' => '2 rows, [Big] -[Half, Half]',
+ 'custom_index_widgets:index_2rbsm' => '2 rows, [Big] -[Small, Medium]',
+ 'custom_index_widgets:index_2rbms' => '2 rows, [Big] -[Medium, Small]',
+
+ 'custom_index_widgets:area1' => 'Widgets Zone 1',
+ 'custom_index_widgets:area2' => 'Widgets Zone 2',
+ 'custom_index_widgets:area3' => 'Widgets Zone 3',
+
+ 'custom_index_widgets:admin:notfound' => 'Page not found',
+ 'custom_index_widgets:index' => "Index widgetisation",
+ 'custom_index_widgets:num_items' => "Number of items",
+
+ 'custom_index_widgets:pleaselogin' => "Please, please, login to see more...",
+
+ 'custom_index_widgets:widget_title' => "Override widget title (will be shown only on the index in replacement of widget default title)",
+ 'custom_index_widgets:context_mode' => "Layout style",
+ 'custom_index_widgets:context_list' => "List",
+ 'custom_index_widgets:context_detail' => "Detail",
+
+ 'custom_index_widgets:login_style'=>"Login position",
+ 'custom_index_widgets:inlayout'=>"In layout",
+ 'custom_index_widgets:topbar'=>"Top bar",
+ 'custom_index_widgets:widget_all_groups' => "All groups",
+
+ "custom_index_widgets:showdashboard"=>"End index with dashboard",
+ "custom_index_widgets:showdashboard_yes"=>"Yes",
+ "custom_index_widgets:showdashboard_no"=>"No",
+ "custom_index_widgets:guest_only" => "Guest only",
+ "custom_index_widgets:box_style" => "Box Style",
+ "custom_index_widgets:social_share_index" => "Social Share",
+ "custom_index_widgets:login_index"=>"Login",
+ "admin:appearance:custom_index_widgets" => "Index Widgets",
+ // time limit
+ "custom_index_widgets:widget_created_time_limit" => "Time lapse",
+ "custom_index_widgets:time_limit:all" => "All time",
+ "custom_index_widgets:time_limit:day" => "Last day",
+ "custom_index_widgets:time_limit:week" => "Last week",
+ "custom_index_widgets:time_limit:month" => "Last month"
+
+ );
+
+ add_translation("en",$english);
diff --git a/mod/custom_index_widgets/languages/es.php b/mod/custom_index_widgets/languages/es.php
new file mode 100644
index 000000000..c8dc35633
--- /dev/null
+++ b/mod/custom_index_widgets/languages/es.php
@@ -0,0 +1,78 @@
+<?php
+
+ $spanish = array(
+
+
+ 'custom_index_widgets:latest_bookmarks_index' => "Ultimos favoritos",
+ 'custom_index_widgets:latest_groups_index' => "Ultimos Grupos",
+ 'custom_index_widgets:latest_files_index' => "Ultimos Archivos",
+ 'custom_index_widgets:latest_blogs_index' => "Ultimos Articulos de Blogs",
+ 'custom_index_widgets:latest_members_index' => "Nuevos habitantes",
+ 'custom_index_widgets:nofiles' => "No hay archivos todavia",
+ 'custom_index_widgets:nogroups' => "No hay frupos todavia",
+ 'custom_index_widgets:latest_news_index' => "Ultimas noticias",
+ 'custom_index_widgets:latest_pages_index' => "Ultimas paginas",
+ 'custom_index_widgets:latest_events_index' => 'Eventos anunciados',
+ 'custom_index_widgets:latest_wire_index' => 'Ultimos post',
+ 'custom_index_widgets:inline_content_index' => 'Html libre',
+ 'custom_index_widgets:html_content' => 'Tu texto',
+ 'custom_index_widgets:latest_generic_index'=>"Contenido generico",
+ 'custom_index_widgets:latest_tasks_index'=>"Ultimas tareas",
+ 'custom_index_widgets:latest_activity_index' => 'In the river',
+ 'custom_index_widgets:cloud_generic_index'=>"Nube de tags",
+ 'custom_index_widgets:widget_subtype'=>"Subtipo de la entidad",
+ 'custom_index_widgets:metadata_name' => "Metadata",
+ 'custom_index_widgets:threshold'=> "Thresold",
+ 'custom_index_widgets:latest_izap_videos_index' => 'Ultimos videos',
+ 'custom_index_widgets:display_avatar' => 'Avatar',
+
+ 'custom_index_widgets:rich_media_index' => "Contenido multimedia",
+ 'custom_index_widgets:widget_video_width' => "Ancho (numeros sin px o %)",
+ 'custom_index_widgets:widget_video_height' => "Alto (numeros sin px o %)",
+ 'custom_index_widgets:widget_video_url' => "Url",
+ 'custom_index_widgets:widget_video_caption' => "Caption",
+
+ 'custom_index_widgets:layout' => "Layout",
+
+ 'custom_index_widgets:index_2rmsb' => '2 rows, [Medio, Peque] - [Grande]',
+ 'custom_index_widgets:index_2rsmb' => '2 rows, [Peque, Medio] - [Grande]',
+ 'custom_index_widgets:index_2rhhb' => '2 rows, [Mitad, Mitad] - [Grande]',
+ 'custom_index_widgets:index_1rsss' => '1 row, [Peque, Peque, Peque]',
+ 'custom_index_widgets:index_2rbhh' => '2 rows, [Grande] -[Mitad, Mitad]',
+ 'custom_index_widgets:index_2rbsm' => '2 rows, [Grande] -[Peque, Medio]',
+ 'custom_index_widgets:index_2rbms' => '2 rows, [Grande] -[Medio, Peque]',
+
+ 'custom_index_widgets:area1' => 'Widgets Zona 1',
+ 'custom_index_widgets:area2' => 'Widgets Zona 2',
+ 'custom_index_widgets:area3' => 'Widgets Zona 3',
+
+ 'custom_index_widgets:admin:notfound' => 'Pagina no encontrada',
+ 'custom_index_widgets:index' => "Index widgetisation",
+ 'custom_index_widgets:num_items' => "Numero de items",
+ 'custom_index_widgets:reset' => "Restablecer todas las zonas",
+
+ 'custom_index_widgets:pleaselogin' => "Por favor, por favor, inicie sesión para ver mas...",
+
+ 'custom_index_widgets:widget_title' => "Título del widget Override (solo se mostraran en el índice en sustitucion del título widget por defecto)",
+ 'custom_index_widgets:context_mode' => "Estilo",
+ 'custom_index_widgets:context_list' => "Lista",
+ 'custom_index_widgets:context_detail' => "Detalle",
+
+ 'custom_index_widgets:login_style'=>"Posicion de Login",
+ 'custom_index_widgets:inlayout'=>"Barra inferior",
+ 'custom_index_widgets:topbar'=>"Barra superior",
+ 'custom_index_widgets:widget_all_groups' => "Todos los grupos",
+
+ "custom_index_widgets:showdashboard"=>"End index with dashboard",
+ "custom_index_widgets:showdashboard_yes"=>"Si",
+ "custom_index_widgets:showdashboard_no"=>"No",
+ "custom_index_widgets:guest_only" => "Guest only",
+ "custom_index_widgets:box_style" => "Box Style",
+ "custom_index_widgets:social_share_index" => "Social Share",
+ "custom_index_widgets:login_index"=>"Login",
+ "admin:appearance:custom_index_widgets" => "Index Widgets"
+
+ );
+
+ add_translation("es",$spanish);
+
diff --git a/mod/custom_index_widgets/languages/fr.php b/mod/custom_index_widgets/languages/fr.php
new file mode 100644
index 000000000..486500710
--- /dev/null
+++ b/mod/custom_index_widgets/languages/fr.php
@@ -0,0 +1,80 @@
+<?php
+
+ $french = array(
+
+ 'custom_index_widgets:latest_bookmarks_index' => "Derniers bookmarks",
+ 'custom_index_widgets:latest_groups_index' => "Groupes les + r&eacute;cents",
+ 'custom_index_widgets:latest_files_index' => "Fichiers les + r&eacute;cents",
+ 'custom_index_widgets:latest_blogs_index' => "Derniers ajouts de blogs",
+ 'custom_index_widgets:latest_members_index' => "Nouveaux membres",
+ 'custom_index_widgets:nofiles' => "Il n'y a aucun fichier pour l'instant",
+ 'custom_index_widgets:nogroups' => "Il n'y a aucun groupe pour l'instant",
+ 'custom_index_widgets:latest_news_index' => "Dernieres news",
+ 'custom_index_widgets:latest_pages_index' => "Dernieres pages",
+ 'custom_index_widgets:latest_events_index' => 'Prochains evenements',
+ 'custom_index_widgets:latest_wire_index' => 'Derniers messages',
+ 'custom_index_widgets:inline_content_index' => 'Texte libre',
+ 'custom_index_widgets:html_content' => 'Votre texte',
+ 'custom_index_widgets:latest_generic_index'=>"Contenu générique",
+ 'custom_index_widgets:latest_tasks_index'=>"Tâches récentes",
+ 'custom_index_widgets:latest_activity_index' => 'En bref',
+ 'custom_index_widgets:cloud_generic_index'=>"Nuage de tags",
+ 'custom_index_widgets:widget_subtype'=>"Type d'entité",
+ 'custom_index_widgets:metadata_name' => "Metadata",
+ 'custom_index_widgets:threshold'=> "Seuil minimal",
+ 'custom_index_widgets:latest_izap_videos_index' => 'Dernières vidéos',
+ 'custom_index_widgets:display_avatar' => 'Avatar',
+
+ 'custom_index_widgets:rich_media_index' => "Contenu multimédia",
+ 'custom_index_widgets:widget_video_width' => "Largeur de la vidéo (chiffre sans px ni %)",
+ 'custom_index_widgets:widget_video_height' => "Hauteur de la vidéo (chiffre sans px ni %)",
+ 'custom_index_widgets:widget_video_url' => "Url de la vidéo",
+ 'custom_index_widgets:widget_video_caption' => "Légende de la vidéo",
+
+ 'custom_index_widgets:layout' => "Présentation",
+
+ 'custom_index_widgets:index_2rmsb' => '2 lignes, [Medium, Small] - [Big]',
+ 'custom_index_widgets:index_2rsmb' => '2 lignes, [Small, Medium] - [Big]',
+ 'custom_index_widgets:index_2rhhb' => '2 lignes, [Half, Half] - [Big]',
+ 'custom_index_widgets:index_1rsss' => '1 ligne, [Small, Small, Small]',
+ 'custom_index_widgets:index_1rsms' => '1 ligne, [Small, Medium, Small]',
+
+ 'custom_index_widgets:index_2rbhh' => '2 lignes, [Big] -[Half, Half]',
+ 'custom_index_widgets:index_2rbsm' => '2 lignes, [Big] -[Small, Medium]',
+ 'custom_index_widgets:index_2rbms' => '2 lignes, [Big] -[Medium, Small]',
+
+ 'custom_index_widgets:area1' => 'Widgets Zone 1',
+ 'custom_index_widgets:area2' => 'Widgets Zone 2',
+ 'custom_index_widgets:area3' => 'Widgets Zone 3',
+
+ 'custom_index_widgets:admin:notfound' => 'Page non trouv&eacute;e',
+ 'custom_index_widgets:index' => "Configuration de l'index",
+ 'custom_index_widgets:num_items' => "Nombre d'items",
+ 'custom_index_widgets:reset' => "Supprimer tout les widgets",
+
+ 'custom_index_widgets:pleaselogin' => "Allez, connectez-vous quoi ...",
+
+ 'custom_index_widgets:widget_title' => "Titre de remplacement (est affiché à la place du titre du widget uniquement sur la page d'accueil)",
+ 'custom_index_widgets:context_mode' => "Mode d'affichage",
+ 'custom_index_widgets:context_list' => "Liste",
+ 'custom_index_widgets:context_detail' => "Détail",
+
+ 'custom_index_widgets:login_style'=>"Position de la zone login",
+ 'custom_index_widgets:inlayout'=>"Dans la page",
+ 'custom_index_widgets:topbar'=>"Top bar",
+
+ "custom_index_widgets:showdashboard"=>"Afficher le dashboard en fin de page",
+ "custom_index_widgets:showdashboard_yes"=>"Oui",
+ "custom_index_widgets:showdashboard_no"=>"Non",
+
+ 'custom_index_widgets:widget_all_groups' => "Tous les groupes",
+ "search:go" => "Ok",
+ "custom_index_widgets:guest_only" => "Que pour les invités",
+ "custom_index_widgets:box_style" => "Type d'affichage",
+ "custom_index_widgets:social_share_index" => "Social Share",
+ "custom_index_widgets:login_index"=>"Login",
+ "admin:appearance:custom_index_widgets" => "Index Widgets"
+
+ );
+
+ add_translation("fr",$french);
diff --git a/mod/custom_index_widgets/manifest.xml b/mod/custom_index_widgets/manifest.xml
new file mode 100644
index 000000000..33784b313
--- /dev/null
+++ b/mod/custom_index_widgets/manifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Custom index widgets</name>
+ <author>Fx NION, Lorea developers</author>
+ <version>1.8.0</version>
+ <category>content</category>
+ <category>widget</category>
+ <description>Customise your index, with severals layout and customisable widgets. And get fun.</description>
+ <website>https://lorea.org/</website>
+ <copyright>(C) Fx NION 2009-2011, Lorea 2012-2013</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8.3</version>
+ </requires>
+ <conflicts>
+ <type>plugin</type>
+ <name>custom_index</name>
+ </conflicts>
+ <activate_on_install>false</activate_on_install>
+</plugin_manifest>
diff --git a/mod/custom_index_widgets/start.php b/mod/custom_index_widgets/start.php
new file mode 100644
index 000000000..70a755dc2
--- /dev/null
+++ b/mod/custom_index_widgets/start.php
@@ -0,0 +1,159 @@
+<?php
+
+elgg_register_event_handler('init', 'system', 'custom_index_widgets_init');
+
+function custom_index_widgets_init() {
+
+ elgg_extend_view('css/elgg','custom_index_widgets/css');
+
+ elgg_register_admin_menu_item('configure', 'custom_index_widgets', 'appearance');
+
+
+ $ciw_layout = elgg_get_plugin_setting("ciw_layout", "custom_index_widgets");
+ if ($ciw_layout == NULL) {
+ elgg_set_plugin_setting("ciw_layout", "index_2rmsb", "custom_index_widgets");
+ }
+
+ $ciw_showdashboard = elgg_get_plugin_setting("ciw_showdashboard", "custom_index_widgets");
+ if ($ciw_showdashboard == NULL) {
+ elgg_set_plugin_setting("ciw_showdashboard", "yes", "custom_index_widgets");
+ }
+ elgg_register_widget_type('latest_members_index', elgg_echo('custom_index_widgets:latest_members_index'), elgg_echo('custom_index_widgets:latest_members_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('inline_content_index', elgg_echo('custom_index_widgets:inline_content_index'), elgg_echo('custom_index_widgets:inline_content_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('rich_media_index', elgg_echo('custom_index_widgets:rich_media_index'), elgg_echo('custom_index_widgets:rich_media_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('latest_generic_index', elgg_echo('custom_index_widgets:latest_generic_index'), elgg_echo('custom_index_widgets:latest_generic_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('latest_activity_index', elgg_echo('custom_index_widgets:latest_activity_index'), elgg_echo('custom_index_widgets:latest_activity_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('cloud_generic_index', elgg_echo('custom_index_widgets:cloud_generic_index'), elgg_echo('custom_index_widgets:cloud_generic_index'), "custom_index_widgets", true);
+ elgg_register_widget_type('login_index', elgg_echo('custom_index_widgets:login_index'), elgg_echo('custom_index_widgets:login_index'), "custom_index_widgets", true);
+
+ if (elgg_is_active_plugin('groups')) {
+ elgg_register_widget_type('latest_groups_index', elgg_echo('custom_index_widgets:latest_groups_index'), elgg_echo('custom_index_widgets:latest_groups_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('file')) {
+ elgg_register_widget_type('latest_files_index', elgg_echo('custom_index_widgets:latest_files_index'), elgg_echo('custom_index_widgets:latest_files_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('news')) {
+ elgg_register_widget_type('latest_news_index', elgg_echo('custom_index_widgets:latest_news_index'), elgg_echo('custom_index_widgets:latest_news_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('bookmarks_enhanced') or elgg_is_active_plugin('bookmarks')) {
+ elgg_register_widget_type('latest_bookmarks_index', elgg_echo('custom_index_widgets:latest_bookmarks_index'), elgg_echo('custom_index_widgets:latest_bookmarks_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('blog')) {
+ elgg_register_widget_type('latest_blogs_index', elgg_echo('custom_index_widgets:latest_blogs_index'), elgg_echo('custom_index_widgets:latest_blogs_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('pages')) {
+ elgg_register_widget_type('latest_pages_index', elgg_echo('custom_index_widgets:latest_pages_index'), elgg_echo('custom_index_widgets:latest_pages_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('event_calendar')) {
+ elgg_register_widget_type('latest_events_index', elgg_echo('custom_index_widgets:latest_events_index'), elgg_echo('custom_index_widgets:latest_events_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('tidypics')) {
+ elgg_register_widget_type('latest_photos_index', elgg_echo("tidypics:widget:latest"), elgg_echo("tidypics:widget:latest_descr"), "custom_index_widgets", true);
+ elgg_register_widget_type('latest_album_index', elgg_echo("tidypics:widget:albums"), elgg_echo("tidypics:widget:latest_descr"), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('thewire')) {
+ elgg_register_widget_type('latest_wire_index', elgg_echo('custom_index_widgets:latest_wire_index'), elgg_echo('custom_index_widgets:latest_wire_index'), "custom_index_widgets", true);
+ }
+
+ if (elgg_is_active_plugin('tasks')) {
+ elgg_register_widget_type('latest_tasks_index', elgg_echo('custom_index_widgets:latest_tasks_index'), elgg_echo('custom_index_widgets:latest_tasks_index'), "custom_index_widgets", true);
+ }
+
+ if (elgg_is_active_plugin('izap_videos')) {
+ elgg_register_widget_type('latest_izap_videos_index',elgg_echo ('custom_index_widgets:latest_izap_videos_index'), elgg_echo('custom_index_widgets:latest_izap_videos_index'), "custom_index_widgets", true);
+ }
+ if (elgg_is_active_plugin('simplepie')) {
+ elgg_register_widget_type('feed_reader_index', elgg_echo('simplepie:widget'),elgg_echo('simplepie:description'),'custom_index_widgets', true);
+ }
+
+ elgg_register_plugin_hook_handler('index', 'system', 'custom_index_widgets');
+ elgg_register_page_handler ('custom_index_widgets', 'custom_index_widgets_page_handler');
+
+}
+
+function custom_index_widgets($hook, $type, $return, $params) {
+ if ($return == true) {
+ // another hook has already replaced the front page
+ return $return;
+ }
+
+ if (!include_once(dirname(__FILE__) . "/index.php")) {
+ return false;
+ }
+
+ // return true to signify that we have handled the front page
+ return true;
+}
+
+
+function custom_index_widgets_page_handler($page) {
+ if (isset ($page [0])) {
+ switch ($page [0]) {
+ case "edit" :
+ @include (dirname ( __FILE__ ) . "/edit.php");
+ break;
+ }
+ } else {
+ register_error(elgg_echo("custom_index_widgets:admin:notfound"));
+ forward(elgg_get_site_url());
+ }
+ return true;
+}
+
+
+function custom_index_show_widget_area($areawidgets){
+ if (is_array($areawidgets) && sizeof($areawidgets) > 0) {
+ foreach($areawidgets as $widget) {
+ if ($widget instanceof ElggWidget) {
+ $vars['entity'] = $widget;
+ $handler = $widget->handler;
+ if (elgg_view_exists("widgets/$handler/content")) {
+ $content = elgg_view("widgets/$handler/content", $vars);
+ } else {
+ elgg_deprecated_notice("widgets use content as the display view", 1.8);
+ $content = elgg_view("widgets/$handler/view", $vars);
+ }
+ echo elgg_view_module('featured', $widget->title, $content, array('class' => 'elgg-module-highlight'));
+ } else {
+ echo $widget;
+ }
+ }
+ }
+}
+
+function custom_index_build_columns($area_widget_list, $widgettypes, $build_server_side = true) {
+
+ $column_widgets_view = array();
+ $column_widgets_string = "";
+
+ if (is_array($area_widget_list) && sizeof($area_widget_list) > 0) {
+ foreach ($area_widget_list as $widget) {
+ if ($build_server_side ) {
+ $title = $widget->widget_title;
+ if (!$title) {
+ $title = $widgettypes[$widget->handler]->name;
+ if (!$title) {
+ $title = $widget->handler;
+ }
+ }
+ $widget->title = $title;
+
+ if (($widget->guest_only == "yes" && !elgg_is_logged_in()) || $widget->guest_only == "no" || !isset($widget->guest_only)) {
+ $column_widgets_view[] = $widget;
+ }
+ } else {
+ if (!empty($column_widgets_string)) {
+ $column_widgets_string .= "::";
+ }
+ $column_widgets_string .= "{$widget->handler}::{$widget->getGUID()}";
+ }
+ }
+
+ if ($build_server_side) {
+ return $column_widgets_view;
+ } else {
+ return $column_widgets_string;
+ }
+ }
+ return null;
+}
diff --git a/mod/custom_index_widgets/views/default/admin/appearance/custom_index_widgets.php b/mod/custom_index_widgets/views/default/admin/appearance/custom_index_widgets.php
new file mode 100644
index 000000000..491c878e5
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/admin/appearance/custom_index_widgets.php
@@ -0,0 +1,56 @@
+<?php
+
+
+elgg_push_context('custom_index_widgets');
+elgg_set_page_owner_guid(elgg_get_config('site_guid'));
+
+$num_columns = elgg_extract('num_columns', $vars, 3);
+$show_add_widgets = elgg_extract('show_add_widgets', $vars, true);
+$exact_match = elgg_extract('exact_match', $vars, true);
+$show_access = elgg_extract('show_access', $vars, true);
+
+
+$owner = elgg_get_page_owner_entity();
+
+
+$context = elgg_get_context();
+$widget_types = elgg_get_widget_types($context, true);
+$widgets = elgg_get_widgets($owner->guid, $context);
+
+
+if (elgg_can_edit_widget_layout($context)) {
+
+ if ($show_add_widgets) {
+ echo elgg_view('page/layouts/widgets/add_button');
+ }
+ $params = array(
+ 'widgets' => $widgets,
+ 'context' => $context,
+ 'exact_match' => $exact_match,
+ );
+
+ echo elgg_view('page/layouts/widgets/add_panel', $params);
+}
+
+echo $vars['content'];
+
+$widget_class = "elgg-col-1of{$num_columns}";
+for ($column_index = 1; $column_index <= $num_columns; $column_index++) {
+ if (isset($widgets[$column_index])) {
+ $column_widgets = $widgets[$column_index];
+ } else {
+ $column_widgets = array();
+ }
+
+ echo "<div class=\"$widget_class elgg-widgets\" id=\"elgg-widget-col-$column_index\">";
+ if (sizeof($column_widgets) > 0) {
+ foreach ($column_widgets as $widget) {
+ if (array_key_exists($widget->handler, $widget_types)) {
+ echo elgg_view_entity($widget, array('show_access' => $show_access));
+ }
+ }
+ }
+ echo '</div>';
+}
+
+
diff --git a/mod/custom_index_widgets/views/default/custom_index_widgets/css.php b/mod/custom_index_widgets/views/default/custom_index_widgets/css.php
new file mode 100644
index 000000000..e80d28684
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/custom_index_widgets/css.php
@@ -0,0 +1,347 @@
+<?php
+ /**
+ * Custom Index page css extender
+ *
+ * @package custom_index
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider <info@elgg.com>
+ * @copyright Curverider Ltd 2008-2009
+ * @link http://elgg.org/
+ */
+?>
+
+.icon_members {
+ float:left;
+ margin:2pt 5px 3px 0pt;
+}
+
+.icon_latest {
+ margin:0 auto;
+}
+#login-box{
+ width:100%;
+}
+#login-box form{
+ width:auto;
+}
+
+#login-box input[type="text"],
+#login-box input[type="password"]{
+ width: 95%;
+}
+
+#rightcolumn_widgets,
+#leftcolumn_widgets,
+#middlecolumn_widgets{
+ min-height: 1px;
+}
+
+
+#rightcolumn_widgets.small_edit_mode_box,
+#leftcolumn_widgets.small_edit_mode_box,
+#middlecolumn_widgets.small_edit_mode_box,
+#customise_page_view table tr td h2.small_edit_mode_box {
+ margin:5px 10px 0 0;
+ width: auto;
+}
+#rightcolumn_widgets.medium_edit_mode_box,
+#leftcolumn_widgets.medium_edit_mode_box,
+#middlecolumn_widgets.medium_edit_mode_box,
+#customise_page_view table tr td h2.medium_edit_mode_box{
+ margin:5px 10px 0 0;
+ width: auto;
+}
+#rightcolumn_widgets.big_edit_mode_box,
+#leftcolumn_widgets.big_edit_mode_box,
+#middlecolumn_widgets.big_edit_mode_box,
+#customise_page_view table tr td h2.big_edit_mode_box{
+ margin:5px 10px 0 0;
+ width: auto;
+}
+#rightcolumn_widgets.half_edit_mode_box,
+#leftcolumn_widgets.half_edit_mode_box,
+#middlecolumn_widgets.half_edit_mode_box,
+#customise_page_view table tr td h2.half_edit_mode_box{
+ margin:5px 10px 0 0;
+ width: auto;
+}
+
+#rightcolumn_widgets.small_index_mode_box,
+#leftcolumn_widgets.small_index_mode_box,
+#middlecolumn_widgets.small_index_mode_box,
+#customise_page_view table tr td h2.small_index_mode_box {
+ /*width: 312px;*/
+ width: auto;
+ padding: 0 0 5px;
+ margin-right: 10px;
+ border: 0 none;
+}
+#rightcolumn_widgets.medium_index_mode_box,
+#leftcolumn_widgets.medium_index_mode_box,
+#middlecolumn_widgets.medium_index_mode_box,
+#customise_page_view table tr td h2.medium_index_mode_box{
+ /*width: 608px;*/
+ width: auto;
+ padding: 0 0 5px;
+ margin-right: 10px;
+ border: 0 none;
+}
+#rightcolumn_widgets.big_index_mode_box,
+#leftcolumn_widgets.big_index_mode_box,
+#middlecolumn_widgets.big_index_mode_box,
+#customise_page_view table tr td h2.big_index_mode_box{
+ width: auto;
+ padding: 0 0 5px;
+ margin-right: 10px;
+ border: 0 none;
+}
+#rightcolumn_widgets.half_index_mode_box,
+#leftcolumn_widgets.half_index_mode_box,
+#middlecolumn_widgets.half_index_mode_box,
+#customise_page_view.half_index_mode_box h2{
+ /*width: 460px;*/
+ width: auto;
+ padding: 0 0 5px;
+ margin: 10px 3px;
+ border: 0 none;
+}
+
+table.index_mode{
+ width: 96%;
+ margin-left: 2%;
+ border: 0 none;
+}
+
+td.small {
+ width: 38%;
+}
+td.half {
+ width: 47%;
+}
+td.medium {
+ width: 57%;
+}
+td.big {
+ width: 100%;
+}
+.logintop{
+ margin:0 auto;
+ padding:0;
+ padding-top: 3px;
+ width:990px;
+}
+.logintop_links{
+ margin-left:80px;
+}
+
+.logintop_links a {
+ margin:0 0 0 2px;
+ color:#999999;
+ padding:3px;
+}
+.logintop_links a:hover {
+ color:#eeeeee;
+}
+
+#logintopform{
+ color: #BBBBBB;
+ font-size: 12px;
+}
+
+#logintopform input.logintop_input {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ background-color:#FFFFFF;
+ border:1px solid #BBBBBB;
+ color:#999999;
+ font-size:12px;
+ font-weight:bold;
+ margin:0pt;
+ padding:2px;
+ width:180px;
+ height:12px;
+}
+#logintopform input.logintop_submit_button {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ color:#333333;
+ background: #cccccc;
+ border:none;
+ font-size:12px;
+ font-weight:bold;
+ margin:0px;
+ padding:2px;
+ width:auto;
+ height:18px;
+ cursor:pointer;
+}
+#logintopform input.logintop_submit_button:hover {
+ color:#ffffff;
+ background: #4690d6;
+}
+
+/* ***************************************
+STANDARD BOXES
+*************************************** */
+.standard_box {
+ margin: 0 0 20px 0;
+ height:auto;
+
+}
+/* IE6 fix */
+* html .standard_box {
+ height:10px;
+}
+.standard_box_header {
+ color: #4690d6;
+ padding: 5px 10px 5px 10px;
+ margin:0;
+ border-left: 1px solid white;
+ border-right: 1px solid #cccccc;
+ border-bottom: 1px solid #cccccc;
+ -moz-border-radius-topleft:8px;
+ -moz-border-radius-topright:8px;
+ -webkit-border-top-right-radius:8px;
+ -webkit-border-top-left-radius:8px;
+ background:#dedede;
+}
+.standard_box_header h1 {
+ color: #0054a7;
+ font-size:1.25em;
+ line-height: 1.2em;
+}
+.standard_box_content {
+ padding: 10px 0 10px 0;
+ margin:0;
+ height:auto;
+ background:#dedede;
+ -moz-border-radius-bottomleft:8px;
+ -moz-border-radius-bottomright:8px;
+ -webkit-border-bottom-right-radius:8px;
+ -webkit-border-bottom-left-radius:8px;
+ border-left: 1px solid white;
+ border-right: 1px solid #cccccc;
+ border-bottom: 1px solid #cccccc;
+}
+.standard_box_content .contentWrapper {
+ margin-bottom:5px;
+}
+.standard_box_editpanel {
+ display: none;
+ background: #a8a8a8;
+ padding:10px 10px 5px 10px;
+ border-left: 1px solid white;
+ border-bottom: 1px solid white;
+}
+.standard_box_editpanel p {
+ margin:0 0 5px 0;
+}
+.standard_box_header a.toggle_box_contents {
+ color: #4690d6;
+ cursor:pointer;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:20px;
+ font-weight: bold;
+ text-decoration:none;
+ float:right;
+ margin: 0;
+ margin-top: -7px;
+}
+.standard_box_header a.toggle_box_edit_panel {
+ color: #4690d6;
+ cursor:pointer;
+ font-size:9px;
+ text-transform: uppercase;
+ text-decoration:none;
+ font-weight: normal;
+ float:right;
+ margin: 3px 10px 0 0;
+}
+.standard_box_editpanel label {
+ font-weight: normal;
+ font-size: 100%;
+}
+
+
+/* ***************************************
+PLAIN BOXES
+*************************************** */
+.plain_box , .plain.collapsable_box{
+ margin: 0 0 20px 0;
+ height:auto;
+
+}
+/* IE6 fix */
+* html .plain_box , * html .plain.collapsable_box {
+ height:10px;
+}
+.plain_box_header , .plain.collapsable_box_header{
+ color: #4690d6;
+ padding: 5px 10px 5px 10px;
+ margin:0;
+ border-left: 1px solid #cccccc;
+ border-right: 1px solid #cccccc;
+ border-top: 1px solid #cccccc;
+ -moz-border-radius-topleft:8px;
+ -moz-border-radius-topright:8px;
+ -webkit-border-top-right-radius:8px;
+ -webkit-border-top-left-radius:8px;
+ background:transparent;
+}
+.plain_box_header h1, .plain.collapsable_box_header h1 {
+ color: #0054a7;
+ font-size:1.25em;
+ line-height: 1.2em;
+}
+.plain_box_content, .plain.collapsable_box_content {
+ padding: 10px 0 10px 0;
+ margin:0;
+ height:auto;
+ -moz-border-radius-bottomleft:8px;
+ -moz-border-radius-bottomright:8px;
+ -webkit-border-bottom-right-radius:8px;
+ -webkit-border-bottom-left-radius:8px;
+ border-left: 1px solid #cccccc;
+ border-right: 1px solid #cccccc;
+ border-bottom: 1px solid #cccccc;
+ background:transparent;
+
+}
+.plain_box_content .contentWrapper , .plain.collapsable_box_content .contentWrapper{
+ margin-bottom:5px;
+}
+.plain_box_editpanel .plain.collapsable_box_editpanel{
+ display: none;
+ background: #a8a8a8;
+ padding:10px 10px 5px 10px;
+ border-left: 1px solid white;
+ border-bottom: 1px solid white;
+}
+.plain_box_editpanel p , .plain.collapsable_box_editpanel{
+ margin:0 0 5px 0;
+}
+.plain_box_header a.toggle_box_contents , .plain.collapsable_box_header a.toggle_box_contents{
+ color: #4690d6;
+ cursor:pointer;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:20px;
+ font-weight: bold;
+ text-decoration:none;
+ float:right;
+ margin: 0;
+ margin-top: -7px;
+}
+.plain_box_header a.toggle_box_edit_panel , .plain.collapsable_box_header a.toggle_box_edit_panel {
+ color: #4690d6;
+ cursor:pointer;
+ font-size:9px;
+ text-transform: uppercase;
+ text-decoration:none;
+ font-weight: normal;
+ float:right;
+ margin: 3px 10px 0 0;
+}
+.plain_box_editpanel label , .plain.collapsable_box_editpanel label{
+ font-weight: normal;
+ font-size: 100%;
+}
diff --git a/mod/custom_index_widgets/views/default/custom_index_widgets/footerlinks.php b/mod/custom_index_widgets/views/default/custom_index_widgets/footerlinks.php
new file mode 100644
index 000000000..ed92a9032
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/custom_index_widgets/footerlinks.php
@@ -0,0 +1,3 @@
+<div class="mts float-alt">
+<a href="http://fxnion.free.fr/"><img src="<?php echo elgg_get_site_url(); ?>mod/custom_index_widgets/images/fxnion_elgg_custom_index.gif" alt="Elgg Custom index by Fx Nion" title="Elgg Custom index by Fx Nion"/></a>
+</div>
diff --git a/mod/custom_index_widgets/views/default/page/layouts/edit_widgets.php b/mod/custom_index_widgets/views/default/page/layouts/edit_widgets.php
new file mode 100644
index 000000000..f61cea356
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/edit_widgets.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Elgg widgets layout
+ *
+ * @uses $vars['content'] Optional display box at the top of layout
+ * @uses $vars['num_columns'] Number of widget columns for this layout (3)
+ * @uses $vars['show_add_widgets'] Display the add widgets button and panel (true)
+ * @uses $vars['exact_match'] Widgets must match the current context (false)
+ * @uses $vars['show_access'] Show the access control (true)
+ */
+
+$num_columns = elgg_extract('num_columns', $vars, 3);
+$show_add_widgets = elgg_extract('show_add_widgets', $vars, true);
+$exact_match = elgg_extract('exact_match', $vars, false);
+$show_access = elgg_extract('show_access', $vars, true);
+
+$owner = elgg_get_page_owner_entity();
+
+$widget_types = elgg_get_widget_types();
+
+$context = elgg_get_context();
+//elgg_push_context('widgets');
+
+$widgets = elgg_get_widgets($owner->guid, $context);
+
+if (elgg_can_edit_widget_layout($context)) {
+ if ($show_add_widgets) {
+ echo elgg_view('page/layouts/widgets/add_button');
+ }
+ $params = array(
+ 'widgets' => $widgets,
+ 'context' => $context,
+ 'exact_match' => $exact_match,
+ );
+ echo elgg_view('page/layouts/widgets/add_panel', $params);
+}
+
+echo $vars['content'];
+
+$widget_class = "elgg-col-1of{$num_columns}";
+for ($column_index = 1; $column_index <= $num_columns; $column_index++) {
+ if (isset($widgets[$column_index])) {
+ $column_widgets = $widgets[$column_index];
+ } else {
+ $column_widgets = array();
+ }
+
+ echo "<div class=\"$widget_class elgg-widgets\" id=\"elgg-widget-col-$column_index\">";
+ if (sizeof($column_widgets) > 0) {
+ foreach ($column_widgets as $widget) {
+ if (array_key_exists($widget->handler, $widget_types)) {
+ echo elgg_view_entity($widget, array('show_access' => $show_access));
+ }
+ }
+ }
+ echo '</div>';
+}
+
+elgg_pop_context();
+
+echo elgg_view('graphics/ajax_loader', array('id' => 'elgg-widget-loader'));
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index.php b/mod/custom_index_widgets/views/default/page/layouts/index.php
new file mode 100644
index 000000000..a73a0d7b1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td align="left" valign="top" class="half">
+ <div id="leftcolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="half">
+ <div id="middlecolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr >
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="rightcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_1rsss.php b/mod/custom_index_widgets/views/default/page/layouts/index_1rsss.php
new file mode 100644
index 000000000..0d43469e9
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_1rsss.php
@@ -0,0 +1,29 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td align="left" valign="top" class="small">
+ <div id="leftcolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="small">
+ <div id="middlecolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="small">
+ <div id="rightcolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rbhh.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rbhh.php
new file mode 100644
index 000000000..7f8c22437
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rbhh.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="leftcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top" class="half">
+ <div id="middlecolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="half">
+ <div id="rightcolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rbms.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rbms.php
new file mode 100644
index 000000000..fdb0cf38b
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rbms.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="leftcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top" class="medium">
+ <div id="middlecolumn_widgets" class="medium_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="small">
+ <div id="rightcolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rbsm.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rbsm.php
new file mode 100644
index 000000000..d5a81f1f5
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rbsm.php
@@ -0,0 +1,28 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="leftcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top" class="small">
+ <div id="middlecolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="medium">
+ <div id="rightcolumn_widgets" class="medium_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rhhb.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rhhb.php
new file mode 100644
index 000000000..ae2995ff9
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rhhb.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td align="left" valign="top" class="half">
+ <div id="leftcolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="half">
+ <div id="middlecolumn_widgets" class="half_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="rightcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rmsb.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rmsb.php
new file mode 100644
index 000000000..a774a4a42
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rmsb.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td align="left" valign="top" class="medium">
+ <div id="leftcolumn_widgets" class="medium_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="small">
+ <div id="middlecolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="rightcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/page/layouts/index_2rsmb.php b/mod/custom_index_widgets/views/default/page/layouts/index_2rsmb.php
new file mode 100644
index 000000000..72bb92d3d
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/page/layouts/index_2rsmb.php
@@ -0,0 +1,30 @@
+<?php
+ $area1widgets = $vars['area1'];
+ $area2widgets = $vars['area2'];
+ $area3widgets = $vars['area3'];
+ $layoutmode = $vars['layoutmode']; //edit, index
+?>
+
+ <table cellspacing="10" cellpadding="10" width="100%" class="<?php echo elgg_echo($layoutmode); ?>">
+ <tr>
+ <td align="left" valign="top" class="small">
+ <div id="leftcolumn_widgets" class="small_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area1widgets) ?>
+ </div>
+ </td>
+ <td align="left" valign="top" class="medium">
+ <div id="middlecolumn_widgets" class="medium_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area2widgets) ?>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="left" valign="top" class="big">
+ <div id="rightcolumn_widgets" class="big_<?php echo elgg_echo($layoutmode); ?>_box">
+ <?php custom_index_show_widget_area($area3widgets) ?>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+
diff --git a/mod/custom_index_widgets/views/default/plugins/custom_index_widgets/settings.php b/mod/custom_index_widgets/views/default/plugins/custom_index_widgets/settings.php
new file mode 100644
index 000000000..ef70eeb8d
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/plugins/custom_index_widgets/settings.php
@@ -0,0 +1,61 @@
+<?php
+
+?>
+<div>
+ <div class="contentWrapper">
+ <table>
+ <tr>
+ <td style="width:50%"><?php echo elgg_echo("custom_index_widgets:layout"); ?></td>
+ <td>
+ <?php echo elgg_view('input/dropdown', array(
+ 'name' => 'params[ciw_layout]',
+ 'options_values' => array(
+ 'index' => 'Default',
+ 'index_2rmsb' => elgg_echo('custom_index_widgets:index_2rmsb'),
+ 'index_2rsmb' => elgg_echo('custom_index_widgets:index_2rsmb'),
+ 'index_2rhhb' => elgg_echo('custom_index_widgets:index_2rhhb'),
+ 'index_2rbhh' => elgg_echo('custom_index_widgets:index_2rbhh'),
+
+ 'index_2rbsm' => elgg_echo('custom_index_widgets:index_2rbsm'),
+ 'index_2rbms' => elgg_echo('custom_index_widgets:index_2rbms'),
+
+ 'index_1rsss' => elgg_echo('custom_index_widgets:index_1rsss')
+
+ ),
+ 'value' => $vars["entity"]->ciw_layout
+ ));
+ ?>
+ </td>
+ </tr>
+ <tr>
+ <td style="width:50%"><?php echo elgg_echo("custom_index_widgets:login_style"); ?></td>
+ <td>
+ <?php echo elgg_view('input/dropdown', array(
+ 'name' => 'params[login_style]',
+ 'options_values' => array(
+ 'inlayout' => elgg_echo('custom_index_widgets:inlayout'),
+ 'topbar' => elgg_echo('custom_index_widgets:topbar'),
+ ),
+ 'value' => $vars["entity"]->login_style
+ ));
+ ?>
+ </td>
+ </tr>
+ <tr>
+ <td style="width:50%"><?php echo elgg_echo("custom_index_widgets:showdashboard"); ?></td>
+ <td>
+ <?php echo elgg_view('input/dropdown', array(
+ 'name' => 'params[ciw_showdashboard]',
+ 'options_values' => array(
+ 'yes' => elgg_echo('custom_index_widgets:showdashboard_yes'),
+ 'no' => elgg_echo('custom_index_widgets:showdashboard_no'),
+ ),
+ 'value' => $vars["entity"]->ciw_showdashboard
+ ));
+ ?>
+ </td>
+ </tr>
+
+ </table>
+ </div>
+</div>
diff --git a/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/content.php b/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/content.php
new file mode 100644
index 000000000..bee459e1d
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/content.php
@@ -0,0 +1,59 @@
+<?php
+$maintype = "object";
+$subtype = $vars["entity"]->widget_subtype;
+if (empty($subtype) || $subtype == 'All') {
+ $subtype = ELGG_ENTITIES_ANY_VALUE;
+}
+
+if ($subtype == 'user') {$maintype='user';}
+if ($subtype == 'group') {$maintype='group';}
+
+
+$num_items = $vars['entity']->num_items;
+if (!isset($num_items))
+ $num_items = 20;
+
+$created_time_limit = $vars['entity']->created_time_limit;
+if (!isset($created_time_limit) || $created_time_limit == 'all') {
+ $created_time = ELGG_ENTITIES_ANY_VALUE;
+}
+elseif ($created_time_limit == 'day') {
+ $created_time = time()-(3600*24);
+}
+elseif ($created_time_limit == 'week') {
+ $created_time = time()-(3600*24*7);
+}
+elseif ($created_time_limit == 'month') {
+ $created_time = time()-(3600*24*30);
+}
+
+$metadata_name = $vars['entity']->metadata_name;
+if (!isset($metadata_name)) {
+ $metadata_name = 'tags';
+} else {
+ $metadata_name = $metadata_name;
+}
+
+$threshold = $vars['entity']->threshold;
+if (!isset($threshold))
+ $threshold = 1;
+
+$widget_group = $vars["entity"]->widget_group;
+if (empty($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+
+elgg_push_context('tags');
+$options = array('threshold' => $threshold,
+ 'limit' => $num_items,
+ 'type' => $maintype,
+ 'subtype' => $subtype,
+ 'tag_name' => $metadata_name,
+ 'created_time_lower' => $created_time,
+ 'container_guid' => $widget_group);
+
+$body = elgg_view_tagcloud($options);
+elgg_pop_context();
+
+echo $body;
+
+?>
diff --git a/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/edit.php b/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/edit.php
new file mode 100644
index 000000000..84b2fa861
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/cloud_generic_index/edit.php
@@ -0,0 +1,120 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $created_time_limit = $vars['entity']->created_time_limit;
+ if (!isset($created_time_limit)) $created_time_limit = 'all';
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $metadata_name = $vars['entity']->metadata_name;
+ if (!isset($metadata_name)) $metadata_name = "";
+
+ $threshold = $vars['entity']->threshold;
+ if (!isset($threshold)) $threshold = 1;
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+ $widget_subtype = $vars["entity"]->widget_subtype;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_subtype'); ?>
+ :
+ <?php
+
+ $subtypes = get_data("SELECT subtype from {$CONFIG->dbprefix}entity_subtypes");
+ $subtype_list = array();
+ $subtype_list['All'] = '';
+ $subtype_list['user'] = 'user';
+ $subtype_list['group'] = 'group';
+
+ if ($subtypes) {
+ foreach ($subtypes as $data) {
+ $subtype_list[$data->subtype] = $data->subtype;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_subtype]', 'options_values'=>$subtype_list, 'value'=>$widget_subtype));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_created_time_limit'); ?>
+ :
+ <?php
+
+ $limits = array('all', 'month', 'week', 'day');
+ $limit_list = array();
+ foreach($limits as $limit) {
+ $limit_list[$limit] = elgg_echo("custom_index_widgets:time_limit:$limit");
+ }
+ echo '<p>'.elgg_view('input/dropdown', array('name'=>'params[created_time_limit]', 'options_values'=>$limit_list, 'value'=>$created_time_limit))."</p>";
+ ?>
+ </p>
+
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:threshold'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[threshold]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$thresholds));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:metadata_name'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[metadata_name]', 'value'=>$metadata_name));
+ ?>
+ </p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p>
diff --git a/mod/custom_index_widgets/views/default/widgets/feed_reader_index/content.php b/mod/custom_index_widgets/views/default/widgets/feed_reader_index/content.php
new file mode 100644
index 000000000..2695315d5
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/feed_reader_index/content.php
@@ -0,0 +1,8 @@
+<?php
+
+ include elgg_get_plugins_path() . 'simplepie/views/default/widgets/feed_reader/content.php';
+
+ //$body = elgg_view("simplepie/widgets/feed_reader/content", $vars);
+ //echo $body;
+
+?>
diff --git a/mod/custom_index_widgets/views/default/widgets/feed_reader_index/edit.php b/mod/custom_index_widgets/views/default/widgets/feed_reader_index/edit.php
new file mode 100644
index 000000000..5fc36bc54
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/feed_reader_index/edit.php
@@ -0,0 +1,5 @@
+<?php
+ include elgg_get_plugins_path() . 'simplepie/views/default/widgets/feed_reader/edit.php';
+ //echo elgg_view("simplepie/edit", $vars);
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/inline_content_index/content.php b/mod/custom_index_widgets/views/default/widgets/inline_content_index/content.php
new file mode 100644
index 000000000..6ed53f197
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/inline_content_index/content.php
@@ -0,0 +1,7 @@
+<div class="contentWrapper">
+ <?php
+ echo $vars[entity]->html_content;
+ ?>
+ <div class="clearfloat">
+ </div>
+</div>
diff --git a/mod/custom_index_widgets/views/default/widgets/inline_content_index/edit.php b/mod/custom_index_widgets/views/default/widgets/inline_content_index/edit.php
new file mode 100644
index 000000000..e5c319bf1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/inline_content_index/edit.php
@@ -0,0 +1,46 @@
+<?php
+ $widget_title = $vars['entity']->widget_title;
+ $html_content = $vars['entity']->html_content;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:html_content'); ?>
+<?php
+ echo elgg_view('input/longtext', array(
+ 'name' => 'params[html_content]',
+ 'value' => $html_content
+ ));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_activity_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_activity_index/content.php
new file mode 100644
index 000000000..4010e0cb4
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_activity_index/content.php
@@ -0,0 +1,20 @@
+<?php
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ /*
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+ */
+ $widget_datas = elgg_list_river(0, $widget_group, '', '', '', '', $num_items,0,0,false);
+
+ echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_activity_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_activity_index/edit.php
new file mode 100644
index 000000000..622655307
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_activity_index/edit.php
@@ -0,0 +1,64 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ //$groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $groups = elgg_get_entities(array('type'=>'group'));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_album_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_album_index/content.php
new file mode 100644
index 000000000..c511a775a
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_album_index/content.php
@@ -0,0 +1,64 @@
+<div class="contentWrapper">
+<?php
+
+ $object_type ='album';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items))
+ $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group))
+ $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ $owner_albums = elgg_get_entities("object", $object_type, $widget_group, "", $num_items, 0, false);
+
+ echo '<div id="tidypics_album_widget_container">';
+
+ if ($owner_albums) {
+ foreach($owner_albums as $album) {
+
+ if($album->cover)
+ $album_cover = '<img src="'.$vars['url'].'mod/tidypics/thumbnail.php?file_guid='.$album->cover.'&size=small" class="tidypics_album_cover" alt="' . $album->title . '"/>';
+ else
+ $album_cover = '<img src="'.$vars['url'].'mod/tidypics/graphics/empty_album.png" class="tidypics_album_cover" alt="' . $album->title . '">';
+?>
+ <div class="tidypics_album_widget_single_item">
+ <div class="tidypics_album_widget_title"><a href="<?php echo $album->getURL();?>"><?php echo $album->title;?></a></div>
+ <div class="tidypics_album_widget_timestamp"> <?php echo elgg_echo("album:created:on") . ' ' . elgg_get_friendly_time($album->time_created);?></div>
+<?php
+ //get the number of comments
+ $numcomments = $album->countComments();
+ if ($numcomments)
+ echo "<a href=\"{$album->getURL()}\">" . sprintf(elgg_echo("comments")) . " (" . $numcomments . ")</a><br>";
+?>
+ <a href="<?php echo $album->getURL();?>"><?php echo $album_cover;?></a>
+ </div>
+<?php
+ } //end of foreach loop
+
+ // bottom link to all group/user albums
+ /*if (is_null($owner->username) || empty($owner->username)) {
+ echo '<p class="profile_info_edit_buttons"><a href="' . $vars['url'] . 'pg/photos/world">' . elgg_echo('album:all') . '</a></p>';
+ } else {
+ echo '<p class="tidypics_download"><a href="' . $vars['url'] . 'pg/photos/owned/' . $owner->username . '">' . elgg_echo('album:more') . '</a></p>';
+ }*/
+
+ }
+
+ /*if (can_write_to_container(0, $owner->guid)) {
+ echo '<p class="tidypics_download"><a href=' . $CONFIG->wwwroot .'pg/photos/new/' . $owner->username . '>' . elgg_echo("album:create") . '</a></p>';
+ }*/
+
+
+ //close album_widget_container div
+ echo "</div>";
+?>
+</div> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_album_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_album_index/edit.php
new file mode 100644
index 000000000..86eaa19cc
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_album_index/edit.php
@@ -0,0 +1,64 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/content.php
new file mode 100644
index 000000000..cce94185d
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/content.php
@@ -0,0 +1,43 @@
+<?php
+$object_type = 'blog';
+
+$num_items = $vars['entity']->num_items;
+if (!isset($num_items))
+ $num_items = 10;
+
+$widget_group = $vars["entity"]->widget_group;
+if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+$site_categories = $vars['config']->site->categories;
+$widget_categorie = $vars['entity']->widget_categorie;
+$widget_context_mode = $vars['entity']->widget_context_mode;
+if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+elgg_set_context($widget_context_mode);
+
+if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/edit.php
new file mode 100644
index 000000000..e89a68304
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_blogs_index/edit.php
@@ -0,0 +1,85 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/content.php
new file mode 100644
index 000000000..2622a63ea
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/content.php
@@ -0,0 +1,43 @@
+<?php
+
+ $object_type ='bookmarks';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/edit.php
new file mode 100644
index 000000000..1a15cea49
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_bookmarks_index/edit.php
@@ -0,0 +1,85 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_events_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_events_index/content.php
new file mode 100644
index 000000000..7c5ae40f3
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_events_index/content.php
@@ -0,0 +1,95 @@
+<?php
+
+ require_once($CONFIG->pluginspath.'event_calendar/models/model.php');
+
+ if(!function_exists('getLastDayOfMonth')){
+ function getLastDayOfMonth($month,$year) {
+ return idate('d', mktime(0, 0, 0, ($month + 1), 0, $year));
+ }
+ }
+
+ $object_type ='event_calendar';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items))
+ $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group))
+ $widget_group = 0;
+
+ $mode = $vars['mode']->mode;
+ if (!isset($mode))
+ $mode = "month";
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+
+ elgg_set_context($widget_context_mode);
+
+
+ $original_start_date = date('Y-m-d');
+ $day = 60*60*24;
+ $week = 7*$day;
+ $month = 31*$day;
+
+
+ if ($mode == "day") {
+ $start_date = $original_start_date;
+ $end_date = $start_date;
+ $start_ts = strtotime($start_date);
+ $end_ts = strtotime($end_date)+$day-1;
+ } else if ($mode == "week") {
+
+ $start_ts = strtotime($original_start_date);
+ $start_ts -= date("w",$start_ts)*$day;
+ $end_ts = $start_ts + 6*$day;
+
+ $start_date = date('Y-m-d',$start_ts);
+ $end_date = date('Y-m-d',$end_ts);
+ } else {
+ $start_ts = strtotime($original_start_date);
+ $month = date('m',$start_ts);
+ $year = date('Y',$start_ts);
+ $start_date = $year.'-'.$month.'-1';
+ $end_date = $year.'-'.$month.'-'.getLastDayOfMonth($month,$year);
+ }
+
+ if ($event_calendar_first_date && ($start_date < $event_calendar_first_date)) {
+ $start_date = $event_calendar_first_date;
+ }
+
+ if ($event_calendar_last_date && ($end_date > $event_calendar_last_date)) {
+ $end_date = $event_calendar_last_date;
+ }
+
+ $start_ts = strtotime($start_date);
+
+ if ($mode == "day") {
+ $end_ts = strtotime($end_date)+$day-1;
+ } else if ($mode == "week") {
+ $end_ts = $start_ts + 6*$day;
+ } else {
+ $end_ts = strtotime($end_date);
+ }
+
+ $count = event_calendar_get_events_between($start_ts,$end_ts,true,$num_items,0,$widget_group,'-');
+ $events = event_calendar_get_events_between($start_ts,$end_ts,false,$num_items,0,$widget_group,'-');
+ //$widget_datas= $event_list = elgg_view_entity_list($events, $count, 0, $num_items, false, false);
+
+ $options = array(
+ 'list_class' => 'elgg-list-entity',
+ 'full_view' => FALSE,
+ 'pagination' => TRUE,
+ 'list_type' => 'listing',
+ 'list_type_toggle' => FALSE,
+ 'offset' => $vars['offset'],
+ 'limit' => $vars['limit'],
+ );
+ $widget_datas = elgg_view_entity_list($events, $options);
+ echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_events_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_events_index/edit.php
new file mode 100644
index 000000000..3aa20f574
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_events_index/edit.php
@@ -0,0 +1,96 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('event_calendar:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[mode]',
+ 'options_values'=>array('day'=>elgg_echo('event_calendar:day_label'),
+ 'week'=>elgg_echo('event_calendar:week_label'),
+ 'month'=>elgg_echo('event_calendar:month_label')),
+ 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_files_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_files_index/content.php
new file mode 100644
index 000000000..b726efe70
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_files_index/content.php
@@ -0,0 +1,44 @@
+<?php
+
+ $object_type ='file';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+ echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_files_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_files_index/edit.php
new file mode 100644
index 000000000..5625eca44
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_files_index/edit.php
@@ -0,0 +1,86 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ //$groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $groups = elgg_get_entities(array('type'=>'group'));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_generic_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_generic_index/content.php
new file mode 100644
index 000000000..941b5ebeb
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_generic_index/content.php
@@ -0,0 +1,47 @@
+<?php
+
+$object_type = $vars["entity"]->widget_subtype;
+if (!isset($object_type))
+ $object_type = 'ELGG_ENTITIES_ANY_VALUE';
+
+$num_items = $vars['entity']->num_items;
+if (!isset($num_items))
+ $num_items = 10;
+
+$widget_group = $vars["entity"]->widget_group;
+if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+$site_categories = $vars['config']->site->categories;
+$widget_categorie = $vars['entity']->widget_categorie;
+$widget_context_mode = $vars['entity']->widget_context_mode;
+if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+elgg_set_context($widget_context_mode);
+
+if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_generic_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_generic_index/edit.php
new file mode 100644
index 000000000..f7584a847
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_generic_index/edit.php
@@ -0,0 +1,103 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+ $widget_subtype = $vars["entity"]->widget_subtype;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_subtype'); ?>
+ :
+ <?php
+
+ $subtypes = get_data("SELECT subtype from {$CONFIG->dbprefix}entity_subtypes");
+ $subtype_list = array();
+ if ($subtypes) {
+ foreach ($subtypes as $data) {
+ $subtype_list[$data->subtype] = $data->subtype;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_subtype]', 'options_values'=>$subtype_list, 'value'=>$widget_subtype));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ //$groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $groups = elgg_get_entities(array('type'=>'group'));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_groups_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_groups_index/content.php
new file mode 100644
index 000000000..0557f874e
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_groups_index/content.php
@@ -0,0 +1,21 @@
+<?php
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'group',
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+
+
+
+echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_groups_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_groups_index/edit.php
new file mode 100644
index 000000000..71f7d6be8
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_groups_index/edit.php
@@ -0,0 +1,63 @@
+<?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_title = $vars['entity']->widget_title;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+ </p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+
+<?php
+ echo elgg_view('input/dropdown', array(
+ 'name' => 'params[num_items]',
+ 'options_values' => array( '1' => '1',
+ '3' => '3',
+ '5' => '5',
+ '8' => '8',
+ '10' => '10',
+ '12' => '12',
+ '15' => '15',
+ '20' => '20',
+ '30' => '30',
+ '40' => '40',
+ '50' => '50',
+ '100' => '100',
+ ),
+ 'value' => $num_items
+ ));
+?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/content.php
new file mode 100644
index 000000000..22b15b37c
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/content.php
@@ -0,0 +1,50 @@
+<?php
+$object_type = 'izap_videos';
+
+$num_items = $vars['entity']->num_items;
+if (!isset($num_items))
+ $num_items = 10;
+
+$widget_group = $vars["entity"]->widget_group;
+if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+$site_categories = $vars['config']->site->categories;
+$widget_categorie = $vars['entity']->widget_categorie;
+$widget_context_mode = $vars['entity']->widget_context_mode;
+if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+elgg_set_context($widget_context_mode);
+
+if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+?>
+<div class="contentWrapper">
+ <?php
+ if (isset($widget_datas)) {
+ echo $widget_datas;
+ }
+ ?>
+ <div class="clearfloat">
+ </div>
+</div>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/edit.php
new file mode 100644
index 000000000..54c41e1a9
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_izap_videos_index/edit.php
@@ -0,0 +1,86 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_members_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_members_index/content.php
new file mode 100644
index 000000000..c4f95a77d
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_members_index/content.php
@@ -0,0 +1,20 @@
+<?php
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+ $display_avatar = $vars['entity']->display_avatar;
+ if (!isset($display_avatar)) $display_avatar = 'yes';
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'metadata_names' => 'icontime',
+ 'types' => 'user',
+ 'limit' => $num_items,
+ 'full_view' => false,
+ 'pagination' => false,
+ 'size' => 'small',
+ ));
+
+echo $widget_datas;
+?>
+
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_members_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_members_index/edit.php
new file mode 100644
index 000000000..856d5ed0b
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_members_index/edit.php
@@ -0,0 +1,79 @@
+<?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $display_avatar = $vars['entity']->display_avatar;
+ if (!isset($display_avatar)) $display_avatar = 'yes';
+
+ $widget_title = $vars['entity']->widget_title;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+
+
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+
+<?php
+ echo elgg_view('input/dropdown', array(
+ 'name' => 'params[num_items]',
+ 'options_values' => array(
+ '7' => '7',
+ '14' => '14',
+ '21' => '21',
+ '28' => '28',
+ '35' => '35',
+ '42' => '42',
+ '49' => '49',
+ '56' => '56',
+ '100' => '100',
+ ),
+ 'value' => $num_items
+ ));
+?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:display_avatar'); ?>
+
+<?php
+ echo elgg_view('input/dropdown', array(
+ 'name' => 'params[display_avatar]',
+ 'options_values' => array( 'yes' => 'yes',
+ 'no' => 'no',
+
+ ),
+ 'value' => $display_avatar
+ ));
+?>
+</p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_news_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_news_index/content.php
new file mode 100644
index 000000000..8a10093b1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_news_index/content.php
@@ -0,0 +1,47 @@
+<?php
+
+ $object_type ='news';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items))
+ $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+echo $widget_datas;
+?>
+
+
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_news_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_news_index/edit.php
new file mode 100644
index 000000000..063b5ddc1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_news_index/edit.php
@@ -0,0 +1,85 @@
+<?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_pages_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_pages_index/content.php
new file mode 100644
index 000000000..cc8a46d55
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_pages_index/content.php
@@ -0,0 +1,45 @@
+<?php
+
+ $object_type ='page_top';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items))
+ $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode))
+ $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+echo $widget_datas;
+?>
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_pages_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_pages_index/edit.php
new file mode 100644
index 000000000..a14371b02
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_pages_index/edit.php
@@ -0,0 +1,86 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ //$groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $groups = elgg_get_entities(array('type'=>'group'));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_photos_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_photos_index/content.php
new file mode 100644
index 000000000..bb83cac40
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_photos_index/content.php
@@ -0,0 +1,25 @@
+<div class="contentWrapper">
+<?php
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ if ($widget_group != 0){
+ $album = elgg_get_entities("object", 'album', $widget_group, "", 1, 0, false);
+ $album_guid = $album[0]->getGUID();
+ $entities = elgg_get_entities("object", "image", $album_guid, '', 999);
+ elgg_set_context('front');
+ $widgetdatas = elgg_view_entity_list($entities);
+ }else{
+ $widgetdatas = tp_get_latest_photos($num_items, 0);
+ }
+
+ echo '<div class="icon_latest">';
+ echo $widgetdatas;
+ echo '</div>';
+
+?>
+</div> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_photos_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_photos_index/edit.php
new file mode 100644
index 000000000..0ef5e53a1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_photos_index/edit.php
@@ -0,0 +1,64 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/content.php
new file mode 100644
index 000000000..1f06a0db1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/content.php
@@ -0,0 +1,45 @@
+<?php
+
+ $object_type ='task_top';
+
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = ELGG_ENTITIES_ANY_VALUE;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+ elgg_set_context($widget_context_mode);
+
+ if ($site_categories == NULL || $widget_categorie == NULL) {
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+} else {
+
+ $widget_datas = elgg_list_entities_from_metadata(array(
+ 'type'=>'object',
+ 'subtype'=>$object_type,
+ 'container_guids' => $widget_group,
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false,
+ 'metadata_name' => 'universal_categories',
+ 'metadata_value' => $widget_categorie,
+ ));
+}
+
+echo $widget_datas;
+?>
+
+
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/edit.php
new file mode 100644
index 000000000..c587bc184
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_tasks_index/edit.php
@@ -0,0 +1,85 @@
+ <?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_group = $vars["entity"]->widget_group;
+ if (!isset($widget_group)) $widget_group = 0;
+
+ $site_categories = $vars['config']->site->categories;
+ $widget_categorie = $vars['entity']->widget_categorie;
+ $widget_context_mode = $vars['entity']->widget_context_mode;
+ if (!isset($widget_context_mode)) $widget_context_mode = 'search';
+
+ $widget_title = $vars['entity']->widget_title;
+ $widget_group = $vars["entity"]->widget_group;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+ ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>
+ :
+ <?php
+ echo elgg_view('input/text', array('name'=>'params[widget_title]', 'value'=>$widget_title));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('group'); ?>
+ :
+ <?php
+ $groups = elgg_get_entities(array("type"=>'group','limit'=>100));
+ $group_list = array();
+ $group_list[0] = elgg_echo('custom_index_widgets:widget_all_groups');
+ if ($groups) {
+ foreach ($groups as $group) {
+ $group_list[$group->getGUID()] = $group->name;
+ }
+ }
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_group]', 'options_values'=>$group_list, 'value'=>$widget_group));
+ ?>
+ </p>
+ <?php if ($site_categories != NULL) { ?>
+ <p>
+ <?php echo elgg_echo('categories'); ?>
+ :
+ <?php
+ $categories_with_empty_choice = array_merge(array('-1'=>''), array_combine($site_categories, $site_categories));
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_categorie]', 'options_values'=>$categories_with_empty_choice, 'value'=>$widget_categorie));
+ ?>
+ </p>
+ <?php } ?>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:context_mode'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[widget_context_mode]', 'options_values'=>array('search'=>elgg_echo('custom_index_widgets:context_list'), 'detail'=>elgg_echo('custom_index_widgets:context_detail')), 'value'=>$widget_context_mode));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[num_items]', 'options_values'=>array('1'=>'1', '3'=>'3', '5'=>'5', '8'=>'8', '10'=>'10', '12'=>'12', '15'=>'15', '20'=>'20', '30'=>'30', '40'=>'40', '50'=>'50', '100'=>'100', ), 'value'=>$num_items));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_wire_index/content.php b/mod/custom_index_widgets/views/default/widgets/latest_wire_index/content.php
new file mode 100644
index 000000000..98d3b43e1
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_wire_index/content.php
@@ -0,0 +1,17 @@
+<?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+ elgg_set_context('search');
+
+ $widget_datas = elgg_list_entities(array(
+ 'type'=>'object',
+ 'subtype'=>'thewire',
+ 'limit'=>$num_items,
+ 'full_view' => false,
+ 'view_type_toggle' => false,
+ 'pagination' => false));
+
+ echo $widget_datas;
+?>
+
+
diff --git a/mod/custom_index_widgets/views/default/widgets/latest_wire_index/edit.php b/mod/custom_index_widgets/views/default/widgets/latest_wire_index/edit.php
new file mode 100644
index 000000000..d08066648
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/latest_wire_index/edit.php
@@ -0,0 +1,62 @@
+<?php
+ $num_items = $vars['entity']->num_items;
+ if (!isset($num_items)) $num_items = 10;
+
+ $widget_title = $vars['entity']->widget_title;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+ </p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:num_items'); ?>
+<?php
+ echo elgg_view('input/dropdown', array(
+ 'name' => 'params[num_items]',
+ 'options_values' => array( '1' => '1',
+ '3' => '3',
+ '5' => '5',
+ '8' => '8',
+ '10' => '10',
+ '12' => '12',
+ '15' => '15',
+ '20' => '20',
+ '30' => '30',
+ '40' => '40',
+ '50' => '50',
+ '100' => '100',
+ ),
+ 'value' => $num_items
+ ));
+?>
+</p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
diff --git a/mod/custom_index_widgets/views/default/widgets/login_index/content.php b/mod/custom_index_widgets/views/default/widgets/login_index/content.php
new file mode 100644
index 000000000..1e82df544
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/login_index/content.php
@@ -0,0 +1,15 @@
+<?php
+
+if (elgg_is_logged_in()) {
+ $top_box = "<h2>" . elgg_echo("welcome") . " ";
+ $top_box .= elgg_get_logged_in_user_entity()->name;
+ $top_box .= "</h2>";
+} else {
+ $top_box = elgg_view("core/account/login_box");
+}
+
+echo $top_box;
+?>
+
+
+
diff --git a/mod/custom_index_widgets/views/default/widgets/login_index/edit.php b/mod/custom_index_widgets/views/default/widgets/login_index/edit.php
new file mode 100644
index 000000000..149008323
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/login_index/edit.php
@@ -0,0 +1,27 @@
+<?php
+ $widget_title = $vars['entity']->widget_title;
+
+ $show_welcome = $vars['entity']->show_welcome;
+ if (!isset($show_welcome)) $show_welcome = "yes";
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+</p> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/rich_media_index/content.php b/mod/custom_index_widgets/views/default/widgets/rich_media_index/content.php
new file mode 100644
index 000000000..dddc32bd7
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/rich_media_index/content.php
@@ -0,0 +1,27 @@
+<?php
+
+ $widget_video_width = $vars['entity']->widget_video_width;
+ $widget_video_height = $vars['entity']->widget_video_height;
+ $widget_video_url = $vars['entity']->widget_video_url;
+ $widget_video_caption = $vars['entity']->widget_video_caption;
+
+ if (!isset($widget_video_width)){
+ $widget_video_width = '250';
+ }
+ if (!isset($widget_video_height)){
+ $widget_video_height = '250';
+ }
+
+?>
+
+<div class="contentWrapper" align="center">
+ <a id="media<?php echo $vars['entity']->getGUID();?>" class="media" href="<?php echo $widget_video_url;?>"><?php echo $widget_video_title;?></a> <div class="clearfloat">
+ </div>
+</div>
+<?php if (isset($widget_video_url)) { ?>
+<script type="text/javascript">
+ jQuery(document).ready(function($){
+ $('#media<?php echo $vars['entity']->getGUID();?>').media({width:<?php echo $widget_video_width;?>, height:<?php echo $widget_video_height;?>, autoplay: true});
+ });
+</script>
+<?php } ?> \ No newline at end of file
diff --git a/mod/custom_index_widgets/views/default/widgets/rich_media_index/edit.php b/mod/custom_index_widgets/views/default/widgets/rich_media_index/edit.php
new file mode 100644
index 000000000..a3956159c
--- /dev/null
+++ b/mod/custom_index_widgets/views/default/widgets/rich_media_index/edit.php
@@ -0,0 +1,78 @@
+<?php
+ $widget_title = $vars['entity']->widget_title;
+ $widget_video_width = $vars['entity']->widget_video_width;
+ $widget_video_height = $vars['entity']->widget_video_height;
+ $widget_video_url = $vars['entity']->widget_video_url;
+ $widget_video_title = $vars['entity']->widget_video_title;
+
+ $guest_only = $vars['entity']->guest_only;
+ if (!isset($guest_only)) $guest_only = "no";
+
+ $box_style = $vars['entity']->box_style;
+ if (!isset($box_style)) $box_style = "collapsable";
+
+?>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:widget_title'); ?>:
+ <?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_title]',
+ 'value' => $widget_title
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:widget_video_caption'); ?>
+<?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_video_caption]',
+ 'value' => $widget_video_caption
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:widget_video_url'); ?>
+<?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_video_url]',
+ 'value' => $widget_video_url
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:widget_video_width'); ?>
+<?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_video_width]',
+ 'value' => $widget_video_width
+ ));
+ ?>
+</p>
+<p>
+<?php echo elgg_echo('custom_index_widgets:widget_video_height'); ?>
+<?php
+ echo elgg_view('input/text', array(
+ 'name' => 'params[widget_video_height]',
+ 'value' => $widget_video_height
+ ));
+ ?>
+</p>
+<p>
+ <?php echo elgg_echo('custom_index_widgets:box_style'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[box_style]',
+ 'options_values'=>array('plain'=>'Plain', 'plain collapsable'=>'Plain and collapsable', 'collapsable'=>'Collapsable', 'standard' => 'No Collapsable'),
+ 'value'=>$box_style));
+ ?>
+ </p>
+ <p>
+ <?php echo elgg_echo('custom_index_widgets:guest_only'); ?>
+ :
+ <?php
+ echo elgg_view('input/dropdown', array('name'=>'params[guest_only]',
+ 'options_values'=>array('yes'=>'yes', 'no'=>'no'),
+ 'value'=>$guest_only));
+ ?>
+ </p>
+
diff --git a/mod/developers/languages/en.php b/mod/developers/languages/en.php
index 262759e23..266b5406e 100644
--- a/mod/developers/languages/en.php
+++ b/mod/developers/languages/en.php
@@ -28,7 +28,8 @@ $english = array(
'developers:label:show_strings' => "Show raw translation strings",
'developers:help:show_strings' => "This displays the translation strings used by elgg_echo().",
'developers:label:wrap_views' => "Wrap views",
- 'developers:help:wrap_views' => "This wraps almost every view with HTML comments. Useful for finding the view creating particular HTML.",
+ 'developers:help:wrap_views' => "This wraps almost every view with HTML comments. Useful for finding the view creating particular HTML.
+ This can break non-HTML views in the default viewtype. See developers_wrap_views() for details.",
'developers:label:log_events' => "Log events and plugin hooks",
'developers:help:log_events' => "Write events and plugin hooks to the log. Warning: there are many of these per page.",
@@ -54,6 +55,7 @@ $english = array(
'theme_preview:modules' => 'Modules',
'theme_preview:navigation' => 'Navigation',
'theme_preview:typography' => 'Typography',
+ 'theme_preview:miscellaneous' => 'Miscellaneous',
// unit tests
'developers:unit_tests:description' => 'Elgg has unit and integration tests for detecting bugs in its core classes and functions.',
diff --git a/mod/developers/manifest.xml b/mod/developers/manifest.xml
index 93a12945d..23e726e2b 100644
--- a/mod/developers/manifest.xml
+++ b/mod/developers/manifest.xml
@@ -8,6 +8,7 @@
<blurb>Developer tools for Elgg</blurb>
<description>A set of tools for writing plugins and themes. It is recommended that you have this plugin at the top of the plugin list.</description>
<website>http://www.elgg.org/</website>
+ <bugtracker>https://github.com/Elgg/Elgg/issues</bugtracker>
<copyright>See COPYRIGHT.txt</copyright>
<license>GNU General Public License version 2</license>
diff --git a/mod/developers/start.php b/mod/developers/start.php
index d77a96b36..94d0f652c 100644
--- a/mod/developers/start.php
+++ b/mod/developers/start.php
@@ -89,6 +89,15 @@ function developers_clear_strings() {
/**
* Post-process a view to add wrapper comments to it
+ *
+ * 1. Only process views served with the 'default' viewtype.
+ * 2. Does not wrap views that begin with js/ or css/ as they are not HTML.
+ * 3. Does not wrap views that are images (start with icon/). Is this still true?
+ * 4. Does not wrap input and output views (why?).
+ * 5. Does not wrap html head or the primary page shells
+ *
+ * @warning this will break views in the default viewtype that return non-HTML data
+ * that do not match the above restrictions.
*/
function developers_wrap_views($hook, $type, $result, $params) {
if (elgg_get_viewtype() != "default") {
@@ -176,6 +185,7 @@ function developers_theme_preview_controller($page) {
'modules',
'navigation',
'typography',
+ 'miscellaneous'
);
foreach ($pages as $page_name) {
diff --git a/mod/developers/views/default/developers/css.php b/mod/developers/views/default/developers/css.php
index 4690945a9..b4f59fdec 100644
--- a/mod/developers/views/default/developers/css.php
+++ b/mod/developers/views/default/developers/css.php
@@ -21,3 +21,7 @@
color: #666;
padding: 20px;
}
+
+.developers-content-thin {
+ max-width: 600px;
+} \ No newline at end of file
diff --git a/mod/developers/views/default/forms/developers/settings.php b/mod/developers/views/default/forms/developers/settings.php
index 584f6af30..78e1372de 100644
--- a/mod/developers/views/default/forms/developers/settings.php
+++ b/mod/developers/views/default/forms/developers/settings.php
@@ -10,20 +10,22 @@ echo '<p>' . elgg_echo('elgg_dev_tools:settings:explanation') . '</p>';
foreach ($vars['data'] as $name => $info) {
echo '<div>';
if ($info['type'] == 'checkbox') {
+ echo '<label>';
echo elgg_view("input/checkbox", array(
'name' => $name,
'value' => $info['value'],
'checked' => $info['checked'],
));
- echo '<label>' . elgg_echo("developers:label:$name") . '</label>';
+ echo elgg_echo("developers:label:$name") . '</label>';
echo '<span class="elgg-text-help">' . elgg_echo("developers:help:$name") . '</span>';
} else {
- echo '<label>' . elgg_echo("developers:label:$name") . '</label>';
+ echo '<label>' . elgg_echo("developers:label:$name");
echo elgg_view("input/{$info['type']}", array(
'name' => $name,
'value' => $info['value'],
'options_values' => $info['options_values'],
));
+ echo '</label>';
echo '<span class="elgg-text-help">' . elgg_echo("developers:help:$name") . '</span>';
}
echo '</div>';
diff --git a/mod/developers/views/default/page/theme_preview.php b/mod/developers/views/default/page/theme_preview.php
index 5b31fd789..ee2bc0c0f 100644
--- a/mod/developers/views/default/page/theme_preview.php
+++ b/mod/developers/views/default/page/theme_preview.php
@@ -18,9 +18,19 @@ header("Content-type: text/html; charset=UTF-8");
</head>
<body>
<div class="elgg-page elgg-page-default">
+ <div class="elgg-page-messages">
+ <ul class="elgg-system-messages">
+ <li class="hidden"></li>
+ </ul>
+ </div>
<div class="elgg-page-header">
<div class="elgg-inner">
- <h1 class="elgg-heading-site">Theme Preview</h1>
+ <h1 class="elgg-heading-site">Theme Sandbox</h1>
+ <?php
+ if (get_input("site_menu", false)) {
+ echo elgg_view_menu('site');
+ }
+ ?>
</div>
</div>
<div class="elgg-page-body">
diff --git a/mod/developers/views/default/theme_preview/components.php b/mod/developers/views/default/theme_preview/components.php
index 45f520f2c..50c155b14 100644
--- a/mod/developers/views/default/theme_preview/components.php
+++ b/mod/developers/views/default/theme_preview/components.php
@@ -15,5 +15,11 @@ echo elgg_view_module('info', 'Table (.elgg-table)', $body);
$body = elgg_view('theme_preview/components/table', array('class' => 'elgg-table-alt'));
echo elgg_view_module('info', 'Table Alternate (.elgg-table-alt)', $body);
+$body = elgg_view('theme_preview/components/tagcloud');
+echo elgg_view_module('info', 'Tag cloud (.elgg-tagcloud)', $body);
+
+$body = elgg_view('theme_preview/components/tags');
+echo elgg_view_module('info', 'Tags (.elgg-tag)', $body);
+
$body = elgg_view('theme_preview/components/messages');
-echo elgg_view_module('info', 'Messages (.elgg-message)', $body);
+echo elgg_view_module('info', 'Messages (.elgg-message)', $body); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/components/image_block.php b/mod/developers/views/default/theme_preview/components/image_block.php
index 0bb16428b..ecd35ac65 100644
--- a/mod/developers/views/default/theme_preview/components/image_block.php
+++ b/mod/developers/views/default/theme_preview/components/image_block.php
@@ -1,6 +1,6 @@
-<?php
-$ipsum = elgg_view('developers/ipsum');
-
-$user = new ElggUser();
-$image = elgg_view_entity_icon($user, 'small');
-echo elgg_view_image_block($image, "$ipsum $ipsum $ipsum $ipsum $ipsum $ipsum $ipsum");
+<?php
+$ipsum = elgg_view('developers/ipsum');
+
+$user = new ElggUser();
+$image = elgg_view_entity_icon($user, 'small');
+echo elgg_view_image_block($image, "$ipsum $ipsum $ipsum $ipsum $ipsum $ipsum $ipsum");
diff --git a/mod/developers/views/default/theme_preview/components/list.php b/mod/developers/views/default/theme_preview/components/list.php
index 8096bda04..fcb6f768a 100644
--- a/mod/developers/views/default/theme_preview/components/list.php
+++ b/mod/developers/views/default/theme_preview/components/list.php
@@ -1,19 +1,19 @@
-<?php
-
-$obj1 = new ElggObject();
-$obj1->title = "Object 1";
-$obj1->description = $ipsum;
-
-$obj2 = new ElggObject();
-$obj2->title = "Object 2";
-$obj2->description = $ipsum;
-
-$obj3 = new ElggObject();
-$obj3->title = "Object 3";
-$obj3->description = $ipsum;
-
-$obj4 = new ElggObject();
-$obj4->title = "Object 4";
-$obj4->description = $ipsum;
-
-echo elgg_view('page/components/list', array('items' => array($obj1, $obj2, $obj3, $obj4)));
+<?php
+
+$obj1 = new ElggObject();
+$obj1->title = "Object 1";
+$obj1->description = $ipsum;
+
+$obj2 = new ElggObject();
+$obj2->title = "Object 2";
+$obj2->description = $ipsum;
+
+$obj3 = new ElggObject();
+$obj3->title = "Object 3";
+$obj3->description = $ipsum;
+
+$obj4 = new ElggObject();
+$obj4->title = "Object 4";
+$obj4->description = $ipsum;
+
+echo elgg_view('page/components/list', array('items' => array($obj1, $obj2, $obj3, $obj4)));
diff --git a/mod/developers/views/default/theme_preview/components/messages.php b/mod/developers/views/default/theme_preview/components/messages.php
index ac4d2bfd7..a53255291 100644
--- a/mod/developers/views/default/theme_preview/components/messages.php
+++ b/mod/developers/views/default/theme_preview/components/messages.php
@@ -1,5 +1,5 @@
-<ul>
- <li class="elgg-message elgg-state-success mas">Success message (.elgg-state-success)</li>
- <li class="elgg-message elgg-state-error mas">Error message (.elgg-state-error)</li>
- <li class="elgg-message elgg-state-notice mas">Notice message (.elgg-state-notice)</li>
-</ul>
+<ul>
+ <li class="elgg-message elgg-state-success mas">Success message (.elgg-state-success)</li>
+ <li class="elgg-message elgg-state-error mas">Error message (.elgg-state-error)</li>
+ <li class="elgg-message elgg-state-notice mas">Notice message (.elgg-state-notice)</li>
+</ul>
diff --git a/mod/developers/views/default/theme_preview/components/table.php b/mod/developers/views/default/theme_preview/components/table.php
index 8b8b13e76..7d619dcea 100644
--- a/mod/developers/views/default/theme_preview/components/table.php
+++ b/mod/developers/views/default/theme_preview/components/table.php
@@ -1,12 +1,12 @@
-<table class="<?php echo $vars['class']; ?>">
-<?php
- echo "<thead><tr><th>column 1</th><th>column 2</th></tr></thead>";
- for ($i = 1; $i < 5; $i++) {
- echo '<tr>';
- for ($j = 1; $j < 3; $j++) {
- echo "<td>value $j</td>";
- }
- echo '</tr>';
- }
-?>
+<table class="<?php echo $vars['class']; ?>">
+<?php
+ echo "<thead><tr><th>column 1</th><th>column 2</th></tr></thead>";
+ for ($i = 1; $i < 5; $i++) {
+ echo '<tr>';
+ for ($j = 1; $j < 3; $j++) {
+ echo "<td>value $j</td>";
+ }
+ echo '</tr>';
+ }
+?>
</table> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/components/tagcloud.php b/mod/developers/views/default/theme_preview/components/tagcloud.php
new file mode 100644
index 000000000..3cbf34745
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/components/tagcloud.php
@@ -0,0 +1,17 @@
+<?php
+
+$tags = array(
+ (object)array('tag' => 'php', 'total' => 2),
+ (object)array('tag' => 'elgg', 'total' => 8),
+ (object)array('tag' => 'javascript', 'total' => 3),
+ (object)array('tag' => 'css', 'total' => 4),
+ (object)array('tag' => 'html', 'total' => 1),
+ (object)array('tag' => 'framework', 'total' => 4),
+ (object)array('tag' => 'social', 'total' => 3),
+ (object)array('tag' => 'web', 'total' => 7),
+ (object)array('tag' => 'code', 'total' => 2),
+);
+
+echo '<div style="width: 200px;">';
+echo elgg_view('output/tagcloud', array('value' => $tags));
+echo '</div>';
diff --git a/mod/developers/views/default/theme_preview/components/tags.php b/mod/developers/views/default/theme_preview/components/tags.php
new file mode 100644
index 000000000..04df9511a
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/components/tags.php
@@ -0,0 +1,5 @@
+<?php
+
+echo elgg_view('output/tags', array(
+ 'value' => array('one', 'two', 'three', 'four', 'cinco'),
+));
diff --git a/mod/developers/views/default/theme_preview/general.php b/mod/developers/views/default/theme_preview/general.php
index 35d8ccbfd..7d98d4443 100644
--- a/mod/developers/views/default/theme_preview/general.php
+++ b/mod/developers/views/default/theme_preview/general.php
@@ -1,16 +1,39 @@
<?php
/**
- * Quick introduction to the theme preview
+ * Quick introduction to the theme sandbox
*
* @todo links to resources?
*/
?>
-<p>This theme preview provides a visual catalog for many of the theming elements
+<p>This theme sandbox provides a visual catalog for many of the theming elements
that Elgg uses. The primary css selector is listed with each theme element.
The preview is divided into sections that are listed in the page menu
(usually in the sidebar but depends on your current theme).
</p>
+<?php
+$simple_cache = elgg_get_config('simplecache_enabled');
+$system_cache = elgg_get_config('system_cache_enabled');
+
+if ($simple_cache || $system_cache) {
+ $advanced = elgg_view('output/url', array(
+ 'text' => 'Advanced Settings',
+ 'href' => 'admin/settings/advanced',
+ 'is_trusted' => true
+ ));
+ $developers = elgg_view('output/url', array(
+ 'text' => 'Developers\' Plugin Settings',
+ 'href' => 'admin/developers/settings',
+ 'is_trusted' => true
+ ));
+
+ $body = "Caches are enabled. Changes you make to CSS and views might not appear. It is
+ always recommended to disable caches while developing themes and plugins. To
+ disable caches, visit the $advanced or $developers pages.";
+
+ echo elgg_view_module('info', 'Warning', $body);
+}
+?>
<p>
<?php
echo elgg_view('output/url', array(
diff --git a/mod/developers/views/default/theme_preview/grid.php b/mod/developers/views/default/theme_preview/grid.php
index 030e752e7..0c4cbb251 100644
--- a/mod/developers/views/default/theme_preview/grid.php
+++ b/mod/developers/views/default/theme_preview/grid.php
@@ -4,73 +4,111 @@
*/
?>
-<style>
-h3 {text-align: center;}
-.elgg-col > .elgg-inner {border: 1px solid #cccccc; padding: 5px;}
-</style>
-
-<div class="elgg-col elgg-col-1of5">
- <div class="elgg-inner">
- <h3>1/5</h3>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- </div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of1"><div class="elgg-inner"><h3>1/1</h3></div></div>
</div>
-<div class="elgg-col elgg-col-3of5">
- <div class="elgg-inner clearfix">
- <h3>3/5</h3>
- <div class="elgg-col elgg-col-1of2">
- <div class="elgg-inner">
- <h3>1/2</h3>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- </div>
- </div>
- <div class="elgg-col elgg-col-1of2">
- <div class="elgg-inner">
- <h3>1/2</h3>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- </div>
- </div>
- <div class="elgg-col elgg-col-1of3">
- <div class="elgg-inner">
- <h3>1/3</h3>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- </div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of2"><div class="elgg-inner"><h3>1/2</h3></div></div>
+ <div class="elgg-col elgg-col-1of2"><div class="elgg-inner"><h3>1/2</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of3"><div class="elgg-inner"><h3>1/3</h3></div></div>
+ <div class="elgg-col elgg-col-2of3"><div class="elgg-inner"><h3>2/3</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-3of4"><div class="elgg-inner"><h3>3/4</h3></div></div>
+ <div class="elgg-col elgg-col-1of4"><div class="elgg-inner"><h3>1/4</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of5"><div class="elgg-inner"><h3>1/5</h3></div></div>
+ <div class="elgg-col elgg-col-4of5"><div class="elgg-inner"><h3>4/5</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-3of5"><div class="elgg-inner"><h3>3/5</h3></div></div>
+ <div class="elgg-col elgg-col-2of5"><div class="elgg-inner"><h3>2/5</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of6"><div class="elgg-inner"><h3>1/6</h3></div></div>
+ <div class="elgg-col elgg-col-5of6"><div class="elgg-inner"><h3>5/6</h3></div></div>
+</div>
+<div class="elgg-grid">
+ <style>
+ h3 { text-align: center; }
+ .elgg-col > .elgg-inner {
+ border: 1px solid #cccccc;
+ border-radius: 5px;
+ padding: 5px;
+ }
+ </style>
+ <div class="elgg-col elgg-col-1of5">
+ <div class="elgg-inner">
+ <h3>1/5</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
- <div class="elgg-col elgg-col-2of3">
- <div class="elgg-inner">
- <h3>2/3</h3>
+ </div>
+ <div class="elgg-col elgg-col-3of5">
+ <div class="elgg-inner clearfix">
+ <h3>3/5</h3>
+ <div class="elgg-grid">
<div class="elgg-col elgg-col-1of2">
<div class="elgg-inner">
<h3>1/2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
- <div class="elgg-col elgg-col-1of2">
+ <div class="elgg-col elgg-col-1of2 elgg-col-last">
<div class="elgg-inner">
<h3>1/2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
- <div class="elgg-col elgg-col-1of1">
+ </div>
+ <div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of3">
<div class="elgg-inner">
- <h3>1</h3>
+ <h3>1/3</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
+ <div class="elgg-col elgg-col-2of3 elgg-col-last">
+ <div class="elgg-inner">
+ <h3>2/3</h3>
+ <div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of2">
+ <div class="elgg-inner">
+ <h3>1/2</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ </div>
+ </div>
+ <div class="elgg-col elgg-col-1of2 elgg-col-last">
+ <div class="elgg-inner">
+ <h3>1/2</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ </div>
+ </div>
+ </div>
+ <div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of1">
+ <div class="elgg-inner">
+ <h3>1</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
</div>
</div>
</div>
-</div>
-<div class="elgg-col elgg-col-1of5 elgg-col-last">
- <div class="elgg-inner">
- <h3>1/5</h3>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <div class="elgg-col elgg-col-1of5 elgg-col-last">
+ <div class="elgg-inner">
+ <h3>1/5</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ </div>
</div>
</div>
-
-</div>
diff --git a/mod/developers/views/default/theme_preview/icons/avatars.php b/mod/developers/views/default/theme_preview/icons/avatars.php
index f50a6b70d..3aa1eda26 100644
--- a/mod/developers/views/default/theme_preview/icons/avatars.php
+++ b/mod/developers/views/default/theme_preview/icons/avatars.php
@@ -1,36 +1,36 @@
-<?php
- $user = new ElggUser();
- $group = new ElggGroup();
-
- $sizes = array('large', 'medium', 'small', 'tiny');
-?>
-<table class="elgg-table">
- <tr>
- <th></th>
- <?php
- foreach ($sizes as $size) {
- echo "<th>$size</th>";
- }
- ?>
- </tr>
- <tr>
- <th>User</th>
- <?php
- foreach ($sizes as $size) {
- echo '<td>';
- echo elgg_view_entity_icon($user, $size, array('use_hover' => false));
- echo '</td>';
- }
- ?>
- </tr>
- <tr>
- <th>Group</th>
- <?php
- foreach ($sizes as $size) {
- echo '<td>';
- echo elgg_view_entity_icon($group, $size, array('use_hover' => false));
- echo '</td>';
- }
- ?>
- </tr>
-</table>
+<?php
+ $user = new ElggUser();
+ $group = new ElggGroup();
+
+ $sizes = array('large', 'medium', 'small', 'tiny');
+?>
+<table class="elgg-table">
+ <tr>
+ <th></th>
+ <?php
+ foreach ($sizes as $size) {
+ echo "<th>$size</th>";
+ }
+ ?>
+ </tr>
+ <tr>
+ <th>User</th>
+ <?php
+ foreach ($sizes as $size) {
+ echo '<td>';
+ echo elgg_view_entity_icon($user, $size, array('use_hover' => false));
+ echo '</td>';
+ }
+ ?>
+ </tr>
+ <tr>
+ <th>Group</th>
+ <?php
+ foreach ($sizes as $size) {
+ echo '<td>';
+ echo elgg_view_entity_icon($group, $size, array('use_hover' => false));
+ echo '</td>';
+ }
+ ?>
+ </tr>
+</table>
diff --git a/mod/developers/views/default/theme_preview/icons/sprites.php b/mod/developers/views/default/theme_preview/icons/sprites.php
index 134dd9aca..3edb0bd7c 100644
--- a/mod/developers/views/default/theme_preview/icons/sprites.php
+++ b/mod/developers/views/default/theme_preview/icons/sprites.php
@@ -1,61 +1,61 @@
-<?php
-$icons = array(
- 'arrow-left',
- 'arrow-right',
- 'arrow-two-head',
- 'calendar',
- 'checkmark',
- 'clip',
- 'cursor-drag-arrow',
- 'delete-alt',
- 'delete',
- 'download',
- 'facebook',
- 'home',
- 'hover-menu',
- 'link',
- 'mail-alt',
- 'mail',
- 'print-alt',
- 'print',
- 'push-pin-alt',
- 'push-pin',
- 'redo',
- 'refresh',
- 'round-arrow-left',
- 'round-arrow-right',
- 'round-checkmark',
- 'round-minus',
- 'round-plus',
- 'rss',
- 'search-focus',
- 'search',
- 'settings-alt',
- 'settings',
- 'share',
- 'shop-cart',
- 'speech-bubble-alt',
- 'speech-bubble',
- 'star-alt',
- 'star-empty',
- 'star',
- 'tag',
- 'thumbs-down-alt',
- 'thumbs-down',
- 'thumbs-up-alt',
- 'thumbs-up',
- 'trash',
- 'twitter',
- 'undo',
- 'user',
- 'users',
-);
-?>
-
-<ul class="elgg-gallery">
-<?php
- foreach ($icons as $icon) {
- echo "<li title=\".elgg-icon-$icon\" style=\"margin:10px\">" . elgg_view_icon($icon) . "</li>";
- }
-?>
+<?php
+$icons = array(
+ 'arrow-left',
+ 'arrow-right',
+ 'arrow-two-head',
+ 'calendar',
+ 'checkmark',
+ 'clip',
+ 'cursor-drag-arrow',
+ 'delete-alt',
+ 'delete',
+ 'download',
+ 'facebook',
+ 'home',
+ 'hover-menu',
+ 'link',
+ 'mail-alt',
+ 'mail',
+ 'print-alt',
+ 'print',
+ 'push-pin-alt',
+ 'push-pin',
+ 'redo',
+ 'refresh',
+ 'round-arrow-left',
+ 'round-arrow-right',
+ 'round-checkmark',
+ 'round-minus',
+ 'round-plus',
+ 'rss',
+ 'search-focus',
+ 'search',
+ 'settings-alt',
+ 'settings',
+ 'share',
+ 'shop-cart',
+ 'speech-bubble-alt',
+ 'speech-bubble',
+ 'star-alt',
+ 'star-empty',
+ 'star',
+ 'tag',
+ 'thumbs-down-alt',
+ 'thumbs-down',
+ 'thumbs-up-alt',
+ 'thumbs-up',
+ 'trash',
+ 'twitter',
+ 'undo',
+ 'user',
+ 'users',
+);
+?>
+
+<ul class="elgg-gallery">
+<?php
+ foreach ($icons as $icon) {
+ echo "<li title=\".elgg-icon-$icon\" style=\"margin:10px\">" . elgg_view_icon($icon) . "</li>";
+ }
+?>
</ul> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous.php b/mod/developers/views/default/theme_preview/miscellaneous.php
new file mode 100644
index 000000000..2f4ee4acd
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Miscellaneous and complex components
+ */
+
+$body = elgg_view('theme_preview/miscellaneous/lightbox');
+echo elgg_view_module('info', 'Lightbox (.elgg-lightbox)', $body);
+
+$body = elgg_view('theme_preview/miscellaneous/popup');
+echo elgg_view_module('info', 'Popup (rel=popup)', $body);
+
+$body = elgg_view('theme_preview/miscellaneous/toggle');
+echo elgg_view_module('info', 'Toggle (rel=toggle)', $body);
+
+$body = elgg_view('theme_preview/miscellaneous/system_messages');
+echo elgg_view_module('info', 'System Messages and Errors', $body);
+
+$body = elgg_view('theme_preview/miscellaneous/site_menu');
+echo elgg_view_module('info', 'Site Menu', $body);
+
+$body = elgg_view('theme_preview/miscellaneous/user_hover_menu');
+echo elgg_view_module('info', 'User Icon with Hover Menu', $body); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/lightbox.php b/mod/developers/views/default/theme_preview/miscellaneous/lightbox.php
new file mode 100644
index 000000000..b673c4ee0
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/lightbox.php
@@ -0,0 +1,19 @@
+<?php
+
+elgg_load_js('lightbox');
+elgg_load_css('lightbox');
+
+$ipsum = elgg_view('developers/ipsum');
+
+$link = elgg_view('output/url', array(
+ 'text' => 'Open lighbox',
+ 'href' => "#elgg-lightbox-test",
+ 'class' => 'elgg-lightbox'
+));
+
+echo $link;
+echo '<div class="hidden">';
+echo elgg_view_module('aside', 'Lightbox Test', $ipsum, array(
+ 'id' => 'elgg-lightbox-test'
+));
+echo '</div>'; \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/popup.php b/mod/developers/views/default/theme_preview/miscellaneous/popup.php
new file mode 100644
index 000000000..b711bb7cc
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/popup.php
@@ -0,0 +1,15 @@
+<?php
+
+$ipsum = elgg_view('developers/ipsum');
+
+$link = elgg_view('output/url', array(
+ 'text' => 'Popup content',
+ 'href' => "#elgg-popup-test",
+ 'rel' => 'popup'
+));
+
+echo $link;
+echo elgg_view_module('popup', 'Popup Test', $ipsum, array(
+ 'id' => 'elgg-popup-test',
+ 'class' => 'hidden clearfix developers-content-thin',
+)); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/site_menu.php b/mod/developers/views/default/theme_preview/miscellaneous/site_menu.php
new file mode 100644
index 000000000..e2384b9f7
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/site_menu.php
@@ -0,0 +1,15 @@
+<?php
+
+if (!get_input('site_menu')) {
+ echo elgg_view('output/url', array(
+ 'text' => 'Show Site Menu',
+ 'href' => elgg_http_add_url_query_elements(current_page_url(), array('site_menu' => 1)),
+ 'is_trusted' => true
+ ));
+} else {
+ echo elgg_view('output/url', array(
+ 'text' => 'Hide Site Menu',
+ 'href' => elgg_http_remove_url_query_element(current_page_url(), 'site_menu'),
+ 'is_trusted' => true
+ ));
+} \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/system_messages.php b/mod/developers/views/default/theme_preview/miscellaneous/system_messages.php
new file mode 100644
index 000000000..a6663a3dc
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/system_messages.php
@@ -0,0 +1,35 @@
+<?php
+
+// can't use the ipsum because it includes html when wrapping views.
+$message = elgg_view('output/url', array(
+ 'text' => 'Show system message (system_message())',
+ 'is_trusted' => true,
+ 'href' => '#',
+ 'id' => 'developers-system-message',
+// 'onclick' => "elgg.system_message('Elgg System Message');"
+));
+
+$error = elgg_view('output/url', array(
+ 'text' => 'Show error message (register_error())',
+ 'is_trusted' => true,
+ 'href' => '#',
+ 'id' => 'developers-error-message',
+));
+
+?>
+<script type="text/javascript">
+ $(function() {
+ $('#developers-system-message').click(function() {
+ elgg.system_message('Elgg System Message');
+ })
+
+ $('#developers-error-message').click(function() {
+ elgg.register_error('Elgg Error Message');
+ })
+ });
+</script>
+
+<ul>
+ <li><?php echo $message; ?></li>
+ <li><?php echo $error; ?></li>
+</ul> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/toggle.php b/mod/developers/views/default/theme_preview/miscellaneous/toggle.php
new file mode 100644
index 000000000..abe39ddd8
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/toggle.php
@@ -0,0 +1,15 @@
+<?php
+
+$ipsum = elgg_view('developers/ipsum');
+
+$link = elgg_view('output/url', array(
+ 'text' => 'Toggle content',
+ 'href' => "#elgg-toggle-test",
+ 'rel' => 'toggle'
+));
+
+echo $link;
+echo elgg_view_module('featured', 'Toggle Test', $ipsum, array(
+ 'id' => 'elgg-toggle-test',
+ 'class' => 'hidden clearfix developers-content-thin',
+)); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/miscellaneous/user_hover_menu.php b/mod/developers/views/default/theme_preview/miscellaneous/user_hover_menu.php
new file mode 100644
index 000000000..45331b6e0
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/miscellaneous/user_hover_menu.php
@@ -0,0 +1,16 @@
+<?php
+
+$me = elgg_get_logged_in_user_entity();
+echo elgg_view_entity_icon($me);
+
+// show another user if available
+$users = elgg_get_entities(array(
+ 'type' => 'user',
+ 'wheres' => array("guid != {$me->getGUID()}"),
+ 'limit' => 1
+));
+
+if (is_array($users) && count($users) > 0) {
+ echo elgg_view_entity_icon($users[0]);
+}
+
diff --git a/mod/developers/views/default/theme_preview/modules.php b/mod/developers/views/default/theme_preview/modules.php
index 3e0acb3a5..c46c94296 100644
--- a/mod/developers/views/default/theme_preview/modules.php
+++ b/mod/developers/views/default/theme_preview/modules.php
@@ -2,5 +2,5 @@
echo elgg_view_module('info', 'Modules (.elgg-module)', elgg_view('theme_preview/modules/modules'));
-echo elgg_view_module('info', 'Widgets (.elgg-widget)', elgg_view('theme_preview/modules/widgets'));
+echo elgg_view_module('info', 'Widgets (.elgg-module-widget)', elgg_view('theme_preview/modules/widgets'));
diff --git a/mod/developers/views/default/theme_preview/modules/modules.php b/mod/developers/views/default/theme_preview/modules/modules.php
index e0d39c0da..04f5917b4 100644
--- a/mod/developers/views/default/theme_preview/modules/modules.php
+++ b/mod/developers/views/default/theme_preview/modules/modules.php
@@ -1,23 +1,23 @@
-<?php
-
-$ipsum = elgg_view('developers/ipsum');
-
-?>
-<div class="elgg-grid">
- <div class="elgg-col elgg-col-1of2">
- <div class="pam">
- <?php
- echo elgg_view_module('aside', 'Aside (.elgg-module-aside)', $ipsum);
- echo elgg_view_module('popup', 'Popup (.elgg-module-popup)', $ipsum);
- ?>
- </div>
- </div>
- <div class="elgg-col elgg-col-1of2">
- <div class="pam">
- <?php
- echo elgg_view_module('info', 'Info (.elgg-module-info)', $ipsum);
- echo elgg_view_module('featured', 'Featured (.elgg-module-featured)', $ipsum);
- ?>
- </div>
- </div>
+<?php
+
+$ipsum = elgg_view('developers/ipsum');
+
+?>
+<div class="elgg-grid">
+ <div class="elgg-col elgg-col-1of2">
+ <div class="pam">
+ <?php
+ echo elgg_view_module('aside', 'Aside (.elgg-module-aside)', $ipsum);
+ echo elgg_view_module('popup', 'Popup (.elgg-module-popup)', $ipsum);
+ ?>
+ </div>
+ </div>
+ <div class="elgg-col elgg-col-1of2">
+ <div class="pam">
+ <?php
+ echo elgg_view_module('info', 'Info (.elgg-module-info)', $ipsum);
+ echo elgg_view_module('featured', 'Featured (.elgg-module-featured)', $ipsum);
+ ?>
+ </div>
+ </div>
</div> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/navigation.php b/mod/developers/views/default/theme_preview/navigation.php
index b80634317..5d3060d10 100644
--- a/mod/developers/views/default/theme_preview/navigation.php
+++ b/mod/developers/views/default/theme_preview/navigation.php
@@ -2,9 +2,9 @@
/**
* Navigation CSS
*/
-echo elgg_view_module('info', "Tabs", elgg_view('theme_preview/navigation/tabs'));
+echo elgg_view_module('info', "Tabs (.elgg-tabs)", elgg_view('theme_preview/navigation/tabs'));
-echo elgg_view_module('info', "Pagination", elgg_view('theme_preview/navigation/pagination'));
+echo elgg_view_module('info', "Pagination (.elgg-pagination)", elgg_view('theme_preview/navigation/pagination'));
echo elgg_view_module('info', "Site Menu (.elgg-menu-site)", elgg_view('theme_preview/navigation/site'));
@@ -14,8 +14,10 @@ echo elgg_view_module('info', "Page Menu (.elgg-menu-page)", elgg_view('theme_pr
echo elgg_view_module('info', "Filter Menu (.elgg-menu-filter)", elgg_view('theme_preview/navigation/filter'));
-echo elgg_view_module('info', "Extras Menu (.elgg-menu-extras)", elgg_view('theme_preview/navigation/extras'));
+echo elgg_view_module('info', "Extras Menu (.elgg-menu-extras and .elgg-menu-hz)", elgg_view('theme_preview/navigation/extras'));
+
+echo elgg_view_module('info', "Entity Menu (.elgg-menu-entity and .elgg-menu-hz)", elgg_view('theme_preview/navigation/entity'));
echo elgg_view_module('info', "Owner Block Menu (.elgg-menu-owner-block)", elgg_view('theme_preview/navigation/owner_block'));
-?>
+echo elgg_view_module('info', "Footer Menu (.elgg-menu-footer)", elgg_view('theme_preview/navigation/footer'));
diff --git a/mod/developers/views/default/theme_preview/navigation/breadcrumbs.php b/mod/developers/views/default/theme_preview/navigation/breadcrumbs.php
index eb3dd47a3..0439bd577 100644
--- a/mod/developers/views/default/theme_preview/navigation/breadcrumbs.php
+++ b/mod/developers/views/default/theme_preview/navigation/breadcrumbs.php
@@ -1,6 +1,10 @@
-<?php
-elgg_push_breadcrumb('First', "#");
-elgg_push_breadcrumb('Second', "#");
-elgg_push_breadcrumb('Third');
-
-echo elgg_view('navigation/breadcrumbs');
+<?php
+elgg_push_breadcrumb('First', "#");
+elgg_push_breadcrumb('Second', "#");
+elgg_push_breadcrumb('Third');
+
+echo elgg_view('navigation/breadcrumbs', array('class' => mts));
+
+elgg_pop_breadcrumb();
+elgg_pop_breadcrumb();
+elgg_pop_breadcrumb();
diff --git a/mod/developers/views/default/theme_preview/navigation/default.php b/mod/developers/views/default/theme_preview/navigation/default.php
index fd67b8094..6efcd8890 100644
--- a/mod/developers/views/default/theme_preview/navigation/default.php
+++ b/mod/developers/views/default/theme_preview/navigation/default.php
@@ -1,11 +1,11 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['menu']['default'][2]->setSelected(true);
-
-echo elgg_view('navigation/menu/default', $params);
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+
+echo elgg_view('navigation/menu/default', $params);
diff --git a/mod/developers/views/default/theme_preview/navigation/entity.php b/mod/developers/views/default/theme_preview/navigation/entity.php
new file mode 100644
index 000000000..465585b00
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/navigation/entity.php
@@ -0,0 +1,12 @@
+<?php
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+$params['menu']['default'][] = new ElggMenuItem(1, "Public", false);
+$params['menu']['default'][] = new ElggMenuItem(2, "Edit", "#");
+$params['menu']['default'][] = new ElggMenuItem(3, elgg_view_icon('thumbs-up'), "#");
+$params['name'] = 'entity';
+$params['class'] = 'elgg-menu-hz';
+
+echo elgg_view('navigation/menu/default', $params);
+
diff --git a/mod/developers/views/default/theme_preview/navigation/extras.php b/mod/developers/views/default/theme_preview/navigation/extras.php
index 6982cf57d..01bc6d434 100644
--- a/mod/developers/views/default/theme_preview/navigation/extras.php
+++ b/mod/developers/views/default/theme_preview/navigation/extras.php
@@ -1,18 +1,18 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['class'] = 'elgg-menu-extras';
-
-
-?>
-
-<div class="elgg-sidebar">
-<?php
- echo elgg_view('navigation/menu/default', $params);
-?>
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+$params['menu']['default'][] = new ElggMenuItem(1, elgg_view_icon('push-pin-alt'), "#");
+$params['menu']['default'][] = new ElggMenuItem(2, elgg_view_icon('rss'), "#");
+$params['menu']['default'][] = new ElggMenuItem(3, elgg_view_icon('star-alt'), "#");
+$params['name'] = 'extras';
+$params['class'] = 'elgg-menu-hz';
+
+?>
+
+<div class="elgg-sidebar">
+<?php
+ echo elgg_view('navigation/menu/default', $params);
+?>
</div> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/navigation/filter.php b/mod/developers/views/default/theme_preview/navigation/filter.php
index f27edf150..70cd31d2a 100644
--- a/mod/developers/views/default/theme_preview/navigation/filter.php
+++ b/mod/developers/views/default/theme_preview/navigation/filter.php
@@ -1,13 +1,13 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['menu']['default'][2]->setSelected(true);
-
-$params['name'] = 'filter';
-
-echo elgg_view('navigation/menu/default', $params);
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+
+$params['name'] = 'filter';
+
+echo elgg_view('navigation/menu/default', $params);
diff --git a/mod/developers/views/default/theme_preview/navigation/footer.php b/mod/developers/views/default/theme_preview/navigation/footer.php
new file mode 100644
index 000000000..92a1bb43c
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/navigation/footer.php
@@ -0,0 +1,10 @@
+<?php
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['name'] = 'footer';
+
+echo elgg_view('navigation/menu/default', $params);
diff --git a/mod/developers/views/default/theme_preview/navigation/horizontal.php b/mod/developers/views/default/theme_preview/navigation/horizontal.php
index 69e75c063..44e04cd7c 100644
--- a/mod/developers/views/default/theme_preview/navigation/horizontal.php
+++ b/mod/developers/views/default/theme_preview/navigation/horizontal.php
@@ -1,12 +1,12 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['menu']['default'][2]->setSelected(true);
-$params['class'] = 'elgg-menu-hz';
-
-echo elgg_view('navigation/menu/default', $params);
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+$params['class'] = 'elgg-menu-hz';
+
+echo elgg_view('navigation/menu/default', $params);
diff --git a/mod/developers/views/default/theme_preview/navigation/owner_block.php b/mod/developers/views/default/theme_preview/navigation/owner_block.php
index 6bf79fe7e..f5f203947 100644
--- a/mod/developers/views/default/theme_preview/navigation/owner_block.php
+++ b/mod/developers/views/default/theme_preview/navigation/owner_block.php
@@ -1,11 +1,13 @@
-<?php
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['menu']['default'][2]->setSelected(true);
-$params['class'] = 'elgg-menu-owner-block';
-
-echo elgg_view('navigation/menu/default', $params); \ No newline at end of file
+<?php
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+$params['name'] = 'owner-block';
+
+echo '<div class="elgg-sidebar">';
+echo elgg_view('navigation/menu/default', $params);
+echo '</div>';
diff --git a/mod/developers/views/default/theme_preview/navigation/page.php b/mod/developers/views/default/theme_preview/navigation/page.php
index fb3f075dc..1da6a1fd9 100644
--- a/mod/developers/views/default/theme_preview/navigation/page.php
+++ b/mod/developers/views/default/theme_preview/navigation/page.php
@@ -1,21 +1,20 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
- $params['menu']['alt'][] = new ElggMenuItem($i, "Page $i", "#");
-}
-$params['menu']['default'][2]->setSelected(true);
-
-$m = new ElggMenuItem(10, "Child", "$url#");
-$m->setParent($params['menu']['default'][1]);
-$params['menu']['default'][1]->addChild($m);
-?>
-
-<div class="elgg-sidebar">
-<?php
- echo elgg_view('navigation/menu/page', $params);
-?>
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+
+$m = new ElggMenuItem(10, "Child", "#");
+$m->setParent($params['menu']['default'][1]);
+$params['menu']['default'][1]->addChild($m);
+?>
+
+<div class="elgg-sidebar">
+<?php
+ echo elgg_view('navigation/menu/page', $params);
+?>
</div> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/navigation/pagination.php b/mod/developers/views/default/theme_preview/navigation/pagination.php
index 90ae48edf..f5e1b632d 100644
--- a/mod/developers/views/default/theme_preview/navigation/pagination.php
+++ b/mod/developers/views/default/theme_preview/navigation/pagination.php
@@ -1,8 +1,8 @@
-<?php
-$params = array(
- 'count' => 1000,
- 'limit' => 10,
- 'offset' => 230,
-);
-
+<?php
+$params = array(
+ 'count' => 1000,
+ 'limit' => 10,
+ 'offset' => 230,
+);
+
echo elgg_view('navigation/pagination', $params); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/navigation/site.php b/mod/developers/views/default/theme_preview/navigation/site.php
index df8dc1b70..90bb8ff46 100644
--- a/mod/developers/views/default/theme_preview/navigation/site.php
+++ b/mod/developers/views/default/theme_preview/navigation/site.php
@@ -1,18 +1,18 @@
-<?php
-
-$params = array();
-$params['menu'] = array();
-$params['menu']['default'] = array();
-for ($i=1; $i<=5; $i++) {
- $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "$url#");
-}
-$params['menu']['default'][2]->setSelected(true);
-?>
-
-<div class="elgg-page-header">
- <div class="elgg-inner">
- <?php
- echo elgg_view('navigation/menu/site', $params);
- ?>
- </div>
-</div>
+<?php
+
+$params = array();
+$params['menu'] = array();
+$params['menu']['default'] = array();
+for ($i=1; $i<=5; $i++) {
+ $params['menu']['default'][] = new ElggMenuItem($i, "Page $i", "#");
+}
+$params['menu']['default'][2]->setSelected(true);
+?>
+
+<div class="elgg-page-header">
+ <div class="elgg-inner">
+ <?php
+ echo elgg_view('navigation/menu/site', $params);
+ ?>
+ </div>
+</div>
diff --git a/mod/developers/views/default/theme_preview/navigation/tabs.php b/mod/developers/views/default/theme_preview/navigation/tabs.php
index b2638bb37..dd282dc83 100644
--- a/mod/developers/views/default/theme_preview/navigation/tabs.php
+++ b/mod/developers/views/default/theme_preview/navigation/tabs.php
@@ -1,10 +1,10 @@
-<?php
-$params = array(
- 'tabs' => array(
- array('title' => 'First', 'url' => "$url#"),
- array('title' => 'Second', 'url' => "$url#", 'selected' => true),
- array('title' => 'Third', 'url' => "$url#"),
- )
-);
-
+<?php
+$params = array(
+ 'tabs' => array(
+ array('title' => 'First', 'url' => "#"),
+ array('title' => 'Second', 'url' => "#", 'selected' => true),
+ array('title' => 'Third', 'url' => "#"),
+ )
+);
+
echo elgg_view('navigation/tabs', $params); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/typography.php b/mod/developers/views/default/theme_preview/typography.php
index 6662a9a46..7a6328cf9 100644
--- a/mod/developers/views/default/theme_preview/typography.php
+++ b/mod/developers/views/default/theme_preview/typography.php
@@ -5,6 +5,8 @@
echo elgg_view_module('info', "Headings", elgg_view('theme_preview/typography/headings'));
+echo elgg_view_module('info', "Fonts", elgg_view('theme_preview/typography/fonts'));
+
echo elgg_view_module('info', "Paragraph", elgg_view('theme_preview/typography/paragraph'));
echo elgg_view_module('info', "Misc", elgg_view('theme_preview/typography/misc')); \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/typography/fonts.php b/mod/developers/views/default/theme_preview/typography/fonts.php
new file mode 100644
index 000000000..dd3c53f00
--- /dev/null
+++ b/mod/developers/views/default/theme_preview/typography/fonts.php
@@ -0,0 +1,7 @@
+<ul>
+ <li>Lorem ipsum dolor sit amet (body)</li>
+ <li><span class="elgg-text-help" style="display: inline;">Lorem ipsum dolor sit amet</span> (.elgg-text-help)</li>
+ <li><span class="elgg-quiet">Lorem ipsum dolor sit amet</span> (.elgg-quiet)</li>
+ <li><span class="elgg-loud">Lorem ipsum dolor sit amet</span> (.elgg-loud)</li>
+ <li><span class="elgg-monospace">Lorem ipsum dolor sit amet</span> (.elgg-monospace)</li>
+</ul> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/typography/headings.php b/mod/developers/views/default/theme_preview/typography/headings.php
index 1eb96c75c..d843853e3 100644
--- a/mod/developers/views/default/theme_preview/typography/headings.php
+++ b/mod/developers/views/default/theme_preview/typography/headings.php
@@ -1,6 +1,6 @@
-<h1>Level 1 heading</h1>
-<h2>Level 2 heading</h2>
-<h3>Level 3 heading</h3>
-<h4>Level 4 heading</h4>
-<h5>Level 5 heading</h5>
+<h1>Level 1 heading</h1>
+<h2>Level 2 heading</h2>
+<h3>Level 3 heading</h3>
+<h4>Level 4 heading</h4>
+<h5>Level 5 heading</h5>
<h6>Level 6 heading</h6> \ No newline at end of file
diff --git a/mod/developers/views/default/theme_preview/typography/misc.php b/mod/developers/views/default/theme_preview/typography/misc.php
index 93a279c36..0b9fd9db7 100644
--- a/mod/developers/views/default/theme_preview/typography/misc.php
+++ b/mod/developers/views/default/theme_preview/typography/misc.php
@@ -1,16 +1,16 @@
-<ul>
- <li>I am <a href="?abc123">the a tag</a> example</li>
- <li>I am <abbr title="test">the abbr tag</abbr> example</li>
- <li>I am <acronym>the acronym tag</acronym> example</li>
- <li>I am <b>the b tag</b> example</li>
- <li>I am <code>the code tag</code> example</li>
- <li>I am <del>the del tag</del> example</li>
- <li>I am <em>the em tag</em> example</li>
- <li>I am <i>the i tag</i> example</li>
- <li>I am <strong>the strong tag</strong> example</li>
-</ul>
-<blockquote><p>Paragraph inside Blockquote: <?php echo $ipsum; ?></p></blockquote>
-<pre>
- <strong>Preformated:</strong>Testing one row
- and another
-</pre>
+<ul>
+ <li>I am <a href="?abc123">the a tag</a> example</li>
+ <li>I am <abbr title="test">the abbr tag</abbr> example</li>
+ <li>I am <acronym>the acronym tag</acronym> example</li>
+ <li>I am <b>the b tag</b> example</li>
+ <li>I am <code>the code tag</code> example</li>
+ <li>I am <del>the del tag</del> example</li>
+ <li>I am <em>the em tag</em> example</li>
+ <li>I am <i>the i tag</i> example</li>
+ <li>I am <strong>the strong tag</strong> example</li>
+</ul>
+<blockquote><p>Paragraph inside Blockquote: <?php echo $ipsum; ?></p></blockquote>
+<pre>
+ <strong>Preformated:</strong>Testing one row
+ and another
+</pre>
diff --git a/mod/developers/views/default/theme_preview/typography/paragraph.php b/mod/developers/views/default/theme_preview/typography/paragraph.php
index 54d548f46..a3a7b2cfa 100644
--- a/mod/developers/views/default/theme_preview/typography/paragraph.php
+++ b/mod/developers/views/default/theme_preview/typography/paragraph.php
@@ -1,19 +1,19 @@
-<p>Lorem ipsum dolor sit amet, <a href="#" title="test link">test link</a>
-adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec
-faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero
-nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent
-mattis, massa quis luctus <strong>strong</strong>, turpis mi volutpat justo, eu
-volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus
-eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem,
-consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue
-quis tellus.</p>
-
-<p>Lorem ipsum dolor sit amet, <em>emphasis</em> consectetuer
-adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec
-faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero
-nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent
-mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu
-volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus
-eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem,
-consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue
+<p>Lorem ipsum dolor sit amet, <a href="#" title="test link">test link</a>
+adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec
+faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero
+nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent
+mattis, massa quis luctus <strong>strong</strong>, turpis mi volutpat justo, eu
+volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus
+eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem,
+consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue
+quis tellus.</p>
+
+<p>Lorem ipsum dolor sit amet, <em>emphasis</em> consectetuer
+adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec
+faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero
+nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent
+mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu
+volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus
+eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem,
+consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue
quis tellus.</p> \ No newline at end of file
diff --git a/mod/dokuwiki b/mod/dokuwiki
deleted file mode 160000
-Subproject 9e83610ec1836cbbd27e7584732ff5d21d95186
diff --git a/mod/dokuwiki/AUTHORS b/mod/dokuwiki/AUTHORS
new file mode 100644
index 000000000..83b5cf583
--- /dev/null
+++ b/mod/dokuwiki/AUTHORS
@@ -0,0 +1,2 @@
+Pablo Martin <devel@lorea.cc>
+Sem <sembrestels@n-1.cc>
diff --git a/mod/dokuwiki/COPYING b/mod/dokuwiki/COPYING
new file mode 100755
index 000000000..60549be51
--- /dev/null
+++ b/mod/dokuwiki/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+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 Program or any portion
+of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+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 Program, 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 Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) 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; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, 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 executable. However, as a
+special exception, the source code 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.
+
+If distribution of executable or 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 counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program 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.
+
+ 5. 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 Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program 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 to
+this License.
+
+ 7. 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 Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program 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 Program.
+
+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.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program 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.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 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 Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, 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
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. 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 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.
+
+ 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
+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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ 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 2 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, 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.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This 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 Library General
+Public License instead of this License.
diff --git a/mod/dokuwiki/README b/mod/dokuwiki/README
new file mode 100644
index 000000000..40e1f52ec
--- /dev/null
+++ b/mod/dokuwiki/README
@@ -0,0 +1,31 @@
+Elgg dokuwiki integration
+------------------------
+
+Adds wikis for groups, and integrates the user and permission system of elgg.
+
+NOTES:
+------------------------
+- Although the goal is to be able to use vanilla dokuwiki with maybe some extensions,
+ at the moment we provide a slightly modified version.
+- doku.php globals are not known, and had to be redeclared.
+- $_REQUEST not defined... dont know the reason but its something of elgg. -> yes elgg is mangling it... **had to comment it on elgg core**
+- acl is hardcoded, added a getACL method on the auth class to be able to generate
+ the acl on the fly... also setACL and modified the admin plugin to be able to use the auth backend.
+- uses an 'elgg' auth module, and a special dokuwiki template.
+- dokuwiki defines the javascript $ symbol, which conflicts with elgg usage of jquery, so had to change all usage inside dokuwiki (just a few instances).
+
+LICENSE:
+-----------------------
+- elgg plugin uses GPLv2. dokuwiki and mods (all under vendors/dokuwiki) go with original license to original copyright holders.
+
+REPO:
+-----------------------
+You can follow code changes or submit tickets at: https://github.com/lorea/dokuwiki
+
+TODO:
+------------------------
+- Maybe just one big wiki for the whole site using namespaces?
+
+---
+devel@lorea.cc
+
diff --git a/mod/dokuwiki/index.php b/mod/dokuwiki/index.php
new file mode 100644
index 000000000..e4e039f51
--- /dev/null
+++ b/mod/dokuwiki/index.php
@@ -0,0 +1,17 @@
+<?php
+
+ elgg_push_breadcrumb(elgg_echo('dokuwiki'));
+ $offset = (int)get_input('offset', 0);
+ $title = elgg_echo("dokuwiki:title");
+ $content = elgg_list_entities(array('subtype'=>'dokuwiki', 'offset'=>$offset, 'types'=>'object','full_view'=>false));
+ $body = elgg_view_layout('content', array(
+ 'content' => $content,
+ 'title' => $title,
+ 'filter' => '',
+ ));
+
+ // Finally draw the page
+ echo elgg_view_page($title, $body);
+
+
+?>
diff --git a/mod/dokuwiki/languages/ca.php b/mod/dokuwiki/languages/ca.php
new file mode 100644
index 000000000..ca2c0df1e
--- /dev/null
+++ b/mod/dokuwiki/languages/ca.php
@@ -0,0 +1,18 @@
+<?php
+$language = array (
+ 'dokuwiki:wiki' => 'Wiki',
+ 'dokuwiki:title' => 'Wikis',
+ 'item:object:dokuwiki' => 'Wikis',
+ 'dokuwiki:wikifrom' => 'la wiki de %s',
+ 'dokuwiki:pages' => '%s pàgines',
+ 'dokuwiki:dokuwiki' => 'Wiki',
+ 'dokuwiki:group' => 'Wiki del group',
+ 'dokuwiki:userwiki' => 'La meva Wiki',
+ 'dokuwiki:sidebar' => 'Navegació wiki',
+ 'groups:enabledokuwiki' => 'Activar la wiki del grup',
+ 'groups:enabledokuwiki_frontpage' => 'Mostra la pàgina d\'inici de la wiki a la pàgina principal del grup (només si la wiki està activada)',
+ 'groups:enabledokuwiki_frontsidebar' => 'Mostra la barra lateral de la wiki a la pàgina principal del grup (només si la wiki està activada)',
+ 'dokuwiki' => 'Wikis',
+ 'dokuwiki:river:modified' => '%s ha modificat la pàgina %s el %s',
+);
+add_translation("ca", $language); \ No newline at end of file
diff --git a/mod/dokuwiki/languages/de.php b/mod/dokuwiki/languages/de.php
new file mode 100755
index 000000000..e951d0b41
--- /dev/null
+++ b/mod/dokuwiki/languages/de.php
@@ -0,0 +1,21 @@
+<?php
+
+// Mit dem translation browser generiert
+
+$german = array(
+ 'dokuwiki:wiki' => "Wiki" ,
+ 'dokuwiki:groupwiki' => "GruppenWiki" ,
+ 'dokuwiki:userwiki' => "Mein Wiki" ,
+ 'dokuwiki' => "Wikis" ,
+ 'item:object:dokuwiki' => "Wikis" ,
+ 'dokuwiki:title' => "Wikis" ,
+ 'dokuwiki:wikifrom' => "Wiki von %s" ,
+ 'dokuwiki:pages' => "Seiten von %s" ,
+ 'dokuwiki:dokuwiki' => "Wiki" ,
+ 'groups:enabledokuwiki' => "GruppenWiki einrichten" ,
+ 'dokuwiki:river:modified' => "%s hat die Seite %s im %s bearbeitet"
+);
+
+add_translation('de', $german);
+
+?> \ No newline at end of file
diff --git a/mod/dokuwiki/languages/en.php b/mod/dokuwiki/languages/en.php
new file mode 100755
index 000000000..20b7cb656
--- /dev/null
+++ b/mod/dokuwiki/languages/en.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Elgg spotlight lorea
+ *
+ * @package
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author lorea
+ * @copyright lorea
+ * @link http://lorea.cc
+ */
+
+ $english = array(
+ "dokuwiki:wiki"=>'Wiki',
+ "dokuwiki:title"=>'Wikis',
+ "item:object:dokuwiki"=>'Wikis',
+ "dokuwiki:wikifrom"=>'%s wiki',
+ "dokuwiki:pages"=>'%s pages',
+ "dokuwiki:dokuwiki"=>'Wiki',
+ "dokuwiki:group"=>'Group wiki',
+ "dokuwiki:userwiki"=>'My Wiki',
+ "dokuwiki:sidebar" => 'Wiki navigation',
+ "groups:enabledokuwiki"=>'Enable group wiki',
+ "groups:enabledokuwiki_frontpage"=>'Show main wiki page in the group front page (only if wiki is enabled)',
+ "groups:enabledokuwiki_frontsidebar"=>'Show wiki sidebar in the group front page (only if wiki is enabled)',
+ "dokuwiki"=>'Wikis',
+
+ "dokuwiki:river:modified"=>'%s modified page %s on %s',
+ );
+
+ add_translation("en",$english);
+
+?>
diff --git a/mod/dokuwiki/languages/es.php b/mod/dokuwiki/languages/es.php
new file mode 100644
index 000000000..613d79ba6
--- /dev/null
+++ b/mod/dokuwiki/languages/es.php
@@ -0,0 +1,18 @@
+<?php
+$language = array (
+ 'dokuwiki:wiki' => 'Wiki',
+ 'dokuwiki:title' => 'Wikis',
+ 'item:object:dokuwiki' => 'Wikis',
+ 'dokuwiki:wikifrom' => 'Wiki %s',
+ 'dokuwiki:pages' => 'páginas %s',
+ 'dokuwiki:dokuwiki' => 'Wiki',
+ 'dokuwiki:group' => 'Wiki del grupo',
+ 'dokuwiki:userwiki' => 'Mi wiki',
+ 'dokuwiki:sidebar' => 'Navegación wiki',
+ 'groups:enabledokuwiki' => 'Activar wiki del grupo',
+ 'groups:enabledokuwiki_frontpage' => 'Muestra la página principal de la wiki en la página principal del grupo (sólo si la wiki está activada)',
+ 'groups:enabledokuwiki_frontsidebar' => 'Muestra la barra lateral de wiki en la página principal del grupo (sólo si la wiki está activada)',
+ 'dokuwiki' => 'Wikis',
+ 'dokuwiki:river:modified' => '%s ha modificado la página %s en %s',
+);
+add_translation("es", $language); \ No newline at end of file
diff --git a/mod/dokuwiki/languages/fr.php b/mod/dokuwiki/languages/fr.php
new file mode 100644
index 000000000..dcaa14c00
--- /dev/null
+++ b/mod/dokuwiki/languages/fr.php
@@ -0,0 +1,12 @@
+<?php
+
+// Generate By translationbrowser.
+
+$french = array(
+ 'dokuwiki:userwiki' => "Mon wiki" ,
+ 'groups:enabledokuwiki' => "Habiliter le wiki groupe"
+);
+
+add_translation('fr', $french);
+
+?> \ No newline at end of file
diff --git a/mod/dokuwiki/languages/gl.php b/mod/dokuwiki/languages/gl.php
new file mode 100644
index 000000000..ba67b6f32
--- /dev/null
+++ b/mod/dokuwiki/languages/gl.php
@@ -0,0 +1,23 @@
+<?php
+
+// Xerado por translationbrowser
+
+$galician = array(
+ 'dokuwiki:wiki' => "Wiki" ,
+ 'dokuwiki:groupwiki' => "Wiki do grupo" ,
+ 'dokuwiki:userwiki' => "A miña Wiki" ,
+ 'dokuwiki' => "Wikis" ,
+ 'item:object:dokuwiki' => "Wikis" ,
+ 'dokuwiki:title' => "Wikis" ,
+ 'dokuwiki:wikifrom' => "%s wiki" ,
+ 'dokuwiki:pages' => "%s páxinas" ,
+ 'dokuwiki:dokuwiki' => "Wiki" ,
+ 'groups:enabledokuwiki' => "Habilitar wiki do grupo" ,
+ 'dokuwiki:river:modified' => "%s modificou a páxina %s en %s" ,
+ 'groups:enabledokuwiki_frontpage' => "Amosa la wiki na portada do grupo" ,
+ 'groups:enabledokuwiki_frontsidebar' => "Amosa la barra da wiki na portada do grupo"
+);
+
+add_translation('gl', $galician);
+
+?> \ No newline at end of file
diff --git a/mod/dokuwiki/languages/pl.php b/mod/dokuwiki/languages/pl.php
new file mode 100755
index 000000000..e43e14526
--- /dev/null
+++ b/mod/dokuwiki/languages/pl.php
@@ -0,0 +1,21 @@
+<?php
+
+// Generate By translationbrowser.
+
+$polish = array(
+ 'dokuwiki:wiki' => "Wiki" ,
+ 'dokuwiki:title' => "Wiki" ,
+ 'item:object:dokuwiki' => "Wiki" ,
+ 'dokuwiki:wikifrom' => "%s wiki" ,
+ 'dokuwiki:pages' => "%s strony" ,
+ 'dokuwiki:dokuwiki' => "Wiki" ,
+ 'dokuwiki:groupwiki' => "Wiki Grupy" ,
+ 'dokuwiki:userwiki' => "Twoje Wiki" ,
+ 'groups:enabledokuwiki' => "Włącz wiki grupy" ,
+ 'dokuwiki' => "Wiki" ,
+ 'dokuwiki:river:modified' => "%s modyfikacja strony %s na %s"
+);
+
+add_translation('pl', $polish);
+
+?> \ No newline at end of file
diff --git a/mod/dokuwiki/languages/pt.php b/mod/dokuwiki/languages/pt.php
new file mode 100644
index 000000000..4c067cd52
--- /dev/null
+++ b/mod/dokuwiki/languages/pt.php
@@ -0,0 +1,23 @@
+<?php
+
+// Gerado pelo browser de tradução.
+
+$portuguese = array(
+ 'dokuwiki:wiki' => "Wiki" ,
+ 'dokuwiki:title' => "Wikis" ,
+ 'dokuwiki:wikifrom' => "%s Wiki" ,
+ 'dokuwiki:pages' => "%s páginas" ,
+ 'dokuwiki:dokuwiki' => "Wiki" ,
+ 'dokuwiki:groupwiki' => "Wiki" ,
+ 'dokuwiki:userwiki' => "Minha Wiki" ,
+ 'groups:enabledokuwiki' => "Habilitar Wiki do grupo" ,
+ 'dokuwiki' => "Wikis" ,
+ 'dokuwiki:river:modified' => "%s modificou a página %s em %s" ,
+ 'item:object:dokuwiki' => "Wikis" ,
+ 'groups:enabledokuwiki_frontpage' => "Mostrar a página wiki principal na página principal do grupo (só se a wiki estiver habilitada)" ,
+ 'groups:enabledokuwiki_frontsidebar' => "Mostrar a barra lateral de wiki na página principal do grupo (só se a wiki estiver habilitada)"
+);
+
+add_translation('pt', $portuguese);
+
+?>
diff --git a/mod/dokuwiki/lib/dokuwiki.php b/mod/dokuwiki/lib/dokuwiki.php
new file mode 100644
index 000000000..b49e4d4ee
--- /dev/null
+++ b/mod/dokuwiki/lib/dokuwiki.php
@@ -0,0 +1,60 @@
+<?php
+
+function current_dokuwiki_entity($create = true) {
+ $page_owner = elgg_get_page_owner_guid();
+ $user = elgg_get_logged_in_user_entity();
+ //error_log($page_owner->guid);
+ //error_log($user->guid);
+ if (!$page_owner)
+ $page_owner = 0;
+ $entities = elgg_get_entities(array('types' => 'object', 'subtypes' => 'dokuwiki', 'limit' => 1, 'owner_guid' => $page_owner));
+ if ($entities) {
+ $doku = $entities[0];
+ return $doku;
+ }
+ elseif ($user && $create) {
+ elgg_set_ignore_access(true);
+ $newdoku = new ElggObject();
+ $newdoku->access_id = ACCESS_PUBLIC;
+ $newdoku->owner_guid = $page_owner;
+ $newdoku->subtype = 'dokuwiki';
+ $newdoku->container_guid = $page_owner;
+ $newdoku->save();
+ $acl = array();
+ $acl[] = "# acl.auth.php";
+ $acl[] = '# <?php exit()?\>';
+ $acl[] = "* @ALL 0";
+ $acl[] = "* @user 1";
+ $acl[] = "* @member 8";
+ $acl[] = "* @admin 16";
+ $acl[] = "* @root 255";
+ $newdoku->wiki_acl = implode("\n", $acl)."\n";
+ elgg_set_ignore_access(false);
+ return $newdoku;
+ }
+}
+
+function dokuwiki_recurse_copy($src,$dst) {
+ $dir = opendir($src);
+ @mkdir($dst);
+ while(false !== ( $file = readdir($dir)) ) {
+ if (( $file != '.' ) && ( $file != '..' )) {
+ if ( is_dir($src . '/' . $file) ) {
+ dokuwiki_recurse_copy($src . '/' . $file,$dst . '/' . $file);
+ }
+ else {
+ copy($src . '/' . $file,$dst . '/' . $file);
+ }
+ }
+ }
+ closedir($dir);
+}
+
+function dokuwiki_create_datafolder($path) {
+ if (is_dir($path)) // if it exists must be already created
+ return;
+ mkdir($path, 0700, true);
+ $orig = elgg_get_plugins_path().'dokuwiki/vendors/dokuwiki/data';
+ dokuwiki_recurse_copy($orig, $path);
+
+}
diff --git a/mod/dokuwiki/manifest.xml b/mod/dokuwiki/manifest.xml
new file mode 100644
index 000000000..ed2969216
--- /dev/null
+++ b/mod/dokuwiki/manifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Dokuwiki</name>
+ <author>Lorea developers</author>
+ <version>1.8.0</version>
+ <category>content</category>
+ <description>Dokuwiki integration for Elgg</description>
+ <website>https://lorea.org/</website>
+ <copyright>(C) Lorea 2011-2013</copyright>
+ <license>GNU General Public License, version 2 or later</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <requires>
+ <type>priority</type>
+ <priority>after</priority>
+ <plugin>groups</plugin>
+ </requires>
+ <activate_on_install>true</activate_on_install>
+</plugin_manifest>
diff --git a/mod/dokuwiki/start.php b/mod/dokuwiki/start.php
new file mode 100644
index 000000000..05c7c01f2
--- /dev/null
+++ b/mod/dokuwiki/start.php
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Elgg dokuwiki plugin
+ *
+ * @package
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author lorea
+ * @copyright lorea
+ * @link http://lorea.cc
+ */
+
+elgg_register_event_handler('init','system','dokuwiki_init');
+
+function dokuwiki_init(){
+
+ elgg_register_library('elgg:dokuwiki', elgg_get_plugins_path().'dokuwiki/lib/dokuwiki.php');
+
+ elgg_register_entity_type('object','dokuwiki');
+ elgg_register_plugin_hook_handler('entity:icon:url', 'object', 'dokuwiki_icon_hook');
+ elgg_register_entity_url_handler('object', 'dokuwiki', 'dokuwiki_url');
+
+ // add block link to
+ elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'dokuwiki_owner_block_menu');
+
+ elgg_register_page_handler('dokuwiki','dokuwiki_page_handler');
+
+ add_group_tool_option('dokuwiki',elgg_echo('groups:enabledokuwiki'),false);
+ add_group_tool_option('dokuwiki_frontsidebar',elgg_echo('groups:enabledokuwiki_frontsidebar'),false);
+ add_group_tool_option('dokuwiki_frontpage',elgg_echo('groups:enabledokuwiki_frontpage'),false);
+
+ elgg_extend_view('groups/profile/summary','dokuwiki/grouppage');
+ elgg_extend_view('groups/tool_latest','dokuwiki/sidebar');
+
+ // Extending CSS
+ elgg_extend_view('css/elgg', 'dokuwiki/css');
+
+ // add a site navigation item
+ $item = new ElggMenuItem('wiki', elgg_echo('dokuwiki:title'), 'dokuwiki/all');
+ elgg_register_menu_item('site', $item);
+
+ elgg_extend_view("page/elements/head", "dokuwiki/metatags");
+}
+
+ /**
+ * Dispatches dokuwiki pages.
+ * URLs take the form of
+ * All wikis: dokuwiki/all
+ * Group wiki: dokuwiki/<guid>
+ *
+ * @param array $page
+ * @return NULL
+ */
+ function dokuwiki_page_handler($page) {
+
+ elgg_load_library('elgg:dokuwiki');
+
+ if ($page[0] === "all") {
+ elgg_set_context("search");
+ include(elgg_get_plugins_path().'dokuwiki/index.php');
+ return true;
+ }
+
+ elgg_set_context("dokuwiki");
+
+ $dokuwiki_path = elgg_get_plugins_path().'dokuwiki/vendors/dokuwiki/';
+ $doku = current_dokuwiki_entity();
+ if (!$doku) // can fail if there is no user and wiki doesnt exist
+ return false;
+ $parsed_url = parse_url(elgg_get_site_url().'dokuwiki/');
+ $url_base = $parsed_url['path'];
+ if (is_numeric($page[0])) {
+ $entity_guid = $page[0];
+ $ent = get_entity($entity_guid);
+
+ if (($ent && $ent instanceof ElggGroup) && $ent->dokuwiki_enable !== 'yes') {
+ // wiki not activated for this group. bail out.
+ elgg_pop_context();
+ return false;
+ }
+ if ($ent && (/*$ent instanceof ElggUser ||*/ $ent instanceof ElggGroup)) {
+ elgg_set_page_owner_guid($entity_guid);
+ $data_path = elgg_get_data_path().'wikis/'.$entity_guid;
+ } else {
+ // can't see the group
+ elgg_pop_context();
+ return false;
+ }
+ $page = array_slice($page, 1); // pop first element
+ define('DOKU_REL', $url_base.$entity_guid."/");
+ define('DOKU_BASE', $url_base.$entity_guid."/");
+ define('DOKU_URL', elgg_get_site_url().'dokuwiki/'.$entity_guid."/");
+
+ }
+ else {
+ $data_path = elgg_get_data_path().'wiki';
+ define('DOKU_REL', $url_base);
+ define('DOKU_BASE', $url_base);
+ define('DOKU_URL', elgg_get_site_url().'dokuwiki/');
+ }
+ define('DOKU_INC', $dokuwiki_path);
+ define('DOKU_MEDIA', elgg_get_site_url().'mod/dokuwiki/vendors/dokuwiki/');
+ define('DOKU_CONF', $dokuwiki_path."conf/");
+
+ dokuwiki_create_datafolder($data_path);
+ define('DOKU_ELGGDATA',$data_path);
+ if (empty($page) || (count($page)==1 && $page[0] == 'acl')) {
+ $page = array('doku.php');
+ }
+ else if ((count($page)==1 && $page[0] == 'usermanager')) {
+ $page = array('doku.php');
+ }
+ else if ((count($page)==1 && $page[0] == 'plugin')) {
+ $page = array('doku.php');
+ }
+ else if ((count($page)==1 && $page[0] == 'config')) {
+ $page = array('doku.php');
+ }
+ else if ((count($page)==1 && $page[0] == 'revert')) {
+ $page = array('doku.php');
+ }
+ else if ((count($page)==1 && $page[0] == 'popularity')) {
+ $page = array('doku.php');
+ }
+ if (empty($page) || (count($page)==1 && !$page[0])) {
+ $page = array('doku.php');
+ }
+ $_SERVER['PHP_AUTH_USER'] = elgg_get_logged_in_user_entity()->username;
+ $_SERVER['PHP_AUTH_PW'] = elgg_get_logged_in_user_entity()->password;
+ if (count($page) == 1) {
+ $doku_body = elgg_view('dokuwiki/index',array('page'=>$page[0]));
+ echo $doku_body;
+ }
+ else {
+ // avoid inclusion over root
+ $dest = realpath($dokuwiki_path.implode("/",$page));
+ if (strpos($dest, $dokuwiki_path) == 0)
+ $doku_body = elgg_view('dokuwiki/index',array('page'=>implode("/",$page)));
+ echo $doku_body;
+ }
+ return true;
+ }
+
+ /**
+ * Add a menu item to an ownerblock
+ */
+ function dokuwiki_owner_block_menu($hook, $type, $return, $params) {
+ if (elgg_instanceof($params['entity'], 'group') && $params['entity']->dokuwiki_enable == "yes") {
+ $url = "dokuwiki/{$params['entity']->guid}/";
+ $item = new ElggMenuItem('dokuwiki', elgg_echo('dokuwiki:group'), $url);
+ $return[] = $item;
+ }
+ return $return;
+ }
+
+ function dokuwiki_icon_hook($hook, $entity_type, $returnvalue, $params) {
+ if ($hook == 'entity:icon:url' && $params['entity']->getSubtype() == 'dokuwiki') {
+ $owner = get_entity($params['entity']->container_guid);
+ if ($owner)
+ return $owner->getIcon($params['size']);
+ }
+ return $returnvalue;
+ }
+
+ function dokuwiki_url($entity) {
+ return elgg_get_site_url() . "dokuwiki/".$entity->container_guid;
+ }
+
+?>
diff --git a/mod/dokuwiki/vendors/dokuwiki/COPYING b/mod/dokuwiki/vendors/dokuwiki/COPYING
new file mode 100644
index 000000000..d60c31a97
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+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 Program or any portion
+of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+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 Program, 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 Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) 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; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, 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 executable. However, as a
+special exception, the source code 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.
+
+If distribution of executable or 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 counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program 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.
+
+ 5. 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 Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program 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 to
+this License.
+
+ 7. 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 Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program 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 Program.
+
+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.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program 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.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 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 Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, 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
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. 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 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.
+
+ 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
+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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 2 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, 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.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This 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 Library General
+Public License instead of this License.
diff --git a/mod/dokuwiki/vendors/dokuwiki/README b/mod/dokuwiki/vendors/dokuwiki/README
new file mode 100644
index 000000000..a000bba2b
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/README
@@ -0,0 +1,9 @@
+All documentation for DokuWiki is available online
+at http://www.dokuwiki.org/
+
+For Installation Instructions see
+http://www.dokuwiki.org/install
+
+DokuWiki - 2004-2009 (c) Andreas Gohr <andi@splitbrain.org>
+See COPYING and file headers for license info
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/VERSION b/mod/dokuwiki/vendors/dokuwiki/VERSION
new file mode 100644
index 000000000..157cc6c56
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/VERSION
@@ -0,0 +1 @@
+2009-12-25c "Lemming"
diff --git a/mod/dokuwiki/vendors/dokuwiki/bin/dwpage.php b/mod/dokuwiki/vendors/dokuwiki/bin/dwpage.php
new file mode 100755
index 000000000..f664770bf
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/bin/dwpage.php
@@ -0,0 +1,378 @@
+#!/usr/bin/php
+<?php
+#------------------------------------------------------------------------------
+if ('cli' != php_sapi_name()) die();
+
+ini_set('memory_limit','128M');
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
+require_once DOKU_INC.'inc/init.php';
+require_once DOKU_INC.'inc/common.php';
+require_once DOKU_INC.'inc/cliopts.php';
+
+#------------------------------------------------------------------------------
+function usage($action) {
+ switch ( $action ) {
+ case 'checkout':
+ print "Usage: dwpage.php [opts] checkout <wiki:page> [working_file]
+
+ Checks out a file from the repository, using the wiki id and obtaining
+ a lock for the page.
+ If a working_file is specified, this is where the page is copied to.
+ Otherwise defaults to the same as the wiki page in the current
+ working directory.
+
+ EXAMPLE
+ $ ./dwpage.php checkout wiki:syntax ./new_syntax.txt
+
+ OPTIONS
+ -h, --help=<action>: get help
+ -f: force obtaining a lock for the page (generally bad idea)
+";
+ break;
+ case 'commit':
+ print "Usage: dwpage.php [opts] -m \"Msg\" commit <working_file> <wiki:page>
+
+ Checks in the working_file into the repository using the specified
+ wiki id, archiving the previous version.
+
+ EXAMPLE
+ $ ./dwpage.php -m \"Some message\" commit ./new_syntax.txt wiki:syntax
+
+ OPTIONS
+ -h, --help=<action>: get help
+ -f: force obtaining a lock for the page (generally bad idea)
+ -t, trivial: minor change
+ -m (required): Summary message describing the change
+";
+ break;
+ case 'lock':
+ print "Usage: dwpage.php [opts] lock <wiki:page>
+
+ Obtains or updates a lock for a wiki page
+
+ EXAMPLE
+ $ ./dwpage.php lock wiki:syntax
+
+ OPTIONS
+ -h, --help=<action>: get help
+ -f: force obtaining a lock for the page (generally bad idea)
+";
+ break;
+ case 'unlock':
+ print "Usage: dwpage.php [opts] unlock <wiki:page>
+
+ Removes a lock for a wiki page.
+
+ EXAMPLE
+ $ ./dwpage.php unlock wiki:syntax
+
+ OPTIONS
+ -h, --help=<action>: get help
+ -f: force obtaining a lock for the page (generally bad idea)
+";
+ break;
+ default:
+ print "Usage: dwpage.php [opts] <action>
+
+ Utility to help command line Dokuwiki page editing, allow
+ pages to be checked out for editing then committed after changes
+
+ Normal operation would be;
+
+
+
+ ACTIONS
+ checkout: see $ dwpage.php --help=checkout
+ commit: see $ dwpage.php --help=commit
+ lock: see $ dwpage.php --help=lock
+
+ OPTIONS
+ -h, --help=<action>: get help
+ e.g. $ ./dwpage.php -hcommit
+ e.g. $ ./dwpage.php --help=commit
+";
+ break;
+ }
+}
+
+#------------------------------------------------------------------------------
+function getUser() {
+ $user = getenv('USER');
+ if (empty ($username)) {
+ $user = getenv('USERNAME');
+ } else {
+ return $user;
+ }
+ if (empty ($username)) {
+ $user = 'admin';
+ }
+ return $user;
+}
+
+#------------------------------------------------------------------------------
+function getSuppliedArgument($OPTS, $short, $long) {
+ $arg = $OPTS->get($short);
+ if ( is_null($arg) ) {
+ $arg = $OPTS->get($long);
+ }
+ return $arg;
+}
+
+#------------------------------------------------------------------------------
+function obtainLock($WIKI_ID) {
+
+ global $USERNAME;
+
+ if ( !file_exists(wikiFN($WIKI_ID)) ) {
+ fwrite( STDERR, "$WIKI_ID does not yet exist\n");
+ }
+
+ $_SERVER['REMOTE_USER'] = $USERNAME;
+ if ( checklock($WIKI_ID) ) {
+ fwrite( STDERR, "Page $WIKI_ID is already locked by another user\n");
+ exit(1);
+ }
+
+ lock($WIKI_ID);
+
+ $_SERVER['REMOTE_USER'] = '_'.$USERNAME.'_';
+
+ if ( checklock($WIKI_ID) != $USERNAME ) {
+
+ fwrite( STDERR, "Unable to obtain lock for $WIKI_ID\n" );
+ exit(1);
+
+ }
+}
+
+#------------------------------------------------------------------------------
+function clearLock($WIKI_ID) {
+
+ global $USERNAME ;
+
+ if ( !file_exists(wikiFN($WIKI_ID)) ) {
+ fwrite( STDERR, "$WIKI_ID does not yet exist\n");
+ }
+
+ $_SERVER['REMOTE_USER'] = $USERNAME;
+ if ( checklock($WIKI_ID) ) {
+ fwrite( STDERR, "Page $WIKI_ID is locked by another user\n");
+ exit(1);
+ }
+
+ unlock($WIKI_ID);
+
+ if ( file_exists(wikiLockFN($WIKI_ID)) ) {
+ fwrite( STDERR, "Unable to clear lock for $WIKI_ID\n" );
+ exit(1);
+ }
+
+}
+
+#------------------------------------------------------------------------------
+function deleteLock($WIKI_ID) {
+
+ $wikiLockFN = wikiLockFN($WIKI_ID);
+
+ if ( file_exists($wikiLockFN) ) {
+ if ( !unlink($wikiLockFN) ) {
+ fwrite( STDERR, "Unable to delete $wikiLockFN\n" );
+ exit(1);
+ }
+ }
+
+}
+
+#------------------------------------------------------------------------------
+$USERNAME = getUser();
+$CWD = getcwd();
+$SYSTEM_ID = '127.0.0.1';
+
+#------------------------------------------------------------------------------
+$OPTS = Doku_Cli_Opts::getOptions(
+ __FILE__,
+ 'h::fm:u:s:t',
+ array(
+ 'help==',
+ 'user=',
+ 'system=',
+ 'trivial',
+ )
+);
+
+if ( $OPTS->isError() ) {
+ print $OPTS->getMessage()."\n";
+ exit(1);
+}
+
+if ( $OPTS->has('h') or $OPTS->has('help') or !$OPTS->hasArgs() ) {
+ usage(getSuppliedArgument($OPTS,'h','help'));
+ exit(0);
+}
+
+if ( $OPTS->has('u') or $OPTS->has('user') ) {
+ $USERNAME = getSuppliedArgument($OPTS,'u','user');
+}
+
+if ( $OPTS->has('s') or $OPTS->has('system') ) {
+ $SYSTEM_ID = getSuppliedArgument($OPTS,'s','system');
+}
+
+#------------------------------------------------------------------------------
+switch ( $OPTS->arg(0) ) {
+
+ #----------------------------------------------------------------------
+ case 'checkout':
+
+ $WIKI_ID = $OPTS->arg(1);
+
+ if ( !$WIKI_ID ) {
+ fwrite( STDERR, "Wiki page ID required\n");
+ exit(1);
+ }
+
+ $WIKI_FN = wikiFN($WIKI_ID);
+
+ if ( !file_exists($WIKI_FN) ) {
+ fwrite( STDERR, "$WIKI_ID does not yet exist\n");
+ exit(1);
+ }
+
+ $TARGET_FN = $OPTS->arg(2);
+
+ if ( empty($TARGET_FN) ) {
+ $TARGET_FN = getcwd().'/'.basename($WIKI_FN);
+ }
+
+ if ( !file_exists(dirname($TARGET_FN)) ) {
+ fwrite( STDERR, "Directory ".dirname($TARGET_FN)." does not exist\n");
+ exit(1);
+ }
+
+ if ( stristr( realpath(dirname($TARGET_FN)), realpath($conf['datadir']) ) !== false ) {
+ fwrite( STDERR, "Attempt to check out file into data directory - not allowed\n");
+ exit(1);
+ }
+
+ if ( $OPTS->has('f') ) {
+ deleteLock($WIKI_ID);
+ }
+
+ obtainLock($WIKI_ID);
+
+ # Need to lock the file first?
+ if ( !copy($WIKI_FN, $TARGET_FN) ) {
+ fwrite( STDERR, "Unable to copy $WIKI_FN to $TARGET_FN\n");
+ clearLock($WIKI_ID);
+ exit(1);
+ }
+
+ print "$WIKI_ID > $TARGET_FN\n";
+ exit(0);
+
+ break;
+
+ #----------------------------------------------------------------------
+ case 'commit':
+
+ $TARGET_FN = $OPTS->arg(1);
+
+ if ( !$TARGET_FN ) {
+ fwrite( STDERR, "Target filename required\n");
+ exit(1);
+ }
+
+ if ( !file_exists($TARGET_FN) ) {
+ fwrite( STDERR, "$TARGET_FN does not exist\n");
+ exit(1);
+ }
+
+ if ( !is_readable($TARGET_FN) ) {
+ fwrite( STDERR, "Cannot read from $TARGET_FN\n");
+ exit(1);
+ }
+
+ $WIKI_ID = $OPTS->arg(2);
+
+ if ( !$WIKI_ID ) {
+ fwrite( STDERR, "Wiki page ID required\n");
+ exit(1);
+ }
+
+ if ( !$OPTS->has('m') ) {
+ fwrite( STDERR, "Summary message required\n");
+ exit(1);
+ }
+
+ if ( $OPTS->has('f') ) {
+ deleteLock($WIKI_ID);
+ }
+
+ $_SERVER['REMOTE_USER'] = $USERNAME;
+ if ( checklock($WIKI_ID) ) {
+ fwrite( STDERR, "$WIKI_ID is locked by another user\n");
+ exit(1);
+ }
+
+ obtainLock($WIKI_ID);
+
+ saveWikiText($WIKI_ID, file_get_contents($TARGET_FN), $OPTS->get('m'), $OPTS->has('t'));
+
+ clearLock($WIKI_ID);
+
+ exit(0);
+
+ break;
+
+ #----------------------------------------------------------------------
+ case 'lock':
+
+ $WIKI_ID = $OPTS->arg(1);
+
+ if ( !$WIKI_ID ) {
+ fwrite( STDERR, "Wiki page ID required\n");
+ exit(1);
+ }
+
+ if ( $OPTS->has('f') ) {
+ deleteLock($WIKI_ID);
+ }
+
+ obtainLock($WIKI_ID);
+
+ print "Locked : $WIKI_ID\n";
+ exit(0);
+
+ break;
+
+ #----------------------------------------------------------------------
+ case 'unlock':
+
+ $WIKI_ID = $OPTS->arg(1);
+
+ if ( !$WIKI_ID ) {
+ fwrite( STDERR, "Wiki page ID required\n");
+ exit(1);
+ }
+
+ if ( $OPTS->has('f') ) {
+ deleteLock($WIKI_ID);
+ } else {
+ clearLock($WIKI_ID);
+ }
+
+ print "Unlocked : $WIKI_ID\n";
+ exit(0);
+
+ break;
+
+ #----------------------------------------------------------------------
+ default:
+
+ fwrite( STDERR, "Invalid action ".$OPTS->arg(0)."\n" );
+ exit(1);
+
+ break;
+
+}
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/bin/indexer.php b/mod/dokuwiki/vendors/dokuwiki/bin/indexer.php
new file mode 100755
index 000000000..55f3608d5
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/bin/indexer.php
@@ -0,0 +1,172 @@
+#!/usr/bin/php
+<?php
+if ('cli' != php_sapi_name()) die();
+
+ini_set('memory_limit','128M');
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/search.php');
+require_once(DOKU_INC.'inc/indexer.php');
+require_once(DOKU_INC.'inc/auth.php');
+require_once(DOKU_INC.'inc/cliopts.php');
+session_write_close();
+
+// Version tag used to force rebuild on upgrade
+// Need to keep in sync with lib/exe/indexer.php
+if(!defined('INDEXER_VERSION')) define('INDEXER_VERSION', 2);
+
+// handle options
+$short_opts = 'hcuq';
+$long_opts = array('help', 'clear', 'update', 'quiet');
+$OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts);
+if ( $OPTS->isError() ) {
+ fwrite( STDERR, $OPTS->getMessage() . "\n");
+ _usage();
+ exit(1);
+}
+$CLEAR = false;
+$QUIET = false;
+foreach ($OPTS->options as $key => $val) {
+ switch ($key) {
+ case 'h':
+ case 'help':
+ _usage();
+ exit;
+ case 'c':
+ case 'clear':
+ $CLEAR = true;
+ break;
+ case 'q':
+ case 'quiet':
+ $QUIET = true;
+ break;
+ }
+}
+
+#------------------------------------------------------------------------------
+# Action
+
+if($CLEAR) _clearindex();
+_update();
+
+
+
+#------------------------------------------------------------------------------
+
+function _usage() {
+ print "Usage: indexer.php <options>
+
+ Updates the searchindex by indexing all new or changed pages
+ when the -c option is given the index is cleared first.
+
+ OPTIONS
+ -h, --help show this help and exit
+ -c, --clear clear the index before updating
+ -q, --quiet don't produce any output
+";
+}
+
+function _update(){
+ global $conf;
+
+ // upgrade to version 2
+ if (!@file_exists($conf['indexdir'].'/pageword.idx')){
+ _lock();
+ idx_upgradePageWords();
+ _unlock();
+ }
+
+ $data = array();
+ _quietecho("Searching pages... ");
+ search($data,$conf['datadir'],'search_allpages',array('skipacl' => true));
+ _quietecho(count($data)." pages found.\n");
+
+ foreach($data as $val){
+ _index($val['id']);
+ }
+}
+
+function _index($id){
+ global $CLEAR;
+
+ // if not cleared only update changed and new files
+ if(!$CLEAR){
+ $idxtag = metaFN($id,'.indexed');
+ if(@file_exists($idxtag)){
+ if(io_readFile($idxtag) >= INDEXER_VERSION){
+ $last = @filemtime(metaFN($id,'.indexed'));
+ if($last > @filemtime(wikiFN($id))) return;
+ }
+ }
+ }
+
+ _lock();
+ _quietecho("$id... ");
+ idx_addPage($id);
+ io_saveFile(metaFN($id,'.indexed'),INDEXER_VERSION);
+ _quietecho("done.\n");
+ _unlock();
+}
+
+/**
+ * lock the indexer system
+ */
+function _lock(){
+ global $conf;
+ $lock = $conf['lockdir'].'/_indexer.lock';
+ $said = false;
+ while(!@mkdir($lock, $conf['dmode'])){
+ if(time()-@filemtime($lock) > 60*5){
+ // looks like a stale lock - remove it
+ @rmdir($lock);
+ }else{
+ if($said){
+ _quietecho(".");
+ }else{
+ _quietecho("Waiting for lockfile (max. 5 min)");
+ $said = true;
+ }
+ sleep(15);
+ }
+ }
+ if($conf['dperm']) chmod($lock, $conf['dperm']);
+ if($said) _quietecho("\n");
+}
+
+/**
+ * unlock the indexer sytem
+ */
+function _unlock(){
+ global $conf;
+ $lock = $conf['lockdir'].'/_indexer.lock';
+ @rmdir($lock);
+}
+
+/**
+ * Clear all index files
+ */
+function _clearindex(){
+ global $conf;
+ _lock();
+ _quietecho("Clearing index... ");
+ io_saveFile($conf['indexdir'].'/page.idx','');
+ $dir = @opendir($conf['indexdir']);
+ if($dir!==false){
+ while(($f = readdir($dir)) !== false){
+ if(substr($f,-4)=='.idx' &&
+ (substr($f,0,1)=='i' || substr($f,0,1)=='w'))
+ @unlink($conf['indexdir']."/$f");
+ }
+ }
+ _quietecho("done.\n");
+ _unlock();
+}
+
+function _quietecho($msg) {
+ global $QUIET;
+ if(!$QUIET) echo $msg;
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
diff --git a/mod/dokuwiki/vendors/dokuwiki/bin/wantedpages.php b/mod/dokuwiki/vendors/dokuwiki/bin/wantedpages.php
new file mode 100755
index 000000000..30171fc15
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/bin/wantedpages.php
@@ -0,0 +1,134 @@
+#!/usr/bin/php
+<?php
+if ('cli' != php_sapi_name()) die();
+
+#------------------------------------------------------------------------------
+ini_set('memory_limit','128M');
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
+require_once DOKU_INC.'inc/init.php';
+require_once DOKU_INC.'inc/common.php';
+require_once DOKU_INC.'inc/search.php';
+require_once DOKU_INC.'inc/cliopts.php';
+
+#------------------------------------------------------------------------------
+function usage() {
+ print "Usage: wantedpages.php [wiki:namespace]
+
+ Outputs a list of wanted pages (pages which have
+ internal links but do not yet exist).
+
+ If the optional [wiki:namespace] is not provided,
+ defaults to the root wiki namespace
+
+ OPTIONS
+ -h, --help get help
+";
+}
+
+#------------------------------------------------------------------------------
+define ('DW_DIR_CONTINUE',1);
+define ('DW_DIR_NS',2);
+define ('DW_DIR_PAGE',3);
+
+#------------------------------------------------------------------------------
+function dw_dir_filter($entry, $basepath) {
+ if ($entry == '.' || $entry == '..' ) {
+ return DW_DIR_CONTINUE;
+ }
+ if ( is_dir($basepath . '/' . $entry) ) {
+ if ( strpos($entry, '_') === 0 ) {
+ return DW_DIR_CONTINUE;
+ }
+ return DW_DIR_NS;
+ }
+ if ( preg_match('/\.txt$/',$entry) ) {
+ return DW_DIR_PAGE;
+ }
+ return DW_DIR_CONTINUE;
+}
+
+#------------------------------------------------------------------------------
+function dw_get_pages($dir) {
+ static $trunclen = NULL;
+ if ( !$trunclen ) {
+ global $conf;
+ $trunclen = strlen($conf['datadir'].':');
+ }
+
+ if ( !is_dir($dir) ) {
+ fwrite( STDERR, "Unable to read directory $dir\n");
+ exit(1);
+ }
+
+ $pages = array();
+ $dh = opendir($dir);
+ while ( false !== ( $entry = readdir($dh) ) ) {
+ $status = dw_dir_filter($entry, $dir);
+ if ( $status == DW_DIR_CONTINUE ) {
+ continue;
+ } else if ( $status == DW_DIR_NS ) {
+ $pages = array_merge($pages, dw_get_pages($dir . '/' . $entry));
+ } else {
+ $page = array(
+ 'id' => pathID(substr($dir.'/'.$entry,$trunclen)),
+ 'file'=> $dir.'/'.$entry,
+ );
+ $pages[] = $page;
+ }
+ }
+ closedir($dh);
+ return $pages;
+}
+
+#------------------------------------------------------------------------------
+function dw_internal_links($page) {
+ global $conf;
+ $instructions = p_get_instructions(file_get_contents($page['file']));
+ $links = array();
+ $cns = getNS($page['id']);
+ $exists = false;
+ foreach($instructions as $ins){
+ if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink') ){
+ $mid = $ins[1][0];
+ resolve_pageid($cns,$mid,$exists);
+ if ( !$exists ) {
+ list($mid) = explode('#',$mid); //record pages without hashs
+ $links[] = $mid;
+ }
+ }
+ }
+ return $links;
+}
+
+#------------------------------------------------------------------------------
+$OPTS = Doku_Cli_Opts::getOptions(__FILE__,'h',array('help'));
+
+if ( $OPTS->isError() ) {
+ fwrite( STDERR, $OPTS->getMessage() . "\n");
+ exit(1);
+}
+
+if ( $OPTS->has('h') or $OPTS->has('help') ) {
+ usage();
+ exit(0);
+}
+
+$START_DIR = $conf['datadir'];
+
+if ( $OPTS->numArgs() == 1 ) {
+ $START_DIR .= '/' . $OPTS->arg(0);
+}
+
+#------------------------------------------------------------------------------
+$WANTED_PAGES = array();
+
+foreach ( dw_get_pages($START_DIR) as $WIKI_PAGE ) {
+ $WANTED_PAGES = array_merge($WANTED_PAGES,dw_internal_links($WIKI_PAGE));
+}
+$WANTED_PAGES = array_unique($WANTED_PAGES);
+sort($WANTED_PAGES);
+
+foreach ( $WANTED_PAGES as $WANTED_PAGE ) {
+ print $WANTED_PAGE."\n";
+}
+exit(0);
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php b/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php
new file mode 100644
index 000000000..7678e918e
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php
@@ -0,0 +1,24 @@
+# acl.auth.php
+# <?php exit()?>
+# Don't modify the lines above
+#
+# Access Control Lists
+#
+# Editing this file by hand shouldn't be necessary. Use the ACL
+# Manager interface instead.
+#
+# If your auth backend allows special char like spaces in groups
+# or user names you need to urlencode them (only chars <128, leave
+# UTF-8 multibyte chars as is)
+#
+# none 0
+# read 1
+# edit 2
+# create 4
+# upload 8
+# delete 16
+
+* @ALL 0
+* @user 1
+* @member 8
+* @admin 255
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php.dist b/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php.dist
new file mode 100644
index 000000000..14344d778
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/acl.auth.php.dist
@@ -0,0 +1,21 @@
+# acl.auth.php
+# <?php exit()?>
+# Don't modify the lines above
+#
+# Access Control Lists
+#
+# Editing this file by hand shouldn't be necessary. Use the ACL
+# Manager interface instead.
+#
+# If your auth backend allows special char like spaces in groups
+# or user names you need to urlencode them (only chars <128, leave
+# UTF-8 multibyte chars as is)
+#
+# none 0
+# read 1
+# edit 2
+# create 4
+# upload 8
+# delete 16
+
+* @ALL 8
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/acronyms.conf b/mod/dokuwiki/vendors/dokuwiki/conf/acronyms.conf
new file mode 100644
index 000000000..13708d2df
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/acronyms.conf
@@ -0,0 +1,143 @@
+# Acronyms.
+
+ACL Access Control List
+AFAICS As far as I can see
+AFAIK As far as I know
+AFAIR As far as I remember
+AJAX Asynchronous JavaScript and XML
+AIM AOL (America Online) Instant Messenger
+AOL America Online
+API Application Programming Interface
+ASAP As soon as possible
+ASCII American Standard Code for Information Interchange
+ASP Active Server Pages
+BTW By the way
+CGI Common Gateway Interface
+CMS Content Management System
+CSS Cascading Style Sheets
+CVS Concurrent Versions System
+DBA Database Administrator
+DHCP Dynamic Host Configuration Protocol
+DHTML Dynamic HyperText Markup Language
+DMCA Digital Millenium Copyright Act
+DNS Domain Name System
+DOM Document Object Model
+DTD Document Type Definition
+EOF End of file
+EOL End of line
+EOM End of message
+EOT End of text
+ESMTP Extended Simple Mail Transfer Protocol
+FAQ Frequently Asked Questions
+FDL GNU Free Documentation License
+FTP File Transfer Protocol
+FOSS Free & Open-Source Software
+FLOSS Free/Libre and Open Source Software
+FUD Fear, Uncertainty, and Doubt
+GB Gigabyte
+GHz Gigahertz
+GIF Graphics Interchange Format
+GPL GNU General Public License
+GUI Graphical User Interface
+HTML HyperText Markup Language
+HTTP Hyper Text Transfer Protocol
+IANAL I am not a lawyer (but)
+ICANN Internet Corporation for Assigned Names and Numbers
+ICQ I seek you (Instant Messenger)
+IE5 Internet Explorer 5
+IE6 Internet Explorer 6
+IE Internet Explorer
+IIRC If I remember correctly
+IIS Internet Information Services
+IMAP Internet Message Access Protocol
+IMHO In my humble opinion
+IMO In my opinion
+IOW In other words
+IRC Internet Relay Chat
+IRL In real life
+ISO International Organization for Standardization
+ISP Internet Service Provider
+JDK Java Development Kit
+JPEG Joint Photographics Experts Group
+JPG Joint Photographics Experts Group
+JS JavaScript
+KISS Keep it simple stupid
+LDAP Lightweight Directory Access Protocol
+LGPL GNU Lesser General Public License
+LOL Laughing out loud
+MathML Mathematical Markup Language
+MB Megabyte
+MHz Megahertz
+MIME Multipurpose Internet Mail Extension
+MIT Massachusetts Institute of Technology
+MML Mathematical Markup Language
+MP3 Motion Picture Experts Group Layer 3
+MPEG Motion Picture Experts Group
+MSDN Microsoft Developer Network
+MS Microsoft
+MSIE Microsoft Internet Explorer
+NIS Network Information Service
+NS4.7 Netscape 4.7
+NS4 Netscape 4
+NS6 Netscape 6
+NS7 Netscape 7
+OMG Oh my God
+OPML Outline Processor Markup Language
+OS Operating System
+OSS Open Source Software
+OTOH On the other hand
+P2P Peer to Peer
+PDA Personal Digital Assistant
+PDF Portable Document Format
+Perl Practical Extraction and Report Language
+PERL Practical Extraction and Report Language
+PHP Hypertext Preprocessor
+PICS Platform for Internet Content Selection
+PIN Personal Identification Number
+PITA Pain in the Ass
+PNG Portable Network Graphics
+POP3 Post Office Protocol 3
+POP Post Office Protocol
+QoS Quality of Service
+RAID Redundant Array of Inexpensive Disks
+RDF Resource Description Framework
+ROTFL Rolling on the floor laughing
+RPC Remote Procedure Call
+RSS Rich Site Summary
+RTFM Read The Fine Manual
+RTF Rich Text File
+SCSI Small Computer System Interface
+SDK Software Development Kit
+SGML Standard General Markup Language
+SMIL Synchronized Multimedia Integration Language
+SMTP Simple Mail Transfer Protocol
+SOAP Simple Object Access Protocol
+spec specification
+SQL Structured Query Language
+SSH Secure Shell
+SSI Server Side Includes
+SSL Secure Sockets Layer
+SVG Scalable Vector Graphics
+TIA Thanks in advance
+TIFF Tagged Image File Format
+TLD Top Level Domain
+TOC Table of Contents
+URI Uniform Resource Identifier
+URL Uniform Resource Locator
+URN Uniform Resource Name
+VBA Visual Basic for Applications
+VB Visual Basic
+W3C World Wide Web Consortium
+WAN Wide Area Network
+WAP Wireless Access Protocol
+WML Wireless Markup Language
+WTF? What the f***
+WWW World Wide Web
+WYSIWYG What You See Is What You Get
+XHTML Extensible HyperText Markup Language
+XML Extensible Markup Language
+XSD XML (Extensible Markup Language) Schema Definition
+XSL Extensible Stylesheet Language
+XSLT Extensible Stylesheet Language Transformations
+XUL XML User Interface Language
+YMMV Your mileage may vary
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/dokuwiki.php b/mod/dokuwiki/vendors/dokuwiki/conf/dokuwiki.php
new file mode 100644
index 000000000..74d95147e
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/dokuwiki.php
@@ -0,0 +1,156 @@
+<?php
+/**
+ * This is DokuWiki's Main Configuration file
+ *
+ * All the default values are kept here, you should not modify it but use
+ * a local.php file instead to override the settings from here.
+ *
+ * This is a piece of PHP code so PHP syntax applies!
+ *
+ * For help with the configuration see http://www.splitbrain.org/dokuwiki/wiki:config
+ */
+
+
+/* Datastorage and Permissions */
+
+$conf['fmode'] = 0644; //set file creation mode
+$conf['dmode'] = 0755; //set directory creation mode
+$conf['lang'] = 'en'; //your language
+$conf['basedir'] = ''; //absolute dir from serveroot - blank for autodetection
+$conf['baseurl'] = ''; //URL to server including protocol - blank for autodetect
+$conf['savedir'] = './data'; //where to store all the files
+$conf['allowdebug'] = 0; //allow debug output, enable if needed 0|1
+
+/* Display Options */
+
+$conf['start'] = 'start'; //name of start page
+$conf['title'] = 'DokuWiki'; //what to show in the title
+$conf['template'] = 'default'; //see lib/tpl directory
+$conf['license'] = 'cc-by-nc-sa'; //see conf/license.php
+$conf['fullpath'] = 0; //show full path of the document or relative to datadir only? 0|1
+$conf['recent'] = 20; //how many entries to show in recent
+$conf['breadcrumbs'] = 10; //how many recent visited pages to show
+$conf['youarehere'] = 0; //show "You are here" navigation? 0|1
+$conf['typography'] = 1; //smartquote conversion 0=off, 1=doublequotes, 2=all quotes
+$conf['htmlok'] = 0; //may raw HTML be embedded? This may break layout and XHTML validity 0|1
+$conf['phpok'] = 0; //may PHP code be embedded? Never do this on the internet! 0|1
+$conf['dformat'] = '%Y/%m/%d %H:%M'; //dateformat accepted by PHPs strftime() function
+$conf['signature'] = ' --- //[[@MAIL@|@NAME@]] @DATE@//'; //signature see wiki:config for details
+$conf['toptoclevel'] = 1; //Level starting with and below to include in AutoTOC (max. 5)
+$conf['tocminheads'] = 3; //Minimum amount of headlines that determines if a TOC is built
+$conf['maxtoclevel'] = 3; //Up to which level include into AutoTOC (max. 5)
+$conf['maxseclevel'] = 3; //Up to which level create editable sections (max. 5)
+$conf['camelcase'] = 0; //Use CamelCase for linking? (I don't like it) 0|1
+$conf['deaccent'] = 1; //deaccented chars in pagenames (1) or romanize (2) or keep (0)?
+$conf['useheading'] = 0; //use the first heading in a page as its name
+$conf['refcheck'] = 1; //check for references before deleting media files
+$conf['refshow'] = 0; //how many references should be shown, 5 is a good value
+$conf['showuseras'] = 'loginname'; // 'loginname' users login name
+ // 'username' users full name
+ // 'email' e-mail address (will be obfuscated as per mailguard)
+ // 'email_link' e-mail address as a mailto: link (obfuscated)
+
+/* Antispam Features */
+
+$conf['usewordblock']= 1; //block spam based on words? 0|1
+$conf['indexdelay'] = 60*60*24*5; //allow indexing after this time (seconds) default is 5 days
+$conf['relnofollow'] = 1; //use rel="nofollow" for external links?
+$conf['mailguard'] = 'hex'; //obfuscate email addresses against spam harvesters?
+ //valid entries are:
+ // 'visible' - replace @ with [at], . with [dot] and - with [dash]
+ // 'hex' - use hex entities to encode the mail address
+ // 'none' - do not obfuscate addresses
+$conf['iexssprotect']= 1; // check for JavaScript and HTML in uploaded files 0|1
+
+/* Authentication Options - read http://www.splitbrain.org/dokuwiki/wiki:acl */
+
+$conf['useacl'] = 0; //Use Access Control Lists to restrict access?
+$conf['autopasswd'] = 1; //autogenerate passwords and email them to user
+$conf['authtype'] = 'plain'; //which authentication backend should be used
+$conf['passcrypt'] = 'smd5'; //Used crypt method (smd5,md5,sha1,ssha,crypt,mysql,my411)
+$conf['defaultgroup']= 'user'; //Default groups new Users are added to
+$conf['superuser'] = '!!not set!!'; //The admin can be user or @group or comma separated list user1,@group1,user2
+$conf['manager'] = '!!not set!!'; //The manager can be user or @group or comma separated list user1,@group1,user2
+$conf['profileconfirm'] = 1; //Require current password to confirm changes to user profile
+$conf['disableactions'] = ''; //comma separated list of actions to disable
+$conf['sneaky_index'] = 0; //check for namespace read permission in index view (0|1) (1 might cause unexpected behavior)
+$conf['auth_security_timeout'] = 900; //time (seconds) auth data is considered valid, set to 0 to recheck on every page view
+$conf['securecookie'] = 1; //never send HTTPS cookies via HTTP
+
+$conf['xmlrpc'] = 0; //Enable/disable XML-RPC interface
+$conf['xmlrpcuser'] = '!!not set!!'; //Restrict XML-RPC access to this groups/users
+
+/* Advanced Options */
+
+$conf['updatecheck'] = 1; //automatically check for new releases?
+$conf['userewrite'] = 0; //this makes nice URLs: 0: off 1: .htaccess 2: internal
+$conf['useslash'] = 0; //use slash instead of colon? only when rewrite is on
+$conf['usedraft'] = 1; //automatically save a draft while editing (0|1)
+$conf['sepchar'] = '_'; //word separator character in page names; may be a
+ // letter, a digit, '_', '-', or '.'.
+$conf['canonical'] = 0; //Should all URLs use full canonical http://... style?
+$conf['autoplural'] = 0; //try (non)plural form of nonexisting files?
+$conf['compression'] = 'gz'; //compress old revisions: (0: off) ('gz': gnuzip) ('bz2': bzip)
+ // bz2 generates smaller files, but needs more cpu-power
+$conf['cachetime'] = 60*60*24; //maximum age for cachefile in seconds (defaults to a day)
+$conf['locktime'] = 15*60; //maximum age for lockfiles (defaults to 15 minutes)
+$conf['fetchsize'] = 0; //maximum size (bytes) fetch.php may download from extern, disabled by default
+$conf['notify'] = ''; //send change info to this email (leave blank for nobody)
+$conf['registernotify'] = ''; //send info about newly registered users to this email (leave blank for nobody)
+$conf['mailfrom'] = ''; //use this email when sending mails
+$conf['gzip_output'] = 0; //use gzip content encodeing for the output xhtml (if allowed by browser)
+$conf['gdlib'] = 2; //the GDlib version (0, 1 or 2) 2 tries to autodetect
+$conf['im_convert'] = ''; //path to ImageMagicks convert (will be used instead of GD)
+$conf['jpg_quality'] = '70'; //quality of compression when scaling jpg images (0-100)
+$conf['subscribers'] = 0; //enable change notice subscription support
+$conf['compress'] = 1; //Strip whitespaces and comments from Styles and JavaScript? 1|0
+$conf['hidepages'] = ''; //Regexp for pages to be skipped from RSS, Search and Recent Changes
+$conf['send404'] = 0; //Send a HTTP 404 status for non existing pages?
+$conf['sitemap'] = 0; //Create a google sitemap? How often? In days.
+$conf['rss_type'] = 'rss1'; //type of RSS feed to provide, by default:
+ // 'rss' - RSS 0.91
+ // 'rss1' - RSS 1.0
+ // 'rss2' - RSS 2.0
+ // 'atom' - Atom 0.3
+ // 'atom1' - Atom 1.0
+$conf['rss_linkto'] = 'diff'; //what page RSS entries link to:
+ // 'diff' - page showing revision differences
+ // 'page' - the revised page itself
+ // 'rev' - page showing all revisions
+ // 'current' - most recent revision of page
+$conf['rss_content'] = 'abstract'; // what to put in the items by deafult?
+ // 'abstract' - plain text, first paragraph or so
+ // 'diff' - plain text unified diff wrapped in <pre> tags
+ // 'htmldiff' - diff as HTML table
+ // 'html' - the full page rendered in XHTML
+$conf['rss_update'] = 5*60; //Update the RSS feed every n seconds (defaults to 5 minutes)
+$conf['recent_days'] = 7; //How many days of recent changes to keep. (days)
+$conf['rss_show_summary'] = 1; //Add revision summary to title? 0|1
+$conf['broken_iua'] = 0; //Platform with broken ignore_user_abort (IIS+CGI) 0|1
+$conf['xsendfile'] = 0; //Use X-Sendfile (1 = lighttpd, 2 = standard)
+$conf['renderer_xhtml'] = 'xhtml'; //renderer to use for main page generation
+$conf['rememberme'] = 1; //Enable/disable remember me on login
+
+//Set target to use when creating links - leave empty for same window
+$conf['target']['wiki'] = '';
+$conf['target']['interwiki'] = '';
+$conf['target']['extern'] = '';
+$conf['target']['media'] = '';
+$conf['target']['windows'] = '';
+
+//Proxy setup - if your Server needs a proxy to access the web set these
+$conf['proxy']['host'] = '';
+$conf['proxy']['port'] = '';
+$conf['proxy']['user'] = '';
+$conf['proxy']['pass'] = '';
+$conf['proxy']['ssl'] = 0;
+
+/* Safemode Hack */
+
+$conf['safemodehack'] = 0; //read http://www.dokuwiki.org/config:safemodehack !
+$conf['ftp']['host'] = 'localhost';
+$conf['ftp']['port'] = '21';
+$conf['ftp']['user'] = 'user';
+$conf['ftp']['pass'] = 'password';
+$conf['ftp']['root'] = '/home/user/htdocs';
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/entities.conf b/mod/dokuwiki/vendors/dokuwiki/conf/entities.conf
new file mode 100644
index 000000000..be9ed6d40
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/entities.conf
@@ -0,0 +1,22 @@
+# Typography replacements
+#
+# Order does matter!
+#
+# You can use HTML entities here, but it is not recomended because it may break
+# non-HTML renderers. Use UTF-8 chars directly instead.
+
+<-> ↔
+-> →
+<- â†
+<=> ⇔
+=> ⇒
+<= â‡
+>> »
+<< «
+--- —
+-- –
+(c) ©
+(tm) â„¢
+(r) ®
+... …
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/interwiki.conf b/mod/dokuwiki/vendors/dokuwiki/conf/interwiki.conf
new file mode 100644
index 000000000..0e855f626
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/interwiki.conf
@@ -0,0 +1,125 @@
+# Each URL may contain one of the placeholders {URL} or {NAME}
+# {URL} is replaced by the URL encoded representation of the wikiname
+# this is the right thing to do in most cases
+# {NAME} this is replaced by the wikiname as given in the document
+# no further encoding is done
+# If no placeholder is defined the urlencoded name is appended to the URL
+
+# You can add more InterWiki shortcuts here.
+
+wp http://en.wikipedia.org/wiki/{NAME}
+wpfr http://fr.wikipedia.org/wiki/{NAME}
+wpde http://de.wikipedia.org/wiki/{NAME}
+wpes http://es.wikipedia.org/wiki/{NAME}
+wppl http://pl.wikipedia.org/wiki/{NAME}
+wpjp http://ja.wikipedia.org/wiki/{NAME}
+wpmeta http://meta.wikipedia.org/wiki/{NAME}
+doku http://www.dokuwiki.org/
+dokubug http://bugs.splitbrain.org/index.php?do=details&amp;task_id=
+rfc http://www.cs.ccu.edu.tw/~chm91u/rfc2html.php?in=
+man http://man.cx/
+amazon http://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/
+amazon.de http://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/
+amazon.uk http://www.amazon.co.uk/exec/obidos/ASIN/
+phpfn http://www.php.net/{NAME}
+coral http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY}
+freecache http://freecache.org/{NAME}
+sb http://www.splitbrain.org/go/
+google.de http://www.google.de/search?q=
+go http://www.google.com/search?q={URL}&amp;btnI=lucky
+
+# Standards from http://usemod.com/intermap.txt follow
+
+AbbeNormal http://www.ourpla.net/cgi-bin/pikie.cgi?
+AcadWiki http://xarch.tu-graz.ac.at/autocad/wiki/
+Acronym http://www.acronymfinder.com/af-query.asp?String=exact&amp;Acronym=
+Advogato http://www.advogato.org/
+AIWiki http://www.ifi.unizh.ch/ailab/aiwiki/aiw.cgi?
+ALife http://news.alife.org/wiki/index.php?
+AndStuff http://andstuff.org/wiki.php?
+Annotation http://bayle.stanford.edu/crit/nph-med.cgi/
+AnnotationWiki http://www.seedwiki.com/page.cfm?wikiid=368&amp;doc=
+AwarenessWiki http://taoriver.net/aware/
+BenefitsWiki http://www.benefitslink.com/cgi-bin/wiki.cgi?
+BridgesWiki http://c2.com/w2/bridges/
+C2find http://c2.com/cgi/wiki?FindPage&amp;value=
+Cache http://www.google.com/search?q=cache:
+CLiki http://ww.telent.net/cliki/
+CmWiki http://www.ourpla.net/cgi-bin/wiki.pl?
+CreationMatters http://www.ourpla.net/cgi-bin/wiki.pl?
+DejaNews http://www.deja.com/=dnc/getdoc.xp?AN=
+DeWikiPedia http://www.wikipedia.de/wiki.cgi?
+Dictionary http://www.dict.org/bin/Dict?Database=*&amp;Form=Dict1&amp;Strategy=*&amp;Query=
+DiveIntoOsx http://diveintoosx.org/
+DocBook http://docbook.org/wiki/moin.cgi/
+DolphinWiki http://www.object-arts.com/wiki/html/Dolphin/
+EfnetCeeWiki http://purl.net/wiki/c/
+EfnetCppWiki http://purl.net/wiki/cpp/
+EfnetPythonWiki http://purl.net/wiki/python/
+EfnetXmlWiki http://purl.net/wiki/xml/
+EljWiki http://elj.sourceforge.net/phpwiki/index.php/
+EmacsWiki http://www.emacswiki.org/cgi-bin/wiki.pl?
+FinalEmpire http://final-empire.sourceforge.net/cgi-bin/wiki.pl?
+Foldoc http://www.foldoc.org/foldoc/foldoc.cgi?
+FoxWiki http://fox.wikis.com/wc.dll?Wiki~
+FreeBSDman http://www.FreeBSD.org/cgi/man.cgi?apropos=1&amp;query=
+Google http://www.google.com/search?q=
+GoogleGroups http://groups.google.com/groups?q=
+GreenCheese http://www.greencheese.org/
+HammondWiki http://www.dairiki.org/HammondWiki/index.php3?
+Haribeau http://wiki.haribeau.de/cgi-bin/wiki.pl?
+IAWiki http://www.IAwiki.net/
+IMDB http://us.imdb.com/Title?
+JargonFile http://sunir.org/apps/meta.pl?wiki=JargonFile&amp;redirect=
+JiniWiki http://www.cdegroot.com/cgi-bin/jini?
+JspWiki http://www.ecyrd.com/JSPWiki/Wiki.jsp?page=
+KmWiki http://www.voght.com/cgi-bin/pywiki?
+KnowHow http://www2.iro.umontreal.ca/~paquetse/cgi-bin/wiki.cgi?
+LanifexWiki http://opt.lanifex.com/cgi-bin/wiki.pl?
+LegoWiki http://www.object-arts.com/wiki/html/Lego-Robotics/
+LinuxWiki http://www.linuxwiki.de/
+LugKR http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?
+MathSongsWiki http://SeedWiki.com/page.cfm?wikiid=237&amp;doc=
+MbTest http://www.usemod.com/cgi-bin/mbtest.pl?
+MeatBall http://www.usemod.com/cgi-bin/mb.pl?
+MetaWiki http://sunir.org/apps/meta.pl?
+MetaWikiPedia http://meta.wikipedia.com/wiki/
+MoinMoin http://purl.net/wiki/moin/
+MuWeb http://www.dunstable.com/scripts/MuWebWeb?
+NetVillage http://www.netbros.com/?
+OpenWiki http://openwiki.com/?
+OrgPatterns http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns?
+PangalacticOrg http://www.pangalactic.org/Wiki/
+PersonalTelco http://www.personaltelco.net/index.cgi/
+PhpWiki http://phpwiki.sourceforge.net/phpwiki/index.php?
+Pikie http://pikie.darktech.org/cgi/pikie?
+PPR http://c2.com/cgi/wiki?
+PurlNet http://purl.oclc.org/NET/
+PythonInfo http://www.python.org/cgi-bin/moinmoin/
+PythonWiki http://www.pythonwiki.de/
+PyWiki http://www.voght.com/cgi-bin/pywiki?
+SeaPig http://www.seapig.org/
+SeattleWireless http://seattlewireless.net/?
+SenseisLibrary http://senseis.xmp.net/?
+Shakti http://cgi.algonet.se/htbin/cgiwrap/pgd/ShaktiWiki/
+SourceForge http://sourceforge.net/{NAME}
+Squeak http://minnow.cc.gatech.edu/squeak/
+StrikiWiki http://ch.twi.tudelft.nl/~mostert/striki/teststriki.pl?
+SVGWiki http://www.protocol7.com/svg-wiki/default.asp?
+Tavi http://tavi.sourceforge.net/index.php?
+TmNet http://www.technomanifestos.net/?
+TMwiki http://www.EasyTopicMaps.com/?page=
+TWiki http://twiki.org/cgi-bin/view/{NAME}
+TwistedWiki http://purl.net/wiki/twisted/
+Unreal http://wiki.beyondunreal.com/wiki/
+UseMod http://www.usemod.com/cgi-bin/wiki.pl?
+VisualWorks http://wiki.cs.uiuc.edu/VisualWorks/
+WebDevWikiNL http://www.promo-it.nl/WebDevWiki/index.php?page=
+WebSeitzWiki http://webseitz.fluxent.com/wiki/
+Why http://clublet.com/c/c/why?
+Wiki http://c2.com/cgi/wiki?
+WikiPedia http://www.wikipedia.com/wiki/
+WikiWorld http://WikiWorld.com/wiki/index.php/
+YpsiEyeball http://sknkwrks.dyndns.org:1957/writewiki/wiki.pl?
+ZWiki http://www.zwiki.org/
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/license.php b/mod/dokuwiki/vendors/dokuwiki/conf/license.php
new file mode 100644
index 000000000..9a753baa7
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/license.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * This file defines multiple available licenses you can license your
+ * wiki contents under. Do not change this file, but create a
+ * license.local.php instead.
+ */
+
+$license['cc-by'] = array(
+ 'name' => 'CC Attribution 3.0 Unported',
+ 'url' => 'http://creativecommons.org/licenses/by/3.0/',
+);
+$license['cc-by-nc'] = array(
+ 'name' => 'CC Attribution-Noncommercial 3.0 Unported',
+ 'url' => 'http://creativecommons.org/licenses/by-nc/3.0/',
+);
+$license['cc-by-nc-nd'] = array(
+ 'name' => 'CC Attribution-Noncommercial-No Derivative Works 3.0 Unported',
+ 'url' => 'http://creativecommons.org/licenses/by-nc-nd/3.0/',
+);
+$license['cc-by-nc-sa'] = array(
+ 'name' => 'CC Attribution-Noncommercial-Share Alike 3.0 Unported',
+ 'url' => 'http://creativecommons.org/licenses/by-nc-sa/3.0/',
+);
+$license['cc-by-nd'] = array(
+ 'name' => 'CC Attribution-No Derivative Works 3.0 Unported',
+ 'url' => 'cc-by-nd',
+);
+$license['cc-by-sa'] = array(
+ 'name' => 'CC Attribution-Share Alike 3.0 Unported',
+ 'url' => 'http://creativecommons.org/licenses/by-sa/3.0/',
+);
+$license['publicdomain'] = array(
+ 'name' => 'Public Domain',
+ 'url' => 'http://creativecommons.org/licenses/publicdomain/',
+);
+$license['gnufdl'] = array(
+ 'name' => 'GNU Free Documentation License 1.2',
+ 'url' => 'http://www.gnu.org/licenses/fdl-1.2.html',
+);
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/local.php b/mod/dokuwiki/vendors/dokuwiki/conf/local.php
new file mode 100644
index 000000000..74334812b
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/local.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * This is an example of how a local.php coul look like.
+ * Simply copy the options you want to change from dokuwiki.php
+ * to this file and change them.
+ *
+ * When using the installer, a correct local.php file be generated for
+ * you automatically.
+ */
+
+$conf['title'] = 'Elgg Wiki'; //what to show in the title
+$conf['basedir'] = ''; //absolute dir from serveroot - blank for autodetection
+$conf['baseurl'] = ''; //URL to server including protocol - blank for autodetect
+$conf['savedir'] = DOKU_ELGGDATA; //where to store all the files
+
+$conf['useacl'] = 1; //Use Access Control Lists to restrict access?
+$conf['disableactions'] = 'login,logout'; //comma separated list of actions to disable
+
+$conf['updatecheck'] = 0; //automatically check for new releases?
+
+// get language from elgg directly
+$conf['lang'] = get_current_language();
+
+$conf['superuser'] = '@root';
+
+$conf['license'] = 'cc-by-sa'; //see conf/license.php
+
+$conf['pluginmanager'] = 0;
+
+$conf['plugin']['indexmenu']['skip_file']="/(sidebar)/i";
+
+//$conf['superuser'] = 'joe';
+
+/**
+ * The following options are usefull, if you use a MySQL
+ * database as autentication backend. Have a look into
+ * mysql.conf.php too and adjust the options to match
+ * your database installation.
+ */
+$conf['authtype'] = 'elgg';
+//require_once ("mysql.conf.php");
+
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/local.php.dist b/mod/dokuwiki/vendors/dokuwiki/conf/local.php.dist
new file mode 100644
index 000000000..4af6ea594
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/local.php.dist
@@ -0,0 +1,26 @@
+<?php
+/**
+ * This is an example of how a local.php coul look like.
+ * Simply copy the options you want to change from dokuwiki.php
+ * to this file and change them.
+ *
+ * When using the installer, a correct local.php file be generated for
+ * you automatically.
+ */
+
+
+//$conf['title'] = 'My Wiki'; //what to show in the title
+
+//$conf['useacl'] = 1; //Use Access Control Lists to restrict access?
+//$conf['superuser'] = 'joe';
+
+/**
+ * The following options are usefull, if you use a MySQL
+ * database as autentication backend. Have a look into
+ * mysql.conf.php too and adjust the options to match
+ * your database installation.
+ */
+//$conf['authtype'] = 'mysql';
+//require_once ("mysql.conf.php");
+
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/mediameta.php b/mod/dokuwiki/vendors/dokuwiki/conf/mediameta.php
new file mode 100644
index 000000000..ba7117643
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/mediameta.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * This configures which meta data will be editable through
+ * the media manager. Each field of the array is an array with the
+ * following contents:
+ * fieldname - Where data will be saved (EXIF or IPTC field)
+ * label - key to lookup in the $lang var, if not found printed as is
+ * htmltype - 'text' or 'textarea'
+ * lookups - array additional fields to lookup the data (EXIF or IPTC fields)
+ *
+ * The fields are not ordered continously to make inserting additional items
+ * in between simpler.
+ *
+ * This is a PHP snippet, so PHP syntax applies.
+ *
+ * Note: $fields is not a global variable and will not be available to any
+ * other functions or templates later
+ *
+ * You may extend or overwrite this variable in a optional
+ * conf/mediameta.local.php file
+ *
+ * For a list of available EXIF/IPTC fields refer to
+ * http://www.dokuwiki.org/devel:templates:detail.php
+ */
+
+
+$fields = array(
+ 10 => array('Iptc.Headline',
+ 'img_title',
+ 'text'),
+
+ 20 => array('Iptc.Caption',
+ 'img_caption',
+ 'textarea',
+ array('Exif.UserComment',
+ 'Exif.TIFFImageDescription',
+ 'Exif.TIFFUserComment')),
+
+ 30 => array('Iptc.Byline',
+ 'img_artist',
+ 'text',
+ array('Exif.TIFFArtist',
+ 'Exif.Artist',
+ 'Iptc.Credit')),
+
+ 40 => array('Iptc.CopyrightNotice',
+ 'img_copyr',
+ 'text',
+ array('Exif.TIFFCopyright',
+ 'Exif.Copyright')),
+
+ 50 => array('Iptc.Keywords',
+ 'img_keywords',
+ 'text',
+ array('Exif.Category')),
+);
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/mime.conf b/mod/dokuwiki/vendors/dokuwiki/conf/mime.conf
new file mode 100644
index 000000000..2e1ce6bb0
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/mime.conf
@@ -0,0 +1,52 @@
+# Allowed uploadable file extensions and mimetypes are defined here.
+# To extend this file it is recommended to create a mime.local.conf
+# file. Mimetypes that should be downloadable and not be opened in the
+# should be prefixed with a !
+
+jpg image/jpeg
+jpeg image/jpeg
+gif image/gif
+png image/png
+tgz !application/octet-stream
+tar !application/x-gtar
+gz !application/octet-stream
+bz2 !application/octet-stream
+zip !application/zip
+rar !application/rar
+pdf application/pdf
+ps !application/postscript
+doc !application/msword
+xls !application/msexcel
+ppt !application/mspowerpoint
+rtf !application/msword
+swf application/x-shockwave-flash
+
+rpm !application/octet-stream
+deb !application/octet-stream
+
+sxw !application/soffice
+sxc !application/soffice
+sxi !application/soffice
+sxd !application/soffice
+
+odc !application/vnd.oasis.opendocument.chart
+odf !application/vnd.oasis.opendocument.formula
+odg !application/vnd.oasis.opendocument.graphics
+odi !application/vnd.oasis.opendocument.image
+odp !application/vnd.oasis.opendocument.presentation
+ods !application/vnd.oasis.opendocument.spreadsheet
+odt !application/vnd.oasis.opendocument.text
+
+# You should enable HTML and Text uploads only for restricted Wikis.
+# Spammers are known to upload spam pages through unprotected Wikis.
+# Note: Enabling HTML opens Cross Site Scripting vulnerabilities
+# through JavaScript. Only enable this with trusted users. You
+# need to disable the iexssprotect option additionally to
+# adding the mime type here
+#html text/html
+#htm text/html
+#txt text/plain
+#conf text/plain
+#xml text/xml
+
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/msg b/mod/dokuwiki/vendors/dokuwiki/conf/msg
new file mode 100644
index 000000000..38bbb133c
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/msg
@@ -0,0 +1,8 @@
+25
+The first line of this file contains a number, indicating
+which notification messages should not be displayed. This
+is the only information sent to dokuwiki.org when the
+updatecheck option is enabled. You usually don't need to
+change this number as it gets updated when you install the
+new release - but to ignore a certain message set its
+number here.
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/mysql.conf.php.example b/mod/dokuwiki/vendors/dokuwiki/conf/mysql.conf.php.example
new file mode 100644
index 000000000..bd67be82c
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/mysql.conf.php.example
@@ -0,0 +1,253 @@
+<?php
+/*
+ * This is an example configuration for the mysql auth module.
+ *
+ * This SQL statements are optimized for following table structure.
+ * If you use a different one you have to change them accordingly.
+ * See comments of every statement for details.
+ *
+ * TABLE users
+ * uid login pass firstname lastname email
+ *
+ * TABLE groups
+ * gid name
+ *
+ * TABLE usergroup
+ * uid gid
+ *
+ * To use this configuration you have to copy them to local.php
+ * or at least include this file in local.php.
+ */
+
+/* Options to configure database access. You need to set up this
+ * options carefully, otherwise you won't be able to access you
+ * database.
+ */
+$conf['auth']['mysql']['server'] = '';
+$conf['auth']['mysql']['user'] = '';
+$conf['auth']['mysql']['password'] = '';
+$conf['auth']['mysql']['database'] = '';
+
+/* This option enables debug messages in the mysql module. It is
+ * mostly usefull for system admins.
+ */
+$conf['auth']['mysql']['debug'] = 0;
+
+/* Normally password encryption is done by DokuWiki (recommended) but for
+ * some reasons it might be usefull to let the database do the encryption.
+ * Set 'forwardClearPass' to '1' and the cleartext password is forwarded to
+ * the database, otherwise the encrypted one.
+ */
+$conf['auth']['mysql']['forwardClearPass'] = 0;
+
+/* Multiple table operations will be protected by locks. This array tolds
+ * the module which tables to lock. If you use any aliases for table names
+ * these array must also contain these aliases. Any unamed alias will cause
+ * a warning during operation. See the example below.
+ */
+$conf['auth']['mysql']['TablesToLock']= array("users", "users AS u","groups", "groups AS g", "usergroup", "usergroup AS ug");
+
+/***********************************************************************/
+/* Basic SQL statements for user authentication (required) */
+/***********************************************************************/
+
+/* This statement is used to grant or deny access to the wiki. The result
+ * should be a table with exact one line containing at least the password
+ * of the user. If the result table is empty or contains more than one
+ * row, access will be denied.
+ *
+ * The module access the password as 'pass' so a alias might be necessary.
+ *
+ * Following patters will be replaced:
+ * %{user} user name
+ * %{pass} encrypted or clear text password (depends on 'encryptPass')
+ * %{dgroup} default group name
+ */
+$conf['auth']['mysql']['checkPass'] = "SELECT pass
+ FROM usergroup AS ug
+ JOIN users AS u ON u.uid=ug.uid
+ JOIN groups AS g ON g.gid=ug.gid
+ WHERE login='%{user}'
+ AND name='%{dgroup}'";
+
+/* This statement should return a table with exact one row containing
+ * information about one user. The field needed are:
+ * 'pass' containing the encrypted or clear text password
+ * 'name' the user's full name
+ * 'mail' the user's email address
+ *
+ * Keep in mind that Dokuwiki will access thise information through the
+ * names listed above so aliasses might be neseccary.
+ *
+ * Following patters will be replaced:
+ * %{user} user name
+ */
+$conf['auth']['mysql']['getUserInfo'] = "SELECT pass, CONCAT(firstname,' ',lastname) AS name, email AS mail
+ FROM users
+ WHERE login='%{user}'";
+
+/* This statement is used to get all groups a user is member of. The
+ * result should be a table containing all groups the given user is
+ * member of. The module access the group name as 'group' so a alias
+ * might be nessecary.
+ *
+ * Following patters will be replaced:
+ * %{user} user name
+ */
+$conf['auth']['mysql']['getGroups'] = "SELECT name as `group`
+ FROM groups g, users u, usergroup ug
+ WHERE u.uid = ug.uid
+ AND g.gid = ug.gid
+ AND u.login='%{user}'";
+
+/***********************************************************************/
+/* Additional minimum SQL statements to use the user manager */
+/***********************************************************************/
+
+/* This statement should return a table containing all user login names
+ * that meet certain filter criteria. The filter expressions will be added
+ * case dependend by the module. At the end a sort expression will be added.
+ * Important is that this list contains no double entries fo a user. Each
+ * user name is only allowed once in the table.
+ *
+ * The login name will be accessed as 'user' to a alias might be neseccary.
+ * No patterns will be replaced in this statement but following patters
+ * will be replaced in the filter expressions:
+ * %{user} in FilterLogin user's login name
+ * %{name} in FilterName user's full name
+ * %{email} in FilterEmail user's email address
+ * %{group} in FilterGroup group name
+ */
+$conf['auth']['mysql']['getUsers'] = "SELECT DISTINCT login AS user
+ FROM users AS u
+ LEFT JOIN usergroup AS ug ON u.uid=ug.uid
+ LEFT JOIN groups AS g ON ug.gid=g.gid";
+$conf['auth']['mysql']['FilterLogin'] = "login LIKE '%{user}'";
+$conf['auth']['mysql']['FilterName'] = "CONCAT(firstname,' ',lastname) LIKE '%{name}'";
+$conf['auth']['mysql']['FilterEmail'] = "email LIKE '%{email}'";
+$conf['auth']['mysql']['FilterGroup'] = "name LIKE '%{group}'";
+$conf['auth']['mysql']['SortOrder'] = "ORDER BY login";
+
+/***********************************************************************/
+/* Additional SQL statements to add new users with the user manager */
+/***********************************************************************/
+
+/* This statement should add a user to the database. Minimum information
+ * to store are: login name, password, email address and full name.
+ *
+ * Following patterns will be replaced:
+ * %{user} user's login name
+ * %{pass} password (encrypted or clear text, depends on 'encryptPass')
+ * %{email} email address
+ * %{name} user's full name
+ */
+$conf['auth']['mysql']['addUser'] = "INSERT INTO users
+ (login, pass, email, firstname, lastname)
+ VALUES ('%{user}', '%{pass}', '%{email}',
+ SUBSTRING_INDEX('%{name}',' ', 1),
+ SUBSTRING_INDEX('%{name}',' ', -1))";
+
+/* This statement should add a group to the database.
+ * Following patterns will be replaced:
+ * %{group} group name
+ */
+$conf['auth']['mysql']['addGroup'] = "INSERT INTO groups (name)
+ VALUES ('%{group}')";
+
+/* This statement should connect a user to a group (a user become member
+ * of that group).
+ * Following patterns will be replaced:
+ * %{user} user's login name
+ * %{uid} id of a user dataset
+ * %{group} group name
+ * %{gid} id of a group dataset
+ */
+$conf['auth']['mysql']['addUserGroup']= "INSERT INTO usergroup (uid, gid)
+ VALUES ('%{uid}', '%{gid}')";
+
+/* This statement should remove a group fom the database.
+ * Following patterns will be replaced:
+ * %{group} group name
+ * %{gid} id of a group dataset
+ */
+$conf['auth']['mysql']['delGroup'] = "DELETE FROM groups
+ WHERE gid='%{gid}'";
+
+/* This statement should return the database index of a given user name.
+ * The module will access the index with the name 'id' so a alias might be
+ * necessary.
+ * following patters will be replaced:
+ * %{user} user name
+ */
+$conf['auth']['mysql']['getUserID'] = "SELECT uid AS id
+ FROM users
+ WHERE login='%{user}'";
+
+/***********************************************************************/
+/* Additional SQL statements to delete users with the user manager */
+/***********************************************************************/
+
+/* This statement should remove a user fom the database.
+ * Following patterns will be replaced:
+ * %{user} user's login name
+ * %{uid} id of a user dataset
+ */
+$conf['auth']['mysql']['delUser'] = "DELETE FROM users
+ WHERE uid='%{uid}'";
+
+/* This statement should remove all connections from a user to any group
+ * (a user quits membership of all groups).
+ * Following patterns will be replaced:
+ * %{uid} id of a user dataset
+ */
+$conf['auth']['mysql']['delUserRefs'] = "DELETE FROM usergroup
+ WHERE uid='%{uid}'";
+
+/***********************************************************************/
+/* Additional SQL statements to modify users with the user manager */
+/***********************************************************************/
+
+/* This statements should modify a user entry in the database. The
+ * statements UpdateLogin, UpdatePass, UpdateEmail and UpdateName will be
+ * added to updateUser on demand. Only changed parameters will be used.
+ *
+ * Following patterns will be replaced:
+ * %{user} user's login name
+ * %{pass} password (encrypted or clear text, depends on 'encryptPass')
+ * %{email} email address
+ * %{name} user's full name
+ * %{uid} user id that should be updated
+ */
+$conf['auth']['mysql']['updateUser'] = "UPDATE users SET";
+$conf['auth']['mysql']['UpdateLogin'] = "login='%{user}'";
+$conf['auth']['mysql']['UpdatePass'] = "pass='%{pass}'";
+$conf['auth']['mysql']['UpdateEmail'] = "email='%{email}'";
+$conf['auth']['mysql']['UpdateName'] = "firstname=SUBSTRING_INDEX('%{name}',' ', 1),
+ lastname=SUBSTRING_INDEX('%{name}',' ', -1)";
+$conf['auth']['mysql']['UpdateTarget']= "WHERE uid=%{uid}";
+
+/* This statement should remove a single connection from a user to a
+ * group (a user quits membership of that group).
+ *
+ * Following patterns will be replaced:
+ * %{user} user's login name
+ * %{uid} id of a user dataset
+ * %{group} group name
+ * %{gid} id of a group dataset
+ */
+$conf['auth']['mysql']['delUserGroup']= "DELETE FROM usergroup
+ WHERE uid='%{uid}'
+ AND gid='%{gid}'";
+
+/* This statement should return the database index of a given group name.
+ * The module will access the index with the name 'id' so a alias might
+ * be necessary.
+ *
+ * Following patters will be replaced:
+ * %{group} group name
+ */
+$conf['auth']['mysql']['getGroupID'] = "SELECT gid AS id
+ FROM groups
+ WHERE name='%{group}'";
+
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/scheme.conf b/mod/dokuwiki/vendors/dokuwiki/conf/scheme.conf
new file mode 100644
index 000000000..88cb3c44d
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/scheme.conf
@@ -0,0 +1,11 @@
+#Add URL schemes you want to be recognized as links here
+
+http
+https
+telnet
+gopher
+wais
+ftp
+ed2k
+irc
+ldap \ No newline at end of file
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/smileys.conf b/mod/dokuwiki/vendors/dokuwiki/conf/smileys.conf
new file mode 100644
index 000000000..47e4537e2
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/smileys.conf
@@ -0,0 +1,27 @@
+# Smileys configured here will be replaced by the
+# configured images in the smiley directory
+
+8-) icon_cool.gif
+8-O icon_eek.gif
+8-o icon_eek.gif
+:-( icon_sad.gif
+:-) icon_smile.gif
+=) icon_smile2.gif
+:-/ icon_doubt.gif
+:-\ icon_doubt2.gif
+:-? icon_confused.gif
+:-D icon_biggrin.gif
+:-P icon_razz.gif
+:-o icon_surprised.gif
+:-O icon_surprised.gif
+:-x icon_silenced.gif
+:-X icon_silenced.gif
+:-| icon_neutral.gif
+;-) icon_wink.gif
+^_^ icon_fun.gif
+:?: icon_question.gif
+:!: icon_exclaim.gif
+LOL icon_lol.gif
+FIXME fixme.gif
+DELETEME delete.gif
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php b/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php
new file mode 100644
index 000000000..6576eeb5f
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php
@@ -0,0 +1,10 @@
+# users.auth.php
+# <?php exit()?>
+# Don't modify the lines above
+#
+# Userfile
+#
+# Format:
+#
+# user:MD5password:Real Name:email:groups,comma,seperated
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php.dist b/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php.dist
new file mode 100644
index 000000000..6576eeb5f
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/users.auth.php.dist
@@ -0,0 +1,10 @@
+# users.auth.php
+# <?php exit()?>
+# Don't modify the lines above
+#
+# Userfile
+#
+# Format:
+#
+# user:MD5password:Real Name:email:groups,comma,seperated
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/wordblock.conf b/mod/dokuwiki/vendors/dokuwiki/conf/wordblock.conf
new file mode 100644
index 000000000..da7143257
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/wordblock.conf
@@ -0,0 +1,8004 @@
+# This is the URL blacklist from the chongqed.org database
+# it is available from http://blacklist.chongqed.org/
+# You can use each line below as a regular expression
+# that can be tested against URLs on your wiki.
+# The last spammer was added on 2008-09-11 10:14:51
+
+https?:\/\/([^\/]*\.)?-com-boob-sex-sexy\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?0--sex\.com
+https?:\/\/([^\/]*\.)?0-casinos\.org
+https?:\/\/([^\/]*\.)?0-poker\.net
+https?:\/\/([^\/]*\.)?00007\.com
+https?:\/\/([^\/]*\.)?001-mature-teacher\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?007vip\.cn
+https?:\/\/([^\/]*\.)?01incest\.za\.pl
+https?:\/\/([^\/]*\.)?021boy\.com
+https?:\/\/([^\/]*\.)?027168\.com
+https?:\/\/([^\/]*\.)?02incest\.za\.pl
+https?:\/\/([^\/]*\.)?03incest\.za\.pl
+https?:\/\/([^\/]*\.)?086books\.com
+https?:\/\/([^\/]*\.)?0esy-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?0lmz-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?0sxa-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?0tdwrmq8\.org
+https?:\/\/([^\/]*\.)?0x009\.blogspot\.com
+https?:\/\/([^\/]*\.)?1-888-pokermon\.com
+https?:\/\/([^\/]*\.)?1-adipex\.us
+https?:\/\/([^\/]*\.)?1-cialis\.us
+https?:\/\/([^\/]*\.)?1-craps\.net
+https?:\/\/([^\/]*\.)?1-levitra\.us
+https?:\/\/([^\/]*\.)?1-poker-game\.com
+https?:\/\/([^\/]*\.)?1-xenical\.us
+https?:\/\/([^\/]*\.)?10-best-online-casinosx\.blogspot\.com
+https?:\/\/([^\/]*\.)?100-25-ebony-free\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?10med\.com
+https?:\/\/([^\/]*\.)?10pharm\.com
+https?:\/\/([^\/]*\.)?114418523\.blogspot\.com
+https?:\/\/([^\/]*\.)?117000\.com
+https?:\/\/([^\/]*\.)?1177888888\.com
+https?:\/\/([^\/]*\.)?123clips-com-cq03\.blogspot\.com
+https?:\/\/([^\/]*\.)?123clips-com-td\.blogspot\.com
+https?:\/\/([^\/]*\.)?123clips-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?123clips-tp5\.blogspot\.com
+https?:\/\/([^\/]*\.)?126hao\.com
+https?:\/\/([^\/]*\.)?163car\.com
+https?:\/\/([^\/]*\.)?163school\.com\.cn
+https?:\/\/([^\/]*\.)?168chinese\.com
+https?:\/\/([^\/]*\.)?168english\.com
+https?:\/\/([^\/]*\.)?168standard\.com
+https?:\/\/([^\/]*\.)?181st-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?18to19-com-dbo26u\.blogspot\.com
+https?:\/\/([^\/]*\.)?18to19-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?1avoro\.info
+https?:\/\/([^\/]*\.)?1c1garettes-777\.tripod\.com
+https?:\/\/([^\/]*\.)?1centpoker\.us
+https?:\/\/([^\/]*\.)?1clickpoker\.us
+https?:\/\/([^\/]*\.)?1dollarpoker\.us
+https?:\/\/([^\/]*\.)?1ebalo\.org
+https?:\/\/([^\/]*\.)?1freepoker\.us
+https?:\/\/([^\/]*\.)?1gogo\.awardspace\.com
+https?:\/\/([^\/]*\.)?1golod\.org
+https?:\/\/([^\/]*\.)?1i-casino\.com
+https?:\/\/([^\/]*\.)?1jolla\.org
+https?:\/\/([^\/]*\.)?1kaj-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?1min\.us
+https?:\/\/([^\/]*\.)?1onlinepoker\.us
+https?:\/\/([^\/]*\.)?1ringtones\.fateback\.com
+https?:\/\/([^\/]*\.)?1st-in-poker\.us
+https?:\/\/([^\/]*\.)?1st-phentermine\.to\.pl
+https?:\/\/([^\/]*\.)?1st-place-poker\.com
+https?:\/\/([^\/]*\.)?1st-poker\.us
+https?:\/\/([^\/]*\.)?1stpharma\.noads\.biz
+https?:\/\/([^\/]*\.)?1stpharmacy\.rmcinfo\.fr
+https?:\/\/([^\/]*\.)?1stviagra\.coz\.in
+https?:\/\/([^\/]*\.)?1whs\.com
+https?:\/\/([^\/]*\.)?2-poker\.us
+https?:\/\/([^\/]*\.)?2008-web-hosting\.com
+https?:\/\/([^\/]*\.)?2010oa\.com
+https?:\/\/([^\/]*\.)?2228888\.com
+https?:\/\/([^\/]*\.)?24ringtonevme\.blogspot\.com
+https?:\/\/([^\/]*\.)?24x7\.soliday\.org
+https?:\/\/([^\/]*\.)?2apd-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?2cpo-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?30moms-com-dd8h8y1slq\.blogspot\.com
+https?:\/\/([^\/]*\.)?30moms-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?321\.cn
+https?:\/\/([^\/]*\.)?33b\.b33r\.net
+https?:\/\/([^\/]*\.)?33orgy\.org
+https?:\/\/([^\/]*\.)?3mac\.info
+https?:\/\/([^\/]*\.)?3pic-com-ai3\.blogspot\.com
+https?:\/\/([^\/]*\.)?3pic-com-kedet\.blogspot\.com
+https?:\/\/([^\/]*\.)?40inchplus-com-b4\.blogspot\.com
+https?:\/\/([^\/]*\.)?40inchplus-com-toqof\.blogspot\.com
+https?:\/\/([^\/]*\.)?40inchplus-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?4arf-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?4erni-pes\.blogspot\.com
+https?:\/\/([^\/]*\.)?4mednew\.com
+https?:\/\/([^\/]*\.)?4mkat4\.com
+https?:\/\/([^\/]*\.)?4onlinecasino4\.blogspot\.com
+https?:\/\/([^\/]*\.)?4t7e\.info
+https?:\/\/([^\/]*\.)?4tsmiget\.forumzen\.com
+https?:\/\/([^\/]*\.)?4tsutmon\.forumzen\.com
+https?:\/\/([^\/]*\.)?4udf-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?4x2\.net
+https?:\/\/([^\/]*\.)?510sms\.blogbus\.com
+https?:\/\/([^\/]*\.)?5188job\.com
+https?:\/\/([^\/]*\.)?51lac\.com
+https?:\/\/([^\/]*\.)?51lover\.org
+https?:\/\/([^\/]*\.)?51sms\.blogbus\.com
+https?:\/\/([^\/]*\.)?51web\.cn
+https?:\/\/([^\/]*\.)?51wisdom\.com
+https?:\/\/([^\/]*\.)?51wisdom\.com\.cn
+https?:\/\/([^\/]*\.)?51wisdom\.net
+https?:\/\/([^\/]*\.)?520sms\.blogbus\.com
+https?:\/\/([^\/]*\.)?52lac\.net
+https?:\/\/([^\/]*\.)?5417\.cn
+https?:\/\/([^\/]*\.)?54epson\.com
+https?:\/\/([^\/]*\.)?55\.2myip\.com
+https?:\/\/([^\/]*\.)?5588866\.com\.cn
+https?:\/\/([^\/]*\.)?56156\.com
+https?:\/\/([^\/]*\.)?563000\.com
+https?:\/\/([^\/]*\.)?56918\.com
+https?:\/\/([^\/]*\.)?59165\.net
+https?:\/\/([^\/]*\.)?5ijipiao\.com
+https?:\/\/([^\/]*\.)?5up-net-blmpo6qr0\.blogspot\.com
+https?:\/\/([^\/]*\.)?5up-net-wr00skgzbo\.blogspot\.com
+https?:\/\/([^\/]*\.)?63\.217\.31\.49
+https?:\/\/([^\/]*\.)?6717\.com\.cn
+https?:\/\/([^\/]*\.)?69pose\.org
+https?:\/\/([^\/]*\.)?6tvju0a\.nokedem\.com
+https?:\/\/([^\/]*\.)?70678\.com
+https?:\/\/([^\/]*\.)?7171\.blogshot\.nl
+https?:\/\/([^\/]*\.)?72\.net\.cn
+https?:\/\/([^\/]*\.)?77zhong\.com
+https?:\/\/([^\/]*\.)?78\.net\.cn
+https?:\/\/([^\/]*\.)?79179\.com
+https?:\/\/([^\/]*\.)?7982257596\.blogspot\.com
+https?:\/\/([^\/]*\.)?7dftw79\.nokedem\.com
+https?:\/\/([^\/]*\.)?7j5lj\.info
+https?:\/\/([^\/]*\.)?7shg-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?7x7\.ruwe\.net
+https?:\/\/([^\/]*\.)?8-teenies\.freeinsite\.net
+https?:\/\/([^\/]*\.)?80880\.com
+https?:\/\/([^\/]*\.)?8224\.net
+https?:\/\/([^\/]*\.)?86wys\.com
+https?:\/\/([^\/]*\.)?87793798\.cn
+https?:\/\/([^\/]*\.)?888\.web\.com
+https?:\/\/([^\/]*\.)?88by88-ax4nzu\.blogspot\.com
+https?:\/\/([^\/]*\.)?88by88-com-hx06a\.blogspot\.com
+https?:\/\/([^\/]*\.)?88by88-com-nekuk\.blogspot\.com
+https?:\/\/([^\/]*\.)?88tm\.com
+https?:\/\/([^\/]*\.)?8pcg-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?8teenfiles-com-dzlvk\.blogspot\.com
+https?:\/\/([^\/]*\.)?8teenfiles-com-mj6\.blogspot\.com
+https?:\/\/([^\/]*\.)?8teenfiles-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?8thstreetlatinas-com-rw48o84iwl\.blogspot\.com
+https?:\/\/([^\/]*\.)?8vwx-adult-sites\.blogspot\.com
+https?:\/\/([^\/]*\.)?90001\.cn
+https?:\/\/([^\/]*\.)?911\.x24hr\.com
+https?:\/\/([^\/]*\.)?911w\.net
+https?:\/\/([^\/]*\.)?91yg\.com
+https?:\/\/([^\/]*\.)?96china\.com
+https?:\/\/([^\/]*\.)?96china\.net
+https?:\/\/([^\/]*\.)?96d2\.com
+https?:\/\/([^\/]*\.)?98-boot-disk-japanese-window\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?99aids\.com
+https?:\/\/([^\/]*\.)?a-blonde-babe-in-bikini\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?a-milf-video-preview\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?a-onedigitizing\.com
+https?:\/\/([^\/]*\.)?a-oneemb\.com
+https?:\/\/([^\/]*\.)?a-phentermine\.us
+https?:\/\/([^\/]*\.)?a-poker-casino\.com
+https?:\/\/([^\/]*\.)?a-porn-sex-adult-xxx\.com
+https?:\/\/([^\/]*\.)?aaeon\.com\.cn
+https?:\/\/([^\/]*\.)?aalita\.com
+https?:\/\/([^\/]*\.)?aalive\.info
+https?:\/\/([^\/]*\.)?aalop\.info
+https?:\/\/([^\/]*\.)?aamjh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?aaqqywh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ababd1\.com
+https?:\/\/([^\/]*\.)?abasti\.com
+https?:\/\/([^\/]*\.)?abbama\.com
+https?:\/\/([^\/]*\.)?abbc\.edu
+https?:\/\/([^\/]*\.)?abbleg4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?abca\.biz
+https?:\/\/([^\/]*\.)?abcink\.com
+https?:\/\/([^\/]*\.)?abijah\.phpbbx\.de
+https?:\/\/([^\/]*\.)?abijah\.romandie\.com
+https?:\/\/([^\/]*\.)?abito-da-sera\.bb22\.info
+https?:\/\/([^\/]*\.)?about-money-world\.com
+https?:\/\/([^\/]*\.)?aboutinfotech\.com
+https?:\/\/([^\/]*\.)?aboutmitsubishiparts\.cn
+https?:\/\/([^\/]*\.)?abriana\.phpbbx\.de
+https?:\/\/([^\/]*\.)?abrianna\.romandie\.com
+https?:\/\/([^\/]*\.)?absolutely-free-porn-clip-blogyvg\.blogspot\.com
+https?:\/\/([^\/]*\.)?absolutely-free-porn-clip-zone28k\.blogspot\.com
+https?:\/\/([^\/]*\.)?aburri\.com
+https?:\/\/([^\/]*\.)?academics\.smcvt\.edu
+https?:\/\/([^\/]*\.)?acantorr\.forumzen\.com
+https?:\/\/([^\/]*\.)?accounting-degree\.hotmail\.ru
+https?:\/\/([^\/]*\.)?accounting1degre\.chat\.ru
+https?:\/\/([^\/]*\.)?accredited-degre\.hotmail\.ru
+https?:\/\/([^\/]*\.)?accredited1degre\.chat\.ru
+https?:\/\/([^\/]*\.)?accredited2degre\.chat\.ru
+https?:\/\/([^\/]*\.)?acelacacel\.dl\.pl
+https?:\/\/([^\/]*\.)?acelalacel\.blogcu\.com
+https?:\/\/([^\/]*\.)?acelcocna\.lolbb\.com
+https?:\/\/([^\/]*\.)?aceldron\.lightbb\.com
+https?:\/\/([^\/]*\.)?acelgetric\.dl\.pl
+https?:\/\/([^\/]*\.)?acellibo\.dl\.pl
+https?:\/\/([^\/]*\.)?acellitroc\.xa\.pl
+https?:\/\/([^\/]*\.)?acelracer\.graphforum\.com
+https?:\/\/([^\/]*\.)?acelrel\.discutforum\.com
+https?:\/\/([^\/]*\.)?acgetvar\.iphorum\.com
+https?:\/\/([^\/]*\.)?achima\.phpbbx\.de
+https?:\/\/([^\/]*\.)?achima\.romandie\.com
+https?:\/\/([^\/]*\.)?achutsit\.forumzen\.com
+https?:\/\/([^\/]*\.)?acima\.phpbbx\.de
+https?:\/\/([^\/]*\.)?acima\.romandie\.com
+https?:\/\/([^\/]*\.)?acimah\.romandie\.com
+https?:\/\/([^\/]*\.)?aciphexbuy\.chip\.ms
+https?:\/\/([^\/]*\.)?aciphexcheap\.mysite\.de
+https?:\/\/([^\/]*\.)?aciphexcheapbuy\.cut\.by
+https?:\/\/([^\/]*\.)?aciphexgeneric\.redirect\.to
+https?:\/\/([^\/]*\.)?aciphexgenericbuy\.dive\.to
+https?:\/\/([^\/]*\.)?aclyulac\.forumzen\.com
+https?:\/\/([^\/]*\.)?acme-arts\.com
+https?:\/\/([^\/]*\.)?acmonno\.zikforum\.com
+https?:\/\/([^\/]*\.)?acne-medicinebco\.blogspot\.com
+https?:\/\/([^\/]*\.)?acololi\.winnerforum\.net
+https?:\/\/([^\/]*\.)?acouc\.zj\.pl
+https?:\/\/([^\/]*\.)?acrolrel\.blogcu\.com
+https?:\/\/([^\/]*\.)?acscuace\.forumzen\.com
+https?:\/\/([^\/]*\.)?actingland\.com
+https?:\/\/([^\/]*\.)?action-in-lesbian-lover\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?action36-kx8\.blogspot\.com
+https?:\/\/([^\/]*\.)?actonelbuy\.drop\.to
+https?:\/\/([^\/]*\.)?actonelcheap\.notrix\.ch
+https?:\/\/([^\/]*\.)?actonelcheapgeneric\.fanclub\.ms
+https?:\/\/([^\/]*\.)?actonelgeneric\.drop\.to
+https?:\/\/([^\/]*\.)?actonelonline\.drive\.to
+https?:\/\/([^\/]*\.)?acurahost\.cn
+https?:\/\/([^\/]*\.)?acuratrades\.cn
+https?:\/\/([^\/]*\.)?acxza\.szm\.sk
+https?:\/\/([^\/]*\.)?acyclovir\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ad0571\.com
+https?:\/\/([^\/]*\.)?adapturl\.com
+https?:\/\/([^\/]*\.)?adault\.adultserv\.info
+https?:\/\/([^\/]*\.)?adds1\.trafflow\.com
+https?:\/\/([^\/]*\.)?adipex-08pr\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipex-911\.coz\.in
+https?:\/\/([^\/]*\.)?adipex-buyvie\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipex-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipex-phenterminepwf\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipex-wiki\.com
+https?:\/\/([^\/]*\.)?adipex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?adipex\.edu\.tf
+https?:\/\/([^\/]*\.)?adipex\.edublogs\.org
+https?:\/\/([^\/]*\.)?adipex\.health-livening\.com
+https?:\/\/([^\/]*\.)?adipexes\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipexwoq\.blogspot\.com
+https?:\/\/([^\/]*\.)?adipexxdt\.blogspot\.com
+https?:\/\/([^\/]*\.)?adira\.phpbbx\.de
+https?:\/\/([^\/]*\.)?adira\.romandie\.com
+https?:\/\/([^\/]*\.)?adrienneee\.ifrance\.com
+https?:\/\/([^\/]*\.)?adrienneee\.xhostar\.com
+https?:\/\/([^\/]*\.)?adsenseready\.com
+https?:\/\/([^\/]*\.)?adult-clips-com-guqiax1tu\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult-clips-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult-dating-free\.sexnation\.info
+https?:\/\/([^\/]*\.)?adult-dating\.sexnation\.info
+https?:\/\/([^\/]*\.)?adult-free-fucking-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?adult-free-granny-video\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?adult-fx\.info
+https?:\/\/([^\/]*\.)?adult-list-com-wqf4ojq2uk\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult-list-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult-personals\.sexnation\.info
+https?:\/\/([^\/]*\.)?adult-porn-clip-info887\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult-sites-review\.beaffaired\.com
+https?:\/\/([^\/]*\.)?adult\.1foleks\.org
+https?:\/\/([^\/]*\.)?adult1clip\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult1movies\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult1video\.blogspot\.com
+https?:\/\/([^\/]*\.)?adult69club\.tripod\.com
+https?:\/\/([^\/]*\.)?adultbuffet-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?adultpersonalsxgj\.blogspot\.com
+https?:\/\/([^\/]*\.)?adultpersonalz\.net
+https?:\/\/([^\/]*\.)?adultsexvideo\.blogspot\.com
+https?:\/\/([^\/]*\.)?adultsitefind\.info
+https?:\/\/([^\/]*\.)?adultsiteshop\.info
+https?:\/\/([^\/]*\.)?adultsss\.cafe150\.com
+https?:\/\/([^\/]*\.)?adultsss\.freehostia\.com
+https?:\/\/([^\/]*\.)?adust\.my10gb\.com
+https?:\/\/([^\/]*\.)?advanceloanfast\.info
+https?:\/\/([^\/]*\.)?adventure-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?advice-kissing\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?adviser-financial-friendly-gay\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?adviser\.8888mb\.com
+https?:\/\/([^\/]*\.)?adwareremoval\.myinfo\.ws
+https?:\/\/([^\/]*\.)?ae\.siam\.edu
+https?:\/\/([^\/]*\.)?aebn-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?aezat\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?afdtf\.szm\.sk
+https?:\/\/([^\/]*\.)?affishe\.hostcroc\.com
+https?:\/\/([^\/]*\.)?affishe\.webmelia\.com
+https?:\/\/([^\/]*\.)?afraima\.phpbbx\.de
+https?:\/\/([^\/]*\.)?african-american-lesbian-personals\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?africanvagina-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?aftworld\.com
+https?:\/\/([^\/]*\.)?afxbmx\.info
+https?:\/\/([^\/]*\.)?agbht\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?agclore\.dl\.pl
+https?:\/\/([^\/]*\.)?agcw-com-cme2qnyzyt\.blogspot\.com
+https?:\/\/([^\/]*\.)?agcw-com-r10opb\.blogspot\.com
+https?:\/\/([^\/]*\.)?agcw-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?agentlovelette\.250free\.com
+https?:\/\/([^\/]*\.)?aghas\.info
+https?:\/\/([^\/]*\.)?agmy3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?agrrjd4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?agylavu\.org
+https?:\/\/([^\/]*\.)?ah-me-com-af7ipw\.blogspot\.com
+https?:\/\/([^\/]*\.)?ah-me-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?ah-me-t7o\.blogspot\.com
+https?:\/\/([^\/]*\.)?ahava\.phpbbx\.de
+https?:\/\/([^\/]*\.)?ahuva\.phpbbx\.de
+https?:\/\/([^\/]*\.)?aidlov\.com
+https?:\/\/([^\/]*\.)?aids-china\.com
+https?:\/\/([^\/]*\.)?aids\.ik8\.com
+https?:\/\/([^\/]*\.)?aids1\.zj\.com
+https?:\/\/([^\/]*\.)?aids333\.net
+https?:\/\/([^\/]*\.)?aikn3\.szm\.sk
+https?:\/\/([^\/]*\.)?air520\.com
+https?:\/\/([^\/]*\.)?airfarelowest\.net
+https?:\/\/([^\/]*\.)?airline-ticket-now\.com
+https?:\/\/([^\/]*\.)?airline-ticket\.globaltr\.info
+https?:\/\/([^\/]*\.)?ajneuas\.com
+https?:\/\/([^\/]*\.)?akbxb\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?akissbetweenthelegs-com-hesel\.blogspot\.com
+https?:\/\/([^\/]*\.)?akissbetweenthelegs-com-tsawya560\.blogspot\.com
+https?:\/\/([^\/]*\.)?akissbetweenthelegs-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?al-femminile\.freespase\.info
+https?:\/\/([^\/]*\.)?al4a-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?alabamamortgage-x\.com
+https?:\/\/([^\/]*\.)?alalal\.myrealboard\.com
+https?:\/\/([^\/]*\.)?alaldalli\.naturalforum\.net
+https?:\/\/([^\/]*\.)?alanthomashairsalon\.com
+https?:\/\/([^\/]*\.)?alarcit\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?alaskamortgage-x\.com
+https?:\/\/([^\/]*\.)?alba-boob-jessica-slip\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?albergo-economici-rimini\.ll33\.info
+https?:\/\/([^\/]*\.)?albergo-parigi\.freespase\.info
+https?:\/\/([^\/]*\.)?albums-proshots\.com
+https?:\/\/([^\/]*\.)?alchita\.goodforum\.net
+https?:\/\/([^\/]*\.)?alchita\.grafbb\.com
+https?:\/\/([^\/]*\.)?aldabridgeman\.site\.io
+https?:\/\/([^\/]*\.)?aldarta\.discutforum\.com
+https?:\/\/([^\/]*\.)?aldomc\.jc\.pl
+https?:\/\/([^\/]*\.)?aldronboc\.lightbb\.com
+https?:\/\/([^\/]*\.)?aleluja\.asp2\.cz
+https?:\/\/([^\/]*\.)?alerou\.su\.pl
+https?:\/\/([^\/]*\.)?aleteta\.com
+https?:\/\/([^\/]*\.)?alexaner\.etowns\.net
+https?:\/\/([^\/]*\.)?alexmovies-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?alhilalb\.forumzen\.com
+https?:\/\/([^\/]*\.)?alias\.asp2\.cz
+https?:\/\/([^\/]*\.)?aliyah\.phpbbx\.de
+https?:\/\/([^\/]*\.)?aliza\.phpbbx\.de
+https?:\/\/([^\/]*\.)?all-rnb\.com
+https?:\/\/([^\/]*\.)?all4sexonline\.biz
+https?:\/\/([^\/]*\.)?allabout-casino\.com
+https?:\/\/([^\/]*\.)?allabout-poker\.com
+https?:\/\/([^\/]*\.)?allabout-poker\.net
+https?:\/\/([^\/]*\.)?allabout\.onplex\.de
+https?:\/\/([^\/]*\.)?allaboutx\.freeasyhost\.com
+https?:\/\/([^\/]*\.)?allaboutx\.hostingclub\.de
+https?:\/\/([^\/]*\.)?allaboutx\.m5t\.de
+https?:\/\/([^\/]*\.)?allall\.org
+https?:\/\/([^\/]*\.)?allcamsguide\.info
+https?:\/\/([^\/]*\.)?allcars\.digitalzones\.com
+https?:\/\/([^\/]*\.)?allcheapchat\.info
+https?:\/\/([^\/]*\.)?alldep\.com
+https?:\/\/([^\/]*\.)?allearjah\.com
+https?:\/\/([^\/]*\.)?alledasar\.com
+https?:\/\/([^\/]*\.)?allegra\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?allegradgeneric\.sblog\.cz
+https?:\/\/([^\/]*\.)?allen-edmonds-shoes\.info
+https?:\/\/([^\/]*\.)?allergy\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?allforsale\.org
+https?:\/\/([^\/]*\.)?allgoods\.be
+https?:\/\/([^\/]*\.)?allkinds-pills\.com
+https?:\/\/([^\/]*\.)?allkoholik\.php5\.cz
+https?:\/\/([^\/]*\.)?alllb\.com
+https?:\/\/([^\/]*\.)?alllf\.com
+https?:\/\/([^\/]*\.)?alllk\.com
+https?:\/\/([^\/]*\.)?alllm\.com
+https?:\/\/([^\/]*\.)?allln\.com
+https?:\/\/([^\/]*\.)?alllp\.com
+https?:\/\/([^\/]*\.)?allnewfilm\.com
+https?:\/\/([^\/]*\.)?allprintposters\.com
+https?:\/\/([^\/]*\.)?allsitesaccess-com-awfxbo7d\.blogspot\.com
+https?:\/\/([^\/]*\.)?alltel-ringtonedyd\.blogspot\.com
+https?:\/\/([^\/]*\.)?allvids-net-k0bdg\.blogspot\.com
+https?:\/\/([^\/]*\.)?allvids-net-kd0pe5\.blogspot\.com
+https?:\/\/([^\/]*\.)?allweb2006\.info
+https?:\/\/([^\/]*\.)?almgarc\.com
+https?:\/\/([^\/]*\.)?alneja\.goodbb\.net
+https?:\/\/([^\/]*\.)?alnm5\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?alona\.phpbbx\.de
+https?:\/\/([^\/]*\.)?alonso\.stabilt\.se
+https?:\/\/([^\/]*\.)?alphabadgirls\.info
+https?:\/\/([^\/]*\.)?alprazolam-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?alprazolam-xanax\.com
+https?:\/\/([^\/]*\.)?alpy01\.republika\.pl
+https?:\/\/([^\/]*\.)?alracmon\.zikforum\.com
+https?:\/\/([^\/]*\.)?altacebuy\.page\.to
+https?:\/\/([^\/]*\.)?altacebuycheap\.gameday\.de
+https?:\/\/([^\/]*\.)?altacebuygeneric\.cut\.by
+https?:\/\/([^\/]*\.)?altacegeneric\.dive\.to
+https?:\/\/([^\/]*\.)?altacegenericcheap\.notrix\.at
+https?:\/\/([^\/]*\.)?altazel\.blogcu\.com
+https?:\/\/([^\/]*\.)?altrocvi\.jc\.pl
+https?:\/\/([^\/]*\.)?altse\.com
+https?:\/\/([^\/]*\.)?always-credit\.com
+https?:\/\/([^\/]*\.)?always-drugs\.com
+https?:\/\/([^\/]*\.)?always-medications\.com
+https?:\/\/([^\/]*\.)?alyssa-teen\.freeinsite\.net
+https?:\/\/([^\/]*\.)?amal-fucking-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-ass-free-gallery\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-atk-hairy-heather-natural\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-black-naked\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-blonde-cock\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-boob-bouncing\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-contacto-sexo\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-cum-queen\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-foto-free-nude\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-free-erotic\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-free-grannie-picture-xxx\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-free-indian-page-sex\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?amateur-free-man-naked\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-free-sex-xxx\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?amateur-fucking-milf\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-fucking-public\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-hard-com-a4w\.blogspot\.com
+https?:\/\/([^\/]*\.)?amateur-home-photo\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-index-nude\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-interracial-porn\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-man-naked\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-model-for-hire\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-nympho-wife-site\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-pages-porn\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?amateur-porn-clip-blog446\.blogspot\.com
+https?:\/\/([^\/]*\.)?amateur-porn-clip-blogqh1\.blogspot\.com
+https?:\/\/([^\/]*\.)?amateur-porn-clip-blogrv6\.blogspot\.com
+https?:\/\/([^\/]*\.)?amateur-porn-xxx\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-pussy-redhead\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?amateur-teen-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?amateur-teen-sex-movie\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?amateurcurves-com-silib\.blogspot\.com
+https?:\/\/([^\/]*\.)?amateurcurves-com-t7zh3\.blogspot\.com
+https?:\/\/([^\/]*\.)?amazingcum-com-bd7uu0\.blogspot\.com
+https?:\/\/([^\/]*\.)?ambien-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?ambien\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ambien\.conto\.pl
+https?:\/\/([^\/]*\.)?ambien\.esguay\.com
+https?:\/\/([^\/]*\.)?ambien\.fws1\.com
+https?:\/\/([^\/]*\.)?ambien\.goodpharm\.info
+https?:\/\/([^\/]*\.)?ambien\.hav\.pl
+https?:\/\/([^\/]*\.)?ambien\.presteert\.nl
+https?:\/\/([^\/]*\.)?ambien\.skocz\.net
+https?:\/\/([^\/]*\.)?ambiena\.myblogvoice\.com
+https?:\/\/([^\/]*\.)?ambienpills\.coz\.in
+https?:\/\/([^\/]*\.)?ambienrx\.weboficial\.com
+https?:\/\/([^\/]*\.)?ambiens\.ru\.tf
+https?:\/\/([^\/]*\.)?amcq8\.szm\.sk
+https?:\/\/([^\/]*\.)?amenities\.8tt\.org
+https?:\/\/([^\/]*\.)?americansrebuildingneworleans\.com
+https?:\/\/([^\/]*\.)?amicizia-incontri\.bb22\.info
+https?:\/\/([^\/]*\.)?amico-maria\.freespase\.info
+https?:\/\/([^\/]*\.)?amidnitesunset\.blogspot\.com
+https?:\/\/([^\/]*\.)?amino-vera\.blogspot\.com
+https?:\/\/([^\/]*\.)?amira\.phpbbx\.de
+https?:\/\/([^\/]*\.)?amjrs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?amoxil-500mg\.micrositehosting\.info
+https?:\/\/([^\/]*\.)?ampposo\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?amstre\.com
+https?:\/\/([^\/]*\.)?amyhunt\.com
+https?:\/\/([^\/]*\.)?amyjkb\.blogspot\.com
+https?:\/\/([^\/]*\.)?anacondasex\.info
+https?:\/\/([^\/]*\.)?anal-bareback-cum-fucking-shot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?anal-coks-fuck-huge-mega\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?anal-cum-farting\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?anal-cum-fuck\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?anal-dildo-bondage\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-ebony-free-pic\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-ebony-fucking\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-first-pic-time\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-first-time\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-free-mature-sex\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?anal-g\.com
+https?:\/\/([^\/]*\.)?anal-gang-bang-xxx\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-hard-male\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-hardcore-max-sex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?anal-painful-virgin\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?anal-self-penetration\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?anal-sex-teen-tgp\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?anal-sex-video-x-g-g\.blogspot\.com
+https?:\/\/([^\/]*\.)?anal-sex-virgin\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?anal-shemale-site\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?analsexeum\.blogspot\.com
+https?:\/\/([^\/]*\.)?anath\.phpbbx\.de
+https?:\/\/([^\/]*\.)?anbipbm\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?andrewsaluk\.com
+https?:\/\/([^\/]*\.)?andy-roddick-dick\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?angelcakez\.blogspot\.com
+https?:\/\/([^\/]*\.)?angry-sister\.blogspot\.com
+https?:\/\/([^\/]*\.)?anicke\.republika\.pl
+https?:\/\/([^\/]*\.)?anime-art-gay\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?anime-free-hardcore-info-remember\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?anime-porn-clip-blog5a7\.blogspot\.com
+https?:\/\/([^\/]*\.)?ann-angel-tpi\.blogspot\.com
+https?:\/\/([^\/]*\.)?anna-morgan\.blogspot\.com
+https?:\/\/([^\/]*\.)?annqy\.szm\.sk
+https?:\/\/([^\/]*\.)?annugel--h\.blogspot\.com
+https?:\/\/([^\/]*\.)?annuncio-lavoro-milano\.host24h\.info
+https?:\/\/([^\/]*\.)?annuncio-lavoro-segretaria\.freehostss\.info
+https?:\/\/([^\/]*\.)?annuncio-online\.heroez\.info
+https?:\/\/([^\/]*\.)?anteyi\.cn
+https?:\/\/([^\/]*\.)?anthemboy8\.blogspot\.com
+https?:\/\/([^\/]*\.)?anti-aging-skin\.hotmail\.ru
+https?:\/\/([^\/]*\.)?anti_agin_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?anti_aging_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?antidepressants\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?anus-lick-right-way\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?anw66\.blogspot\.com
+https?:\/\/([^\/]*\.)?anxiety\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?anylight4u\.com
+https?:\/\/([^\/]*\.)?aosk\.com
+https?:\/\/([^\/]*\.)?apesapoppin\.blogspot\.com
+https?:\/\/([^\/]*\.)?apextwin\.ifrance\.com
+https?:\/\/([^\/]*\.)?apextwin\.php5\.cz
+https?:\/\/([^\/]*\.)?aponte\.net
+https?:\/\/([^\/]*\.)?appartamento-roma-vacanza\.ll11\.info
+https?:\/\/([^\/]*\.)?applyforit\.ucsd\.edu
+https?:\/\/([^\/]*\.)?apxgmlp\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?arbundar\.forumzen\.com
+https?:\/\/([^\/]*\.)?arcade\.ya\.com
+https?:\/\/([^\/]*\.)?areaseo\.com
+https?:\/\/([^\/]*\.)?arent-boot-made-these-walkin\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?argentina-gay-travel\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ariella\.phpbbx\.de
+https?:\/\/([^\/]*\.)?arielle\.phpbbx\.de
+https?:\/\/([^\/]*\.)?arinastes\.com
+https?:\/\/([^\/]*\.)?aristocort\.4\.pl
+https?:\/\/([^\/]*\.)?arizonamortgage-x\.com
+https?:\/\/([^\/]*\.)?arjj2\.szm\.sk
+https?:\/\/([^\/]*\.)?arketon24\.blogspot\.com
+https?:\/\/([^\/]*\.)?armyanch\.galeon\.com
+https?:\/\/([^\/]*\.)?arosson\.com
+https?:\/\/([^\/]*\.)?arsrz\.szm\.sk
+https?:\/\/([^\/]*\.)?art-xxx\.com
+https?:\/\/([^\/]*\.)?artbennett\.net
+https?:\/\/([^\/]*\.)?arthuriacasino\.com
+https?:\/\/([^\/]*\.)?artnposter\.com
+https?:\/\/([^\/]*\.)?arwuudes\.forumzen\.com
+https?:\/\/([^\/]*\.)?arwuuzet\.forumzen\.com
+https?:\/\/([^\/]*\.)?aryls\.info
+https?:\/\/([^\/]*\.)?asaearh\.blogspot\.com
+https?:\/\/([^\/]*\.)?asaia\.blogspot\.com
+https?:\/\/([^\/]*\.)?asas3\.com
+https?:\/\/([^\/]*\.)?ascht\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?asdiaalr\.forumzen\.com
+https?:\/\/([^\/]*\.)?aselfbas\.forumzen\.com
+https?:\/\/([^\/]*\.)?asfreyl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ashkenazi\.phpbbx\.de
+https?:\/\/([^\/]*\.)?ashlee--serena\.freeinsite\.net
+https?:\/\/([^\/]*\.)?ashlee-clip-free-hand-job\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?asian-bang-gang\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?asian-cum-sucker\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?asian-download-free-porn-video\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?asian-facial\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?asian-fucking-man-woman\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?asian-girl-anal\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?asian-giving-blow-job\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?asian-mmf\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?asian-porn-clip-info6g5\.blogspot\.com
+https?:\/\/([^\/]*\.)?asian-pussysjy\.blogspot\.com
+https?:\/\/([^\/]*\.)?asian-spread-leg\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?asian-teens\.freeinsite\.net
+https?:\/\/([^\/]*\.)?asiansexpvx\.blogspot\.com
+https?:\/\/([^\/]*\.)?asjnquaq\.com
+https?:\/\/([^\/]*\.)?asnmeq\.com
+https?:\/\/([^\/]*\.)?asrendes\.forumzen\.com
+https?:\/\/([^\/]*\.)?asricrac\.forumzen\.com
+https?:\/\/([^\/]*\.)?ass-bare-screensaver-sexy\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?ass-big-black-pussy\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ass-big-free-woman\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?ass-bitch-hot\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?ass-cock-large-nice-tit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?ass-cum-gay-hole\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ass-cute-fat\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ass-day-great-its-somebodys-whop\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ass-dildo-in-man-use\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ass-free-huge-movie-phat-tit\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?ass-free-mature-photo\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?ass-free-naked\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?ass-fucked-porn-star\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ass-hit-up-yo\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?ass-hole-test\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?ass-lick-slut-that\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?ass-man-photo-rumprater-com-woman\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ass-naked-pic-woman-young\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?ass-sa\.com
+https?:\/\/([^\/]*\.)?ass-traffic-thumb\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?assfilled-cofon\.blogspot\.com
+https?:\/\/([^\/]*\.)?assfucking-video\.hereandnow0\.com
+https?:\/\/([^\/]*\.)?assicurazione-moto\.freehostss\.info
+https?:\/\/([^\/]*\.)?asslick-free\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?associate1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?assparade-com-cdr6rm3\.blogspot\.com
+https?:\/\/([^\/]*\.)?astmiv\.com
+https?:\/\/([^\/]*\.)?astsam\.com
+https?:\/\/([^\/]*\.)?aswsu-ddp\.wsu\.edu
+https?:\/\/([^\/]*\.)?atar5\.szm\.sk
+https?:\/\/([^\/]*\.)?atashi-tada\.blogspot\.com
+https?:\/\/([^\/]*\.)?atchina\.com\.cn
+https?:\/\/([^\/]*\.)?atenololhqs\.blogspot\.com
+https?:\/\/([^\/]*\.)?atetech\.com\.cn
+https?:\/\/([^\/]*\.)?athenaindia\.com
+https?:\/\/([^\/]*\.)?ativan\.hav\.pl
+https?:\/\/([^\/]*\.)?ativan1\.skocz\.net
+https?:\/\/([^\/]*\.)?ativans\.eu\.tf
+https?:\/\/([^\/]*\.)?atkmodels-com-g2mc2j\.blogspot\.com
+https?:\/\/([^\/]*\.)?atkmodels-h6\.blogspot\.com
+https?:\/\/([^\/]*\.)?atmoc\.com
+https?:\/\/([^\/]*\.)?atrapy\.pl
+https?:\/\/([^\/]*\.)?auabkc3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?audibookclub\.info
+https?:\/\/([^\/]*\.)?audition-mature-sexy-video-woman\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?audx4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?auejds\.com
+https?:\/\/([^\/]*\.)?aufx8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?augmentin\.4\.pl
+https?:\/\/([^\/]*\.)?augmentinbuy\.megapage\.de
+https?:\/\/([^\/]*\.)?augmentinbuygeneric\.playsite\.de
+https?:\/\/([^\/]*\.)?augmentincheapbuy\.mine\.at
+https?:\/\/([^\/]*\.)?augmentincheapgeneric\.vacations\.to
+https?:\/\/([^\/]*\.)?augmentingeneric\.dive\.to
+https?:\/\/([^\/]*\.)?aumkryl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?auntmia-ivmo1ckhbf\.blogspot\.com
+https?:\/\/([^\/]*\.)?auqkz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?aurar\.info
+https?:\/\/([^\/]*\.)?aurney\.blogspot\.com
+https?:\/\/([^\/]*\.)?aurora-snow-double-anal\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?auto-insurance-2007\.com
+https?:\/\/([^\/]*\.)?auto-insurance-quote\.100freemb\.com
+https?:\/\/([^\/]*\.)?auto-occasioni\.bb22\.info
+https?:\/\/([^\/]*\.)?autoere\.info
+https?:\/\/([^\/]*\.)?autoinsurancevyo\.blogspot\.com
+https?:\/\/([^\/]*\.)?automobileliberty\.cn
+https?:\/\/([^\/]*\.)?ava-devine-friend-hot-mom\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?avalonhyip\.com
+https?:\/\/([^\/]*\.)?avenue-x\.cn
+https?:\/\/([^\/]*\.)?avoidcar\.info
+https?:\/\/([^\/]*\.)?awardspace\.biz
+https?:\/\/([^\/]*\.)?awardspace\.info
+https?:\/\/([^\/]*\.)?awerda\.com
+https?:\/\/([^\/]*\.)?aweu\.cabspace\.com
+https?:\/\/([^\/]*\.)?axfa5\.szm\.sk
+https?:\/\/([^\/]*\.)?axnc0\.szm\.sk
+https?:\/\/([^\/]*\.)?axqui\.szm\.sk
+https?:\/\/([^\/]*\.)?axtu7\.szm\.sk
+https?:\/\/([^\/]*\.)?ayann\.dl\.pl
+https?:\/\/([^\/]*\.)?aynippa\.blogspot\.com
+https?:\/\/([^\/]*\.)?azn-chickadee\.blogspot\.com
+https?:\/\/([^\/]*\.)?azu-erlove\.blogspot\.com
+https?:\/\/([^\/]*\.)?azur3skye\.blogspot\.com
+https?:\/\/([^\/]*\.)?azzacash\.com
+https?:\/\/([^\/]*\.)?b-b-free-hentai-movie-j\.blogspot\.com
+https?:\/\/([^\/]*\.)?b-d-download-porn-movie-n\.blogspot\.com
+https?:\/\/([^\/]*\.)?b\.cn01\.hn\.org
+https?:\/\/([^\/]*\.)?babe-cam-filipina-web\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?babe-dutch-erotic-lingerie\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?babe-forum-picture-porn-star\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?babe-hot-mature\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?babesglamour-com-jotut\.blogspot\.com
+https?:\/\/([^\/]*\.)?babesglamour-com-mp21gz\.blogspot\.com
+https?:\/\/([^\/]*\.)?babibian\.dl\.pl
+https?:\/\/([^\/]*\.)?babooth\.ifrance\.com
+https?:\/\/([^\/]*\.)?babyhere\.net
+https?:\/\/([^\/]*\.)?bachelor1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?back-bare-cum-dripping-fucked-humiliated-pussy-wealthy-woman\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?backroom-facial-margarita\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bad-butt-byron-rub\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bad-butt-byrons-rub\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?bad-credit-home-loanksl\.blogspot\.com
+https?:\/\/([^\/]*\.)?badassteens-com-gnvrh6\.blogspot\.com
+https?:\/\/([^\/]*\.)?badassteens-com-gyhb23dyw\.blogspot\.com
+https?:\/\/([^\/]*\.)?badgirlsblog-com-dcfmx8n2p\.blogspot\.com
+https?:\/\/([^\/]*\.)?badipex\.gog\.pl
+https?:\/\/([^\/]*\.)?bahatoca\.org
+https?:\/\/([^\/]*\.)?baikal-guide\.com
+https?:\/\/([^\/]*\.)?baikal-hotel\.info
+https?:\/\/([^\/]*\.)?baikal-shop\.com
+https?:\/\/([^\/]*\.)?baikal-tour\.biz
+https?:\/\/([^\/]*\.)?baikalguide\.com
+https?:\/\/([^\/]*\.)?baikalshop\.info
+https?:\/\/([^\/]*\.)?bakadeshi\.ifrance\.com
+https?:\/\/([^\/]*\.)?bakamandy\.blogspot\.com
+https?:\/\/([^\/]*\.)?bambulka\.info
+https?:\/\/([^\/]*\.)?bamigreenhouse\.com\.cn
+https?:\/\/([^\/]*\.)?bamima\.com
+https?:\/\/([^\/]*\.)?bandaoti\.dzsc\.com
+https?:\/\/([^\/]*\.)?bang-clip-gang-gang-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?bang-gallery-gang-mature-woman\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?bang-gang-sex-tokyo\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?bank-of-america-credit-cardtja\.blogspot\.com
+https?:\/\/([^\/]*\.)?bank-of-fetish-resource\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?banns\.info
+https?:\/\/([^\/]*\.)?baqaek9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?baquma\.com
+https?:\/\/([^\/]*\.)?bareback-fuck-gay\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?barefootmaniacs-com-rpw1i1\.blogspot\.com
+https?:\/\/([^\/]*\.)?barely18-teens-com-sin\.blogspot\.com
+https?:\/\/([^\/]*\.)?barrystickets\.com
+https?:\/\/([^\/]*\.)?bartik\.asp2\.cz
+https?:\/\/([^\/]*\.)?barulena\.jconserv\.net
+https?:\/\/([^\/]*\.)?basalvar\.dl\.pl
+https?:\/\/([^\/]*\.)?basdeler\.su\.pl
+https?:\/\/([^\/]*\.)?basdombo\.dl\.pl
+https?:\/\/([^\/]*\.)?baslachi\.lightbb\.com
+https?:\/\/([^\/]*\.)?baslalhi\.myrealboard\.com
+https?:\/\/([^\/]*\.)?baslarol\.dl\.pl
+https?:\/\/([^\/]*\.)?basmonzel\.dl\.pl
+https?:\/\/([^\/]*\.)?baspaser\.zikforum\.com
+https?:\/\/([^\/]*\.)?baspasrac\.dl\.pl
+https?:\/\/([^\/]*\.)?baspasvi\.cultureforum\.net
+https?:\/\/([^\/]*\.)?basracchi\.dl\.pl
+https?:\/\/([^\/]*\.)?basteg\.com
+https?:\/\/([^\/]*\.)?bastim\.com
+https?:\/\/([^\/]*\.)?bastnecli\.frbb\.net
+https?:\/\/([^\/]*\.)?bastre\.com
+https?:\/\/([^\/]*\.)?bastru\.com
+https?:\/\/([^\/]*\.)?basuma\.com
+https?:\/\/([^\/]*\.)?bath-hardcore-teen\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bath-product\.hotmail\.ru
+https?:\/\/([^\/]*\.)?bath-product\.pochta\.ru
+https?:\/\/([^\/]*\.)?bath_product\.chat\.ru
+https?:\/\/([^\/]*\.)?bathroom-fuck\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?bbcialis\.ovp\.pl
+https?:\/\/([^\/]*\.)?bbfast\.com
+https?:\/\/([^\/]*\.)?bbndsxtg-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?bbs\.cuesta\.edu
+https?:\/\/([^\/]*\.)?bbsporn\.com
+https?:\/\/([^\/]*\.)?bbuybaliumonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?bbuycialisonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?bbuylevitraonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?bbuytram\.blogcu\.com
+https?:\/\/([^\/]*\.)?bbuytramadolonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?bbuyviagraonlin\.forumlivre\.com
+https?:\/\/([^\/]*\.)?bbw-busty\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?bbw-club-in-san-diego\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bbw-old\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bbw-porn-clip-infotir\.blogspot\.com
+https?:\/\/([^\/]*\.)?bcam8\.szm\.sk
+https?:\/\/([^\/]*\.)?bcdh\.cn
+https?:\/\/([^\/]*\.)?bcialis\.c24\.pl
+https?:\/\/([^\/]*\.)?bcxz8\.szm\.sk
+https?:\/\/([^\/]*\.)?bdsm-lesbian-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?bdsm-personals-houston\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?bdsm-toy\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bdsm-video\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bdsm-vintage\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?bdsmvideos-net-wb55nc\.blogspot\.com
+https?:\/\/([^\/]*\.)?bdsmvideos-net-wfa5qu\.blogspot\.com
+https?:\/\/([^\/]*\.)?bdsmvideos-net-wvckcgq2o\.blogspot\.com
+https?:\/\/([^\/]*\.)?beaffaired\.com
+https?:\/\/([^\/]*\.)?bear-build-gay\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bear-chubby-young\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?bear-terry\.blogspot\.com
+https?:\/\/([^\/]*\.)?beastiality-live\.com
+https?:\/\/([^\/]*\.)?beautiful-ass-pic\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?beautiful-blonde-pole-dancer\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?beautifulzdrawing\.sex-systems\.com
+https?:\/\/([^\/]*\.)?beautyass-com-e1ca\.blogspot\.com
+https?:\/\/([^\/]*\.)?becloudsiss\.thehostcity\.com
+https?:\/\/([^\/]*\.)?bedspread-king\.keckins\.be
+https?:\/\/([^\/]*\.)?begcrucial\.justfree\.com
+https?:\/\/([^\/]*\.)?beginninghouse\.com
+https?:\/\/([^\/]*\.)?begot\.info
+https?:\/\/([^\/]*\.)?beijing-door\.cn
+https?:\/\/([^\/]*\.)?beijingimpression\.com
+https?:\/\/([^\/]*\.)?bekahboo3\.blogspot\.com
+https?:\/\/([^\/]*\.)?beldam\.dns1\.us
+https?:\/\/([^\/]*\.)?bemix\.info
+https?:\/\/([^\/]*\.)?benixon\.dl\.pl
+https?:\/\/([^\/]*\.)?benoit-r86\.blogspot\.com
+https?:\/\/([^\/]*\.)?benson-g68a\.blogspot\.com
+https?:\/\/([^\/]*\.)?benz-h51\.blogspot\.com
+https?:\/\/([^\/]*\.)?beqy\.org
+https?:\/\/([^\/]*\.)?berenupa\.info
+https?:\/\/([^\/]*\.)?berkeley-mdi56f\.blogspot\.com
+https?:\/\/([^\/]*\.)?berlin-o3g\.blogspot\.com
+https?:\/\/([^\/]*\.)?bernie-b18\.blogspot\.com
+https?:\/\/([^\/]*\.)?berrycow\.blogspot\.com
+https?:\/\/([^\/]*\.)?beryl-c3\.blogspot\.com
+https?:\/\/([^\/]*\.)?best-hotels-inns\.com
+https?:\/\/([^\/]*\.)?best-porn-clip-zone0mp\.blogspot\.com
+https?:\/\/([^\/]*\.)?best2006\.info
+https?:\/\/([^\/]*\.)?best568\.com
+https?:\/\/([^\/]*\.)?bestaftor\.com
+https?:\/\/([^\/]*\.)?bestallmed\.info
+https?:\/\/([^\/]*\.)?bestbuyonlinebooks\.com
+https?:\/\/([^\/]*\.)?bestcityhal\.com
+https?:\/\/([^\/]*\.)?bestcyberfish\.com
+https?:\/\/([^\/]*\.)?bestfreegift\.com
+https?:\/\/([^\/]*\.)?bestgames-winner\.com
+https?:\/\/([^\/]*\.)?besthallet\.com
+https?:\/\/([^\/]*\.)?bestinternetexplorer\.info
+https?:\/\/([^\/]*\.)?bestlowmortgagerates\.com
+https?:\/\/([^\/]*\.)?bestmaiden\.com
+https?:\/\/([^\/]*\.)?bestmercedesbez\.info
+https?:\/\/([^\/]*\.)?bestmitsubishiparts\.info
+https?:\/\/([^\/]*\.)?bestmp3online\.com
+https?:\/\/([^\/]*\.)?bestmp3online\.net
+https?:\/\/([^\/]*\.)?bestofe\.com
+https?:\/\/([^\/]*\.)?bestonline-medication\.com
+https?:\/\/([^\/]*\.)?bestonline-shopping\.com
+https?:\/\/([^\/]*\.)?bestorlean\.com
+https?:\/\/([^\/]*\.)?bestpricebentley\.info
+https?:\/\/([^\/]*\.)?bestsellsite\.com
+https?:\/\/([^\/]*\.)?bestxxxanal-1\.tripod\.com
+https?:\/\/([^\/]*\.)?bestyourown\.info
+https?:\/\/([^\/]*\.)?beta-dg174ivc\.blogspot\.com
+https?:\/\/([^\/]*\.)?beth-t6h6\.blogspot\.com
+https?:\/\/([^\/]*\.)?bethany-ezjn\.blogspot\.com
+https?:\/\/([^\/]*\.)?betsie-w4080\.blogspot\.com
+https?:\/\/([^\/]*\.)?betsy-rgxm2e\.blogspot\.com
+https?:\/\/([^\/]*\.)?better\.ws
+https?:\/\/([^\/]*\.)?betty-gy\.blogspot\.com
+https?:\/\/([^\/]*\.)?beverly-hax82jc3md\.blogspot\.com
+https?:\/\/([^\/]*\.)?bevjy\.szm\.sk
+https?:\/\/([^\/]*\.)?beyonce-knowles-nude\.blogspot\.com
+https?:\/\/([^\/]*\.)?bfekd\.szm\.sk
+https?:\/\/([^\/]*\.)?bfgtxs4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?bfi-k5xk7bnu\.blogspot\.com
+https?:\/\/([^\/]*\.)?bfnh2\.szm\.sk
+https?:\/\/([^\/]*\.)?bfqn\.com
+https?:\/\/([^\/]*\.)?bfvsa\.szm\.sk
+https?:\/\/([^\/]*\.)?bgpkvcr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?bhncvw-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?bhqay\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?bi-britney-spears-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?bi-whales\.blogspot\.com
+https?:\/\/([^\/]*\.)?bi-xxx-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?bianca-i7yj\.blogspot\.com
+https?:\/\/([^\/]*\.)?bianpinqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?bicx7\.szm\.sk
+https?:\/\/([^\/]*\.)?bid-sohardcore-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?bidsex\.net
+https?:\/\/([^\/]*\.)?big-big-clit-tit\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?big-bitch-booty-fucked-getting\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?big-black-cock-movie-clip\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?big-black-cock-pic\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?big-black-dick-fat-long\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?big-blonde-mature-tit\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-blonde-teen-tit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-body-fuck\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?big-boob-huge-large\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?big-bouncing-boob-movie\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?big-butt-shemale\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?big-cock-gay-guy-have\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?big-cock-hard-sex\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-cum-cum-shot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?big-cum-movie-swallow-tit-xxx\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-dick-fuck-hot-love-sexy-shemale-that\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?big-ebony-free-gallery-tit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-fat-boob\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-free-lesbian-movie-online-porn\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?big-huge-gigantic-boob\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?big-leg-babes\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?big-leg-nice\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?big-okfl\.blogspot\.com
+https?:\/\/([^\/]*\.)?big-strap-on-dildo\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?big-tit-round-ass-jasmine\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?big-tit-round-ass-maria\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?big-tit-round-ass-picture\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?big-tits\.100freemb\.com
+https?:\/\/([^\/]*\.)?big-titted-bitch\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big-titts-round-ass\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?big-young-cock\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?big\.de\.com
+https?:\/\/([^\/]*\.)?bigapple\.dtdns\.net
+https?:\/\/([^\/]*\.)?bigassadventure-com-g4lvyk\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigbird-aus\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigbreastlovers-com-suqoq\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigcockteenaddiction-com-km\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigcockteenaddiction-com-kpqf40\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigdog-b14q6mwev\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigfoot-c7l\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigfreesex-com-i2csy2\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigfreesex-com-subub\.blogspot\.com
+https?:\/\/([^\/]*\.)?biggest-cock-thickest\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?biggest-dildo-fuck-world\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?biggiebestparis\.com
+https?:\/\/([^\/]*\.)?biglietti-auguri\.net
+https?:\/\/([^\/]*\.)?biglietto-augurio\.freehostss\.info
+https?:\/\/([^\/]*\.)?bigmac-detr0i6y\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigman-tycdhe62d\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigmouthfuls-com-rvl7ep\.blogspot\.com
+https?:\/\/([^\/]*\.)?bignaturals-com-w0\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigpenis\.digitalzones\.com
+https?:\/\/([^\/]*\.)?bigtitpatrol-com-bub8db06d\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigtitsfans-com-rxc3ya\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigtitsroundasses-com-b6auqkd60\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigtitsroundasses-com-redeg\.blogspot\.com
+https?:\/\/([^\/]*\.)?bigtitsroundasses-com-rj85t35x3\.blogspot\.com
+https?:\/\/([^\/]*\.)?biib4\.szm\.sk
+https?:\/\/([^\/]*\.)?bike-boot-dirt-riding\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bike-night\.grimgoe\.be
+https?:\/\/([^\/]*\.)?bikini-wax\.phpbb2\.us
+https?:\/\/([^\/]*\.)?bikinixxx-777now\.tripod\.com
+https?:\/\/([^\/]*\.)?bilbo-ea47j\.blogspot\.com
+https?:\/\/([^\/]*\.)?billy-r4negy1zwm\.blogspot\.com
+https?:\/\/([^\/]*\.)?binky-hu\.blogspot\.com
+https?:\/\/([^\/]*\.)?bio\.research\.ucsc\.edu
+https?:\/\/([^\/]*\.)?biopharmasite\.biz
+https?:\/\/([^\/]*\.)?biperq\.com
+https?:\/\/([^\/]*\.)?bird-iay2s\.blogspot\.com
+https?:\/\/([^\/]*\.)?birdie\.101freehost\.com
+https?:\/\/([^\/]*\.)?birth-control\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?bisexual-cartoon-sex\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?bisexuals-cyber-fuck-horny-lesbian-lezzies-sex\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?bisson\.onthenet\.as
+https?:\/\/([^\/]*\.)?bit-tit-lesbian\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?bitch-fat-hot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?bituka\.com
+https?:\/\/([^\/]*\.)?bivxr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?bizaffiliatecenter\.com
+https?:\/\/([^\/]*\.)?bizarre-love-triangle-lyric-by-frente\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bizarre-sex-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?bizhat\.com
+https?:\/\/([^\/]*\.)?bizhome\.org
+https?:\/\/([^\/]*\.)?bj-trj\.com
+https?:\/\/([^\/]*\.)?bjaoyunhui\.com
+https?:\/\/([^\/]*\.)?bjcee\.com
+https?:\/\/([^\/]*\.)?bjicp\.com
+https?:\/\/([^\/]*\.)?bjicp\.freewebpage\.org
+https?:\/\/([^\/]*\.)?bjicp\.net
+https?:\/\/([^\/]*\.)?bjicp\.org
+https?:\/\/([^\/]*\.)?bjjinhan\.com
+https?:\/\/([^\/]*\.)?bjlzhh\.com
+https?:\/\/([^\/]*\.)?bjocmc3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?bjqmzx\.com
+https?:\/\/([^\/]*\.)?bjrfinfo\.com
+https?:\/\/([^\/]*\.)?bjsscc\.com\.cn
+https?:\/\/([^\/]*\.)?bjtranslate\.com
+https?:\/\/([^\/]*\.)?bjwczx\.com
+https?:\/\/([^\/]*\.)?bjxiongfei\.com
+https?:\/\/([^\/]*\.)?bjxunda\.com
+https?:\/\/([^\/]*\.)?bjzktd\.com
+https?:\/\/([^\/]*\.)?bkclamcp\.t35\.com
+https?:\/\/([^\/]*\.)?bksar\.szm\.sk
+https?:\/\/([^\/]*\.)?bkzor\.szm\.sk
+https?:\/\/([^\/]*\.)?black-amateur-movie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-asian-anal\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?black-boob-sex\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?black-booty-movies-com-i0\.blogspot\.com
+https?:\/\/([^\/]*\.)?black-butt-fat-gay-man\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?black-chick-fuck\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?black-chubby-ebony\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?black-clip-free-full-porn-blog4t5\.blogspot\.com
+https?:\/\/([^\/]*\.)?black-cock-facial\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?black-cock-monster\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?black-cock-white-cunt\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?black-cum-shot-movie\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-domination-female-free-picture-teen\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?black-ebony-free-spreading-tgp\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?black-fat-boob\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?black-free-gay-man-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?black-gay-club\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?black-gay-sex-site\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?black-gay-teen-sex\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?black-hoe-hardcore-sex-gallery\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?black-hoe-that-suck-dick\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?black-jack-4u\.net
+https?:\/\/([^\/]*\.)?black-jack-black\.blogspot\.com
+https?:\/\/([^\/]*\.)?black-jacks\.us
+https?:\/\/([^\/]*\.)?black-jeweler\.org
+https?:\/\/([^\/]*\.)?black-leg-open-wide\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-lesbian-story\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?black-man-fucking-white-sluts\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-monster-boob\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-monster-cock-mpeg\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-on-blonde-sex-picture\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?black-porn-clip-news8bn\.blogspot\.com
+https?:\/\/([^\/]*\.)?black-white-boob\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?black-wide-leg-pants\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?black-woman-sucking-dick\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blackmisheru\.50webs\.org
+https?:\/\/([^\/]*\.)?blade\.host-page\.com
+https?:\/\/([^\/]*\.)?blade1\.host-page\.com
+https?:\/\/([^\/]*\.)?blade10\.host-page\.com
+https?:\/\/([^\/]*\.)?blade2\.host-page\.com
+https?:\/\/([^\/]*\.)?blade4\.host-page\.com
+https?:\/\/([^\/]*\.)?blade5\.host-page\.com
+https?:\/\/([^\/]*\.)?blade6\.host-page\.com
+https?:\/\/([^\/]*\.)?blade7\.host-page\.com
+https?:\/\/([^\/]*\.)?blade8\.host-page\.com
+https?:\/\/([^\/]*\.)?blade9\.host-page\.com
+https?:\/\/([^\/]*\.)?blagoslovenie\.rovno\.ua
+https?:\/\/([^\/]*\.)?blanca-tf50a\.blogspot\.com
+https?:\/\/([^\/]*\.)?blapt\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?blathe\.com
+https?:\/\/([^\/]*\.)?blazer-wwn\.blogspot\.com
+https?:\/\/([^\/]*\.)?blbdg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?blboys-com-wsq27\.blogspot\.com
+https?:\/\/([^\/]*\.)?blbthxw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?blendermedia\.com
+https?:\/\/([^\/]*\.)?blevitra\.ovp\.pl
+https?:\/\/([^\/]*\.)?blmurphy\.dl\.pl
+https?:\/\/([^\/]*\.)?blog-broken-leg\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?blog\.chinaz\.com
+https?:\/\/([^\/]*\.)?blog\.donews\.com
+https?:\/\/([^\/]*\.)?blog\.welover\.org
+https?:\/\/([^\/]*\.)?blog\.yam\.com
+https?:\/\/([^\/]*\.)?blog67\.fc2\.com
+https?:\/\/([^\/]*\.)?blond\.12gbfree\.com
+https?:\/\/([^\/]*\.)?blonde-bald-pussy\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?blonde-blow-job-mpeg\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?blonde-blow-job-tgp\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?blonde-boob-xxx\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blonde-color-hair-platinum\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?blonde-cunt-hair\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?blonde-dumb-not\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?blonde-firework-joke\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?blonde-lesbian-picture\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blonde-long-mature\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?blonde-model-twin\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?blonde-model-wallpaper\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?blonde-teen-bitch\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?blonde-who-fuck\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blonde-with-pink-dildo\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?blonde-xxx-trailer\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?blondie-g7hbdel\.blogspot\.com
+https?:\/\/([^\/]*\.)?blondy-zipper\.iespana\.es
+https?:\/\/([^\/]*\.)?blood-clots-cramp-leg\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?blotrer\.com
+https?:\/\/([^\/]*\.)?blow-deep-free-job-throat\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?blow-free-gallery-in-job-place-public\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blow-gagging-job-pissing-sex\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?blow-job-movie-monster\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?blow-job-video-h-g-b\.blogspot\.com
+https?:\/\/([^\/]*\.)?blowy\.info
+https?:\/\/([^\/]*\.)?blskill\.dl\.pl
+https?:\/\/([^\/]*\.)?blue-phentermine\.coz\.in
+https?:\/\/([^\/]*\.)?bluebird-ki1h06\.blogspot\.com
+https?:\/\/([^\/]*\.)?bluethumbs-com-wn7zce4\.blogspot\.com
+https?:\/\/([^\/]*\.)?blurs\.info
+https?:\/\/([^\/]*\.)?blurzed\.com
+https?:\/\/([^\/]*\.)?bmoer\.szm\.sk
+https?:\/\/([^\/]*\.)?bmoon-tech\.com
+https?:\/\/([^\/]*\.)?bmzz6\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?bnhaq\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?bnme5\.szm\.sk
+https?:\/\/([^\/]*\.)?bnsal\.szm\.sk
+https?:\/\/([^\/]*\.)?bo-wheeling\.blogspot\.com
+https?:\/\/([^\/]*\.)?boatf\.hostpresso\.com
+https?:\/\/([^\/]*\.)?bob-mh5rq0\.blogspot\.com
+https?:\/\/([^\/]*\.)?bobcat-asfz\.blogspot\.com
+https?:\/\/([^\/]*\.)?bobcat-qete\.blogspot\.com
+https?:\/\/([^\/]*\.)?boboczel\.fr-bb\.com
+https?:\/\/([^\/]*\.)?boboer\.heavenforum\.com
+https?:\/\/([^\/]*\.)?bocac\.blogcu\.com
+https?:\/\/([^\/]*\.)?bocalolo\.bbgraf\.com
+https?:\/\/([^\/]*\.)?bocbasdom\.su\.pl
+https?:\/\/([^\/]*\.)?bocbasget\.bbfr\.net
+https?:\/\/([^\/]*\.)?bocchiolo\.zj\.pl
+https?:\/\/([^\/]*\.)?bocerleto\.winnerforum\.net
+https?:\/\/([^\/]*\.)?bocletoget\.cultureforum\.net
+https?:\/\/([^\/]*\.)?bocmonel\.lolforum\.net
+https?:\/\/([^\/]*\.)?boctrocleto\.xa\.pl
+https?:\/\/([^\/]*\.)?bodelel\.goodbb\.net
+https?:\/\/([^\/]*\.)?bodsforthemods-com-txb\.blogspot\.com
+https?:\/\/([^\/]*\.)?body-jewellery-piercing-4u\.com
+https?:\/\/([^\/]*\.)?bodybuilding\.ncedly\.be
+https?:\/\/([^\/]*\.)?bof-xxxvogue-net\.blogspot\.com
+https?:\/\/([^\/]*\.)?bofuno-free-amateur-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?bogetric\.td\.pl
+https?:\/\/([^\/]*\.)?bolds\.info
+https?:\/\/([^\/]*\.)?bolgatalt\.naturalforum\.net
+https?:\/\/([^\/]*\.)?bolle-xeno\.keckins\.be
+https?:\/\/([^\/]*\.)?bologjack\.8tt\.org
+https?:\/\/([^\/]*\.)?bomb9\.szm\.sk
+https?:\/\/([^\/]*\.)?bon-rassi\.com
+https?:\/\/([^\/]*\.)?bondage\.coz\.in
+https?:\/\/([^\/]*\.)?bondagepaper-com-hzt1gq2iw\.blogspot\.com
+https?:\/\/([^\/]*\.)?bondich\.blogspot\.com
+https?:\/\/([^\/]*\.)?boneme-wn\.blogspot\.com
+https?:\/\/([^\/]*\.)?boneprone-com-g0h\.blogspot\.com
+https?:\/\/([^\/]*\.)?boner-dujo\.blogspot\.com
+https?:\/\/([^\/]*\.)?bong-cx0\.blogspot\.com
+https?:\/\/([^\/]*\.)?bong-tedo\.blogspot\.com
+https?:\/\/([^\/]*\.)?bonjour-toxi\.blogspot\.com
+https?:\/\/([^\/]*\.)?bonnie-pequ\.blogspot\.com
+https?:\/\/([^\/]*\.)?bonnie-t00pf3j6\.blogspot\.com
+https?:\/\/([^\/]*\.)?bonota\.blogcu\.com
+https?:\/\/([^\/]*\.)?bonozel\.dl\.pl
+https?:\/\/([^\/]*\.)?bontril\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?bontril\.1k\.pl
+https?:\/\/([^\/]*\.)?boob-dome-com-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?boob-free-large-natural-teen\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boob-little-monster-vicki\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?boob-little-monster-vicki\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?boob-movie-piqe\.blogspot\.com
+https?:\/\/([^\/]*\.)?boob-myspace-com-naked-site\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?boob-nude-pic-small\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boob-video-bb-bb-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?booble-com-orahxf\.blogspot\.com
+https?:\/\/([^\/]*\.)?booble-com-ouq\.blogspot\.com
+https?:\/\/([^\/]*\.)?booger-sure\.blogspot\.com
+https?:\/\/([^\/]*\.)?boogie-sexu\.blogspot\.com
+https?:\/\/([^\/]*\.)?boogie-wy64qty4x\.blogspot\.com
+https?:\/\/([^\/]*\.)?bookcq\.com
+https?:\/\/([^\/]*\.)?bookit-liwe\.blogspot\.com
+https?:\/\/([^\/]*\.)?boole\.cs\.iastate\.edu
+https?:\/\/([^\/]*\.)?boomer-hodo\.blogspot\.com
+https?:\/\/([^\/]*\.)?booster-leto\.blogspot\.com
+https?:\/\/([^\/]*\.)?boot-by-jessica-lyric-made-simpson-walking\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boot-camp-fitness-georgia-summer\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?boot-camp-for-out-of-control-teen\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?boot-cranston-shoes\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?boot-davidson-harley-riding\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?boot-disk-file\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?boot-dress-womens\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?boot-i-in-like-man-rubber\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boot-in-lancashire-maker-shoes\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boot-made-these-video-walkin-watch\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?boot-made-these-walking-who-wrote\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?boot-outlet-timberland\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?boot-riding-supplier\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?boot-these-walking\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bootsie-bihe\.blogspot\.com
+https?:\/\/([^\/]*\.)?bootsie-ku10yu\.blogspot\.com
+https?:\/\/([^\/]*\.)?booty-ebony-gallery\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?booty-ebony-info-remember-video\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?bootycollection-com-cf36tiy45\.blogspot\.com
+https?:\/\/([^\/]*\.)?bootycollection-com-rekiz\.blogspot\.com
+https?:\/\/([^\/]*\.)?boracboc\.su\.pl
+https?:\/\/([^\/]*\.)?borelco\.dl\.pl
+https?:\/\/([^\/]*\.)?borgshare\.org
+https?:\/\/([^\/]*\.)?borjone\.com
+https?:\/\/([^\/]*\.)?borncompany\.com
+https?:\/\/([^\/]*\.)?boryc\.com
+https?:\/\/([^\/]*\.)?boss-bitch-2\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?boss-coerced-fucking-into-wife\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?boss-suno\.blogspot\.com
+https?:\/\/([^\/]*\.)?boston-hardcore-site-myspace-com\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?boston-heqe\.blogspot\.com
+https?:\/\/([^\/]*\.)?bostvndaoe\.blogspot\.com
+https?:\/\/([^\/]*\.)?botaer\.dl\.pl
+https?:\/\/([^\/]*\.)?botast\.com
+https?:\/\/([^\/]*\.)?botrdar\.goodforum\.net
+https?:\/\/([^\/]*\.)?botrdar\.grafbb\.com
+https?:\/\/([^\/]*\.)?boulder-facial-plastic-surgery\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?bov-smut-house-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?bovaral\.naturalforum\.net
+https?:\/\/([^\/]*\.)?bowse\.info
+https?:\/\/([^\/]*\.)?bowtrol\.ventilacia\.yi\.org
+https?:\/\/([^\/]*\.)?bowtrolcoloncleanse\.vlocka\.yi\.org
+https?:\/\/([^\/]*\.)?boy-boy-gay-young\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?boysfirsttime-com-ele2y\.blogspot\.com
+https?:\/\/([^\/]*\.)?bphentermine\.c24\.pl
+https?:\/\/([^\/]*\.)?bphentermine\.ovp\.pl
+https?:\/\/([^\/]*\.)?bqtcfu7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?braburka\.ifrance\.com
+https?:\/\/([^\/]*\.)?bradley-fitu\.blogspot\.com
+https?:\/\/([^\/]*\.)?brahma-steel-toe-boot\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?brandi-a5tds\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandi-vuwi\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandibelle-com-mzqj8l\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandibelle-com-ti\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandon-duso\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandy-cnz56l\.blogspot\.com
+https?:\/\/([^\/]*\.)?brandy-dobu\.blogspot\.com
+https?:\/\/([^\/]*\.)?brasil-pire\.blogspot\.com
+https?:\/\/([^\/]*\.)?brat-nikodim\.blogspot\.com
+https?:\/\/([^\/]*\.)?braves-t7\.blogspot\.com
+https?:\/\/([^\/]*\.)?braves-tuku\.blogspot\.com
+https?:\/\/([^\/]*\.)?bravogirls-com-a7nbqd\.blogspot\.com
+https?:\/\/([^\/]*\.)?bravogirls-com-w12\.blogspot\.com
+https?:\/\/([^\/]*\.)?bravoteens-com-d0v\.blogspot\.com
+https?:\/\/([^\/]*\.)?bravovids-com-rouqs0py\.blogspot\.com
+https?:\/\/([^\/]*\.)?bravovids-r55rxyszt0\.blogspot\.com
+https?:\/\/([^\/]*\.)?brazil-butt-thong\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?brazil-gevo\.blogspot\.com
+https?:\/\/([^\/]*\.)?brazilian-butt-lift-plastic-surgery\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?brb\.pl
+https?:\/\/([^\/]*\.)?breana-foki\.blogspot\.com
+https?:\/\/([^\/]*\.)?breana-wvqscvo5u\.blogspot\.com
+https?:\/\/([^\/]*\.)?breanna-kiwu\.blogspot\.com
+https?:\/\/([^\/]*\.)?breanne-leri\.blogspot\.com
+https?:\/\/([^\/]*\.)?breeanna-quhu\.blogspot\.com
+https?:\/\/([^\/]*\.)?breiana-quhe\.blogspot\.com
+https?:\/\/([^\/]*\.)?brenda-i5z8n4zkb7\.blogspot\.com
+https?:\/\/([^\/]*\.)?brenda-rezo\.blogspot\.com
+https?:\/\/([^\/]*\.)?brenna-xivo\.blogspot\.com
+https?:\/\/([^\/]*\.)?brewster-opqnec8v\.blogspot\.com
+https?:\/\/([^\/]*\.)?brfq6\.szm\.sk
+https?:\/\/([^\/]*\.)?brian-bchd\.blogspot\.com
+https?:\/\/([^\/]*\.)?brianna-dc04k04ivu\.blogspot\.com
+https?:\/\/([^\/]*\.)?brianne-ejv40\.blogspot\.com
+https?:\/\/([^\/]*\.)?brick55\.5gbfree\.com
+https?:\/\/([^\/]*\.)?brickes\.8888mb\.com
+https?:\/\/([^\/]*\.)?bricktilemachine\.com\.cn
+https?:\/\/([^\/]*\.)?bridgette-rjc3pbx6\.blogspot\.com
+https?:\/\/([^\/]*\.)?brightflashes\.blogspot\.com
+https?:\/\/([^\/]*\.)?brionna-hl530r3fe\.blogspot\.com
+https?:\/\/([^\/]*\.)?brisbeck\.com
+https?:\/\/([^\/]*\.)?britney-spear-sexy-ass\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?britney-spears-0\.blogspot\.com
+https?:\/\/([^\/]*\.)?britney-spears-sex-video-t-j-g\.blogspot\.com
+https?:\/\/([^\/]*\.)?brittany-i7ekj3hll\.blogspot\.com
+https?:\/\/([^\/]*\.)?broadcaster-crazy-popular\.freehostss\.info
+https?:\/\/([^\/]*\.)?broadway-ow\.blogspot\.com
+https?:\/\/([^\/]*\.)?brokenbond\.blogspot\.com
+https?:\/\/([^\/]*\.)?bronc\.info
+https?:\/\/([^\/]*\.)?brooke-bejuzava\.blogspot\.com
+https?:\/\/([^\/]*\.)?brooklynn-du\.blogspot\.com
+https?:\/\/([^\/]*\.)?brooks-rare\.lkerfocu\.be
+https?:\/\/([^\/]*\.)?brplank\.ifrance\.com
+https?:\/\/([^\/]*\.)?brrddd\.org
+https?:\/\/([^\/]*\.)?bruce-egqva1m\.blogspot\.com
+https?:\/\/([^\/]*\.)?brunettesexwrl\.blogspot\.com
+https?:\/\/([^\/]*\.)?brush\.hostaim\.com
+https?:\/\/([^\/]*\.)?brutlag\.stanford\.edu
+https?:\/\/([^\/]*\.)?bryan-rdu\.blogspot\.com
+https?:\/\/([^\/]*\.)?bs21sa\.com
+https?:\/\/([^\/]*\.)?bsd-hd\.blogspot\.com
+https?:\/\/([^\/]*\.)?bsoma\.c24\.pl
+https?:\/\/([^\/]*\.)?bsoma\.ovp\.pl
+https?:\/\/([^\/]*\.)?bsri3\.szm\.sk
+https?:\/\/([^\/]*\.)?btipu\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?btix\.combasketball-tickets
+https?:\/\/([^\/]*\.)?btqvb\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?btramadol\.c24\.pl
+https?:\/\/([^\/]*\.)?bubba1-i2pblfp2m\.blogspot\.com
+https?:\/\/([^\/]*\.)?bublifuk\.php5\.cz
+https?:\/\/([^\/]*\.)?bucina\.asp2\.cz
+https?:\/\/([^\/]*\.)?buck-o1i5bt\.blogspot\.com
+https?:\/\/([^\/]*\.)?buddy-bqam83yt\.blogspot\.com
+https?:\/\/([^\/]*\.)?budget7i\.info
+https?:\/\/([^\/]*\.)?buff-com-es-gay-porn-site-l-s-g\.blogspot\.com
+https?:\/\/([^\/]*\.)?bug\.phil\.cmu\.edu
+https?:\/\/([^\/]*\.)?buildercareer\.us
+https?:\/\/([^\/]*\.)?bukicon-free-bisexual-s-b\.blogspot\.com
+https?:\/\/([^\/]*\.)?bukkake-cum-facial-shot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?bulldog-dc86aq4l\.blogspot\.com
+https?:\/\/([^\/]*\.)?bumast\.com
+https?:\/\/([^\/]*\.)?bumins\.com
+https?:\/\/([^\/]*\.)?bunnyteens-com-clpxyq6of\.blogspot\.com
+https?:\/\/([^\/]*\.)?bunnyteens-com-gz7\.blogspot\.com
+https?:\/\/([^\/]*\.)?bupropion-hcl\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?buruan\.dl\.pl
+https?:\/\/([^\/]*\.)?business-brokers\.lkerfocu\.be
+https?:\/\/([^\/]*\.)?business-school\.hotmail\.ru
+https?:\/\/([^\/]*\.)?business-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?business1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?business2school\.chat\.ru
+https?:\/\/([^\/]*\.)?businessitaly\.info
+https?:\/\/([^\/]*\.)?businesx\.atspace\.com
+https?:\/\/([^\/]*\.)?buspar\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?buspirone\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?busstopwhores-com-c0f\.blogspot\.com
+https?:\/\/([^\/]*\.)?busstopwhores-com-ki7\.blogspot\.com
+https?:\/\/([^\/]*\.)?busty-blonde-bomb-shell\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?busty-blonde-fuck\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?busty-escort-porn\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?busty-horny-milf\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?busty-little-girl\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?busty-mature-red-head\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?busty-sex-star\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?busty-super-girl\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?busty-thick-ebony\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?bustyadventures-com-oh518h8l\.blogspot\.com
+https?:\/\/([^\/]*\.)?bustyisland-com-au\.blogspot\.com
+https?:\/\/([^\/]*\.)?bustyisland-mdjgr6khy\.blogspot\.com
+https?:\/\/([^\/]*\.)?bustypassion-com-bpe84\.blogspot\.com
+https?:\/\/([^\/]*\.)?butalbital-apap\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?butalbital\.ru\.tf
+https?:\/\/([^\/]*\.)?butler-h3bpdq\.blogspot\.com
+https?:\/\/([^\/]*\.)?butseriouslyimprov\.com
+https?:\/\/([^\/]*\.)?butt-community-type-white\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?butt-face-fat-her-kong-love-picture-queen-sit\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?butt-fucking-teen\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?butt-girl-rate\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?buttons-iveta\.blogspot\.com
+https?:\/\/([^\/]*\.)?buwelch\.dl\.pl
+https?:\/\/([^\/]*\.)?buwu-admin\.blogspot\.com
+https?:\/\/([^\/]*\.)?buy-ambien-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-ambien\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-ativan\.fil\.ph
+https?:\/\/([^\/]*\.)?buy-bontril\.contact\.cc
+https?:\/\/([^\/]*\.)?buy-carisoprodol\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-celebrex\.bigsitecity\.com
+https?:\/\/([^\/]*\.)?buy-cialis-online\.bigsitecity\.com
+https?:\/\/([^\/]*\.)?buy-cialis\.1k\.pl
+https?:\/\/([^\/]*\.)?buy-cialis\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-cialis\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-cialis20\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-cialishhb\.blogspot\.com
+https?:\/\/([^\/]*\.)?buy-cialisklx\.blogspot\.com
+https?:\/\/([^\/]*\.)?buy-hydrocodone-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?buy-hydrocodone-gs\.net\.tc
+https?:\/\/([^\/]*\.)?buy-hydrocodone\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-hydrocodone\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-levitra\.1k\.pl
+https?:\/\/([^\/]*\.)?buy-levitra\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-lipitor\.contact\.cc
+https?:\/\/([^\/]*\.)?buy-lortab-911\.jo\.pl
+https?:\/\/([^\/]*\.)?buy-online-tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?buy-pharmacy\.blogspot\.com
+https?:\/\/([^\/]*\.)?buy-phentermine-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?buy-phentermine-gs\.net\.tc
+https?:\/\/([^\/]*\.)?buy-phentermine\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-phentermine\.health-livening\.com
+https?:\/\/([^\/]*\.)?buy-phentermine\.hem\.nu
+https?:\/\/([^\/]*\.)?buy-phentermine\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-phentermine20\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-prozac-online\.com
+https?:\/\/([^\/]*\.)?buy-soma\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-tennis-shoes\.info
+https?:\/\/([^\/]*\.)?buy-tramadol-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?buy-tramadol-gs\.net\.tc
+https?:\/\/([^\/]*\.)?buy-tramadol-online911\.jo\.pl
+https?:\/\/([^\/]*\.)?buy-tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?buy-tramadol\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-tramadol\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-tramadol20\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-ultram\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-valium\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-viagra-online\.health-livening\.com
+https?:\/\/([^\/]*\.)?buy-viagra\.esguay\.com
+https?:\/\/([^\/]*\.)?buy-viagra\.health-livening\.com
+https?:\/\/([^\/]*\.)?buy-viagra\.presteert\.nl
+https?:\/\/([^\/]*\.)?buy-viagra20\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy-xanax20\.bravehost\.com
+https?:\/\/([^\/]*\.)?buy4levitra\.blogspot\.com
+https?:\/\/([^\/]*\.)?buy4viagra\.blogspot\.com
+https?:\/\/([^\/]*\.)?buyambien\.blog\.hr
+https?:\/\/([^\/]*\.)?buyambien\.guu\.pl
+https?:\/\/([^\/]*\.)?buybuspar\.4\.pl
+https?:\/\/([^\/]*\.)?buycialisonline\.forumlivre\.com
+https?:\/\/([^\/]*\.)?buycialisonline\.sprayblog\.se
+https?:\/\/([^\/]*\.)?buycialisonline\.sulekha\.com
+https?:\/\/([^\/]*\.)?buycialispills00\.blogspot\.com
+https?:\/\/([^\/]*\.)?buycialiss\.blogsome\.com
+https?:\/\/([^\/]*\.)?buycialiss\.ovp\.pl
+https?:\/\/([^\/]*\.)?buycipro\.4\.pl
+https?:\/\/([^\/]*\.)?buyeffexor\.4\.pl
+https?:\/\/([^\/]*\.)?buyhydrocodone\.blog\.hr
+https?:\/\/([^\/]*\.)?buylevitra\.blog\.hr
+https?:\/\/([^\/]*\.)?buylevitra\.forospace\.com
+https?:\/\/([^\/]*\.)?buylevitraonlin\.forumlivre\.com
+https?:\/\/([^\/]*\.)?buylevitraonline\.sprayblog\.se
+https?:\/\/([^\/]*\.)?buymeridia\.blog\.hr
+https?:\/\/([^\/]*\.)?buyonlineorder\.com
+https?:\/\/([^\/]*\.)?buypaxil\.blog\.hr
+https?:\/\/([^\/]*\.)?buyphentermine2\.livelog\.com
+https?:\/\/([^\/]*\.)?buyphenterminee\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyphenterminez\.blog\.hr
+https?:\/\/([^\/]*\.)?buypropecia\.blog\.hr
+https?:\/\/([^\/]*\.)?buyprozac\.blog\.hr
+https?:\/\/([^\/]*\.)?buyrosebowltickets\.com
+https?:\/\/([^\/]*\.)?buysoma\.1majorhost\.com
+https?:\/\/([^\/]*\.)?buysoma\.cay\.pl
+https?:\/\/([^\/]*\.)?buysomaaonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?buysomaonline\.forospace\.com
+https?:\/\/([^\/]*\.)?buysomaonlinez\.blogsome\.com
+https?:\/\/([^\/]*\.)?buytramadolonli\.forumlivre\.com
+https?:\/\/([^\/]*\.)?buytramadolonline\.sprayblog\.se
+https?:\/\/([^\/]*\.)?buytramadolz\.jubiiblog\.de
+https?:\/\/([^\/]*\.)?buytrazodone\.eamped\.com
+https?:\/\/([^\/]*\.)?buyultram\.forospace\.com
+https?:\/\/([^\/]*\.)?buyultram\.ir\.pl
+https?:\/\/([^\/]*\.)?buyultramonline\.ir\.pl
+https?:\/\/([^\/]*\.)?buyultramxp\.cay\.pl
+https?:\/\/([^\/]*\.)?buyvalium\.one2you\.info
+https?:\/\/([^\/]*\.)?buyvaliumonline\.forumlivre\.com
+https?:\/\/([^\/]*\.)?buyvaliumonline\.jubiiblog\.de
+https?:\/\/([^\/]*\.)?buyvaliumonline\.sprayblog\.se
+https?:\/\/([^\/]*\.)?buyviagra\.seesaa\.net
+https?:\/\/([^\/]*\.)?buyviagraa\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyviagraonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyviagraonline\.sprayblog\.se
+https?:\/\/([^\/]*\.)?buyviagraxp\.cay\.pl
+https?:\/\/([^\/]*\.)?buyvicodinxp\.cay\.pl
+https?:\/\/([^\/]*\.)?buyvvalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyxanax\.5u\.com
+https?:\/\/([^\/]*\.)?buyxanaxxonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyxanaxxp\.cay\.pl
+https?:\/\/([^\/]*\.)?buyxenical\.blog\.hr
+https?:\/\/([^\/]*\.)?buyxenical\.ir\.pl
+https?:\/\/([^\/]*\.)?buyxenicalonline\.ir\.pl
+https?:\/\/([^\/]*\.)?buyxxenical\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyxxenicalonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyycelexa\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyycialis\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyymeridiaonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyyphentermine\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyysoma\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyyviagra\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyyzithromax\.ovp\.pl
+https?:\/\/([^\/]*\.)?buyzoloft\.blog\.hr
+https?:\/\/([^\/]*\.)?buyzyban\.coz\.in
+https?:\/\/([^\/]*\.)?buzerave\.com
+https?:\/\/([^\/]*\.)?bvalium\.c24\.pl
+https?:\/\/([^\/]*\.)?bvalium\.fuks\.pl
+https?:\/\/([^\/]*\.)?bvalium1\.forumup\.org
+https?:\/\/([^\/]*\.)?bviagra\.ovp\.pl
+https?:\/\/([^\/]*\.)?bviagra1\.forumup\.org
+https?:\/\/([^\/]*\.)?bvse1\.szm\.sk
+https?:\/\/([^\/]*\.)?bwmi0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?bwzf6\.szm\.sk
+https?:\/\/([^\/]*\.)?bx6\.blrf\.net
+https?:\/\/([^\/]*\.)?bxanax\.c24\.pl
+https?:\/\/([^\/]*\.)?bxanax\.gog\.pl
+https?:\/\/([^\/]*\.)?bxanax1\.forumup\.org
+https?:\/\/([^\/]*\.)?byhydrocodone\.blog\.espresso\.repubblica\.it
+https?:\/\/([^\/]*\.)?bzxs\.org\.ua
+https?:\/\/([^\/]*\.)?c-canada\.com
+https?:\/\/([^\/]*\.)?c4taldron\.uy\.pl
+https?:\/\/([^\/]*\.)?c4tcaget\.blogcu\.com
+https?:\/\/([^\/]*\.)?c4tcoli\.td\.pl
+https?:\/\/([^\/]*\.)?c4tdarrel\.dl\.pl
+https?:\/\/([^\/]*\.)?c4tdronrel\.goodforum\.net
+https?:\/\/([^\/]*\.)?c4tdronrel\.grafbb\.com
+https?:\/\/([^\/]*\.)?c4tvarcna\.dl\.pl
+https?:\/\/([^\/]*\.)?ca57sgr0h\.org
+https?:\/\/([^\/]*\.)?cable-connection\.keckins\.be
+https?:\/\/([^\/]*\.)?caboboc\.blogcu\.com
+https?:\/\/([^\/]*\.)?cacalife\.com
+https?:\/\/([^\/]*\.)?cacas\.info
+https?:\/\/([^\/]*\.)?caculall\.forumzen\.com
+https?:\/\/([^\/]*\.)?cadiucna\.forumzen\.com
+https?:\/\/([^\/]*\.)?caeserch\.com
+https?:\/\/([^\/]*\.)?cafasc\.com
+https?:\/\/([^\/]*\.)?caguyea\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cahn\.mnsu\.edu
+https?:\/\/([^\/]*\.)?caitlyn-d66tmgwi1\.blogspot\.com
+https?:\/\/([^\/]*\.)?caked\.info
+https?:\/\/([^\/]*\.)?calciatore-nudo\.hostzz\.info
+https?:\/\/([^\/]*\.)?calcio-arbitri\.com
+https?:\/\/([^\/]*\.)?calcio-watch\.com
+https?:\/\/([^\/]*\.)?calcolo-rata-finanziamento\.ll33\.info
+https?:\/\/([^\/]*\.)?calendario-vari\.freespase\.info
+https?:\/\/([^\/]*\.)?calgary-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?californiamortgage-x\.com
+https?:\/\/([^\/]*\.)?call-kelly-com-ky\.blogspot\.com
+https?:\/\/([^\/]*\.)?call-kelly-com-tnm5k7042\.blogspot\.com
+https?:\/\/([^\/]*\.)?callie-es\.blogspot\.com
+https?:\/\/([^\/]*\.)?callsecurity\.blogspot\.com
+https?:\/\/([^\/]*\.)?camaro-r21nu37q\.blogspot\.com
+https?:\/\/([^\/]*\.)?camcrush-com-eudifxp82\.blogspot\.com
+https?:\/\/([^\/]*\.)?camcrush-com-igzig\.blogspot\.com
+https?:\/\/([^\/]*\.)?camcrush-com-my1v8l4\.blogspot\.com
+https?:\/\/([^\/]*\.)?camel-cigarettes\.s5\.com
+https?:\/\/([^\/]*\.)?camelclips-com-budun\.blogspot\.com
+https?:\/\/([^\/]*\.)?camelclips-com-d3s6o2\.blogspot\.com
+https?:\/\/([^\/]*\.)?camelclips-com-h6a5l\.blogspot\.com
+https?:\/\/([^\/]*\.)?camelmenthe\.blogspot\.com
+https?:\/\/([^\/]*\.)?cameralover\.net
+https?:\/\/([^\/]*\.)?camerascams\.info
+https?:\/\/([^\/]*\.)?cameron-h184o7b\.blogspot\.com
+https?:\/\/([^\/]*\.)?camini\.freehostss\.info
+https?:\/\/([^\/]*\.)?canada-birthday\.acb\.pl
+https?:\/\/([^\/]*\.)?canadian-pharmacyfur\.blogspot\.com
+https?:\/\/([^\/]*\.)?canadian-pharmacyyof\.blogspot\.com
+https?:\/\/([^\/]*\.)?cancer-skin\.nm\.ru
+https?:\/\/([^\/]*\.)?cancer-skin\.pochta\.ru
+https?:\/\/([^\/]*\.)?cancer_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?candi-door-hot-mom-next\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?candylist-com-dib\.blogspot\.com
+https?:\/\/([^\/]*\.)?candylist-com-ip72g5\.blogspot\.com
+https?:\/\/([^\/]*\.)?canjipiao\.com
+https?:\/\/([^\/]*\.)?cantante-arabe-sexy\.hostzz\.info
+https?:\/\/([^\/]*\.)?cantor-dz1h733\.blogspot\.com
+https?:\/\/([^\/]*\.)?caorzel\.discutforum\.com
+https?:\/\/([^\/]*\.)?capasdar\.td\.pl
+https?:\/\/([^\/]*\.)?car-free-insurance-quoteqch\.blogspot\.com
+https?:\/\/([^\/]*\.)?car-insurance-\.blogspot\.com
+https?:\/\/([^\/]*\.)?car-insurance-club\.com
+https?:\/\/([^\/]*\.)?car-insurance-p4zw\.blogspot\.com
+https?:\/\/([^\/]*\.)?car-insurance-ratsvex\.blogspot\.com
+https?:\/\/([^\/]*\.)?car-loan-newdma\.blogspot\.com
+https?:\/\/([^\/]*\.)?car-loan-neweei\.blogspot\.com
+https?:\/\/([^\/]*\.)?car1home\.info
+https?:\/\/([^\/]*\.)?carabidule\.net
+https?:\/\/([^\/]*\.)?carbest2006\.info
+https?:\/\/([^\/]*\.)?cardura-rapid-heartbeat\.tlg\.pl
+https?:\/\/([^\/]*\.)?care-skin\.pochta\.ru
+https?:\/\/([^\/]*\.)?career-business\.net
+https?:\/\/([^\/]*\.)?carepharmasite\.info
+https?:\/\/([^\/]*\.)?caribxpressparts\.com
+https?:\/\/([^\/]*\.)?caricc4t\.xa\.pl
+https?:\/\/([^\/]*\.)?carinsurance-x\.com
+https?:\/\/([^\/]*\.)?carinsuranceshh\.blogspot\.com
+https?:\/\/([^\/]*\.)?carisoprodol-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?carisoprodol\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?carisoprodol\.269g\.net
+https?:\/\/([^\/]*\.)?carisoprodol\.47\.pl
+https?:\/\/([^\/]*\.)?carisoprodol\.goodpharm\.info
+https?:\/\/([^\/]*\.)?carisoprodol\.hav\.pl
+https?:\/\/([^\/]*\.)?carisoprodol\.presteert\.nl
+https?:\/\/([^\/]*\.)?carisoprodol\.seesaa\.net
+https?:\/\/([^\/]*\.)?carisoprodol\.skocz\.net
+https?:\/\/([^\/]*\.)?carisoprodolrx\.weboficial\.com
+https?:\/\/([^\/]*\.)?carisoprodols\.blogspot\.com
+https?:\/\/([^\/]*\.)?carley-m3ia3\.blogspot\.com
+https?:\/\/([^\/]*\.)?carlie-a2s405\.blogspot\.com
+https?:\/\/([^\/]*\.)?carol-txxhdpnt\.blogspot\.com
+https?:\/\/([^\/]*\.)?carolina-w2aoe4xx\.blogspot\.com
+https?:\/\/([^\/]*\.)?carolyn-gp2s5\.blogspot\.com
+https?:\/\/([^\/]*\.)?carovi\.su\.pl
+https?:\/\/([^\/]*\.)?carson-ko8z7\.blogspot\.com
+https?:\/\/([^\/]*\.)?carspoker\.u288\.com
+https?:\/\/([^\/]*\.)?cartolina-pasqua\.host24h\.info
+https?:\/\/([^\/]*\.)?cartoon-free-gallery-gay\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cartoon-porn-clip-bloghvn\.blogspot\.com
+https?:\/\/([^\/]*\.)?carxm\.info
+https?:\/\/([^\/]*\.)?casaviva\.19mb\.info
+https?:\/\/([^\/]*\.)?cascq\.szm\.sk
+https?:\/\/([^\/]*\.)?casetvar\.forumzen\.com
+https?:\/\/([^\/]*\.)?cashadvance-x\.com
+https?:\/\/([^\/]*\.)?cashing-view\.com
+https?:\/\/([^\/]*\.)?casing\.dyndns\.dk
+https?:\/\/([^\/]*\.)?casino-555\.com
+https?:\/\/([^\/]*\.)?casino-attraction\.com
+https?:\/\/([^\/]*\.)?casino-games-wiki\.com
+https?:\/\/([^\/]*\.)?casino-magyck\.mutogen\.be
+https?:\/\/([^\/]*\.)?casino-ppp\.com
+https?:\/\/([^\/]*\.)?casino-startup\.com
+https?:\/\/([^\/]*\.)?casino-theory\.com
+https?:\/\/([^\/]*\.)?casino\.requirements\.be
+https?:\/\/([^\/]*\.)?casino1\.forumup\.org
+https?:\/\/([^\/]*\.)?casinos-new\.com
+https?:\/\/([^\/]*\.)?casinostates\.com
+https?:\/\/([^\/]*\.)?casper-a3r1z2a0\.blogspot\.com
+https?:\/\/([^\/]*\.)?cassay\.net
+https?:\/\/([^\/]*\.)?casual-boots\.massioni\.be
+https?:\/\/([^\/]*\.)?catch-c-teens\.blogspot\.com
+https?:\/\/([^\/]*\.)?catherine-tu75h6w\.blogspot\.com
+https?:\/\/([^\/]*\.)?catrelet\.forumzen\.com
+https?:\/\/([^\/]*\.)?cats-wjbreb7e\.blogspot\.com
+https?:\/\/([^\/]*\.)?cayuga-g2legvldk2\.blogspot\.com
+https?:\/\/([^\/]*\.)?cazelmon\.lolforum\.net
+https?:\/\/([^\/]*\.)?cazelolo\.dl\.pl
+https?:\/\/([^\/]*\.)?cbbi\.cn
+https?:\/\/([^\/]*\.)?cbhi8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cbkf0\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?cbwgkm8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cc5f\.dnyp\.com
+https?:\/\/([^\/]*\.)?ccak1\.szm\.sk
+https?:\/\/([^\/]*\.)?ccal\.cultureforum\.net
+https?:\/\/([^\/]*\.)?ccclfak\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ccheapcelexa\.ovp\.pl
+https?:\/\/([^\/]*\.)?ccheapvaliumonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ccline\.info
+https?:\/\/([^\/]*\.)?ccnarac\.uy\.pl
+https?:\/\/([^\/]*\.)?ccobhv7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cdq\.dzsbcn\.com
+https?:\/\/([^\/]*\.)?cdsmart\.info
+https?:\/\/([^\/]*\.)?cdzhs\.szm\.sk
+https?:\/\/([^\/]*\.)?ceasius\.blogspot\.com
+https?:\/\/([^\/]*\.)?cecily-koj\.blogspot\.com
+https?:\/\/([^\/]*\.)?ceclor\.tlg\.pl
+https?:\/\/([^\/]*\.)?celeb-filipina-movie-site\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?celebrex-911\.coz\.in
+https?:\/\/([^\/]*\.)?celebrex-celecoxib-200mg\.tlg\.pl
+https?:\/\/([^\/]*\.)?celebrex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?celebrity-sex-video-n-q-x\.blogspot\.com
+https?:\/\/([^\/]*\.)?celebrity-sex-video\.0800-porn\.com
+https?:\/\/([^\/]*\.)?celebrityprofiler\.com
+https?:\/\/([^\/]*\.)?celelt\.dl\.pl
+https?:\/\/([^\/]*\.)?celeste-mi8q701\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexa\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?celexa\.269g\.net
+https?:\/\/([^\/]*\.)?celexafcy\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexaodt\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexavby\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexavcc\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexazer\.blogspot\.com
+https?:\/\/([^\/]*\.)?celexxaonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?celine-ajha0vxo6\.blogspot\.com
+https?:\/\/([^\/]*\.)?celtic-frost-ringtonedbg\.blogspot\.com
+https?:\/\/([^\/]*\.)?celtic-frost-ringtonepxe\.blogspot\.com
+https?:\/\/([^\/]*\.)?celtic-ring\.boom\.ru
+https?:\/\/([^\/]*\.)?celtic1ring\.chat\.ru
+https?:\/\/([^\/]*\.)?cemast\.com
+https?:\/\/([^\/]*\.)?center-csy73nq1\.blogspot\.com
+https?:\/\/([^\/]*\.)?century-21\.co\.jp
+https?:\/\/([^\/]*\.)?cephalexin\.dynalias\.net
+https?:\/\/([^\/]*\.)?cephalexin\.kicks-ass\.net
+https?:\/\/([^\/]*\.)?cephalexinvyp\.blogspot\.com
+https?:\/\/([^\/]*\.)?ceremi\.com
+https?:\/\/([^\/]*\.)?cerveza\.republika\.pl
+https?:\/\/([^\/]*\.)?cetki\.blogspot\.com
+https?:\/\/([^\/]*\.)?cetuna\.com
+https?:\/\/([^\/]*\.)?cfhc2\.szm\.sk
+https?:\/\/([^\/]*\.)?cfi-tp\.blogspot\.com
+https?:\/\/([^\/]*\.)?cgj-wmkd0p54ap\.blogspot\.com
+https?:\/\/([^\/]*\.)?chain\.webmelia\.com
+https?:\/\/([^\/]*\.)?champion-ghdm2p\.blogspot\.com
+https?:\/\/([^\/]*\.)?chancec-i0\.blogspot\.com
+https?:\/\/([^\/]*\.)?chandler-ozbi2l\.blogspot\.com
+https?:\/\/([^\/]*\.)?chanel-ag2w\.blogspot\.com
+https?:\/\/([^\/]*\.)?charity-eu\.blogspot\.com
+https?:\/\/([^\/]*\.)?charles-rp7s\.blogspot\.com
+https?:\/\/([^\/]*\.)?charlie-gl3ig\.blogspot\.com
+https?:\/\/([^\/]*\.)?charming-kbatna2k\.blogspot\.com
+https?:\/\/([^\/]*\.)?charvis-mj35\.blogspot\.com
+https?:\/\/([^\/]*\.)?chase-online-bankingdir\.blogspot\.com
+https?:\/\/([^\/]*\.)?chasehunt\.com
+https?:\/\/([^\/]*\.)?chasity-oy2mgww10\.blogspot\.com
+https?:\/\/([^\/]*\.)?chat-a7gdn35u\.blogspot\.com
+https?:\/\/([^\/]*\.)?chat-gay-ohio-room\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?chat\.infty\.net
+https?:\/\/([^\/]*\.)?chatelaine-free-lipstick\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?chatou\.dzsc\.com
+https?:\/\/([^\/]*\.)?chatsky\.cn
+https?:\/\/([^\/]*\.)?chaucer\.umuc\.edu
+https?:\/\/([^\/]*\.)?chayse-c0z2untnw\.blogspot\.com
+https?:\/\/([^\/]*\.)?chazuo\.dzsc\.com
+https?:\/\/([^\/]*\.)?chazz-d86hk\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheap-cialis\.presteert\.nl
+https?:\/\/([^\/]*\.)?cheap-hydrocodone\.presteert\.nl
+https?:\/\/([^\/]*\.)?cheap-phentermine\.cheapills\.info
+https?:\/\/([^\/]*\.)?cheap-phentermine\.esguay\.com
+https?:\/\/([^\/]*\.)?cheap-phentermine\.health-livening\.com
+https?:\/\/([^\/]*\.)?cheap-phentermine\.presteert\.nl
+https?:\/\/([^\/]*\.)?cheap-rocky-boot\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?cheap-soma-online\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheap-tramadol-onlin\.zikforum\.com
+https?:\/\/([^\/]*\.)?cheap-tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?cheap-tramadol\.cheapills\.info
+https?:\/\/([^\/]*\.)?cheap-tramadol\.presteert\.nl
+https?:\/\/([^\/]*\.)?cheap-trashy-lingerie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cheap-travel-deal\.globaltr\.info
+https?:\/\/([^\/]*\.)?cheap-valium\.cheapills\.info
+https?:\/\/([^\/]*\.)?cheap-viagra\.health-livening\.com
+https?:\/\/([^\/]*\.)?cheap-viagra\.presteert\.nl
+https?:\/\/([^\/]*\.)?cheap-xanax\.us\.tf
+https?:\/\/([^\/]*\.)?cheapcialiss\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapest-pills\.org
+https?:\/\/([^\/]*\.)?cheapest-viagra-source\.com
+https?:\/\/([^\/]*\.)?cheapestlakerstickets\.com
+https?:\/\/([^\/]*\.)?cheaplakertickets\.com
+https?:\/\/([^\/]*\.)?cheappcialis\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapphentermine\.livelog\.com
+https?:\/\/([^\/]*\.)?cheapphenterminee\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapphntermine\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheappvalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheappviagra\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapsuperbowltickets\.com
+https?:\/\/([^\/]*\.)?cheaptramadol\.forospace\.com
+https?:\/\/([^\/]*\.)?cheaptramadols\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheaptramadolz\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapvaliumm\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapvvalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapxanaxx\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheapxxanax\.ovp\.pl
+https?:\/\/([^\/]*\.)?cheater-t3si78zbf\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheats-e2p3o7nhm\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheaviagra\.blogsome\.com
+https?:\/\/([^\/]*\.)?checkers-wn88\.blogspot\.com
+https?:\/\/([^\/]*\.)?checkproxy\.com
+https?:\/\/([^\/]*\.)?cheerleader-child-photo\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cheerleader-dolphin\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cheerleader-gallery-naughty\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?cheerleader-upskirt-picture\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?cheese-ratzl\.blogspot\.com
+https?:\/\/([^\/]*\.)?chellam-g2w\.blogspot\.com
+https?:\/\/([^\/]*\.)?chelsey-kifs\.blogspot\.com
+https?:\/\/([^\/]*\.)?chem-iv1c82\.blogspot\.com
+https?:\/\/([^\/]*\.)?chemistry-mrrx5e\.blogspot\.com
+https?:\/\/([^\/]*\.)?chemistry\.org\.ua
+https?:\/\/([^\/]*\.)?cheng-o08if\.blogspot\.com
+https?:\/\/([^\/]*\.)?chenglong\.com\.cn
+https?:\/\/([^\/]*\.)?cher-aorxm1s3j7\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheryl-b8\.blogspot\.com
+https?:\/\/([^\/]*\.)?chess-cy\.blogspot\.com
+https?:\/\/([^\/]*\.)?chester1-tfkfl51eb\.blogspot\.com
+https?:\/\/([^\/]*\.)?chevroletcam\.cn
+https?:\/\/([^\/]*\.)?chevy-ekv8ph\.blogspot\.com
+https?:\/\/([^\/]*\.)?chevy1-wwok0ww55\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheyanne-rnriiwno6l\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheyenne-g3l5fa87\.blogspot\.com
+https?:\/\/([^\/]*\.)?cheyne-hm7aik5u\.blogspot\.com
+https?:\/\/([^\/]*\.)?chfielde\.ifrance\.com
+https?:\/\/([^\/]*\.)?chic-ks\.blogspot\.com
+https?:\/\/([^\/]*\.)?chicago-kou3c7e58\.blogspot\.com
+https?:\/\/([^\/]*\.)?chick-gay-kissing\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?chicken-i66t8z76\.blogspot\.com
+https?:\/\/([^\/]*\.)?chico-myg8bv\.blogspot\.com
+https?:\/\/([^\/]*\.)?chidneuer\.frbb\.net
+https?:\/\/([^\/]*\.)?chidronrac\.ephpbb\.com
+https?:\/\/([^\/]*\.)?chidronrec\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?chiefs-oob\.blogspot\.com
+https?:\/\/([^\/]*\.)?chilacna\.td\.pl
+https?:\/\/([^\/]*\.)?child-leg-pain\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?chilton-b82sebrrue\.blogspot\.com
+https?:\/\/([^\/]*\.)?chimp-cu4gvwsceg\.blogspot\.com
+https?:\/\/([^\/]*\.)?china--magnet\.com
+https?:\/\/([^\/]*\.)?china-dwcuzqft6\.blogspot\.com
+https?:\/\/([^\/]*\.)?china-made-door\.com\.cn
+https?:\/\/([^\/]*\.)?china01\.52blog\.net
+https?:\/\/([^\/]*\.)?china02\.52blog\.net
+https?:\/\/([^\/]*\.)?china1\.52blog\.net
+https?:\/\/([^\/]*\.)?china1\.yculblog\.com
+https?:\/\/([^\/]*\.)?china2\.52blog\.net
+https?:\/\/([^\/]*\.)?china2\.yculblog\.com
+https?:\/\/([^\/]*\.)?china3\.yculblog\.com
+https?:\/\/([^\/]*\.)?chinacarcenter\.net
+https?:\/\/([^\/]*\.)?chinacid\.com
+https?:\/\/([^\/]*\.)?chinafoo\.com
+https?:\/\/([^\/]*\.)?chinafurnace\.net
+https?:\/\/([^\/]*\.)?chinakj\.net
+https?:\/\/([^\/]*\.)?chinalhcz\.com
+https?:\/\/([^\/]*\.)?chinaprojectors\.com
+https?:\/\/([^\/]*\.)?chinatranslation\.net
+https?:\/\/([^\/]*\.)?chinayoujiu\.com
+https?:\/\/([^\/]*\.)?chinese-google\.com
+https?:\/\/([^\/]*\.)?chineseaids\.com
+https?:\/\/([^\/]*\.)?chineseaids\.net
+https?:\/\/([^\/]*\.)?chinesezhouyi\.com
+https?:\/\/([^\/]*\.)?chip-thz\.blogspot\.com
+https?:\/\/([^\/]*\.)?chipper-eusa\.blogspot\.com
+https?:\/\/([^\/]*\.)?chippewa-work-boot\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?chiquita-wqok0t741\.blogspot\.com
+https?:\/\/([^\/]*\.)?chiricc4t\.zj\.pl
+https?:\/\/([^\/]*\.)?chiricdel\.fr-bb\.com
+https?:\/\/([^\/]*\.)?chitr\.discutforum\.com
+https?:\/\/([^\/]*\.)?chizelc\.goodforum\.net
+https?:\/\/([^\/]*\.)?chizelc\.grafbb\.com
+https?:\/\/([^\/]*\.)?chizelno\.cultureforum\.net
+https?:\/\/([^\/]*\.)?chkawai\.cn
+https?:\/\/([^\/]*\.)?chocolat-g4\.blogspot\.com
+https?:\/\/([^\/]*\.)?chocolate\.my10gb\.com
+https?:\/\/([^\/]*\.)?chongdianqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?chops-hg47n04tvi\.blogspot\.com
+https?:\/\/([^\/]*\.)?choudoufu\.com
+https?:\/\/([^\/]*\.)?chris-ks6u6dj\.blogspot\.com
+https?:\/\/([^\/]*\.)?chrissy-oyo8z\.blogspot\.com
+https?:\/\/([^\/]*\.)?christ-acczbi1t\.blogspot\.com
+https?:\/\/([^\/]*\.)?christen-bttdc0kn\.blogspot\.com
+https?:\/\/([^\/]*\.)?christeta\.com
+https?:\/\/([^\/]*\.)?christia-ccf2e6\.blogspot\.com
+https?:\/\/([^\/]*\.)?christiaan-dvb\.blogspot\.com
+https?:\/\/([^\/]*\.)?christianj-t3e1j3\.blogspot\.com
+https?:\/\/([^\/]*\.)?christin-ee1qjx\.blogspot\.com
+https?:\/\/([^\/]*\.)?christina-aguilera-pic\.blogspot\.com
+https?:\/\/([^\/]*\.)?christina-wf\.blogspot\.com
+https?:\/\/([^\/]*\.)?christine-rgosvndiqw\.blogspot\.com
+https?:\/\/([^\/]*\.)?christoffe-g4e\.blogspot\.com
+https?:\/\/([^\/]*\.)?christop-hqhff\.blogspot\.com
+https?:\/\/([^\/]*\.)?christy-kflb274n\.blogspot\.com
+https?:\/\/([^\/]*\.)?chrome-it8j\.blogspot\.com
+https?:\/\/([^\/]*\.)?chrykne\.info
+https?:\/\/([^\/]*\.)?chrystian-mgxw3jyfb1\.blogspot\.com
+https?:\/\/([^\/]*\.)?chuanganqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?chubby-bear-pic\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?chubby-chick\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?chubby-cum\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?chubby-teens-tus\.blogspot\.com
+https?:\/\/([^\/]*\.)?chuck-oh\.blogspot\.com
+https?:\/\/([^\/]*\.)?chucky-aklnscme\.blogspot\.com
+https?:\/\/([^\/]*\.)?chulyt\.com
+https?:\/\/([^\/]*\.)?church-b0w4\.blogspot\.com
+https?:\/\/([^\/]*\.)?chuvak-org\.blogspot\.com
+https?:\/\/([^\/]*\.)?chvpqa7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?chyna-c2\.blogspot\.com
+https?:\/\/([^\/]*\.)?ci-video-pornograficos-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?cialis-for-sale\.com
+https?:\/\/([^\/]*\.)?cialis-ok-1\.blogspot\.com
+https?:\/\/([^\/]*\.)?cialis-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?cialis-pharma\.tripod\.com
+https?:\/\/([^\/]*\.)?cialis-soft-tabs\.com
+https?:\/\/([^\/]*\.)?cialis\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?cialis\.esguay\.com
+https?:\/\/([^\/]*\.)?cialis\.fws1\.com
+https?:\/\/([^\/]*\.)?cialis\.goodpharm\.info
+https?:\/\/([^\/]*\.)?cialis\.page\.tl
+https?:\/\/([^\/]*\.)?cialis\.presteert\.nl
+https?:\/\/([^\/]*\.)?cialis\.rx4\.org
+https?:\/\/([^\/]*\.)?cialis\.seesaa\.net
+https?:\/\/([^\/]*\.)?cialis\.skocz\.net
+https?:\/\/([^\/]*\.)?cialises\.us\.tf
+https?:\/\/([^\/]*\.)?cialisjiq\.blogspot\.com
+https?:\/\/([^\/]*\.)?cialispills\.blog\.hr
+https?:\/\/([^\/]*\.)?cialisrx\.weboficial\.com
+https?:\/\/([^\/]*\.)?cialisx\.host-page\.com
+https?:\/\/([^\/]*\.)?ciara-d0\.blogspot\.com
+https?:\/\/([^\/]*\.)?cierra-t1f0hy\.blogspot\.com
+https?:\/\/([^\/]*\.)?cigar-ekelo\.blogspot\.com
+https?:\/\/([^\/]*\.)?cigarettes-smoking-online\.com
+https?:\/\/([^\/]*\.)?cigarettes\.4\.pl
+https?:\/\/([^\/]*\.)?cilmer\.com
+https?:\/\/([^\/]*\.)?cinast\.com
+https?:\/\/([^\/]*\.)?cincydj\.ifrance\.com
+https?:\/\/([^\/]*\.)?cinder-w6\.blogspot\.com
+https?:\/\/([^\/]*\.)?cindi-ruo8\.blogspot\.com
+https?:\/\/([^\/]*\.)?cindy-gdhs2i21u6\.blogspot\.com
+https?:\/\/([^\/]*\.)?cinem4\.com
+https?:\/\/([^\/]*\.)?cingularringtones\.269g\.net
+https?:\/\/([^\/]*\.)?ciplactin\.tlg\.pl
+https?:\/\/([^\/]*\.)?ciprobuy\.hop\.to
+https?:\/\/([^\/]*\.)?ciprobuycheap\.firstpage\.de
+https?:\/\/([^\/]*\.)?ciprobuygeneric\.move\.to
+https?:\/\/([^\/]*\.)?ciprocheap\.dive\.to
+https?:\/\/([^\/]*\.)?ciprofloxacin\.xwiki\.com
+https?:\/\/([^\/]*\.)?ciprogeneric\.i\.am
+https?:\/\/([^\/]*\.)?citdokcna\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?citeccit\.forumculture\.net
+https?:\/\/([^\/]*\.)?citpocit\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?civisi\.com
+https?:\/\/([^\/]*\.)?cixingcailiao\.dzsc\.com
+https?:\/\/([^\/]*\.)?cjhx6\.szm\.sk
+https?:\/\/([^\/]*\.)?ckalv\.szm\.sk
+https?:\/\/([^\/]*\.)?ckfhhw4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ckqabl1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?claca\.blogcu\.com
+https?:\/\/([^\/]*\.)?claire-k6kkha\.blogspot\.com
+https?:\/\/([^\/]*\.)?clancy-i1ib\.blogspot\.com
+https?:\/\/([^\/]*\.)?clara-mj6ts\.blogspot\.com
+https?:\/\/([^\/]*\.)?clarissa-o14r\.blogspot\.com
+https?:\/\/([^\/]*\.)?clark-asa0i3mfvr\.blogspot\.com
+https?:\/\/([^\/]*\.)?classic-porn-clip-zoneykt\.blogspot\.com
+https?:\/\/([^\/]*\.)?claude-blw\.blogspot\.com
+https?:\/\/([^\/]*\.)?claudia-c7ut8jj4\.blogspot\.com
+https?:\/\/([^\/]*\.)?clay-e-facial-mask-vitamin\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cleaner-ddiggwqy1t\.blogspot\.com
+https?:\/\/([^\/]*\.)?clearmp3\.net
+https?:\/\/([^\/]*\.)?clerk\.lir\.dk
+https?:\/\/([^\/]*\.)?cletoac\.lolbb\.com
+https?:\/\/([^\/]*\.)?cleveland-txjimr\.blogspot\.com
+https?:\/\/([^\/]*\.)?clickhere2\.net
+https?:\/\/([^\/]*\.)?clior\.graphforum\.com
+https?:\/\/([^\/]*\.)?clip-ebony-lesbian-porn\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?clip-ebony-porn\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?clip-free-hand-job-movie-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?clip-free-porn-psp-newsy66\.blogspot\.com
+https?:\/\/([^\/]*\.)?clip-hentai\.dreamsuit\.net
+https?:\/\/([^\/]*\.)?clip-hunter-porn-blogctv\.blogspot\.com
+https?:\/\/([^\/]*\.)?clip-hunter-porn-zone8y6\.blogspot\.com
+https?:\/\/([^\/]*\.)?clip-malay-porn-newsgrq\.blogspot\.com
+https?:\/\/([^\/]*\.)?clip-malay-porn-zone1w3\.blogspot\.com
+https?:\/\/([^\/]*\.)?clipgalaxy-com-i4z645\.blogspot\.com
+https?:\/\/([^\/]*\.)?clipgalaxy-com-io8ncz\.blogspot\.com
+https?:\/\/([^\/]*\.)?clipper-e2buyg\.blogspot\.com
+https?:\/\/([^\/]*\.)?clirol\.dl\.pl
+https?:\/\/([^\/]*\.)?clit-huge-real\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?cllivers\.dl\.pl
+https?:\/\/([^\/]*\.)?clobetasol-propionate\.tlg\.pl
+https?:\/\/([^\/]*\.)?cloclo-w046r\.blogspot\.com
+https?:\/\/([^\/]*\.)?clonazepam\.us\.tf
+https?:\/\/([^\/]*\.)?clonazepamscz\.blogspot\.com
+https?:\/\/([^\/]*\.)?clonazepamuej\.blogspot\.com
+https?:\/\/([^\/]*\.)?clonsex\.info
+https?:\/\/([^\/]*\.)?closeout-womens-rain-boot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?clothes-newborns\.loretic\.be
+https?:\/\/([^\/]*\.)?cloudydayshadow\.blogspot\.com
+https?:\/\/([^\/]*\.)?clover-rs04\.blogspot\.com
+https?:\/\/([^\/]*\.)?clowns-gloi\.blogspot\.com
+https?:\/\/([^\/]*\.)?clu\.cn
+https?:\/\/([^\/]*\.)?clumsy-hl0fwl1k\.blogspot\.com
+https?:\/\/([^\/]*\.)?cluster-k4ovd06ibi\.blogspot\.com
+https?:\/\/([^\/]*\.)?clwilbur\.ifrance\.com
+https?:\/\/([^\/]*\.)?clyaod2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cmauq\.com
+https?:\/\/([^\/]*\.)?cmnanwe\.com
+https?:\/\/([^\/]*\.)?cmsrt\.szm\.sk
+https?:\/\/([^\/]*\.)?cmubroadway\.blogspot\.com
+https?:\/\/([^\/]*\.)?cnaalget\.graphforum\.com
+https?:\/\/([^\/]*\.)?cnaalget\.highforum\.net
+https?:\/\/([^\/]*\.)?cnac4t-or\.bbgraf\.com
+https?:\/\/([^\/]*\.)?cnadel6or6\.dl\.pl
+https?:\/\/([^\/]*\.)?cnaeltbo\.discutforum\.com
+https?:\/\/([^\/]*\.)?cnaeltdron\.bb-fr\.com
+https?:\/\/([^\/]*\.)?cnapasou\.graphforum\.com
+https?:\/\/([^\/]*\.)?cnatral\.xa\.pl
+https?:\/\/([^\/]*\.)?cnbess\.com
+https?:\/\/([^\/]*\.)?cnbf2\.szm\.sk
+https?:\/\/([^\/]*\.)?cncarcenter\.com
+https?:\/\/([^\/]*\.)?cnfibernet\.com\.cn
+https?:\/\/([^\/]*\.)?cnmarketingresearch\.com
+https?:\/\/([^\/]*\.)?cnplayhome\.cn
+https?:\/\/([^\/]*\.)?cnticket\.net
+https?:\/\/([^\/]*\.)?co-alf\.blogspot\.com
+https?:\/\/([^\/]*\.)?co-video-de-sexo-gratis-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?co6or6bo\.dl\.pl
+https?:\/\/([^\/]*\.)?coacdar\.bbfr\.net
+https?:\/\/([^\/]*\.)?coachescorner\.com
+https?:\/\/([^\/]*\.)?cock-and-ball-punishment\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cock-deep-huge-throat\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cock-love-teen\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?cock-petite-sucker\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?cock-roaches-picture\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?cock-sexy-sucker\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?cock-story-sucker\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cocnacna\.dl\.pl
+https?:\/\/([^\/]*\.)?cocoel\.lightbb\.com
+https?:\/\/([^\/]*\.)?coconel\.frbb\.net
+https?:\/\/([^\/]*\.)?codarget\.dl\.pl
+https?:\/\/([^\/]*\.)?codigodor\.blogspot\.com
+https?:\/\/([^\/]*\.)?coiqen\.com
+https?:\/\/([^\/]*\.)?cold-hard-bitch-lyric\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?college-fucking-video-free\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?college1-degree\.boom\.ru
+https?:\/\/([^\/]*\.)?college1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?college1degree1p\.chat\.ru
+https?:\/\/([^\/]*\.)?colodom\.frbb\.net
+https?:\/\/([^\/]*\.)?colorado\.edu
+https?:\/\/([^\/]*\.)?coloradomortgage-x\.com
+https?:\/\/([^\/]*\.)?com-dick-fick-n-suck\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?comic-fetish-info-remember\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?comic-hardcore-info-remember-sex\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?comicvmarriage\.spycams777\.com
+https?:\/\/([^\/]*\.)?commercialleaseonline\.info
+https?:\/\/([^\/]*\.)?communicationagency\.com
+https?:\/\/([^\/]*\.)?comontr\.bb-fr\.com
+https?:\/\/([^\/]*\.)?companyforyou\.com
+https?:\/\/([^\/]*\.)?competitio\.ifrance\.com
+https?:\/\/([^\/]*\.)?computer-desk\.fromru\.com
+https?:\/\/([^\/]*\.)?computer1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?computerxchange\.com
+https?:\/\/([^\/]*\.)?comradealtmer\.blogspot\.com
+https?:\/\/([^\/]*\.)?condition-skin\.newmail\.ru
+https?:\/\/([^\/]*\.)?condition_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?condom-delivered-free-free-uk\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?condom-picture-penis\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?connecticutmortgage-x\.com
+https?:\/\/([^\/]*\.)?conor2k\.007webpro\.com
+https?:\/\/([^\/]*\.)?consistmay\.tripod\.com
+https?:\/\/([^\/]*\.)?consolidation-loan-studentqdl\.blogspot\.com
+https?:\/\/([^\/]*\.)?consultanthub\.com
+https?:\/\/([^\/]*\.)?cooking-crazy\.com
+https?:\/\/([^\/]*\.)?cool-mp3\.biz
+https?:\/\/([^\/]*\.)?coolhost\.biz
+https?:\/\/([^\/]*\.)?copasleto\.zj\.pl
+https?:\/\/([^\/]*\.)?copyok\.net
+https?:\/\/([^\/]*\.)?coricidin\.tlg\.pl
+https?:\/\/([^\/]*\.)?cornut\.ipupdater\.com
+https?:\/\/([^\/]*\.)?coro-aaliyah\.blogspot\.com
+https?:\/\/([^\/]*\.)?corporategifts-guide\.com
+https?:\/\/([^\/]*\.)?corsv\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?cortech\.cn
+https?:\/\/([^\/]*\.)?cositbo\.bbgraf\.com
+https?:\/\/([^\/]*\.)?cosmiboe\.forumzen\.com
+https?:\/\/([^\/]*\.)?cosmicray\.umd\.edu
+https?:\/\/([^\/]*\.)?coswishe\.dl\.pl
+https?:\/\/([^\/]*\.)?cotton-gloves\.loretic\.be
+https?:\/\/([^\/]*\.)?counciloflight\.com
+https?:\/\/([^\/]*\.)?couple-fucking-photo\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?couple-kissing-pic\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?couponmountain\.com
+https?:\/\/([^\/]*\.)?courses\.csusm\.edu
+https?:\/\/([^\/]*\.)?courtinfroggie\.blogspot\.com
+https?:\/\/([^\/]*\.)?covarou\.su\.pl
+https?:\/\/([^\/]*\.)?cowei\.net
+https?:\/\/([^\/]*\.)?cowlist-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?cozaar\.4\.pl
+https?:\/\/([^\/]*\.)?cozaarbuy\.hello\.to
+https?:\/\/([^\/]*\.)?cozaarcheap\.mysite\.de
+https?:\/\/([^\/]*\.)?cozaarcheapgeneric\.warp9\.to
+https?:\/\/([^\/]*\.)?cozaargeneric\.everything\.at
+https?:\/\/([^\/]*\.)?cozaargenericcheap\.dive\.to
+https?:\/\/([^\/]*\.)?cpayscom\.xwiki\.com
+https?:\/\/([^\/]*\.)?cpkna\.szm\.sk
+https?:\/\/([^\/]*\.)?cpsyy\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?cpyngke\.com
+https?:\/\/([^\/]*\.)?cqbhn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cqfmz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cqjbjx1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cr4ix7\.com
+https?:\/\/([^\/]*\.)?crabs\.isgre\.at
+https?:\/\/([^\/]*\.)?cramp-hand-leg\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?crashdome\.info
+https?:\/\/([^\/]*\.)?crazyvirgin\.info
+https?:\/\/([^\/]*\.)?crbackus\.dl\.pl
+https?:\/\/([^\/]*\.)?crcather\.dl\.pl
+https?:\/\/([^\/]*\.)?cream-facial-pie\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cream-hairy-mature-movie-pie-pussy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?creampie\.coz\.in
+https?:\/\/([^\/]*\.)?creating-a-boot-cd\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?credit-dreams\.com
+https?:\/\/([^\/]*\.)?creditcards-x\.com
+https?:\/\/([^\/]*\.)?credoninc\.com
+https?:\/\/([^\/]*\.)?crestor-rx\.one2you\.info
+https?:\/\/([^\/]*\.)?crestor\.dynalias\.net
+https?:\/\/([^\/]*\.)?criminal-j-degre\.boom\.ru
+https?:\/\/([^\/]*\.)?crimson-teens\.freeinsite\.net
+https?:\/\/([^\/]*\.)?cristal-fenix\.isuisse\.com
+https?:\/\/([^\/]*\.)?crookedscud\.myfreewebs\.net
+https?:\/\/([^\/]*\.)?crossed-leg-gallery\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?crossed-leg-short-skirt-stocking-top\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?crrenee\.dl\.pl
+https?:\/\/([^\/]*\.)?crsundke\.dl\.pl
+https?:\/\/([^\/]*\.)?cruise-guide\.org
+https?:\/\/([^\/]*\.)?cruise-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?crzvh\.szm\.sk
+https?:\/\/([^\/]*\.)?cscla\.net
+https?:\/\/([^\/]*\.)?cscserver\.cc\.edu
+https?:\/\/([^\/]*\.)?csitdom\.bbgraf\.com
+https?:\/\/([^\/]*\.)?csmwui11\.com
+https?:\/\/([^\/]*\.)?csosandbox\.clemson\.edu
+https?:\/\/([^\/]*\.)?ctdq0\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ctl\.csudh\.edu
+https?:\/\/([^\/]*\.)?ctusxc4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?cubaka\.yi\.org
+https?:\/\/([^\/]*\.)?cufgq\.szm\.sk
+https?:\/\/([^\/]*\.)?cuicui\.monblog\.ch
+https?:\/\/([^\/]*\.)?cuiugcg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?culinary-school\.newmail\.ru
+https?:\/\/([^\/]*\.)?culinary1school\.chat\.ru
+https?:\/\/([^\/]*\.)?cum-drenched-pantie\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-drink-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-dvd-face-private-private-rip-vcd\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?cum-ebony-face\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?cum-face-asian\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?cum-face-pic\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-face-picture\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-facial-messy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?cum-facial-video-free-clip\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cum-filled-pussy-picture\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-kiss-lick-shoes-suck-worship\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cum-mouth-ebony\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cum-nurse-sex-shot\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?cum-se-face-sex\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?cum-shot-movie\.dreamsuit\.net
+https?:\/\/([^\/]*\.)?cum-swallow-vids\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?cuola\.goodforum\.net
+https?:\/\/([^\/]*\.)?cut-xmeup-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?cute-ebony-girl\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?cute-girldzy\.blogspot\.com
+https?:\/\/([^\/]*\.)?cutgetolo\.zikforum\.com
+https?:\/\/([^\/]*\.)?cutvili\.winnerforum\.net
+https?:\/\/([^\/]*\.)?cvep2\.szm\.sk
+https?:\/\/([^\/]*\.)?cvipm\.com
+https?:\/\/([^\/]*\.)?cxolt\.szm\.sk
+https?:\/\/([^\/]*\.)?cyberlinx\.us
+https?:\/\/([^\/]*\.)?cycleworldsuzuki\.info
+https?:\/\/([^\/]*\.)?cyclobenzaprine\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?cysrf\.szm\.sk
+https?:\/\/([^\/]*\.)?cytonrok\.forumculture\.net
+https?:\/\/([^\/]*\.)?czelvar\.su\.pl
+https?:\/\/([^\/]*\.)?czis0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?d-z-free-lesbian-movie-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?daddy-bear-gay\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?daddy-long-leg-venom\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?daily-porn-clip-news0we\.blogspot\.com
+https?:\/\/([^\/]*\.)?dailybasis-com-cky8ax\.blogspot\.com
+https?:\/\/([^\/]*\.)?dami3\.com
+https?:\/\/([^\/]*\.)?danazol\.4\.pl
+https?:\/\/([^\/]*\.)?dance-instruction\.lkerfocu\.be
+https?:\/\/([^\/]*\.)?danga4ka\.blogspot\.com
+https?:\/\/([^\/]*\.)?dansmovies-com-mu2ywho24d\.blogspot\.com
+https?:\/\/([^\/]*\.)?daractr\.goodbb\.net
+https?:\/\/([^\/]*\.)?darboboc\.dl\.pl
+https?:\/\/([^\/]*\.)?darboctroc\.dl\.pl
+https?:\/\/([^\/]*\.)?darcnaec\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?darcoca\.dl\.pl
+https?:\/\/([^\/]*\.)?dardomcna\.blogcu\.com
+https?:\/\/([^\/]*\.)?dardomdom\.darkbb\.com
+https?:\/\/([^\/]*\.)?dardomzel\.blogcu\.com
+https?:\/\/([^\/]*\.)?dare-poker\.com
+https?:\/\/([^\/]*\.)?darelttr\.dl\.pl
+https?:\/\/([^\/]*\.)?dargetou\.darkbb\.com
+https?:\/\/([^\/]*\.)?darladom\.td\.pl
+https?:\/\/([^\/]*\.)?darlala\.winnerforum\.net
+https?:\/\/([^\/]*\.)?darlina-a1vds\.blogspot\.com
+https?:\/\/([^\/]*\.)?darlina-akp4\.blogspot\.com
+https?:\/\/([^\/]*\.)?darlina-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?darlina-tcifizmx\.blogspot\.com
+https?:\/\/([^\/]*\.)?darmonrol\.zj\.pl
+https?:\/\/([^\/]*\.)?darricer\.fr-bb\.com
+https?:\/\/([^\/]*\.)?darzeltroc\.dl\.pl
+https?:\/\/([^\/]*\.)?dasepluv\.dl\.pl
+https?:\/\/([^\/]*\.)?dashulya\.blogspot\.com
+https?:\/\/([^\/]*\.)?dastino\.republika\.pl
+https?:\/\/([^\/]*\.)?data-mining\.massioni\.be
+https?:\/\/([^\/]*\.)?datangid\.com
+https?:\/\/([^\/]*\.)?datasol\.org
+https?:\/\/([^\/]*\.)?dating-advice\.sexnation\.info
+https?:\/\/([^\/]*\.)?dating-direct\.sexnation\.info
+https?:\/\/([^\/]*\.)?dating\.sexnation\.info
+https?:\/\/([^\/]*\.)?dave-hollister-ringtoneezm\.blogspot\.com
+https?:\/\/([^\/]*\.)?dave-hollister-ringtonefoi\.blogspot\.com
+https?:\/\/([^\/]*\.)?dave-hollister-ringtonewqs\.blogspot\.com
+https?:\/\/([^\/]*\.)?davejackson\.com
+https?:\/\/([^\/]*\.)?davte\.info
+https?:\/\/([^\/]*\.)?dawsonanddadrealty\.com
+https?:\/\/([^\/]*\.)?dayzve4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dbxbqb7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dc-escort-gay\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?dcuoo\.szm\.sk
+https?:\/\/([^\/]*\.)?dcx\.org\.ua
+https?:\/\/([^\/]*\.)?ddfz1\.szm\.sk
+https?:\/\/([^\/]*\.)?ddlive\.info
+https?:\/\/([^\/]*\.)?ddovj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ddpb6\.szm\.sk
+https?:\/\/([^\/]*\.)?de-foto-gay-gratis-negros\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?dead-sea-product\.com
+https?:\/\/([^\/]*\.)?deadsex\.info
+https?:\/\/([^\/]*\.)?deadums\.blogspot\.com
+https?:\/\/([^\/]*\.)?debk6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?debt-consolidation-care\.com
+https?:\/\/([^\/]*\.)?debt-consolidation\.dd\.vg
+https?:\/\/([^\/]*\.)?debtconsolidation-today\.com
+https?:\/\/([^\/]*\.)?deepthroat\.coz\.in
+https?:\/\/([^\/]*\.)?deerdeji\.forumzen\.com
+https?:\/\/([^\/]*\.)?defacialize-com-td32\.blogspot\.com
+https?:\/\/([^\/]*\.)?defi-adrian\.blogspot\.com
+https?:\/\/([^\/]*\.)?degree-program\.hotmail\.ru
+https?:\/\/([^\/]*\.)?degree2program\.chat\.ru
+https?:\/\/([^\/]*\.)?dejablu503\.50webs\.org
+https?:\/\/([^\/]*\.)?dela88\.com
+https?:\/\/([^\/]*\.)?delacmon\.discutforum\.com
+https?:\/\/([^\/]*\.)?delawaremortgage-x\.com
+https?:\/\/([^\/]*\.)?delbocer\.dl\.pl
+https?:\/\/([^\/]*\.)?delcnacna\.lolbb\.com
+https?:\/\/([^\/]*\.)?delletopas\.su\.pl
+https?:\/\/([^\/]*\.)?delliric\.dl\.pl
+https?:\/\/([^\/]*\.)?delordel\.blogcu\.com
+https?:\/\/([^\/]*\.)?delricchi\.goodforum\.net
+https?:\/\/([^\/]*\.)?delricchi\.grafbb\.com
+https?:\/\/([^\/]*\.)?delricou\.dl\.pl
+https?:\/\/([^\/]*\.)?delserch\.com
+https?:\/\/([^\/]*\.)?deltasone\.4\.pl
+https?:\/\/([^\/]*\.)?deltnecca\.goodbb\.net
+https?:\/\/([^\/]*\.)?delzelleto\.dl\.pl
+https?:\/\/([^\/]*\.)?demingpower\.com
+https?:\/\/([^\/]*\.)?denocel\.blogcu\.com
+https?:\/\/([^\/]*\.)?dental-guide\.org
+https?:\/\/([^\/]*\.)?dental\.gulfcoast\.edu
+https?:\/\/([^\/]*\.)?dentalplans-x\.com
+https?:\/\/([^\/]*\.)?deomnoou\.jconserv\.net
+https?:\/\/([^\/]*\.)?depamu\.com
+https?:\/\/([^\/]*\.)?depstore\.milan\.jp
+https?:\/\/([^\/]*\.)?derast\.com
+https?:\/\/([^\/]*\.)?derimc\.com
+https?:\/\/([^\/]*\.)?description\.hostonmars\.com
+https?:\/\/([^\/]*\.)?desent\.8tt\.org
+https?:\/\/([^\/]*\.)?design4italy\.org
+https?:\/\/([^\/]*\.)?designatchina\.com
+https?:\/\/([^\/]*\.)?designer-purses\.blogspot\.com
+https?:\/\/([^\/]*\.)?desk-teen-d\.blogspot\.com
+https?:\/\/([^\/]*\.)?desyrel\.4\.pl
+https?:\/\/([^\/]*\.)?detriot\.dtdns\.net
+https?:\/\/([^\/]*\.)?deutschland-heute\.de\.tl
+https?:\/\/([^\/]*\.)?devine-friend-hot-mom\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?dewall\.info
+https?:\/\/([^\/]*\.)?dg\.188info\.com
+https?:\/\/([^\/]*\.)?dgvy5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dial3\.szm\.sk
+https?:\/\/([^\/]*\.)?diamond73\.50webs\.com
+https?:\/\/([^\/]*\.)?dianchi\.dzsc\.com
+https?:\/\/([^\/]*\.)?diandongji\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianganqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianluban\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianre\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianrong\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianweiqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianyuan\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianziguan\.dzsc\.com
+https?:\/\/([^\/]*\.)?dianzu\.dzsc\.com
+https?:\/\/([^\/]*\.)?diazepam\.47\.pl
+https?:\/\/([^\/]*\.)?diazepam\.skocz\.net
+https?:\/\/([^\/]*\.)?diazepam2\.forospace\.com
+https?:\/\/([^\/]*\.)?diazepams\.ru\.tf
+https?:\/\/([^\/]*\.)?dick-butkus-football-player\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?dick-donkey-sucking-woman\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?dick-fat-in-pussy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?dick-head-john-kerry\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?dick-hot-man-video\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?dicks-sporting-goods-web-site\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?didrex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?didrex\.int\.tf
+https?:\/\/([^\/]*\.)?diebart\.asp2\.cz
+https?:\/\/([^\/]*\.)?diesite\.com
+https?:\/\/([^\/]*\.)?diet-pills-phentermine-pill-buy-cheap-online\.com
+https?:\/\/([^\/]*\.)?diet-pills911\.com
+https?:\/\/([^\/]*\.)?diffusersudan\.org
+https?:\/\/([^\/]*\.)?diflucanbuycheap\.top\.ms
+https?:\/\/([^\/]*\.)?diflucancheapbuy\.drop\.to
+https?:\/\/([^\/]*\.)?diflucancheapgeneric\.notrix\.net
+https?:\/\/([^\/]*\.)?diflucangeneric\.hey\.to
+https?:\/\/([^\/]*\.)?diflucangenericbuy\.hp\.ms
+https?:\/\/([^\/]*\.)?digilander\.libero\.it
+https?:\/\/([^\/]*\.)?digital-glamour\.com
+https?:\/\/([^\/]*\.)?digitalpoimt\.com
+https?:\/\/([^\/]*\.)?dildo-extreme-free-movie\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?dildo-in-guys-ass\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?dilhbi7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dionysios-r\.blogspot\.com
+https?:\/\/([^\/]*\.)?dir\.opank\.com
+https?:\/\/([^\/]*\.)?dirare\.com
+https?:\/\/([^\/]*\.)?directonlineguide\.com
+https?:\/\/([^\/]*\.)?dirty-blonde-teen\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?dirty-ru-lenta\.blogspot\.com
+https?:\/\/([^\/]*\.)?dirtyrhino-com-iy5ps48s\.blogspot\.com
+https?:\/\/([^\/]*\.)?dirtyrhino-com-rjrotse3\.blogspot\.com
+https?:\/\/([^\/]*\.)?discasegeta\.0moola\.com
+https?:\/\/([^\/]*\.)?discontinued-chanel-lipstick\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?discount-femina-lingerie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?discount-phentermine\.health-livening\.com
+https?:\/\/([^\/]*\.)?discount-phentermine\.presteert\.nl
+https?:\/\/([^\/]*\.)?discounted-medications\.com
+https?:\/\/([^\/]*\.)?discountphentermine\.livelog\.com
+https?:\/\/([^\/]*\.)?discussions\.csbsju\.edu
+https?:\/\/([^\/]*\.)?dissected-voice\.blogspot\.com
+https?:\/\/([^\/]*\.)?diuvw\.szm\.sk
+https?:\/\/([^\/]*\.)?diva-58\.site\.voila\.fr
+https?:\/\/([^\/]*\.)?divtab\.com
+https?:\/\/([^\/]*\.)?dixe-alayna\.blogspot\.com
+https?:\/\/([^\/]*\.)?dixiecuties-com-av\.blogspot\.com
+https?:\/\/([^\/]*\.)?dixiecuties-com-wpf1g2a\.blogspot\.com
+https?:\/\/([^\/]*\.)?dka2e\.nokedem\.com
+https?:\/\/([^\/]*\.)?dlaners\.blogspot\.com
+https?:\/\/([^\/]*\.)?dljs5\.szm\.sk
+https?:\/\/([^\/]*\.)?dltz4\.szm\.sk
+https?:\/\/([^\/]*\.)?dlwlh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dlzgn\.szm\.sk
+https?:\/\/([^\/]*\.)?dm-cqsf\.cn
+https?:\/\/([^\/]*\.)?dm-soft\.com
+https?:\/\/([^\/]*\.)?dmnft\.net
+https?:\/\/([^\/]*\.)?dnk-design\.com
+https?:\/\/([^\/]*\.)?do-ali\.blogspot\.com
+https?:\/\/([^\/]*\.)?do-hot-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?doctorpinkerton\.ifrance\.com
+https?:\/\/([^\/]*\.)?doenertreff\.de
+https?:\/\/([^\/]*\.)?dogdead\.50webs\.com
+https?:\/\/([^\/]*\.)?dogider-big-tit-round-a-p\.blogspot\.com
+https?:\/\/([^\/]*\.)?dogzilla30\.blogspot\.com
+https?:\/\/([^\/]*\.)?dohr\.joolo\.com
+https?:\/\/([^\/]*\.)?dokrichi\.forumculture\.net
+https?:\/\/([^\/]*\.)?dokuno-porn-clip\.blogspot\.com
+https?:\/\/([^\/]*\.)?dollmovies-com-e7lqyhq\.blogspot\.com
+https?:\/\/([^\/]*\.)?dom-or-dron\.jc\.pl
+https?:\/\/([^\/]*\.)?domdronno\.xa\.pl
+https?:\/\/([^\/]*\.)?dome-ebony-foot-herbies\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?domelc4t\.dl\.pl
+https?:\/\/([^\/]*\.)?domest1co\.info
+https?:\/\/([^\/]*\.)?domestic0\.info
+https?:\/\/([^\/]*\.)?domnoor\.blogcu\.com
+https?:\/\/([^\/]*\.)?domorca\.darkbb\.com
+https?:\/\/([^\/]*\.)?dompasvi\.alkablog\.com
+https?:\/\/([^\/]*\.)?domrelou\.discutfree\.com
+https?:\/\/([^\/]*\.)?domtadom\.blogcu\.com
+https?:\/\/([^\/]*\.)?domtael\.dl\.pl
+https?:\/\/([^\/]*\.)?don-search\.com
+https?:\/\/([^\/]*\.)?dong-sheng\.com
+https?:\/\/([^\/]*\.)?dono-alaska\.blogspot\.com
+https?:\/\/([^\/]*\.)?doodlepets\.net
+https?:\/\/([^\/]*\.)?doormat\.ncedly\.be
+https?:\/\/([^\/]*\.)?dorank\.com
+https?:\/\/([^\/]*\.)?dorintop\.9999mb\.com
+https?:\/\/([^\/]*\.)?dotbusinessbroker\.info
+https?:\/\/([^\/]*\.)?dottorstranamore\.com
+https?:\/\/([^\/]*\.)?dotwirelessinternet\.info
+https?:\/\/([^\/]*\.)?double-anal-insertion\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?doubledrilled-com-ru\.blogspot\.com
+https?:\/\/([^\/]*\.)?douglasgenetic\.org
+https?:\/\/([^\/]*\.)?download-fisting-free-movie-pussy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?download-free-porn-clip-zone186\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-porn-movie-bb-bb-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-ringtonebso\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-ringtonekdw\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-ringtonekfb\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-ringtoneoug\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-free-ringtonesasd\.blogspot\.com
+https?:\/\/([^\/]*\.)?download-ringtonevnr\.blogspot\.com
+https?:\/\/([^\/]*\.)?downloadfreeringtonengp\.blogspot\.com
+https?:\/\/([^\/]*\.)?downsms\.blogbus\.com
+https?:\/\/([^\/]*\.)?dpfanatics-com-t7nqv\.blogspot\.com
+https?:\/\/([^\/]*\.)?dqezl\.szm\.sk
+https?:\/\/([^\/]*\.)?draghi\.ll11\.info
+https?:\/\/([^\/]*\.)?dragonballxxx-gratis\.19mb\.info
+https?:\/\/([^\/]*\.)?dragonmovies-dd2bm5sn\.blogspot\.com
+https?:\/\/([^\/]*\.)?dragonmovies-rwng8vm7j\.blogspot\.com
+https?:\/\/([^\/]*\.)?drbizzaro-com-r5\.blogspot\.com
+https?:\/\/([^\/]*\.)?drdos\.50webs\.org
+https?:\/\/([^\/]*\.)?dreamathk\.com
+https?:\/\/([^\/]*\.)?dreamatsh\.com
+https?:\/\/([^\/]*\.)?dreamhk\.org
+https?:\/\/([^\/]*\.)?dress-jacket\.haemati\.be
+https?:\/\/([^\/]*\.)?drithle\.com
+https?:\/\/([^\/]*\.)?driving-school\.hotmail\.ru
+https?:\/\/([^\/]*\.)?driving2school\.chat\.ru
+https?:\/\/([^\/]*\.)?dronaceldar\.darkbb\.com
+https?:\/\/([^\/]*\.)?dronc4tta\.blogcu\.com
+https?:\/\/([^\/]*\.)?droncaca\.blogcu\.com
+https?:\/\/([^\/]*\.)?dronchitr\.blogcu\.com
+https?:\/\/([^\/]*\.)?drondomrac\.bb-fr\.com
+https?:\/\/([^\/]*\.)?drondrontr\.zikforum\.com
+https?:\/\/([^\/]*\.)?dronladar\.discutfree\.com
+https?:\/\/([^\/]*\.)?dronladar\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?dronrelco\.td\.pl
+https?:\/\/([^\/]*\.)?drownedmagenta\.50webs\.org
+https?:\/\/([^\/]*\.)?drug\.prtime\.ru
+https?:\/\/([^\/]*\.)?drunkgirls\.coz\.in
+https?:\/\/([^\/]*\.)?dry-skin\.boom\.ru
+https?:\/\/([^\/]*\.)?dry1skin\.chat\.ru
+https?:\/\/([^\/]*\.)?dscw0\.szm\.sk
+https?:\/\/([^\/]*\.)?dtmpdpxmsu-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?du-alice\.blogspot\.com
+https?:\/\/([^\/]*\.)?duaroti\.50webs\.com
+https?:\/\/([^\/]*\.)?dub-dom-adu\.blogspot\.com
+https?:\/\/([^\/]*\.)?duckyporn-ifl4u28p\.blogspot\.com
+https?:\/\/([^\/]*\.)?ducpjo3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dudoctor\.com
+https?:\/\/([^\/]*\.)?dudubilz\.dl\.pl
+https?:\/\/([^\/]*\.)?dumtrric\.forumzen\.com
+https?:\/\/([^\/]*\.)?duncemoney\.com
+https?:\/\/([^\/]*\.)?dunham-hiking-boot\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?dup-xxxfolder-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?dupiwu\.com
+https?:\/\/([^\/]*\.)?duptv\.szm\.sk
+https?:\/\/([^\/]*\.)?dushen\.net\.cn
+https?:\/\/([^\/]*\.)?dusts\.info
+https?:\/\/([^\/]*\.)?dutbm\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?duxbd\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?duxfhgz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dvd-vergini-economici-r\.host24h\.info
+https?:\/\/([^\/]*\.)?dvdunwritten\.toplog\.nl
+https?:\/\/([^\/]*\.)?dwaeaz-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?dwsyv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?dxjyb\.szm\.sk
+https?:\/\/([^\/]*\.)?dykzozqlpt-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?dzb\.com\.cn
+https?:\/\/([^\/]*\.)?dzgzm\.cn
+https?:\/\/([^\/]*\.)?dzjp\.left-page\.com
+https?:\/\/([^\/]*\.)?dzjp\.zxvo\.com
+https?:\/\/([^\/]*\.)?dzsb\.com
+https?:\/\/([^\/]*\.)?dzsc\.com
+https?:\/\/([^\/]*\.)?e-dishnetworks\.com
+https?:\/\/([^\/]*\.)?e-fanyi\.org
+https?:\/\/([^\/]*\.)?e-holdem\.net
+https?:\/\/([^\/]*\.)?e\.kth\.se
+https?:\/\/([^\/]*\.)?e16\.info
+https?:\/\/([^\/]*\.)?e93\.iitalia\.com
+https?:\/\/([^\/]*\.)?eaby2\.szm\.sk
+https?:\/\/([^\/]*\.)?eacome\.com
+https?:\/\/([^\/]*\.)?eafg6\.szm\.sk
+https?:\/\/([^\/]*\.)?eaglechief\.com
+https?:\/\/([^\/]*\.)?eamon-fuck-it-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?eappf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?earticlesonline\.com
+https?:\/\/([^\/]*\.)?easy-furniture\.org
+https?:\/\/([^\/]*\.)?easygals-com-h4\.blogspot\.com
+https?:\/\/([^\/]*\.)?easypic-com-if7pnmrbxd\.blogspot\.com
+https?:\/\/([^\/]*\.)?easypornstars-com-b8k4y\.blogspot\.com
+https?:\/\/([^\/]*\.)?easypornstars-com-subut\.blogspot\.com
+https?:\/\/([^\/]*\.)?easysail\.net\.cn
+https?:\/\/([^\/]*\.)?eating-free-lesbian-pussy\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?eating-lesbian-pussy\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?ebackground-checks\.com
+https?:\/\/([^\/]*\.)?ebdoc\.com
+https?:\/\/([^\/]*\.)?ebnjj\.info
+https?:\/\/([^\/]*\.)?ebony-free-woman\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ebony-fuck-tit\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ebony-horny-hot-woman\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?ebony-hot-outdoor\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?ebony-info-photo-remember-sexy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?ebony-info-remember-tit\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?ebony-party-sex\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ebony-porn-trailer\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?ebony-sex-com\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?ebony-teen-pic\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?ebony-teen-tgp\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?ebonyblack-net-gf\.blogspot\.com
+https?:\/\/([^\/]*\.)?ebonyblack-net-m3dy7kn\.blogspot\.com
+https?:\/\/([^\/]*\.)?ebonybooty\.wehostporno\.com
+https?:\/\/([^\/]*\.)?ebusiness-cards\.org
+https?:\/\/([^\/]*\.)?ecar-rentals\.com
+https?:\/\/([^\/]*\.)?eccellente\.info
+https?:\/\/([^\/]*\.)?ececu\.com
+https?:\/\/([^\/]*\.)?echayka\.com
+https?:\/\/([^\/]*\.)?eclexion\.net
+https?:\/\/([^\/]*\.)?eclissi-di-luna\.host24h\.info
+https?:\/\/([^\/]*\.)?ecomm1\.csug\.rochester\.edu
+https?:\/\/([^\/]*\.)?econtact-lens\.com
+https?:\/\/([^\/]*\.)?ed2k\.net\.ua
+https?:\/\/([^\/]*\.)?edasim\.com
+https?:\/\/([^\/]*\.)?eddiereva\.com
+https?:\/\/([^\/]*\.)?edetrali\.jconserv\.net
+https?:\/\/([^\/]*\.)?edomerna\.jconserv\.net
+https?:\/\/([^\/]*\.)?edonline\.ua\.edu
+https?:\/\/([^\/]*\.)?edqlzct\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?education\.beta\.edgewood\.edu
+https?:\/\/([^\/]*\.)?education\.uncc\.edu
+https?:\/\/([^\/]*\.)?education1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?ee3\.be
+https?:\/\/([^\/]*\.)?eelive\.info
+https?:\/\/([^\/]*\.)?eenxn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ees\.ufl\.edu
+https?:\/\/([^\/]*\.)?eesg8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?eeshq\.com
+https?:\/\/([^\/]*\.)?eetop\.info
+https?:\/\/([^\/]*\.)?eevjgn7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?effexor-xr\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?effexor\.b0ne\.com
+https?:\/\/([^\/]*\.)?egciz\.szm\.sk
+https?:\/\/([^\/]*\.)?egnadn-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?egnpgno\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?egoldhyip\.athost\.net
+https?:\/\/([^\/]*\.)?egoldhyip\.sitesfree\.com
+https?:\/\/([^\/]*\.)?egunteronline\.com
+https?:\/\/([^\/]*\.)?eightalya\.blogspot\.com
+https?:\/\/([^\/]*\.)?eighty-8088\.blogspot\.com
+https?:\/\/([^\/]*\.)?eijy7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ejeesf2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ejreoonster\.blogspot\.com
+https?:\/\/([^\/]*\.)?ejvyd\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ejyt9\.szm\.sk
+https?:\/\/([^\/]*\.)?ekajl\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ekjms\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ekttsaj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ekviceaia\.blogspot\.com
+https?:\/\/([^\/]*\.)?ekxkfyz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?el-ladies-com-m4ayb\.blogspot\.com
+https?:\/\/([^\/]*\.)?elacelal\.informe\.com
+https?:\/\/([^\/]*\.)?elbasbo\.dl\.pl
+https?:\/\/([^\/]*\.)?elbocboc\.bbgraf\.com
+https?:\/\/([^\/]*\.)?elbows-at\.blogspot\.com
+https?:\/\/([^\/]*\.)?elbtoy\.realpornstar\.net
+https?:\/\/([^\/]*\.)?elcnaac\.cultureforum\.net
+https?:\/\/([^\/]*\.)?electric-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?electric1scooter\.chat\.ru
+https?:\/\/([^\/]*\.)?electricscooterland\.com
+https?:\/\/([^\/]*\.)?elephantlist-com-hozhkwuac6\.blogspot\.com
+https?:\/\/([^\/]*\.)?elephantlist-com-kedi0pfbp\.blogspot\.com
+https?:\/\/([^\/]*\.)?elerc4t\.blogcu\.com
+https?:\/\/([^\/]*\.)?eleven-heaven0a\.blogspot\.com
+https?:\/\/([^\/]*\.)?elevtenl\.blogspot\.com
+https?:\/\/([^\/]*\.)?elishacuthbertfansite\.com
+https?:\/\/([^\/]*\.)?eliteclips-com-c0hwm3fji\.blogspot\.com
+https?:\/\/([^\/]*\.)?eliteclips-com-k5hkm6yi\.blogspot\.com
+https?:\/\/([^\/]*\.)?eliteclips-com-kzjz30a5k4\.blogspot\.com
+https?:\/\/([^\/]*\.)?elixirium\.ifrance\.com
+https?:\/\/([^\/]*\.)?eloloac\.bbgraf\.com
+https?:\/\/([^\/]*\.)?eloudar\.discutforum\.com
+https?:\/\/([^\/]*\.)?elovejob\.info
+https?:\/\/([^\/]*\.)?elpos\.szm\.sk
+https?:\/\/([^\/]*\.)?eltalchi\.bbfr\.net
+https?:\/\/([^\/]*\.)?eltalli\.zj\.pl
+https?:\/\/([^\/]*\.)?eltbuzel\.forumzen\.com
+https?:\/\/([^\/]*\.)?eltcer\.winnerforum\.net
+https?:\/\/([^\/]*\.)?eltgetric\.uy\.pl
+https?:\/\/([^\/]*\.)?eltrelboc\.bbfr\.net
+https?:\/\/([^\/]*\.)?eltrical\.uy\.pl
+https?:\/\/([^\/]*\.)?eltroboc\.lolforum\.net
+https?:\/\/([^\/]*\.)?eltrolpas\.winnerforum\.net
+https?:\/\/([^\/]*\.)?elttaacel\.heavenforum\.com
+https?:\/\/([^\/]*\.)?elttaacel\.highforum\.net
+https?:\/\/([^\/]*\.)?elttrocpas\.discutforum\.com
+https?:\/\/([^\/]*\.)?elwg0\.szm\.sk
+https?:\/\/([^\/]*\.)?elysium-ringtonebub\.blogspot\.com
+https?:\/\/([^\/]*\.)?elysium-ringtonemzb\.blogspot\.com
+https?:\/\/([^\/]*\.)?elzelchi\.cultureforum\.net
+https?:\/\/([^\/]*\.)?emails\.ncedly\.be
+https?:\/\/([^\/]*\.)?emea-consulting\.net
+https?:\/\/([^\/]*\.)?emily\.slyip\.com
+https?:\/\/([^\/]*\.)?eminem-suck-my-dick\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?eminem-veyb\.blogspot\.com
+https?:\/\/([^\/]*\.)?eminen-lyric-ass-like-that\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?empire-holdem\.com
+https?:\/\/([^\/]*\.)?empire-holdem\.net
+https?:\/\/([^\/]*\.)?empire-holdem\.us
+https?:\/\/([^\/]*\.)?empire-poker\.black-poker\.com
+https?:\/\/([^\/]*\.)?empirepoker\.u288\.com
+https?:\/\/([^\/]*\.)?emxk0\.szm\.sk
+https?:\/\/([^\/]*\.)?ena-free-show\.net
+https?:\/\/([^\/]*\.)?enchanted1312\.blogspot\.com
+https?:\/\/([^\/]*\.)?end14april\.ifrance\.com
+https?:\/\/([^\/]*\.)?enema-fetish-free-picture\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?energo\.us
+https?:\/\/([^\/]*\.)?enetdrugsonline\.org
+https?:\/\/([^\/]*\.)?enfoldrevel\.epinoy\.com
+https?:\/\/([^\/]*\.)?engineerin2degre\.chat\.ru
+https?:\/\/([^\/]*\.)?engs\.info
+https?:\/\/([^\/]*\.)?enpresse\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?enteworld\.com
+https?:\/\/([^\/]*\.)?eoglu\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?eour8\.szm\.sk
+https?:\/\/([^\/]*\.)?ephedra\.269g\.net
+https?:\/\/([^\/]*\.)?ephedraproduct\.seesaa\.net
+https?:\/\/([^\/]*\.)?epiqq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?epointer\.freewebpage\.org
+https?:\/\/([^\/]*\.)?eprom-dresses\.com
+https?:\/\/([^\/]*\.)?epxxw\.szm\.sk
+https?:\/\/([^\/]*\.)?erasser\.8tt\.org
+https?:\/\/([^\/]*\.)?erbocco\.discutforum\.com
+https?:\/\/([^\/]*\.)?erc4tget\.blogcu\.com
+https?:\/\/([^\/]*\.)?erdomrol\.heavenforum\.com
+https?:\/\/([^\/]*\.)?erdomrol\.highforum\.net
+https?:\/\/([^\/]*\.)?ereaa\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?erealtystore\.com
+https?:\/\/([^\/]*\.)?erelleta\.forumzen\.com
+https?:\/\/([^\/]*\.)?eremat\.com
+https?:\/\/([^\/]*\.)?erjiguan\.dzsc\.com
+https?:\/\/([^\/]*\.)?erlitroc\.xa\.pl
+https?:\/\/([^\/]*\.)?ernvmf7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?erotic-gay-male-sex-story\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?erotic-story-fem-dom\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?ertral\.alkablog\.com
+https?:\/\/([^\/]*\.)?erw1r\.info
+https?:\/\/([^\/]*\.)?escher\.isis\.vanderbilt\.edu
+https?:\/\/([^\/]*\.)?eseo\.cn
+https?:\/\/([^\/]*\.)?esgic\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?eshilzet\.forumzen\.com
+https?:\/\/([^\/]*\.)?esino\.info
+https?:\/\/([^\/]*\.)?esiti-gara\.hostzz\.info
+https?:\/\/([^\/]*\.)?esjpd\.szm\.sk
+https?:\/\/([^\/]*\.)?esmpa\.com
+https?:\/\/([^\/]*\.)?esportswave\.com
+https?:\/\/([^\/]*\.)?esraj\.com
+https?:\/\/([^\/]*\.)?esseiwer\.dl\.pl
+https?:\/\/([^\/]*\.)?estarcollector\.blogspot\.com
+https?:\/\/([^\/]*\.)?etac4\.szm\.sk
+https?:\/\/([^\/]*\.)?etcoq\.szm\.sk
+https?:\/\/([^\/]*\.)?etgelcca\.forumzen\.com
+https?:\/\/([^\/]*\.)?ethnicpassion-com-db5\.blogspot\.com
+https?:\/\/([^\/]*\.)?ethnicpassion-com-ik80lyfnd\.blogspot\.com
+https?:\/\/([^\/]*\.)?ethnicpassion-com-iqa3gt\.blogspot\.com
+https?:\/\/([^\/]*\.)?ethnicpassion-com-itw\.blogspot\.com
+https?:\/\/([^\/]*\.)?etjhechi\.forumzen\.com
+https?:\/\/([^\/]*\.)?etjhetrd\.forumzen\.com
+https?:\/\/([^\/]*\.)?etkrudom\.forumzen\.com
+https?:\/\/([^\/]*\.)?etlitvir\.forumzen\.com
+https?:\/\/([^\/]*\.)?etlurlir\.forumzen\.com
+https?:\/\/([^\/]*\.)?etmuhlie\.forumzen\.com
+https?:\/\/([^\/]*\.)?etnuidet\.forumzen\.com
+https?:\/\/([^\/]*\.)?etofas\.com
+https?:\/\/([^\/]*\.)?etrart\.com
+https?:\/\/([^\/]*\.)?etrewlia\.forumzen\.com
+https?:\/\/([^\/]*\.)?etshalir\.forumzen\.com
+https?:\/\/([^\/]*\.)?ettamlet\.forumzen\.com
+https?:\/\/([^\/]*\.)?ettimera\.forumzen\.com
+https?:\/\/([^\/]*\.)?etwhiett\.forumzen\.com
+https?:\/\/([^\/]*\.)?etwhiolo\.forumzen\.com
+https?:\/\/([^\/]*\.)?etzvg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?etzyrpk\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?eubaspro\.com
+https?:\/\/([^\/]*\.)?eudrayv\.blogspot\.com
+https?:\/\/([^\/]*\.)?eueyniqott-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?euomtrna\.jconserv\.net
+https?:\/\/([^\/]*\.)?eurosexparties-com-jezun\.blogspot\.com
+https?:\/\/([^\/]*\.)?eurosexparties-com-mmnl2m\.blogspot\.com
+https?:\/\/([^\/]*\.)?eva-irina\.isuisse\.com
+https?:\/\/([^\/]*\.)?evamiee\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?eveqx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?everywhere-com-tpovy8exl\.blogspot\.com
+https?:\/\/([^\/]*\.)?evfegl9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?evhp2\.szm\.sk
+https?:\/\/([^\/]*\.)?evil-gummiworm\.blogspot\.com
+https?:\/\/([^\/]*\.)?ewdnqb4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?exchange-lingerie-link-womens\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?exciting-casino\.com
+https?:\/\/([^\/]*\.)?exhuq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?extrarx\.kvkb\.com
+https?:\/\/([^\/]*\.)?extremeapril-com-adsm\.blogspot\.com
+https?:\/\/([^\/]*\.)?extremeapril-com-woje\.blogspot\.com
+https?:\/\/([^\/]*\.)?extremeapril-dhx1z\.blogspot\.com
+https?:\/\/([^\/]*\.)?ez\.asn\.und\.edu
+https?:\/\/([^\/]*\.)?ezjor\.com
+https?:\/\/([^\/]*\.)?ezkes\.com
+https?:\/\/([^\/]*\.)?ezxwc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?f-download-free-sex-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?f-z-a\.com
+https?:\/\/([^\/]*\.)?faadney\.dl\.pl
+https?:\/\/([^\/]*\.)?fabrizio-corona\.freehostss\.info
+https?:\/\/([^\/]*\.)?face-lick-lickable-licker-tongue\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?facial-abuse--com\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?facial-hair-remover\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?facial-paralysis-treatment\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?facial-plastic-surgery-manhattan\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?facial-whore\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?faculty\.etsu\.edu
+https?:\/\/([^\/]*\.)?faculty\.hope\.edu
+https?:\/\/([^\/]*\.)?faculty\.oxy\.edu
+https?:\/\/([^\/]*\.)?faculty\.ugf\.edu
+https?:\/\/([^\/]*\.)?faculty\.whatcom\.ctc\.edu
+https?:\/\/([^\/]*\.)?facweb\.cs\.depaul\.edu
+https?:\/\/([^\/]*\.)?fadianji\.dzsc\.com
+https?:\/\/([^\/]*\.)?fagin\.info
+https?:\/\/([^\/]*\.)?fairy\.8888mb\.com
+https?:\/\/([^\/]*\.)?faleake\.dl\.pl
+https?:\/\/([^\/]*\.)?falling-anvil\.blogspot\.com
+https?:\/\/([^\/]*\.)?family-viagra\.com
+https?:\/\/([^\/]*\.)?famouspornstars-com-o020ss18d8\.blogspot\.com
+https?:\/\/([^\/]*\.)?famvir\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?fangdaqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?fantasticnudes-com-bol80a\.blogspot\.com
+https?:\/\/([^\/]*\.)?fantasticnudes-com-by8gook\.blogspot\.com
+https?:\/\/([^\/]*\.)?fantasticnudes-com-qic\.blogspot\.com
+https?:\/\/([^\/]*\.)?fantasticnudes-com-r60\.blogspot\.com
+https?:\/\/([^\/]*\.)?fantasy-hand-job-teen\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?farmius\.org
+https?:\/\/([^\/]*\.)?fascination\.my10gb\.com
+https?:\/\/([^\/]*\.)?fasnty\.com
+https?:\/\/([^\/]*\.)?fasoft\.com\.cn
+https?:\/\/([^\/]*\.)?fast-loaneqh\.blogspot\.com
+https?:\/\/([^\/]*\.)?fastmovers\.org
+https?:\/\/([^\/]*\.)?fat-banging\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?fat-blonde-woman\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?fat-fuck-video\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?fat-porn-clip-infoecm\.blogspot\.com
+https?:\/\/([^\/]*\.)?fat-porn-clip-infomyi\.blogspot\.com
+https?:\/\/([^\/]*\.)?fat-tgp-com-ee\.blogspot\.com
+https?:\/\/([^\/]*\.)?fat-tgp-com-g654ywug\.blogspot\.com
+https?:\/\/([^\/]*\.)?fatfucks-com-kdy41nn4fr\.blogspot\.com
+https?:\/\/([^\/]*\.)?fatfucks-com-t232q4\.blogspot\.com
+https?:\/\/([^\/]*\.)?fatfucks-com-tf0v115rm\.blogspot\.com
+https?:\/\/([^\/]*\.)?fatfucks-com-thr8\.blogspot\.com
+https?:\/\/([^\/]*\.)?fathut-com-db66nw2a\.blogspot\.com
+https?:\/\/([^\/]*\.)?fathut-com-hqloar2t8\.blogspot\.com
+https?:\/\/([^\/]*\.)?fattythumbs-com-el24t2\.blogspot\.com
+https?:\/\/([^\/]*\.)?fattythumbs-com-iq1\.blogspot\.com
+https?:\/\/([^\/]*\.)?fau75\.blogspot\.com
+https?:\/\/([^\/]*\.)?favorite-casino\.com
+https?:\/\/([^\/]*\.)?fawninglace\.freehostingz\.com
+https?:\/\/([^\/]*\.)?fbcjr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fbugy\.szm\.sk
+https?:\/\/([^\/]*\.)?fcpx5\.szm\.sk
+https?:\/\/([^\/]*\.)?fcuml\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fcup3\.szm\.sk
+https?:\/\/([^\/]*\.)?fdjcz\.sunp\.com
+https?:\/\/([^\/]*\.)?fdxyp\.szm\.sk
+https?:\/\/([^\/]*\.)?fe-algebra\.blogspot\.com
+https?:\/\/([^\/]*\.)?fe-whateve\.blogspot\.com
+https?:\/\/([^\/]*\.)?fedems\.com
+https?:\/\/([^\/]*\.)?feeltime\.cn
+https?:\/\/([^\/]*\.)?feeltime\.com
+https?:\/\/([^\/]*\.)?fehpks4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?feidenfurniture\.com
+https?:\/\/([^\/]*\.)?fejwh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fem-dom-art-and-drawing\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?female-ass-worship\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?female-condom-sex\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?female-v\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?femdog\.blogspot\.com
+https?:\/\/([^\/]*\.)?feq-tugjobs-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?ferda111\.php5\.cz
+https?:\/\/([^\/]*\.)?ferer\.superprovider\.de
+https?:\/\/([^\/]*\.)?feretuc\.forumculture\.net
+https?:\/\/([^\/]*\.)?ferrarimaser\.info
+https?:\/\/([^\/]*\.)?fest-frat-fuck\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fetish-club-in-ipswitch-uk\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?fetish-hardcore-lesbian-more\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?fetish-heel-high-in-nylon-pretty-toe\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fetish-pantie-white\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?fetus-free-sex-video-l\.blogspot\.com
+https?:\/\/([^\/]*\.)?ffhi7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fflive\.info
+https?:\/\/([^\/]*\.)?fge-teens-links-0\.blogspot\.com
+https?:\/\/([^\/]*\.)?fghrf\.8888mb\.com
+https?:\/\/([^\/]*\.)?fgvan\.info
+https?:\/\/([^\/]*\.)?fgvzq\.szm\.sk
+https?:\/\/([^\/]*\.)?fhbi5\.szm\.sk
+https?:\/\/([^\/]*\.)?fhmms\.szm\.sk
+https?:\/\/([^\/]*\.)?fhwl-com-dy1tbi5l\.blogspot\.com
+https?:\/\/([^\/]*\.)?fhwl-com-mn8ni\.blogspot\.com
+https?:\/\/([^\/]*\.)?fhwl-com-wc\.blogspot\.com
+https?:\/\/([^\/]*\.)?fhwl-com-wgrog\.blogspot\.com
+https?:\/\/([^\/]*\.)?fibiger\.org
+https?:\/\/([^\/]*\.)?fifa2007it\.org
+https?:\/\/([^\/]*\.)?fihqquj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?filipina-lesbian-teen\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?fillchill\.mybbland\.com
+https?:\/\/([^\/]*\.)?film-da-scaricare\.host24h\.info
+https?:\/\/([^\/]*\.)?finalteens-com-c6o0080y\.blogspot\.com
+https?:\/\/([^\/]*\.)?finalteens-com-kpngsoxf\.blogspot\.com
+https?:\/\/([^\/]*\.)?finanziamento-on-line\.19mb\.info
+https?:\/\/([^\/]*\.)?finanziamento-personale\.hostzz\.info
+https?:\/\/([^\/]*\.)?finanziamento-treviso\.host24h\.info
+https?:\/\/([^\/]*\.)?findbabychick\.info
+https?:\/\/([^\/]*\.)?findbabygirl\.info
+https?:\/\/([^\/]*\.)?findvic\.com
+https?:\/\/([^\/]*\.)?fine-lingerie-online-sexy\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?finger-fuck-clip\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fioricet\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?fioricet\.47\.pl
+https?:\/\/([^\/]*\.)?fioricet\.edu\.tf
+https?:\/\/([^\/]*\.)?fioricet\.hav\.pl
+https?:\/\/([^\/]*\.)?fioricet\.skocz\.net
+https?:\/\/([^\/]*\.)?fioricetrx\.weboficial\.com
+https?:\/\/([^\/]*\.)?fioricets\.blogspot\.com
+https?:\/\/([^\/]*\.)?firejedi\.blogspot\.com
+https?:\/\/([^\/]*\.)?first-free-fuck-time-video\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?first-lesbian-experience-story\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?first-lesbian-video-xxx\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?first-porn\.futureblog\.org
+https?:\/\/([^\/]*\.)?firstchristianbank\.info
+https?:\/\/([^\/]*\.)?firstdrugstorezone\.info
+https?:\/\/([^\/]*\.)?firstfriends\.us
+https?:\/\/([^\/]*\.)?firsthorizonmtg\.com
+https?:\/\/([^\/]*\.)?firstnightcharleston\.com
+https?:\/\/([^\/]*\.)?firsttimeauditions-com-asq5m\.blogspot\.com
+https?:\/\/([^\/]*\.)?firsttimeauditions-com-gxs\.blogspot\.com
+https?:\/\/([^\/]*\.)?fishdor\.joolo\.com
+https?:\/\/([^\/]*\.)?fishing-rod\.247ihost\.com
+https?:\/\/([^\/]*\.)?fishing-rod\.hostpresso\.com
+https?:\/\/([^\/]*\.)?fishing-rod\.joolo\.com
+https?:\/\/([^\/]*\.)?fishins\.247ihost\.com
+https?:\/\/([^\/]*\.)?fishman\.freewebhosting360\.com
+https?:\/\/([^\/]*\.)?fishmpegs-com-oet5\.blogspot\.com
+https?:\/\/([^\/]*\.)?fishmpegs-com-r5\.blogspot\.com
+https?:\/\/([^\/]*\.)?fishmpegs-com-r87f7ui\.blogspot\.com
+https?:\/\/([^\/]*\.)?fisting-gay-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?fisting-group-sex\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fisting-lesbian-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?fisting-lesson-maya\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?fistinglessons-com-dmskwfs\.blogspot\.com
+https?:\/\/([^\/]*\.)?fistinglessons-com-i03p\.blogspot\.com
+https?:\/\/([^\/]*\.)?fitofarm\.com
+https?:\/\/([^\/]*\.)?fitvzj-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?fjp\.left-page\.com
+https?:\/\/([^\/]*\.)?fjp\.zxvo\.com
+https?:\/\/([^\/]*\.)?fkcvlna\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fkvvp\.szm\.sk
+https?:\/\/([^\/]*\.)?flandra\.php5\.cz
+https?:\/\/([^\/]*\.)?flawformed\.hostonmars\.com
+https?:\/\/([^\/]*\.)?flexeril\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?flextra\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?flkkmex\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fllood\.blogspot\.com
+https?:\/\/([^\/]*\.)?fllwlv6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?flnet\.org
+https?:\/\/([^\/]*\.)?flonase\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?flooring-guide\.org
+https?:\/\/([^\/]*\.)?floridamortgage-x\.com
+https?:\/\/([^\/]*\.)?floridian-love\.blogspot\.com
+https?:\/\/([^\/]*\.)?flower\.hostonmars\.com
+https?:\/\/([^\/]*\.)?flowerdive\.info
+https?:\/\/([^\/]*\.)?flqcjnw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fluffy\.hostcroc\.com
+https?:\/\/([^\/]*\.)?fluoxetine\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?fnhtgggv\.t35\.com
+https?:\/\/([^\/]*\.)?fnxsj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?foecedh3artbrat\.blogspot\.com
+https?:\/\/([^\/]*\.)?foedu-de-solnil\.blogspot\.com
+https?:\/\/([^\/]*\.)?folast\.com
+https?:\/\/([^\/]*\.)?folcan\.my10gb\.com
+https?:\/\/([^\/]*\.)?fondi-italiano\.hostzz\.info
+https?:\/\/([^\/]*\.)?for-whorevideos-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?forbestcare\.info
+https?:\/\/([^\/]*\.)?forensic1nursing\.chat\.ru
+https?:\/\/([^\/]*\.)?forex\.fasthost\.pl
+https?:\/\/([^\/]*\.)?fork-hief\.ibelgique\.com
+https?:\/\/([^\/]*\.)?formulam\.net
+https?:\/\/([^\/]*\.)?fortune-slots\.com
+https?:\/\/([^\/]*\.)?forum\.kharkiv\.edu
+https?:\/\/([^\/]*\.)?fos-sologals-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?foto-sabrina-ferilli\.host24h\.info
+https?:\/\/([^\/]*\.)?foxeykie\.iespana\.es
+https?:\/\/([^\/]*\.)?fozq6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fpa7kctb\.t35\.com
+https?:\/\/([^\/]*\.)?fqred\.com
+https?:\/\/([^\/]*\.)?fragolla\.blogspot\.com
+https?:\/\/([^\/]*\.)?frbarber\.dl\.pl
+https?:\/\/([^\/]*\.)?frbracco\.dl\.pl
+https?:\/\/([^\/]*\.)?freakthumbs-com-bp\.blogspot\.com
+https?:\/\/([^\/]*\.)?freakthumbs-com-hcmkk\.blogspot\.com
+https?:\/\/([^\/]*\.)?frebnet\.com
+https?:\/\/([^\/]*\.)?fredd0\.info
+https?:\/\/([^\/]*\.)?free-access\.freeinsite\.net
+https?:\/\/([^\/]*\.)?free-adult-porn-clip-info43c\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-adult-porn-clip-infopqk\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-amateur-hardcore-pic\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-amateur-submitted-photo\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-amateur-video-e2843\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-anal-blonde-sex-pic\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-anal-porn-clip\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-anal-xxx-clip\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-anime-porn-clip-info6tn\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-anime-porn-clips-newsyby\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-asian-lesbian-sex-video\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-bbw-porn-clip-blog4wm\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-big-ass-porn\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-big-boob-porn-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-big-boob\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-bizarre-insertion-pic\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-bizarre-porn-pic\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-black-amateur\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-black-porn-clip-blogo7t\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-black-porn-movie-kebi\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-black-porn-video-clip-newsjqj\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-busty-asian-movie\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-busty-blonde-pic\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-busty-porn-movie\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-busty-redhead-pic\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-butt-fucking-video\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-cartoon-porn-clip-zoneikt\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-cartoon-porn-clip-zonewpm\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-celebrity-porn-clip-infowuz\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-celebrity-porn-video-bo\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-chubby-girl-pic\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-cock-sucking-slut-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-college-fuck-fest-gallery\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-cum-blow-job-gallery\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-cum-in-mouth-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-cum-swap-video\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-ebony-porn-clip-zonek7c\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-ebony-porn-clip-zonelcy\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-ebony-pussy-pic\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-ebony-sex-video-di\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-fat-porn-clip-infotno\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-fem-dom-thumb\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-female-orgasm-video-bb-bb-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-filipina-sex-movie\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-first-time-lesbian-sex-story\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-fisting-mpeg\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-fisting-sex-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-fucking-bitch\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-fucking-gallery-hardcore\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-fucking-sex-porn-site\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-full-length-porn-mov-bb-bb-w\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gang-bang-sample\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-gay-hunk-male-movie-muscled-stud-video\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-gay-muscle\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-gay-picture-sex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-gay-porn-clips-info35a\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-porn-movie-clip-bloglor\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-porn-movie-p-d-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-porn-video-clip-newsa83\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-porn-video-p-v-p\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-porn-web-site\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-gay-sex-movie-bb-bb-s\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-gay-sex-teen-trailer\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-gay-trailer\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-granny-lesbian\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-granny-movie-old\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-granny-pic-woman\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-group-lesbian-preview-sex-video\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-hand-job-movie-bb-bb-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-hand-job-video-clip-bb-bb-c\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-hardcore-movie-gallery-xxx\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-hardcore-porn-clip-blog07a\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-hardcore-porn-clip-blogi4k\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-hardcore-porn-star-picture\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-hardcore-sex-mpeg\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-heel-high-leg-pic-stilettos-stocking\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-homemade-porn-clip-news22n\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-homemade-porn-clip-news7ro\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-hot-blonde-nude-pic\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-hot-leg-nude-wallpaper-woman\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-hot-mom\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-hot-web-cam-video-h-s-f\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-huge-black-gay-cock\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-in-lesbian-movie-nylons\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-indian-porn-clip-infok6x\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-interracial-sex-video-ko\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-latin-ass\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-lesbian-cam-chat\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-lesbian-clip-zuxi\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-lesbian-hentai-movie\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-lesbian-licking-pic\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-lesbian-mature-sex-video-young\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-lesbian-movie-gjqvl\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-lesbian-porn-clips-blogagm\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-lesbian-porn-video-clip-newsidt\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-lesbian-video-a7e8t\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-lesbian-xxx-picture\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-long-porn-clip-info2fo\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-long-porn-clip-info7pr\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-long-porn-movie-clip-blogxn2\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-long-porn-movie-clip-zoneq4f\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-long-porn-video-wi\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-male-bisexual-porn\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-mature-porn-clip-zone5bz\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-mature-sex-clip\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-mature-sex-story\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-mature-thumbnail-post\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?free-milf-porn-clip-zonenqn\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-milf-video-bb-bb-n\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-mmf-bisex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-naked-mature-lady\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?free-nude-bitch\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-nude-blonde-gallery\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-older-woman-fucking\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-online-poker-000\.biz
+https?:\/\/([^\/]*\.)?free-orgasm-clip-supi\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-paris-hilton-porn-clip-infolah\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-personal-gay-links-tommys-favorite\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-pic-of-big-dicks\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-pic-of-busty-babes\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-pic-of-woman-kissing\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-picture-hardcore-anal\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-picture-hardcore-anal\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-picture-huge-clit\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?free-porn-chwd\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clip-nep\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clip-trailer-infog42\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clip-zoneil5\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clip-zonek61\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clip-zoneu7t\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-clips-newsid3\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-movie-to0r5\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-movie-zet\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-psp-video-po\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-sample-clip-infodwd\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-sample-clip-newsb26\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-sex-clip-zoneavj\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-star-movie-bb-bb-h\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-star-video-clip-blog81e\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-clip-info7km\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-clip-infoixk\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-clip-sample-newsw3t\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-clips-infooem\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-porn-clip-blogiep\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-porn-clip-zonepqd\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn-video-puz\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-porn\.xa\.pl
+https?:\/\/([^\/]*\.)?free-pussy-fucking-movie\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?free-ringtones\.269g\.net
+https?:\/\/([^\/]*\.)?free-ringtones\.aqhhhh\.info
+https?:\/\/([^\/]*\.)?free-ringtoneten\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sex-clip-ceb\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sex-movie-pow\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sex-video-clip-kog\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sex-video-hup\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sex-video\.hostithere\.org
+https?:\/\/([^\/]*\.)?free-sexy-leg-video\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-shemale-fucking-woman-movie\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?free-shemale-movie-w-r-s\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-skin\.newmail\.ru
+https?:\/\/([^\/]*\.)?free-skin\.pochta\.ru
+https?:\/\/([^\/]*\.)?free-spase\.info
+https?:\/\/([^\/]*\.)?free-sprint-ringtoneija\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-sprint-ringtonesrha\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-t-mobile-ringtonehvh\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-teen-movie-cock-sucking\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?free-teen-porn-clip-blogpmw\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-teen-porn-clip-infohxv\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-teen-porn-video-clip-newsi5v\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-teens-porn-com-wod\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-video-sex-chat-ki\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-xxx-amateur-web-cam\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free-xxx-porn-clip-infoibv\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-xxx-porn-video-clip-infopij\.blogspot\.com
+https?:\/\/([^\/]*\.)?free-young-lesbian-movie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?free2peek-com-c1iicr\.blogspot\.com
+https?:\/\/([^\/]*\.)?free2peek-com-co8g24x0ee\.blogspot\.com
+https?:\/\/([^\/]*\.)?free2peek-com-gi6v\.blogspot\.com
+https?:\/\/([^\/]*\.)?free_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?freebigmovies-com-b25i040z\.blogspot\.com
+https?:\/\/([^\/]*\.)?freebigmovies-com-bxf440\.blogspot\.com
+https?:\/\/([^\/]*\.)?freebigmovies-com-rst\.blogspot\.com
+https?:\/\/([^\/]*\.)?freebloger\.com
+https?:\/\/([^\/]*\.)?freecooktop\.info
+https?:\/\/([^\/]*\.)?freedirectoryv\.com
+https?:\/\/([^\/]*\.)?freeforumbuilder\.com
+https?:\/\/([^\/]*\.)?freegonzo-com-du\.blogspot\.com
+https?:\/\/([^\/]*\.)?freegonzo-com-e8n\.blogspot\.com
+https?:\/\/([^\/]*\.)?freegonzo-com-og5mpk\.blogspot\.com
+https?:\/\/([^\/]*\.)?freegonzo-od5evmn\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeheaven-com-ap22\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeheaven-com-w1kx4ymi\.blogspot\.com
+https?:\/\/([^\/]*\.)?freehost\.ag
+https?:\/\/([^\/]*\.)?freehugemovies-com-dr\.blogspot\.com
+https?:\/\/([^\/]*\.)?freehugemovies-com-hi3\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeinsite\.net
+https?:\/\/([^\/]*\.)?freeinternetplus\.info
+https?:\/\/([^\/]*\.)?freenextelringtonesupf\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeones-com-amrmdwb\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeones-com-m1fc\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeones-com-mb70w6\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeones-com-mqdm\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeones-com-tfirm5smvh\.blogspot\.com
+https?:\/\/([^\/]*\.)?freepaintballgun\.com
+https?:\/\/([^\/]*\.)?freepicseries-com-kb1\.blogspot\.com
+https?:\/\/([^\/]*\.)?freepicseries-com-tfct6n\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeportalnow\.com
+https?:\/\/([^\/]*\.)?freeringtonedgf\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeringtones\.seesaa\.net
+https?:\/\/([^\/]*\.)?freeringtonesptl\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeringtoness\.fr\.funpic\.de
+https?:\/\/([^\/]*\.)?frees--123clips-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--8teenfiles-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--africanvagina-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--ah-me-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--akissbetweenthelegs-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--allsitesaccess-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--amateurcurves-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--asssupply-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--atkmodels-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--auntmia-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--bigtitspalace-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--boneme-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--bootycollection-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--bustyadventures-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--camcrush-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--camelclips-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--caughtnude-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--celebrityscandal-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--cliphunter-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--cowlist-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--dirtydaughter-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--easygals-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--ebonyblack-net\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--el-ladies-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--eurosexparties-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--fuckingfreemovies-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--gallfree-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--girlfur-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--grannyplanet-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--greentits-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--hanksgalleries-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--hereistheporn-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--hornybanana-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--idealbabes-net\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--indianpassion-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?frees--ispycameltoe-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?freespaces\.com
+https?:\/\/([^\/]*\.)?freesprintringtoneenx\.blogspot\.com
+https?:\/\/([^\/]*\.)?freesprintringtoneswkd\.blogspot\.com
+https?:\/\/([^\/]*\.)?freestyman\.com
+https?:\/\/([^\/]*\.)?freetmobileringtonekaw\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeverizonringtonevol\.blogspot\.com
+https?:\/\/([^\/]*\.)?freewebsitehosting\.net
+https?:\/\/([^\/]*\.)?freexmovies-com-i1xi8s\.blogspot\.com
+https?:\/\/([^\/]*\.)?freexmovies-com-ojxc1k\.blogspot\.com
+https?:\/\/([^\/]*\.)?freeyaho\.com
+https?:\/\/([^\/]*\.)?french-kissing-my-sister\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?french-kissing\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?french-lick-child-family-entertainment\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?french-tickler-condom\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?french168\.com
+https?:\/\/([^\/]*\.)?frenchcum-btb\.blogspot\.com
+https?:\/\/([^\/]*\.)?frenchcum-com-mzqj8hpm\.blogspot\.com
+https?:\/\/([^\/]*\.)?frenchcum-com-w07ua1w7z\.blogspot\.com
+https?:\/\/([^\/]*\.)?fresh-sex\.futureblog\.org
+https?:\/\/([^\/]*\.)?friendsgrabber\.com
+https?:\/\/([^\/]*\.)?fripcn9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?frog-sexgtw\.blogspot\.com
+https?:\/\/([^\/]*\.)?frog-sexlfe\.blogspot\.com
+https?:\/\/([^\/]*\.)?frogm\.info
+https?:\/\/([^\/]*\.)?frogsex-com-ev4zmddt\.blogspot\.com
+https?:\/\/([^\/]*\.)?frogsex-com-ivtcaqfsx\.blogspot\.com
+https?:\/\/([^\/]*\.)?frogsex-gnle04e\.blogspot\.com
+https?:\/\/([^\/]*\.)?frt3\.org\.ua
+https?:\/\/([^\/]*\.)?fsxhl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fsyflower\.com
+https?:\/\/([^\/]*\.)?ft568\.com
+https?:\/\/([^\/]*\.)?ftffo\.szm\.sk
+https?:\/\/([^\/]*\.)?fthaop1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ftntg\.szm\.sk
+https?:\/\/([^\/]*\.)?fu-alexus\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuck-gallery-picture\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?fuck-her-in-mouth\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fuck-lesbian-pussy\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?fuck-pussy-suck-swallow\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?fuck-sexy-slut\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?fuck-the-maidens\.info
+https?:\/\/([^\/]*\.)?fuckfromass\.info
+https?:\/\/([^\/]*\.)?fucking-hardcore-japanese-slut\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?fucking-lesbian-licking-pussy\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?fucking-machine-thumbnail\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?fucking-preity-sucking-zinta\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?fucking-teen-party\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?fuckingfreemovies-com-gvps\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckingfreemovies-com-gy2\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckingfreemovies-com-qogog\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckingmachines-com-b4glo\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckingmachines-com-h3\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckingmachines-com-hqrbqh4\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckk-com-ot8wc\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckk-com-r6\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuckk-com-rw5485\.blogspot\.com
+https?:\/\/([^\/]*\.)?fucksakes-com-ks7uskz64\.blogspot\.com
+https?:\/\/([^\/]*\.)?fufpyl5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?funberry-com-meft\.blogspot\.com
+https?:\/\/([^\/]*\.)?funberry-com-mkjvxl\.blogspot\.com
+https?:\/\/([^\/]*\.)?funberry-com-tz8\.blogspot\.com
+https?:\/\/([^\/]*\.)?funkall\.us
+https?:\/\/([^\/]*\.)?funny-stuff\.3ae6ucb\.info
+https?:\/\/([^\/]*\.)?funpelv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fuohcbq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?furama\.dtdns\.net
+https?:\/\/([^\/]*\.)?furrysoap\.ifrance\.com
+https?:\/\/([^\/]*\.)?fuvo-aimee\.blogspot\.com
+https?:\/\/([^\/]*\.)?fuyinj\.ebloggy\.com
+https?:\/\/([^\/]*\.)?fvinc\.4t\.com
+https?:\/\/([^\/]*\.)?fvjz5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fwbhexo\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fweroze\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fwvsp\.szm\.sk
+https?:\/\/([^\/]*\.)?fx120\.com
+https?:\/\/([^\/]*\.)?fx120\.net
+https?:\/\/([^\/]*\.)?fxxb5\.szm\.sk
+https?:\/\/([^\/]*\.)?fyisy\.szm\.sk
+https?:\/\/([^\/]*\.)?fylfw\.szm\.sk
+https?:\/\/([^\/]*\.)?fyyvb\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?fzdlcfzh-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?g-maste\.com
+https?:\/\/([^\/]*\.)?g2c2rtc\.info
+https?:\/\/([^\/]*\.)?g3eros\.info
+https?:\/\/([^\/]*\.)?g76\.be
+https?:\/\/([^\/]*\.)?gadkj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gaeq2\.szm\.sk
+https?:\/\/([^\/]*\.)?gafdyq9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gagase\.com
+https?:\/\/([^\/]*\.)?gailc\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?galleries4free-com-e1ew\.blogspot\.com
+https?:\/\/([^\/]*\.)?galleries4free-com-o8\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallery-jenna-jameson-blonde\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gallery-kissing-woman-woman\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gallery-lesson-milf\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?gallery-lingerie-see-teen-thru\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?gallery-mature-stocking\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?gallfree-com-b0uf2q0\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallfree-com-ra5f1d7\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallfree-com-teruq\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallview-com-a2wqsk\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallview-com-ahasx\.blogspot\.com
+https?:\/\/([^\/]*\.)?gallview-com-wa6froqpl\.blogspot\.com
+https?:\/\/([^\/]*\.)?gambling-online-theory\.com
+https?:\/\/([^\/]*\.)?gamenase\.com
+https?:\/\/([^\/]*\.)?gamez4less\.com
+https?:\/\/([^\/]*\.)?gang-bang-free-pic-gallery\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gangsheng\.home4u\.china\.com
+https?:\/\/([^\/]*\.)?gaping-ass-sex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gaqx6\.szm\.sk
+https?:\/\/([^\/]*\.)?garid\.biz
+https?:\/\/([^\/]*\.)?garlic\.hostonmars\.com
+https?:\/\/([^\/]*\.)?garter\.nocostwebhosting\.com
+https?:\/\/([^\/]*\.)?gastrointestinal\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?gastrw\.com
+https?:\/\/([^\/]*\.)?gatalgat\.myrealboard\.com
+https?:\/\/([^\/]*\.)?gatloral\.myrealboard\.com
+https?:\/\/([^\/]*\.)?gatx10258\.blogspot\.com
+https?:\/\/([^\/]*\.)?gay-bareback-story\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?gay-big-cock-video-clip\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gay-black-blow-job\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-blonde-twinks\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gay-cum-eater\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-gang-bang-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?gay-girl-kissing\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?gay-girl-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-hispanic-man-naked\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-hot-latinos\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-huge-thick-cock\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-hunk-sex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-man-hardcore\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gay-man-man-sex\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-man-mature-old-picture\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?gay-man-naked-wrestling\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?gay-marriage-benefit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-photo-personals\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?gay-porn-clip-zonehyx\.blogspot\.com
+https?:\/\/([^\/]*\.)?gay-porn-video-clip-news8dd\.blogspot\.com
+https?:\/\/([^\/]*\.)?gay-pride-week-in-florida\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-sex-video-on-demand\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?gay-teen-man\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-teen-sex-clip\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-themed-movie\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?gay-twinks-fucking\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gay-web-cam-site\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gay-woman-chat-rooms\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?gazwc\.szm\.sk
+https?:\/\/([^\/]*\.)?gbapc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gbd-amy\.hostithere\.org
+https?:\/\/([^\/]*\.)?gbtw1\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?gbvgxus\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gceaq\.szm\.sk
+https?:\/\/([^\/]*\.)?gcqqkhx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gd-r\.com
+https?:\/\/([^\/]*\.)?gdfea\.szm\.sk
+https?:\/\/([^\/]*\.)?geb0cs\.nokedem\.com
+https?:\/\/([^\/]*\.)?gebu-aeh\.blogspot\.com
+https?:\/\/([^\/]*\.)?geddesvicente\.info
+https?:\/\/([^\/]*\.)?geflamio\.dl\.pl
+https?:\/\/([^\/]*\.)?genaholincorporated\.com
+https?:\/\/([^\/]*\.)?generic-paxil\.contact\.cc
+https?:\/\/([^\/]*\.)?genericbuy\.o-f\.com
+https?:\/\/([^\/]*\.)?genoux\.dnsrd\.com
+https?:\/\/([^\/]*\.)?georgiamortgage-x\.com
+https?:\/\/([^\/]*\.)?germani4\.blogspot\.com
+https?:\/\/([^\/]*\.)?gesrju\.com
+https?:\/\/([^\/]*\.)?get6or6li\.dl\.pl
+https?:\/\/([^\/]*\.)?getaer\.forumculture\.net
+https?:\/\/([^\/]*\.)?getbankruptcylaw\.info
+https?:\/\/([^\/]*\.)?getdeerelt\.forumzen\.com
+https?:\/\/([^\/]*\.)?getdelsit\.zj\.pl
+https?:\/\/([^\/]*\.)?getdomsit\.blogcu\.com
+https?:\/\/([^\/]*\.)?getfemon\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?getgetvi\.lolbb\.com
+https?:\/\/([^\/]*\.)?gethelp24x7\.net
+https?:\/\/([^\/]*\.)?getkuric\.blogcu\.com
+https?:\/\/([^\/]*\.)?getletovi\.winnerforum\.net
+https?:\/\/([^\/]*\.)?getlimon\.discutfree\.com
+https?:\/\/([^\/]*\.)?getowson\.dl\.pl
+https?:\/\/([^\/]*\.)?gettaer\.ephpbb\.com
+https?:\/\/([^\/]*\.)?getzelvi\.goodbb\.net
+https?:\/\/([^\/]*\.)?gezu-alaina\.blogspot\.com
+https?:\/\/([^\/]*\.)?gfd69\.tripod\.com
+https?:\/\/([^\/]*\.)?gg0\.be
+https?:\/\/([^\/]*\.)?ggfix\.com
+https?:\/\/([^\/]*\.)?gglive\.info
+https?:\/\/([^\/]*\.)?gguu\.com
+https?:\/\/([^\/]*\.)?ggww\.dtdns\.net
+https?:\/\/([^\/]*\.)?ggzhm\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ghhdh\.szm\.sk
+https?:\/\/([^\/]*\.)?ghiacci0\.info
+https?:\/\/([^\/]*\.)?ghnakjwcjp-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?ghrvu\.szm\.sk
+https?:\/\/([^\/]*\.)?ghvd7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?giant-cock-shemale\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?giant-dick-sucking\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?giant-dildo-in-pussy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gifo-administrator\.blogspot\.com
+https?:\/\/([^\/]*\.)?gigablast\.republika\.pl
+https?:\/\/([^\/]*\.)?gigagalleries-com-c1ylawg\.blogspot\.com
+https?:\/\/([^\/]*\.)?gigagalleries-com-cn4\.blogspot\.com
+https?:\/\/([^\/]*\.)?gigagalleries-com-gd0a\.blogspot\.com
+https?:\/\/([^\/]*\.)?gigavids-com-wcmck\.blogspot\.com
+https?:\/\/([^\/]*\.)?gimps\.info
+https?:\/\/([^\/]*\.)?giochi-java\.heroez\.info
+https?:\/\/([^\/]*\.)?gioco-avventura-vari\.bb22\.info
+https?:\/\/([^\/]*\.)?gioco-online-picchiaduro\.nnme\.info
+https?:\/\/([^\/]*\.)?gipolit\.asp2\.cz
+https?:\/\/([^\/]*\.)?girl-butt-in-tight-jeans\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?girl-guy-kissing\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?girl-kissing-video-bb-bb-j\.blogspot\.com
+https?:\/\/([^\/]*\.)?girl-playing-with-dildo\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?girl-showing-there-boob\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?girl-with-big-dildo\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?girlfur-com-ga\.blogspot\.com
+https?:\/\/([^\/]*\.)?girlfur-com-pisij\.blogspot\.com
+https?:\/\/([^\/]*\.)?gisogenu\.org
+https?:\/\/([^\/]*\.)?give-me-baby\.info
+https?:\/\/([^\/]*\.)?gjjf\.com
+https?:\/\/([^\/]*\.)?gjjp\.left-page\.com
+https?:\/\/([^\/]*\.)?gjjp\.zxvo\.com
+https?:\/\/([^\/]*\.)?gjqgec8\.info
+https?:\/\/([^\/]*\.)?gkjxcs1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gkwzrz8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?glamouronline\.info
+https?:\/\/([^\/]*\.)?glebo\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo1\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo2\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo3\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo4\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo5\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo6\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo7\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo8\.host-page\.com
+https?:\/\/([^\/]*\.)?glebo9\.host-page\.com
+https?:\/\/([^\/]*\.)?glmv6\.szm\.sk
+https?:\/\/([^\/]*\.)?globalbartertrade\.info
+https?:\/\/([^\/]*\.)?globalflights\.org
+https?:\/\/([^\/]*\.)?globalrecreationguide\.com
+https?:\/\/([^\/]*\.)?globegarment\.com\.cn
+https?:\/\/([^\/]*\.)?glodgreen\.info
+https?:\/\/([^\/]*\.)?gloryhole\.coz\.in
+https?:\/\/([^\/]*\.)?glovebox\.freewebpage\.org
+https?:\/\/([^\/]*\.)?gloveboxes\.cn
+https?:\/\/([^\/]*\.)?gloveboxes\.com\.cn
+https?:\/\/([^\/]*\.)?glover\.host-page\.com
+https?:\/\/([^\/]*\.)?glover1\.host-page\.com
+https?:\/\/([^\/]*\.)?glover2\.host-page\.com
+https?:\/\/([^\/]*\.)?glover3\.host-page\.com
+https?:\/\/([^\/]*\.)?glover4\.host-page\.com
+https?:\/\/([^\/]*\.)?glover5\.host-page\.com
+https?:\/\/([^\/]*\.)?glover6\.host-page\.com
+https?:\/\/([^\/]*\.)?glover7\.host-page\.com
+https?:\/\/([^\/]*\.)?glover8\.host-page\.com
+https?:\/\/([^\/]*\.)?glover9\.host-page\.com
+https?:\/\/([^\/]*\.)?gmldsb\.com
+https?:\/\/([^\/]*\.)?gnsgs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?go-ansna\.ibelgique\.com
+https?:\/\/([^\/]*\.)?goaie\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?goatlist-com-dk15cne\.blogspot\.com
+https?:\/\/([^\/]*\.)?goatlist-com-hi\.blogspot\.com
+https?:\/\/([^\/]*\.)?goatlist-com-o5\.blogspot\.com
+https?:\/\/([^\/]*\.)?gobabo\.nocostwebhosting\.com
+https?:\/\/([^\/]*\.)?gobald\.dtdns\.net
+https?:\/\/([^\/]*\.)?gobu4\.szm\.sk
+https?:\/\/([^\/]*\.)?gogllefr\.125mb\.com
+https?:\/\/([^\/]*\.)?gokletvi\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?goko-adeline\.blogspot\.com
+https?:\/\/([^\/]*\.)?gold-watch\.grimgoe\.be
+https?:\/\/([^\/]*\.)?gold\.fathippohosting\.com
+https?:\/\/([^\/]*\.)?goldsexcity\.info
+https?:\/\/([^\/]*\.)?goldshop\.freehostia\.com
+https?:\/\/([^\/]*\.)?golenord\.dl\.pl
+https?:\/\/([^\/]*\.)?goler-sor1z\.blogspot\.com
+https?:\/\/([^\/]*\.)?golfhq\.org
+https?:\/\/([^\/]*\.)?golfshoot\.com
+https?:\/\/([^\/]*\.)?gololed\.blogspot\.com
+https?:\/\/([^\/]*\.)?gomy0\.szm\.sk
+https?:\/\/([^\/]*\.)?gonzo-movies-com-ez\.blogspot\.com
+https?:\/\/([^\/]*\.)?gonzo-movies-rkk5jq\.blogspot\.com
+https?:\/\/([^\/]*\.)?good568\.com
+https?:\/\/([^\/]*\.)?goodhealthjobs\.info
+https?:\/\/([^\/]*\.)?goodticket\.org
+https?:\/\/([^\/]*\.)?google-pharmacy\.com
+https?:\/\/([^\/]*\.)?google110\.yculblog\.com
+https?:\/\/([^\/]*\.)?googlepaiming\.ebloggy\.com
+https?:\/\/([^\/]*\.)?googletosh\.org
+https?:\/\/([^\/]*\.)?goporn\.info
+https?:\/\/([^\/]*\.)?gopremen\.dl\.pl
+https?:\/\/([^\/]*\.)?gor-richards-realm-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?gorillalinks-com-t77\.blogspot\.com
+https?:\/\/([^\/]*\.)?gorillashaman\.blogspot\.com
+https?:\/\/([^\/]*\.)?gorlum\.t35\.com
+https?:\/\/([^\/]*\.)?gorunger\.com
+https?:\/\/([^\/]*\.)?goxzk\.szm\.sk
+https?:\/\/([^\/]*\.)?gpdmr\.szm\.sk
+https?:\/\/([^\/]*\.)?gphv0\.szm\.sk
+https?:\/\/([^\/]*\.)?gplea\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gqnzzlu\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?graduate-schools\.hotmail\.ru
+https?:\/\/([^\/]*\.)?graduate1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?graduate2schools\.chat\.ru
+https?:\/\/([^\/]*\.)?graf\.pp\.ru
+https?:\/\/([^\/]*\.)?grammatica-inglese\.bb11\.info
+https?:\/\/([^\/]*\.)?gran-roques\.forumhst\.info
+https?:\/\/([^\/]*\.)?granny-boy-free-pic\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?granny-movie-thumb\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?grannyorgies-com-o1w34\.blogspot\.com
+https?:\/\/([^\/]*\.)?grannyorgies-com-ormpubp\.blogspot\.com
+https?:\/\/([^\/]*\.)?grannyorgies-com-r2on\.blogspot\.com
+https?:\/\/([^\/]*\.)?grannypictures-com-a2w1\.blogspot\.com
+https?:\/\/([^\/]*\.)?grannypictures-com-ak6273j85t\.blogspot\.com
+https?:\/\/([^\/]*\.)?grannyplanet-com-k1bea\.blogspot\.com
+https?:\/\/([^\/]*\.)?great-ass-gallery\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?greataftorless\.com
+https?:\/\/([^\/]*\.)?greatbmwclub\.cn
+https?:\/\/([^\/]*\.)?greatbmwparts\.cn
+https?:\/\/([^\/]*\.)?greatbudgetinn\.info
+https?:\/\/([^\/]*\.)?greathal\.com
+https?:\/\/([^\/]*\.)?greatinsurancedirect\.info
+https?:\/\/([^\/]*\.)?greatmercedescar\.info
+https?:\/\/([^\/]*\.)?greatpsychology\.info
+https?:\/\/([^\/]*\.)?greatusainternet\.info
+https?:\/\/([^\/]*\.)?green-gradens\.org
+https?:\/\/([^\/]*\.)?green-tea-300\.co\.nr
+https?:\/\/([^\/]*\.)?green-tea\.co\.nr
+https?:\/\/([^\/]*\.)?greentits-com-kr3h3787pt\.blogspot\.com
+https?:\/\/([^\/]*\.)?greentits-com-t8xf3x5\.blogspot\.com
+https?:\/\/([^\/]*\.)?greentits-com-tr242sh16\.blogspot\.com
+https?:\/\/([^\/]*\.)?greet\.ipupdater\.net
+https?:\/\/([^\/]*\.)?grgul\.szm\.sk
+https?:\/\/([^\/]*\.)?griev\.ipupdater\.com
+https?:\/\/([^\/]*\.)?griffeylaw\.com
+https?:\/\/([^\/]*\.)?grimasa\.republika\.pl
+https?:\/\/([^\/]*\.)?groovybus-com-cv8ry83\.blogspot\.com
+https?:\/\/([^\/]*\.)?groovybus-com-gy1258kur3\.blogspot\.com
+https?:\/\/([^\/]*\.)?groupforums\.com
+https?:\/\/([^\/]*\.)?groups-msn-com-masturbating-site-woman\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?groups\.ku\.edu
+https?:\/\/([^\/]*\.)?grrualca\.jconserv\.net
+https?:\/\/([^\/]*\.)?gsaxz\.szm\.sk
+https?:\/\/([^\/]*\.)?gsebook\.org
+https?:\/\/([^\/]*\.)?gsloi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gsuyfy2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gsxez\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gu-amateur-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?guangdianyuanjian\.dzsc\.com
+https?:\/\/([^\/]*\.)?gudtk\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?guess76\.blogspot\.com
+https?:\/\/([^\/]*\.)?guilty-until-proven-innocent\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?gumaxxx-com-e3748i87g\.blogspot\.com
+https?:\/\/([^\/]*\.)?gumaxxx-com-ow774pk74m\.blogspot\.com
+https?:\/\/([^\/]*\.)?gumybear\.php5\.cz
+https?:\/\/([^\/]*\.)?gunterdirect\.com
+https?:\/\/([^\/]*\.)?gunterlawoffice\.com
+https?:\/\/([^\/]*\.)?guruful\.stabilt\.se
+https?:\/\/([^\/]*\.)?guys-butt-fucking\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?gvfefn3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gwebsearch\.org
+https?:\/\/([^\/]*\.)?gwjsx\.szm\.sk
+https?:\/\/([^\/]*\.)?gxrd3\.szm\.sk
+https?:\/\/([^\/]*\.)?gyig3\.szm\.sk
+https?:\/\/([^\/]*\.)?gym-equipments\.org
+https?:\/\/([^\/]*\.)?gyzvpxl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gzmayz6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?gzvwa\.szm\.sk
+https?:\/\/([^\/]*\.)?h0vutok\.nokedem\.com
+https?:\/\/([^\/]*\.)?h15\.ru
+https?:\/\/([^\/]*\.)?h3as88dw\.info
+https?:\/\/([^\/]*\.)?habromjw\.dl\.pl
+https?:\/\/([^\/]*\.)?haemcurio\.0moola\.com
+https?:\/\/([^\/]*\.)?hahas\.info
+https?:\/\/([^\/]*\.)?hairy-ass-hole\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?hairy-chubby-gallery\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?hairy-leg-pic-woman\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hairy-milf-movie\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?hairydivas-com-hg2gvyc\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairydivas-t150c5gmf8\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairyerotica-com-i4fl2x\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairypinktacos-com-djl\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairypinktacos-com-hlnfq3rea2\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairypussypost-com-mk0ymrj\.blogspot\.com
+https?:\/\/([^\/]*\.)?hairypussypost-com-w6\.blogspot\.com
+https?:\/\/([^\/]*\.)?hal\.engr\.smu\.edu
+https?:\/\/([^\/]*\.)?halloween2006\.info
+https?:\/\/([^\/]*\.)?halx8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hamalo\.com
+https?:\/\/([^\/]*\.)?hamas2007\.republika\.pl
+https?:\/\/([^\/]*\.)?hand-job-movie-x-x-d\.blogspot\.com
+https?:\/\/([^\/]*\.)?hand-stained-xx\.blogspot\.com
+https?:\/\/([^\/]*\.)?hangzhau\.cn
+https?:\/\/([^\/]*\.)?hanksgalleries-com-b73flku8\.blogspot\.com
+https?:\/\/([^\/]*\.)?hanksgalleries-com-rtuvbgdl\.blogspot\.com
+https?:\/\/([^\/]*\.)?hanry\.stabilt\.se
+https?:\/\/([^\/]*\.)?haole\.cn
+https?:\/\/([^\/]*\.)?happy-pharma\.com
+https?:\/\/([^\/]*\.)?hard-disk-esterno\.hostzz\.info
+https?:\/\/([^\/]*\.)?hard-disk-esterno\.ll11\.info
+https?:\/\/([^\/]*\.)?hardbabes-com-e061obbg\.blogspot\.com
+https?:\/\/([^\/]*\.)?hardbabes-com-e588iqk\.blogspot\.com
+https?:\/\/([^\/]*\.)?hardcore-amateur-thumbnail\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hardcore-asian-anal\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?hardcore-dancing-site-myspace-com\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hardcore-free-porn-xx\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?hardcore-lesbian-pussy-eating\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hardcore-mature-sex-young\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?hardcore-porn-clip-info73q\.blogspot\.com
+https?:\/\/([^\/]*\.)?hardcore-sex-black-on-white\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?hardcore-xxx-video\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hardcoregangstas\.hrable\.dtdns\.net
+https?:\/\/([^\/]*\.)?hardhut-com-ao8renz\.blogspot\.com
+https?:\/\/([^\/]*\.)?hardhut-com-tgi\.blogspot\.com
+https?:\/\/([^\/]*\.)?hardhut-com-wb8m8\.blogspot\.com
+https?:\/\/([^\/]*\.)?hargd\.szm\.sk
+https?:\/\/([^\/]*\.)?harley-davidson-womens-boot\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?harted\.hostpresso\.com
+https?:\/\/([^\/]*\.)?haungsanok\.com
+https?:\/\/([^\/]*\.)?hawaiimortgage-x\.com
+https?:\/\/([^\/]*\.)?hawbij4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hawkesnest\.com
+https?:\/\/([^\/]*\.)?hazell-keeley-sex-video-bb-bb-f\.blogspot\.com
+https?:\/\/([^\/]*\.)?hbyfq\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?hcgs\.unh\.edu
+https?:\/\/([^\/]*\.)?hclt-events\.blogspot\.com
+https?:\/\/([^\/]*\.)?hdbj\.com\.cn
+https?:\/\/([^\/]*\.)?hdchina\.com
+https?:\/\/([^\/]*\.)?hdlwc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hdndeuw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?he-wells\.blogspot\.com
+https?:\/\/([^\/]*\.)?he-wendy\.blogspot\.com
+https?:\/\/([^\/]*\.)?head-masturbating-shower-woman\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?health-insurance-0\.blogspot\.com
+https?:\/\/([^\/]*\.)?health-insurance-save\.com
+https?:\/\/([^\/]*\.)?health-jack\.com
+https?:\/\/([^\/]*\.)?healthinsurance-x\.com
+https?:\/\/([^\/]*\.)?healthprocare\.info
+https?:\/\/([^\/]*\.)?hebei-railings\.cn
+https?:\/\/([^\/]*\.)?hecarabi\.info
+https?:\/\/([^\/]*\.)?hefo-adrianna\.blogspot\.com
+https?:\/\/([^\/]*\.)?hek-tshirthell-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?hellim\.3x\.ro
+https?:\/\/([^\/]*\.)?heloween\.php5\.cz
+https?:\/\/([^\/]*\.)?hemilton\.stabilt\.se
+https?:\/\/([^\/]*\.)?hengxinbanjia\.com
+https?:\/\/([^\/]*\.)?her-first-anal-fucking\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?her-first-cum\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?her-first-lesbian-sex-kylie\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?her-first-small-dick\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?her-sweet-ass\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?here\.com\.cn
+https?:\/\/([^\/]*\.)?hereandnow0\.com
+https?:\/\/([^\/]*\.)?hereistheporn-com-abg\.blogspot\.com
+https?:\/\/([^\/]*\.)?hereistheporn-com-wxu4\.blogspot\.com
+https?:\/\/([^\/]*\.)?herpes\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?herufip\.info
+https?:\/\/([^\/]*\.)?heschlos\.dl\.pl
+https?:\/\/([^\/]*\.)?hevo-alannah\.blogspot\.com
+https?:\/\/([^\/]*\.)?hexingqc\.com
+https?:\/\/([^\/]*\.)?hfpm\.com
+https?:\/\/([^\/]*\.)?hfsflm0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hfslink\.com
+https?:\/\/([^\/]*\.)?hgdpy\.szm\.sk
+https?:\/\/([^\/]*\.)?hgh\.rx4\.org
+https?:\/\/([^\/]*\.)?hgqz5\.szm\.sk
+https?:\/\/([^\/]*\.)?hguldxxe-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?hgyxs\.szm\.sk
+https?:\/\/([^\/]*\.)?hhcoh\.szm\.sk
+https?:\/\/([^\/]*\.)?hhlive\.info
+https?:\/\/([^\/]*\.)?hhpump\.com
+https?:\/\/([^\/]*\.)?hiadadar\.forumzen\.com
+https?:\/\/([^\/]*\.)?higarret\.forumzen\.com
+https?:\/\/([^\/]*\.)?high-heel-western-boot\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?high-school-diploma\.hotmail\.ru
+https?:\/\/([^\/]*\.)?high1school4dipl\.chat\.ru
+https?:\/\/([^\/]*\.)?highclassblogs\.com
+https?:\/\/([^\/]*\.)?hilarykallin\.50webs\.org
+https?:\/\/([^\/]*\.)?hilipa\.com
+https?:\/\/([^\/]*\.)?hilipy\.com
+https?:\/\/([^\/]*\.)?hillery\.republika\.pl
+https?:\/\/([^\/]*\.)?himd4\.szm\.sk
+https?:\/\/([^\/]*\.)?himp3\.biz
+https?:\/\/([^\/]*\.)?hinn8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hioctane-com-dlmv6g7y\.blogspot\.com
+https?:\/\/([^\/]*\.)?hioctane-com-dq4opea\.blogspot\.com
+https?:\/\/([^\/]*\.)?hioctane-com-h0un\.blogspot\.com
+https?:\/\/([^\/]*\.)?hioctane-com-toxuz\.blogspot\.com
+https?:\/\/([^\/]*\.)?hipoldlady\.com
+https?:\/\/([^\/]*\.)?hirudaco\.forumzen\.com
+https?:\/\/([^\/]*\.)?his13lessings\.blogspot\.com
+https?:\/\/([^\/]*\.)?history-of-condom\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?hisyma\.dl\.pl
+https?:\/\/([^\/]*\.)?hitm4n\.blogspot\.com
+https?:\/\/([^\/]*\.)?hiv123\.com
+https?:\/\/([^\/]*\.)?hiv987\.zj\.com
+https?:\/\/([^\/]*\.)?hjia\.ebloggy\.com
+https?:\/\/([^\/]*\.)?hjolmed\.com
+https?:\/\/([^\/]*\.)?hkcompanyforyou\.cn
+https?:\/\/([^\/]*\.)?hkfeng\.com
+https?:\/\/([^\/]*\.)?hkwei\.com\.cn
+https?:\/\/([^\/]*\.)?hlemizd\.republika\.pl
+https?:\/\/([^\/]*\.)?hlusky\.republika\.pl
+https?:\/\/([^\/]*\.)?hlxn6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hmppbw-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?hnxsv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ho-big-clip-tit-video-hox\.blogspot\.com
+https?:\/\/([^\/]*\.)?hobaysin\.ifrance\.com
+https?:\/\/([^\/]*\.)?hocohn\.dl\.pl
+https?:\/\/([^\/]*\.)?hohoo\.cn
+https?:\/\/([^\/]*\.)?hold-em-play\.com
+https?:\/\/([^\/]*\.)?hold-em-play\.net
+https?:\/\/([^\/]*\.)?hold-em-winner\.us
+https?:\/\/([^\/]*\.)?home-made-porn-clip-blogt7y\.blogspot\.com
+https?:\/\/([^\/]*\.)?home-mortgages\.bigsitecity\.com
+https?:\/\/([^\/]*\.)?home-sauna\.boom\.ru
+https?:\/\/([^\/]*\.)?home-secure\.org
+https?:\/\/([^\/]*\.)?home-sex-video-t1ux7\.blogspot\.com
+https?:\/\/([^\/]*\.)?home-spire\.com
+https?:\/\/([^\/]*\.)?home\.graffiti\.net
+https?:\/\/([^\/]*\.)?home\.sailormoon\.com
+https?:\/\/([^\/]*\.)?home2-school\.boom\.ru
+https?:\/\/([^\/]*\.)?homeequitylineofcredit-x\.com
+https?:\/\/([^\/]*\.)?homeequitylineofcreditlenders\.com
+https?:\/\/([^\/]*\.)?homeequityloan-now\.com
+https?:\/\/([^\/]*\.)?homeequityloans-now\.com
+https?:\/\/([^\/]*\.)?homeequityloans-x\.com
+https?:\/\/([^\/]*\.)?homefinance-x\.com
+https?:\/\/([^\/]*\.)?homeloan-now\.com
+https?:\/\/([^\/]*\.)?homeloanlogic\.com
+https?:\/\/([^\/]*\.)?homeloans-now\.com
+https?:\/\/([^\/]*\.)?homemade-mature-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?homemade-porn-clip-infoywx\.blogspot\.com
+https?:\/\/([^\/]*\.)?homesafterbankruptcy\.info
+https?:\/\/([^\/]*\.)?homesbysellers\.com
+https?:\/\/([^\/]*\.)?homesbysellers\.net
+https?:\/\/([^\/]*\.)?homesexvideo\.org
+https?:\/\/([^\/]*\.)?hometowngirls\.be
+https?:\/\/([^\/]*\.)?hometwat-com-hrmml\.blogspot\.com
+https?:\/\/([^\/]*\.)?homos\.php5\.cz
+https?:\/\/([^\/]*\.)?homunkulus\.info
+https?:\/\/([^\/]*\.)?homunkulus\.republika\.pl
+https?:\/\/([^\/]*\.)?homy\.etowns\.net
+https?:\/\/([^\/]*\.)?honba\.republika\.pl
+https?:\/\/([^\/]*\.)?honey99\.cn
+https?:\/\/([^\/]*\.)?honey99\.com
+https?:\/\/([^\/]*\.)?hongjianlaw\.com
+https?:\/\/([^\/]*\.)?hongqi120\.com
+https?:\/\/([^\/]*\.)?hoodia\.269g\.net
+https?:\/\/([^\/]*\.)?hoodiadiet\.269g\.net
+https?:\/\/([^\/]*\.)?hopemarry\.com
+https?:\/\/([^\/]*\.)?horizondrugs\.zaclona\.yi\.org
+https?:\/\/([^\/]*\.)?hornina\.net
+https?:\/\/([^\/]*\.)?horny-butt-sex\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?horny-grannysex-bipiw\.blogspot\.com
+https?:\/\/([^\/]*\.)?horny-hailey\.hostithere\.org
+https?:\/\/([^\/]*\.)?hornybanana-com-mg\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornybanana-com-to0b\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornycrocodile-com-c37c85\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornycrocodile-com-gmb5ev\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornycrocodile-com-gv3x3oxt\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornyduck-com-esta\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornyduck-com-oix7y2v\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornykaren-com-b16sk5\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornykaren-com-bl4rw4\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornykaren-com-rg034\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornyspanishflies-com-c0cx6a3bo\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornyspanishflies-com-ks5856vf77\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornytiger-com-d3\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornytiger-com-il0x678fwr\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornywolf-com-m27\.blogspot\.com
+https?:\/\/([^\/]*\.)?hornywolf-com-tqwaj\.blogspot\.com
+https?:\/\/([^\/]*\.)?hospitalonline\.cn
+https?:\/\/([^\/]*\.)?host-page\.com
+https?:\/\/([^\/]*\.)?hosting1999\.com
+https?:\/\/([^\/]*\.)?hosting41\.com
+https?:\/\/([^\/]*\.)?hot-anal-sex-com\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hot-asian-cock\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?hot-ass-anal\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?hot-blonde-babe-gallery\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?hot-brazilian-ass\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?hot-bubble-butt-girl\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?hot-cheerleader-getting-fucked\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?hot-dating-chat\.ifastnet\.com
+https?:\/\/([^\/]*\.)?hot-latino-ass\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?hot-mature-sex-uk-woman\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?hot-mature-xxx\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?hot-mom-site-myspace-com\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?hot-nude-blonde-chick\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?hot-pussy-tit-ass\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?hot-sex-video-bb-bb-v\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotbigmovies-com-cd\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotbigmovies-com-k62que75im\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotchina\.org
+https?:\/\/([^\/]*\.)?hotel-centro-benessere\.host24h\.info
+https?:\/\/([^\/]*\.)?hotel-offerta\.nnme\.info
+https?:\/\/([^\/]*\.)?hotel-shop\.info
+https?:\/\/([^\/]*\.)?hotelsaccommodations\.info
+https?:\/\/([^\/]*\.)?hotfunhouse-com-pevuv\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotfunhouse-com-r5530\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotgirlsplayroom-com-dl0q21\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotgirlsplayroom-com-isnkeded\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotmoko\.info
+https?:\/\/([^\/]*\.)?hotorange-net-ms\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotpapai-com-hoc3g\.blogspot\.com
+https?:\/\/([^\/]*\.)?hotty-x\.com
+https?:\/\/([^\/]*\.)?hottystop-com-a252gugtk\.blogspot\.com
+https?:\/\/([^\/]*\.)?hottystop-com-grn\.blogspot\.com
+https?:\/\/([^\/]*\.)?house-15\.jeepsyc\.be
+https?:\/\/([^\/]*\.)?houses-bahamas\.ligamic\.be
+https?:\/\/([^\/]*\.)?housewifeaction-com-evv\.blogspot\.com
+https?:\/\/([^\/]*\.)?housewifeaction-com-o6z0yrnat\.blogspot\.com
+https?:\/\/([^\/]*\.)?housewifeaction-com-ob85\.blogspot\.com
+https?:\/\/([^\/]*\.)?hovadko\.isuisse\.com
+https?:\/\/([^\/]*\.)?hovass\.com
+https?:\/\/([^\/]*\.)?hovi-albatross\.blogspot\.com
+https?:\/\/([^\/]*\.)?how-to-catch-a-cheating-spouse\.com
+https?:\/\/([^\/]*\.)?how-to-make-a-boot-disk-on-win-xp\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?how-to-make-a-boot-disk\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?how-to-make-a-cock-ring\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?hppr7\.szm\.sk
+https?:\/\/([^\/]*\.)?hpua6\.szm\.sk
+https?:\/\/([^\/]*\.)?hpwe6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hq-casino\.org
+https?:\/\/([^\/]*\.)?hq-teens-com-aq\.blogspot\.com
+https?:\/\/([^\/]*\.)?hq-teens-com-w2opp2\.blogspot\.com
+https?:\/\/([^\/]*\.)?hq\.left-page\.com
+https?:\/\/([^\/]*\.)?hqgal-com-eu7gbk1o\.blogspot\.com
+https?:\/\/([^\/]*\.)?hqgal-com-ilxpxi0\.blogspot\.com
+https?:\/\/([^\/]*\.)?hqmovs-com-k31h4x37df\.blogspot\.com
+https?:\/\/([^\/]*\.)?hqmovs-com-tiou81\.blogspot\.com
+https?:\/\/([^\/]*\.)?hqmovs-com-ts5\.blogspot\.com
+https?:\/\/([^\/]*\.)?hrable\.ostabil\.nu
+https?:\/\/([^\/]*\.)?hrhbchj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hromotlk\.asp2\.cz
+https?:\/\/([^\/]*\.)?hrusky\.dtdns\.net
+https?:\/\/([^\/]*\.)?hscrza1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ht120\.com
+https?:\/\/([^\/]*\.)?htejj\.szm\.sk
+https?:\/\/([^\/]*\.)?huaeq\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?huapatossu\.blogspot\.com
+https?:\/\/([^\/]*\.)?huataix\.net
+https?:\/\/([^\/]*\.)?hubo-aileen\.blogspot\.com
+https?:\/\/([^\/]*\.)?huem-polbu\.netfirms\.com
+https?:\/\/([^\/]*\.)?huge-cock-shemale\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?huge-dick-anal\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?huge-dildo-fucking\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?huge-mexican-ass\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?huge-sexy-boob\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?huge-white-dick\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?hulio\.asp2\.cz
+https?:\/\/([^\/]*\.)?hulks\.info
+https?:\/\/([^\/]*\.)?hummerworldusa\.info
+https?:\/\/([^\/]*\.)?hupa4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hurvinek\.isuisse\.com
+https?:\/\/([^\/]*\.)?huspinina\.com
+https?:\/\/([^\/]*\.)?hutwistina\.com
+https?:\/\/([^\/]*\.)?huynani\.mpage\.jp
+https?:\/\/([^\/]*\.)?hvebjr2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hver5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hvlnb\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?hwantiig-yg\.blogspot\.com
+https?:\/\/([^\/]*\.)?hwcw4\.szm\.sk
+https?:\/\/([^\/]*\.)?hwhhw\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?hwkxt\.szm\.sk
+https?:\/\/([^\/]*\.)?hxbqpz3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?hxlll\.net
+https?:\/\/([^\/]*\.)?hydrochloride-tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?hydrocodone-911\.coz\.in
+https?:\/\/([^\/]*\.)?hydrocodone-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?hydrocodone-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?hydrocodone-gs\.net\.tc
+https?:\/\/([^\/]*\.)?hydrocodone-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?hydrocodone\.cheapills\.info
+https?:\/\/([^\/]*\.)?hydrocodone\.conto\.pl
+https?:\/\/([^\/]*\.)?hydrocodone\.esguay\.com
+https?:\/\/([^\/]*\.)?hydrocodone\.fws1\.com
+https?:\/\/([^\/]*\.)?hydrocodone\.guu\.pl
+https?:\/\/([^\/]*\.)?hydrocodone\.presteert\.nl
+https?:\/\/([^\/]*\.)?hydrocodone\.slyip\.net
+https?:\/\/([^\/]*\.)?hydrocodonebxs\.blogspot\.com
+https?:\/\/([^\/]*\.)?hydrocodoneq\.phpbbx\.de
+https?:\/\/([^\/]*\.)?hydrocodonerx\.weboficial\.com
+https?:\/\/([^\/]*\.)?hyip\.fanforum\.cc
+https?:\/\/([^\/]*\.)?hz7\.org
+https?:\/\/([^\/]*\.)?hzkap\.szm\.sk
+https?:\/\/([^\/]*\.)?hzmeitai\.com
+https?:\/\/([^\/]*\.)?hzui8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?i-truepoker\.com
+https?:\/\/([^\/]*\.)?iactive\.com\.cn
+https?:\/\/([^\/]*\.)?iapon\.galeon\.com
+https?:\/\/([^\/]*\.)?ibizababes-com-tr\.blogspot\.com
+https?:\/\/([^\/]*\.)?ic37\.com
+https?:\/\/([^\/]*\.)?icdufetc\.forumzen\.com
+https?:\/\/([^\/]*\.)?ickaboo\.com
+https?:\/\/([^\/]*\.)?icnfr\.szm\.sk
+https?:\/\/([^\/]*\.)?ict\.188info\.com
+https?:\/\/([^\/]*\.)?idahomortgage-x\.com
+https?:\/\/([^\/]*\.)?idc2008\.cn
+https?:\/\/([^\/]*\.)?idealbabes-net-r5x1puaah0\.blogspot\.com
+https?:\/\/([^\/]*\.)?iditarodhumor\.info
+https?:\/\/([^\/]*\.)?iehf\.blogspot\.com
+https?:\/\/([^\/]*\.)?iehffy8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?iehzup8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ifdbx\.szm\.sk
+https?:\/\/([^\/]*\.)?ifmnqm6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ifyj2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ihavenourl\.com
+https?:\/\/([^\/]*\.)?ihomebroker\.com
+https?:\/\/([^\/]*\.)?ihrd\.blogspot\.com
+https?:\/\/([^\/]*\.)?iiak2\.szm\.sk
+https?:\/\/([^\/]*\.)?iio91\.net
+https?:\/\/([^\/]*\.)?iisqvkk\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?iitop\.info
+https?:\/\/([^\/]*\.)?ikoxf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?il4unu\.com
+https?:\/\/([^\/]*\.)?ilflz\.szm\.sk
+https?:\/\/([^\/]*\.)?ilfwvf2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?illcom\.com
+https?:\/\/([^\/]*\.)?illinoismortgage-x\.com
+https?:\/\/([^\/]*\.)?ilove-movies-com-w5nx\.blogspot\.com
+https?:\/\/([^\/]*\.)?ilove-movies-com-wrde\.blogspot\.com
+https?:\/\/([^\/]*\.)?iloveubaby\.info
+https?:\/\/([^\/]*\.)?iltbl\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?im-really-cool\.blogspot\.com
+https?:\/\/([^\/]*\.)?imitrex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?imitrexinjections\.sblog\.cz
+https?:\/\/([^\/]*\.)?immagine-sfondo-hello-kitty\.i111i\.info
+https?:\/\/([^\/]*\.)?imposingimo\.com
+https?:\/\/([^\/]*\.)?impossiblemale61\.blogspot\.com
+https?:\/\/([^\/]*\.)?imteen\.attacke\.ch
+https?:\/\/([^\/]*\.)?incontri-amore\.19mb\.info
+https?:\/\/([^\/]*\.)?incontri-amore\.you-bizz\.info
+https?:\/\/([^\/]*\.)?indian-porn-clip-zone5j4\.blogspot\.com
+https?:\/\/([^\/]*\.)?indian-porn-video-zo\.blogspot\.com
+https?:\/\/([^\/]*\.)?indian-sex-fuck\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?indianamortgage-x\.com
+https?:\/\/([^\/]*\.)?indienudes-com-h4owj60\.blogspot\.com
+https?:\/\/([^\/]*\.)?infinitemonies\.com
+https?:\/\/([^\/]*\.)?infinitieyewear\.info
+https?:\/\/([^\/]*\.)?infinitims\.info
+https?:\/\/([^\/]*\.)?infinitipianeta\.info
+https?:\/\/([^\/]*\.)?infoarena\.info
+https?:\/\/([^\/]*\.)?infospm\.21publish\.de
+https?:\/\/([^\/]*\.)?infty\.net
+https?:\/\/([^\/]*\.)?injecfu\.com
+https?:\/\/([^\/]*\.)?injxx\.szm\.sk
+https?:\/\/([^\/]*\.)?innocent-ass\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?innocent-busty-teen\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?innocent-eve-pic\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?innocentdream-com-da\.blogspot\.com
+https?:\/\/([^\/]*\.)?inqygjz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?inrhqi3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?insidethecloset\.com
+https?:\/\/([^\/]*\.)?inspectorgalleries-com-k5\.blogspot\.com
+https?:\/\/([^\/]*\.)?insurance-leader\.com
+https?:\/\/([^\/]*\.)?insurance-top\.com
+https?:\/\/([^\/]*\.)?insurance\.topforyou\.net
+https?:\/\/([^\/]*\.)?internal-ass-cum-shot\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?international-dating\.sexnation\.info
+https?:\/\/([^\/]*\.)?interracial-gang-bang-crew\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?interracial-gay-anal-sex\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?interracial-lesbian-domination\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?interracial-teen-fucking\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?interracialpicsuux\.blogspot\.com
+https?:\/\/([^\/]*\.)?intersea-fdn\.com
+https?:\/\/([^\/]*\.)?inthevip-com-bc1b0kb0\.blogspot\.com
+https?:\/\/([^\/]*\.)?inthevip-com-bvw\.blogspot\.com
+https?:\/\/([^\/]*\.)?inthevip-com-rso\.blogspot\.com
+https?:\/\/([^\/]*\.)?intll\.com
+https?:\/\/([^\/]*\.)?intra\.som\.umass\.edu
+https?:\/\/([^\/]*\.)?intranet\.education\.umn\.edu
+https?:\/\/([^\/]*\.)?invest1\.org\.ua
+https?:\/\/([^\/]*\.)?ioauaq0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ionamin\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ionizatorit\.info
+https?:\/\/([^\/]*\.)?iowamortgage-x\.com
+https?:\/\/([^\/]*\.)?ipeddle\.com
+https?:\/\/([^\/]*\.)?ipha4\.szm\.sk
+https?:\/\/([^\/]*\.)?ipod-application\.info
+https?:\/\/([^\/]*\.)?ipokea\.com
+https?:\/\/([^\/]*\.)?iqzyk\.szm\.sk
+https?:\/\/([^\/]*\.)?iradorame\.site\.voila\.fr
+https?:\/\/([^\/]*\.)?ircv6\.szm\.sk
+https?:\/\/([^\/]*\.)?irenefah-gijul\.blogspot\.com
+https?:\/\/([^\/]*\.)?irishlover\.info
+https?:\/\/([^\/]*\.)?iron-island\.blogspot\.com
+https?:\/\/([^\/]*\.)?ironing-boards\.haemati\.be
+https?:\/\/([^\/]*\.)?irqs8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?isceby0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?islands-tour\.globaltr\.info
+https?:\/\/([^\/]*\.)?isoway-yoga\.com
+https?:\/\/([^\/]*\.)?ispycameltoe-com-cugh6n\.blogspot\.com
+https?:\/\/([^\/]*\.)?ispycameltoe-com-g4s2f7vevs\.blogspot\.com
+https?:\/\/([^\/]*\.)?italiagame\.org
+https?:\/\/([^\/]*\.)?italianosito\.info
+https?:\/\/([^\/]*\.)?italika\.info
+https?:\/\/([^\/]*\.)?italizzhot\.info
+https?:\/\/([^\/]*\.)?italoman\.info
+https?:\/\/([^\/]*\.)?italytraffic\.info
+https?:\/\/([^\/]*\.)?itchy-skin\.nm\.ru
+https?:\/\/([^\/]*\.)?itchy_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?itcweb\.ecsu\.edu
+https?:\/\/([^\/]*\.)?itdk0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?item4u\.com
+https?:\/\/([^\/]*\.)?itgeecna\.forumzen\.com
+https?:\/\/([^\/]*\.)?itp\.nyu\.edu
+https?:\/\/([^\/]*\.)?itpvewa\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?itsum\.com\.cn
+https?:\/\/([^\/]*\.)?ityh1\.szm\.sk
+https?:\/\/([^\/]*\.)?iugfsvv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?iuzjbpu\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ivana-fuck-a-lot\.hoffer\.ipupdater\.com
+https?:\/\/([^\/]*\.)?ivoyt\.blogspot\.com
+https?:\/\/([^\/]*\.)?ivs\.com\.cn
+https?:\/\/([^\/]*\.)?iwahigux\.info
+https?:\/\/([^\/]*\.)?iwantmature-com-mme\.blogspot\.com
+https?:\/\/([^\/]*\.)?iwuy8\.szm\.sk
+https?:\/\/([^\/]*\.)?ixiixi-com-guy\.blogspot\.com
+https?:\/\/([^\/]*\.)?ixllvdi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ixnl4\.szm\.sk
+https?:\/\/([^\/]*\.)?ixth4\.szm\.sk
+https?:\/\/([^\/]*\.)?izizyu-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?izui7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ja-rule-ringtonezad\.blogspot\.com
+https?:\/\/([^\/]*\.)?jablicko\.yi\.org
+https?:\/\/([^\/]*\.)?jablonec\.republika\.pl
+https?:\/\/([^\/]*\.)?jadelrel\.goodbb\.net
+https?:\/\/([^\/]*\.)?jagast\.com
+https?:\/\/([^\/]*\.)?jahmpf3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jaja-jak-globusy\.com
+https?:\/\/([^\/]*\.)?jajpip5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jamies-galleries-com-dr7itf8c\.blogspot\.com
+https?:\/\/([^\/]*\.)?jamm\.host-page\.com
+https?:\/\/([^\/]*\.)?janelolo\.fr-bb\.com
+https?:\/\/([^\/]*\.)?janet-jackson-boob-picture\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?janisy\.republika\.pl
+https?:\/\/([^\/]*\.)?jantiq\.com
+https?:\/\/([^\/]*\.)?jaoqmw1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?japan-girl-sex\.com
+https?:\/\/([^\/]*\.)?japan-whores-com-e28dwa2vvb\.blogspot\.com
+https?:\/\/([^\/]*\.)?japan-whores-com-elay3rzsu\.blogspot\.com
+https?:\/\/([^\/]*\.)?japanese-geisha-girl\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?japanese-teacher-fuck\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?japanese158\.com
+https?:\/\/([^\/]*\.)?japanshanye\.com
+https?:\/\/([^\/]*\.)?jarella\.goodbb\.net
+https?:\/\/([^\/]*\.)?jasara-com-t6fn6k8\.blogspot\.com
+https?:\/\/([^\/]*\.)?jasara-com-two5\.blogspot\.com
+https?:\/\/([^\/]*\.)?jasara-com-wibeh\.blogspot\.com
+https?:\/\/([^\/]*\.)?jastim\.com
+https?:\/\/([^\/]*\.)?jbixc\.szm\.sk
+https?:\/\/([^\/]*\.)?jblt7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jcbbxb0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jdmz\.com\.cn
+https?:\/\/([^\/]*\.)?jeanniexong\.blogspot\.com
+https?:\/\/([^\/]*\.)?jebmd\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?jed-two-lips-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?jeffrorocks21\.blogspot\.com
+https?:\/\/([^\/]*\.)?jelatko\.republika\.pl
+https?:\/\/([^\/]*\.)?jelito\.stabilt\.se
+https?:\/\/([^\/]*\.)?jennifer-lopez-music-photo\.blogspot\.com
+https?:\/\/([^\/]*\.)?jennifer-lopez-ringtoneqnf\.blogspot\.com
+https?:\/\/([^\/]*\.)?jennysbookmarks-com-kcr\.blogspot\.com
+https?:\/\/([^\/]*\.)?jessica-alba-jly9\.blogspot\.com
+https?:\/\/([^\/]*\.)?jessiethebestie\.blogspot\.com
+https?:\/\/([^\/]*\.)?jesuisleflet\.blogspot\.com
+https?:\/\/([^\/]*\.)?jet-cold-hard-bitch-album-version-lyric\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?jetoo\.cn
+https?:\/\/([^\/]*\.)?jeun\.fr
+https?:\/\/([^\/]*\.)?jewels667\.blogspot\.com
+https?:\/\/([^\/]*\.)?jezgy\.szm\.sk
+https?:\/\/([^\/]*\.)?jfmr\.com
+https?:\/\/([^\/]*\.)?jgeqhqa\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jhrxa\.szm\.sk
+https?:\/\/([^\/]*\.)?jhsy0\.szm\.sk
+https?:\/\/([^\/]*\.)?jiahuajipiao\.com
+https?:\/\/([^\/]*\.)?jiaju88\.com
+https?:\/\/([^\/]*\.)?jianfei\.cc
+https?:\/\/([^\/]*\.)?jianzhi168\.com
+https?:\/\/([^\/]*\.)?jiaza\.szm\.sk
+https?:\/\/([^\/]*\.)?jiboki-free-lesbian-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?jichengdianlu\.dzsc\.com
+https?:\/\/([^\/]*\.)?jidianqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?jieyan\.com\.cn
+https?:\/\/([^\/]*\.)?jiguang\.org
+https?:\/\/([^\/]*\.)?jijijo\.com
+https?:\/\/([^\/]*\.)?jimbo\.php5\.cz
+https?:\/\/([^\/]*\.)?jimmccarthy\.org\.uk
+https?:\/\/([^\/]*\.)?jimmini\.blogspot\.com
+https?:\/\/([^\/]*\.)?jinchengjipiao\.com
+https?:\/\/([^\/]*\.)?jinghuigift\.com
+https?:\/\/([^\/]*\.)?jingzhi-life\.com
+https?:\/\/([^\/]*\.)?jipiao\.51mp4mp3\.com
+https?:\/\/([^\/]*\.)?jipiaoweb\.co
+https?:\/\/([^\/]*\.)?jipiaoweb\.com
+https?:\/\/([^\/]*\.)?jiuwu\.com
+https?:\/\/([^\/]*\.)?jizzhut-com-oq4zf\.blogspot\.com
+https?:\/\/([^\/]*\.)?jizzonline-com-a3h52c1\.blogspot\.com
+https?:\/\/([^\/]*\.)?jizzonline-cz0h5y1nm\.blogspot\.com
+https?:\/\/([^\/]*\.)?jjfchljumf-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?jjuwt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jkpotv-free-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?jlhtj\.szm\.sk
+https?:\/\/([^\/]*\.)?jlibhe9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jmjx7\.szm\.sk
+https?:\/\/([^\/]*\.)?jnbxqy5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jnk713\.ifrance\.com
+https?:\/\/([^\/]*\.)?jnxx3\.szm\.sk
+https?:\/\/([^\/]*\.)?jobecraf\.dl\.pl
+https?:\/\/([^\/]*\.)?jobruler\.com
+https?:\/\/([^\/]*\.)?jocdy\.szm\.sk
+https?:\/\/([^\/]*\.)?jodofiv-free-fat-ass-mo-t\.blogspot\.com
+https?:\/\/([^\/]*\.)?johatch\.ifrance\.com
+https?:\/\/([^\/]*\.)?joia\.com
+https?:\/\/([^\/]*\.)?jointroompia\.com
+https?:\/\/([^\/]*\.)?jokerupot\.blogspot\.com
+https?:\/\/([^\/]*\.)?jon-a-ross\.blogspot\.com
+https?:\/\/([^\/]*\.)?jonn22\.com
+https?:\/\/([^\/]*\.)?jonsmovies-com-b23k3tx4h\.blogspot\.com
+https?:\/\/([^\/]*\.)?joperan\.org
+https?:\/\/([^\/]*\.)?journal\.eepis-its\.edu
+https?:\/\/([^\/]*\.)?joycclx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jozin\.php5\.cz
+https?:\/\/([^\/]*\.)?jp\.zxvo\.com
+https?:\/\/([^\/]*\.)?jpeghunter-com-h6rb6\.blogspot\.com
+https?:\/\/([^\/]*\.)?jpeghunter-com-hsa0g47vew\.blogspot\.com
+https?:\/\/([^\/]*\.)?jpha9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jplm\.cn
+https?:\/\/([^\/]*\.)?jptrip\.org
+https?:\/\/([^\/]*\.)?jqri2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?jrcreations\.com
+https?:\/\/([^\/]*\.)?jrqzje5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jsjgdpg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jsyuanyang\.com
+https?:\/\/([^\/]*\.)?jtdh\.fuwuqituoguan\.com
+https?:\/\/([^\/]*\.)?jtgq3\.szm\.sk
+https?:\/\/([^\/]*\.)?jtoph\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?jtut6\.szm\.sk
+https?:\/\/([^\/]*\.)?ju-alexis\.blogspot\.com
+https?:\/\/([^\/]*\.)?ju-free-porn-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?juanyuancailiao\.dzsc\.com
+https?:\/\/([^\/]*\.)?juggcrew-com-r4xwgs\.blogspot\.com
+https?:\/\/([^\/]*\.)?jugni\.50webs\.org
+https?:\/\/([^\/]*\.)?juicygals-com-c8o\.blogspot\.com
+https?:\/\/([^\/]*\.)?juliatalbot\.50webs\.org
+https?:\/\/([^\/]*\.)?julietsold\.info
+https?:\/\/([^\/]*\.)?jumasd\.com
+https?:\/\/([^\/]*\.)?jumtan\.com
+https?:\/\/([^\/]*\.)?junenanney\.site\.io
+https?:\/\/([^\/]*\.)?junky\.phpbb2\.us
+https?:\/\/([^\/]*\.)?junyuan\.com\.cn
+https?:\/\/([^\/]*\.)?jupka97\.blogspot\.com
+https?:\/\/([^\/]*\.)?juruortr\.jconserv\.net
+https?:\/\/([^\/]*\.)?juse-active\.blogspot\.com
+https?:\/\/([^\/]*\.)?justanotherebel\.blogspot\.com
+https?:\/\/([^\/]*\.)?justkor\.com
+https?:\/\/([^\/]*\.)?juyi6\.szm\.sk
+https?:\/\/([^\/]*\.)?jwfj8\.szm\.sk
+https?:\/\/([^\/]*\.)?jwk\.cn
+https?:\/\/([^\/]*\.)?jxxfl\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?jytpn\.szm\.sk
+https?:\/\/([^\/]*\.)?jzllteva-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?jzoqn\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?k-teens-more\.blogspot\.com
+https?:\/\/([^\/]*\.)?k98you\.info
+https?:\/\/([^\/]*\.)?kabierac\.blogspot\.com
+https?:\/\/([^\/]*\.)?kaejsi\.com
+https?:\/\/([^\/]*\.)?kaiguan\.dzsc\.com
+https?:\/\/([^\/]*\.)?kaimitech\.com
+https?:\/\/([^\/]*\.)?kaizokukitsune\.blogspot\.com
+https?:\/\/([^\/]*\.)?kakaloo\.dtdns\.net
+https?:\/\/([^\/]*\.)?kalbongzig64\.blogspot\.com
+https?:\/\/([^\/]*\.)?kamachair\.info
+https?:\/\/([^\/]*\.)?kansasmortgage-x\.com
+https?:\/\/([^\/]*\.)?kaopowh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kardashian\.6\.forumer\.com
+https?:\/\/([^\/]*\.)?karwee\.com\.tw
+https?:\/\/([^\/]*\.)?katal0g\.ru
+https?:\/\/([^\/]*\.)?kates-playground-cjs61770aq\.blogspot\.com
+https?:\/\/([^\/]*\.)?kates-playground-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?katie-fey-m8inou71nk\.blogspot\.com
+https?:\/\/([^\/]*\.)?katie-fey\.hostithere\.org
+https?:\/\/([^\/]*\.)?katsmovies-com-a4k0cr\.blogspot\.com
+https?:\/\/([^\/]*\.)?kc-generator\.com
+https?:\/\/([^\/]*\.)?kc\.vanderbilt\.edu
+https?:\/\/([^\/]*\.)?kchaiguang\.com
+https?:\/\/([^\/]*\.)?kdmj1\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?kedew-free-porn-movie-c\.blogspot\.com
+https?:\/\/([^\/]*\.)?kedrp\.szm\.sk
+https?:\/\/([^\/]*\.)?keflexbuy\.easy\.to
+https?:\/\/([^\/]*\.)?keflexbuycheap\.everything\.at
+https?:\/\/([^\/]*\.)?keflexcheap\.notrix\.at
+https?:\/\/([^\/]*\.)?keflexcheapgeneric\.drop\.to
+https?:\/\/([^\/]*\.)?keflexgeneric\.firstpage\.de
+https?:\/\/([^\/]*\.)?kelley\.iu\.edu
+https?:\/\/([^\/]*\.)?kellyfind-com-i1\.blogspot\.com
+https?:\/\/([^\/]*\.)?kellyslovespells\.com
+https?:\/\/([^\/]*\.)?kelvinova\.com
+https?:\/\/([^\/]*\.)?kenji-no-sorata\.blogspot\.com
+https?:\/\/([^\/]*\.)?kentuckymortgage-x\.com
+https?:\/\/([^\/]*\.)?kenwoodexcelon\.com
+https?:\/\/([^\/]*\.)?keps\.info
+https?:\/\/([^\/]*\.)?kesdirect\.com
+https?:\/\/([^\/]*\.)?keshome\.com
+https?:\/\/([^\/]*\.)?kewl-links\.com
+https?:\/\/([^\/]*\.)?keysplus\.com
+https?:\/\/([^\/]*\.)?keyword\.net\.cn
+https?:\/\/([^\/]*\.)?kfwd7\.szm\.sk
+https?:\/\/([^\/]*\.)?kgbsearch\.org
+https?:\/\/([^\/]*\.)?khawkslaxfan51\.blogspot\.com
+https?:\/\/([^\/]*\.)?khlnbo3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ki-westly\.blogspot\.com
+https?:\/\/([^\/]*\.)?kiboric\.net
+https?:\/\/([^\/]*\.)?kicfmaudio\.com
+https?:\/\/([^\/]*\.)?kicklikegirls\.info
+https?:\/\/([^\/]*\.)?kijub-free-porn-video-v\.blogspot\.com
+https?:\/\/([^\/]*\.)?kingdom\.webmelia\.com
+https?:\/\/([^\/]*\.)?kingofpics-com-beib6jsm5d\.blogspot\.com
+https?:\/\/([^\/]*\.)?kingofpics-com-c8f1bag\.blogspot\.com
+https?:\/\/([^\/]*\.)?kipredinstitute\.org
+https?:\/\/([^\/]*\.)?kiqi-airplane\.blogspot\.com
+https?:\/\/([^\/]*\.)?kirsten-dunst-boob-slip\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?kiska2\.com
+https?:\/\/([^\/]*\.)?kissing-foot\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?kissing-her-ass\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?kitchen-apron\.keckins\.be
+https?:\/\/([^\/]*\.)?kitchenrebuilding\.com
+https?:\/\/([^\/]*\.)?kiudcb0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kjbz0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kjor4\.szm\.sk
+https?:\/\/([^\/]*\.)?kkkpd\.szm\.sk
+https?:\/\/([^\/]*\.)?kkvalve\.com\.cn
+https?:\/\/([^\/]*\.)?klacim\.yi\.org
+https?:\/\/([^\/]*\.)?klasik111\.php5\.cz
+https?:\/\/([^\/]*\.)?kleinerachel\.blogspot\.com
+https?:\/\/([^\/]*\.)?klohy\.info
+https?:\/\/([^\/]*\.)?kmxab\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?knkbact\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?knzfpca\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ko-paris-hilton-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?koberec\.com
+https?:\/\/([^\/]*\.)?koled-porn-video-z\.blogspot\.com
+https?:\/\/([^\/]*\.)?kom4um\.com
+https?:\/\/([^\/]*\.)?koncatina\.dtdns\.net
+https?:\/\/([^\/]*\.)?konstantine01\.blogspot\.com
+https?:\/\/([^\/]*\.)?kordirect\.com
+https?:\/\/([^\/]*\.)?kos123\.dtdns\.net
+https?:\/\/([^\/]*\.)?kostya\.cabspace\.com
+https?:\/\/([^\/]*\.)?kpdsvd9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kpqf2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kpzq6\.szm\.sk
+https?:\/\/([^\/]*\.)?krakatoa\.slyip\.com
+https?:\/\/([^\/]*\.)?krakon\.republika\.pl
+https?:\/\/([^\/]*\.)?krasnota\.flnet\.org
+https?:\/\/([^\/]*\.)?krbd2\.szm\.sk
+https?:\/\/([^\/]*\.)?kreco\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ksbj5\.szm\.sk
+https?:\/\/([^\/]*\.)?ksiegagosci\.info
+https?:\/\/([^\/]*\.)?ktbug1373\.blogspot\.com
+https?:\/\/([^\/]*\.)?ktrv2\.szm\.sk
+https?:\/\/([^\/]*\.)?ku-whatnot\.blogspot\.com
+https?:\/\/([^\/]*\.)?kucitok\.forumculture\.net
+https?:\/\/([^\/]*\.)?kulhain\.blogspot\.com
+https?:\/\/([^\/]*\.)?kunshalawyer\.com
+https?:\/\/([^\/]*\.)?kvehuj8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kvywc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kwscx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kwvi\.com
+https?:\/\/([^\/]*\.)?kybel\.fetftp\.nu
+https?:\/\/([^\/]*\.)?kybele\.psych\.cornell\.edu
+https?:\/\/([^\/]*\.)?kyjcz\.sunp\.com
+https?:\/\/([^\/]*\.)?kymnruw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?kymyn\.info
+https?:\/\/([^\/]*\.)?l-paris-hilton-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?l\.0s48\.info
+https?:\/\/([^\/]*\.)?l1ttleblacky\.blogspot\.com
+https?:\/\/([^\/]*\.)?la-ringtones\.com
+https?:\/\/([^\/]*\.)?laaceler\.blogcu\.com
+https?:\/\/([^\/]*\.)?labelprinter\.printer\.net\.cn
+https?:\/\/([^\/]*\.)?labladar\.forumzen\.com
+https?:\/\/([^\/]*\.)?lacchi\.lolforum\.net
+https?:\/\/([^\/]*\.)?laconia4\.info
+https?:\/\/([^\/]*\.)?ladylike\.hostcroc\.com
+https?:\/\/([^\/]*\.)?lake-baikal\.info
+https?:\/\/([^\/]*\.)?laked\.info
+https?:\/\/([^\/]*\.)?lalisit\.heavenforum\.com
+https?:\/\/([^\/]*\.)?lalisit\.highforum\.net
+https?:\/\/([^\/]*\.)?lamalinks-com-ceefq\.blogspot\.com
+https?:\/\/([^\/]*\.)?lamisilbuy\.drive\.to
+https?:\/\/([^\/]*\.)?lamisilbuygeneric\.dive\.to
+https?:\/\/([^\/]*\.)?lamisilcheap\.drink\.to
+https?:\/\/([^\/]*\.)?lamisilgeneric\.drop\.to
+https?:\/\/([^\/]*\.)?lamisilgenericcheap\.dive\.to
+https?:\/\/([^\/]*\.)?lanasbigboobs-com-mxm7\.blogspot\.com
+https?:\/\/([^\/]*\.)?lanasbigboobs-com-repif\.blogspot\.com
+https?:\/\/([^\/]*\.)?laorer\.ephpbb\.com
+https?:\/\/([^\/]*\.)?lapelcna\.forumzen\.com
+https?:\/\/([^\/]*\.)?lapoer\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?large-lingerie-naughty-woman\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?las-vegas-gay-night-club\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?las-vegas-house\.nm\.ru
+https?:\/\/([^\/]*\.)?laser-drilled-diamonds\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?laser-wave\.com
+https?:\/\/([^\/]*\.)?laskai\.com
+https?:\/\/([^\/]*\.)?lasmercedessite\.info
+https?:\/\/([^\/]*\.)?lassie\.webmelia\.com
+https?:\/\/([^\/]*\.)?last-minute-travel\.ebem\.info
+https?:\/\/([^\/]*\.)?latex-ass\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?latex-dress\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?latex-foam-mattress-toppers\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?latex-mistress\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?latex-sluts\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?latex-swim-wear\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?latin\.hostaim\.com
+https?:\/\/([^\/]*\.)?latina-porn-clip-blog11q\.blogspot\.com
+https?:\/\/([^\/]*\.)?latina-porn-clip-blogden\.blogspot\.com
+https?:\/\/([^\/]*\.)?latinata\.galeon\.com
+https?:\/\/([^\/]*\.)?latoarril\.myrealboard\.com
+https?:\/\/([^\/]*\.)?laus-rmore\.blogspot\.com
+https?:\/\/([^\/]*\.)?lavemi\.com
+https?:\/\/([^\/]*\.)?lavender-dove\.blogspot\.com
+https?:\/\/([^\/]*\.)?lavor0\.info
+https?:\/\/([^\/]*\.)?law-school\.hotmail\.ru
+https?:\/\/([^\/]*\.)?law1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?law2school\.chat\.ru
+https?:\/\/([^\/]*\.)?lawrencegillies\.blogspot\.com
+https?:\/\/([^\/]*\.)?lawyer\.ebloggy\.com
+https?:\/\/([^\/]*\.)?laynamarya\.blogspot\.com
+https?:\/\/([^\/]*\.)?laythekatcom\.pupava\.dtdns\.net
+https?:\/\/([^\/]*\.)?lbgetm9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lbrnrme\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lczjunf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ldrdf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?le-alma\.blogspot\.com
+https?:\/\/([^\/]*\.)?le-big-free-movie-porn-cek\.blogspot\.com
+https?:\/\/([^\/]*\.)?leadora\.blogspot\.com
+https?:\/\/([^\/]*\.)?leannrae85\.blogspot\.com
+https?:\/\/([^\/]*\.)?lebu-adidas\.blogspot\.com
+https?:\/\/([^\/]*\.)?ledego\.com
+https?:\/\/([^\/]*\.)?ledgiest\.xhostar\.com
+https?:\/\/([^\/]*\.)?ledkrx\.com
+https?:\/\/([^\/]*\.)?ledled\.nease\.net
+https?:\/\/([^\/]*\.)?leebuc\.forumzen\.com
+https?:\/\/([^\/]*\.)?leeticarus\.blogspot\.com
+https?:\/\/([^\/]*\.)?leetvilt\.jconserv\.net
+https?:\/\/([^\/]*\.)?left-leg-numbness\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?leg-exercise\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?leg-in-stocking\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?leg-in-tan-pantie-hose\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?leg-neurontin-restless-syndrome\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?leg-preteen-spread\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?leg-shaved-spread\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?leisure-suit-larry-magna-cum-laude-nudity-patch\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?leisure-suit-larry-magna-cum-laude-uncut-and-uncensored\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?leo-the-bastet\.site\.voila\.fr
+https?:\/\/([^\/]*\.)?leopard-lady\.blogspot\.com
+https?:\/\/([^\/]*\.)?leroyhotel\.com
+https?:\/\/([^\/]*\.)?lesbian-anal-porn\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?lesbian-fisting-dvd\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lesbian-fucking-eachother\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?lesbian-girl-scout\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?lesbian-group-masturbation\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lesbian-oral-sex\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?lesbian-personals-ads\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?lesbian-personals-yahoo\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?lesbian-porn-clip-blog6e5\.blogspot\.com
+https?:\/\/([^\/]*\.)?lesbian-sex-teen\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?lesbian-sharing-dildo\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lesbian-tit-bondage\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lesbian-web-chat-and-cam\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?lesbians\.coz\.in
+https?:\/\/([^\/]*\.)?letoacel-or\.xa\.pl
+https?:\/\/([^\/]*\.)?letobocpas\.frbb\.net
+https?:\/\/([^\/]*\.)?letocvi\.goodbb\.net
+https?:\/\/([^\/]*\.)?letomon\.graphforum\.com
+https?:\/\/([^\/]*\.)?letorelpas\.xa\.pl
+https?:\/\/([^\/]*\.)?lettera-di-presentazione\.zoom4x\.info
+https?:\/\/([^\/]*\.)?lettersof-love\.blogspot\.com
+https?:\/\/([^\/]*\.)?levitra\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?levitra\.rx4\.org
+https?:\/\/([^\/]*\.)?levitra\.seesaa\.net
+https?:\/\/([^\/]*\.)?levitra\.skocz\.net
+https?:\/\/([^\/]*\.)?levitraejv\.blogspot\.com
+https?:\/\/([^\/]*\.)?levitras\.eu\.tf
+https?:\/\/([^\/]*\.)?levitraxpb\.blogspot\.com
+https?:\/\/([^\/]*\.)?lex-interracial\.hoffer\.ipupdater\.com
+https?:\/\/([^\/]*\.)?lexapro\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?lexaprobuyonline\.buzznet\.com
+https?:\/\/([^\/]*\.)?lexpov-com\.cornut\.ipupdater\.com
+https?:\/\/([^\/]*\.)?leyeager\.ifrance\.com
+https?:\/\/([^\/]*\.)?lezbomovies-com-dp3256w4cb\.blogspot\.com
+https?:\/\/([^\/]*\.)?lezbomovies-com-duvuv\.blogspot\.com
+https?:\/\/([^\/]*\.)?lezbomovies-com-dw7q2s6l\.blogspot\.com
+https?:\/\/([^\/]*\.)?lf-pm\.com
+https?:\/\/([^\/]*\.)?lfamas\.com
+https?:\/\/([^\/]*\.)?lhbtx\.szm\.sk
+https?:\/\/([^\/]*\.)?lhnzkp9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?li-adult-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?li6or6olo\.dl\.pl
+https?:\/\/([^\/]*\.)?lianjieqi\.dzsc\.com
+https?:\/\/([^\/]*\.)?liaozhi\.org
+https?:\/\/([^\/]*\.)?libasac\.ephpbb\.com
+https?:\/\/([^\/]*\.)?libertyliga\.com
+https?:\/\/([^\/]*\.)?library\.cshl\.edu
+https?:\/\/([^\/]*\.)?libraryofthumbs-com-oyz1qboq\.blogspot\.com
+https?:\/\/([^\/]*\.)?licecile\.dl\.pl
+https?:\/\/([^\/]*\.)?licnarol\.dl\.pl
+https?:\/\/([^\/]*\.)?lidaror\.blogcu\.com
+https?:\/\/([^\/]*\.)?lidiarac\.forumzen\.com
+https?:\/\/([^\/]*\.)?lidomca\.graphforum\.com
+https?:\/\/([^\/]*\.)?lidomca\.highforum\.net
+https?:\/\/([^\/]*\.)?lidompas\.td\.pl
+https?:\/\/([^\/]*\.)?lidomta\.frbb\.net
+https?:\/\/([^\/]*\.)?lidupett\.forumzen\.com
+https?:\/\/([^\/]*\.)?lifeinsurance-x\.com
+https?:\/\/([^\/]*\.)?lifewave\.com
+https?:\/\/([^\/]*\.)?ligettr\.dl\.pl
+https?:\/\/([^\/]*\.)?light365\.com
+https?:\/\/([^\/]*\.)?lightspeed-state\.hostithere\.org
+https?:\/\/([^\/]*\.)?lihach\.com
+https?:\/\/([^\/]*\.)?lijoho-video-porn-gratis\.blogspot\.com
+https?:\/\/([^\/]*\.)?likozrut\.stabilt\.se
+https?:\/\/([^\/]*\.)?lilaleemcrightrealty\.com
+https?:\/\/([^\/]*\.)?lilaliko\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?lile\.asp2\.cz
+https?:\/\/([^\/]*\.)?lilett\.blogspot\.com
+https?:\/\/([^\/]*\.)?lilhaq\.blogspot\.com
+https?:\/\/([^\/]*\.)?lilo-n\.blogspot\.com
+https?:\/\/([^\/]*\.)?lilotu\.com
+https?:\/\/([^\/]*\.)?linarcbo\.forumzen\.com
+https?:\/\/([^\/]*\.)?lincweb\.cacs\.louisiana\.edu
+https?:\/\/([^\/]*\.)?lindsaylife\.com
+https?:\/\/([^\/]*\.)?lineance-facial-hair-removal-cream\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?linefreeinternet\.info
+https?:\/\/([^\/]*\.)?linemd\.com
+https?:\/\/([^\/]*\.)?lingerie-babes-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?lingerie-girl-pic\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lingerie-guide\.org
+https?:\/\/([^\/]*\.)?lingerie-sex-photo\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?lingerie-videos-com-wcu8\.blogspot\.com
+https?:\/\/([^\/]*\.)?lingshengdown\.com
+https?:\/\/([^\/]*\.)?lingua-francese\.host24h\.info
+https?:\/\/([^\/]*\.)?link-o-rama-com-t5xhd\.blogspot\.com
+https?:\/\/([^\/]*\.)?link-o-rama-com-toz5x8i2ez\.blogspot\.com
+https?:\/\/([^\/]*\.)?linserch\.com
+https?:\/\/([^\/]*\.)?lioral\.dl\.pl
+https?:\/\/([^\/]*\.)?lioumon\.lolforum\.net
+https?:\/\/([^\/]*\.)?lipitor\.skocz\.net
+https?:\/\/([^\/]*\.)?lipstick-love\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?lipstick-mac\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?lipus\.org
+https?:\/\/([^\/]*\.)?lirolbo\.goodforum\.net
+https?:\/\/([^\/]*\.)?lirolbo\.grafbb\.com
+https?:\/\/([^\/]*\.)?lisinopril\.no-ip\.info
+https?:\/\/([^\/]*\.)?list\.eng\.utah\.edu
+https?:\/\/([^\/]*\.)?listinna772\.galeon\.com
+https?:\/\/([^\/]*\.)?listpharm\.com
+https?:\/\/([^\/]*\.)?lists\.gatech\.edu
+https?:\/\/([^\/]*\.)?litaacel\.lolforum\.net
+https?:\/\/([^\/]*\.)?litadal\.myrealboard\.com
+https?:\/\/([^\/]*\.)?litayj0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?literotica-com-t3yx\.blogspot\.com
+https?:\/\/([^\/]*\.)?literotica-com-tkncy\.blogspot\.com
+https?:\/\/([^\/]*\.)?litrget\.jc\.pl
+https?:\/\/([^\/]*\.)?little-april-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?little-april-masturbating-movie\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?little-dicks-bay\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?little-teen-fuck\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?littledevildoubt\.com
+https?:\/\/([^\/]*\.)?littlesunshine\.50webs\.org
+https?:\/\/([^\/]*\.)?litumdet\.forumzen\.com
+https?:\/\/([^\/]*\.)?liupy\.110mb\.com
+https?:\/\/([^\/]*\.)?live-gay-video-chat\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?live-jasmine-cams\.com
+https?:\/\/([^\/]*\.)?livejasmin-com-abc\.blogspot\.com
+https?:\/\/([^\/]*\.)?livejasmin-com-abz\.blogspot\.com
+https?:\/\/([^\/]*\.)?livejasmin-com-aky\.blogspot\.com
+https?:\/\/([^\/]*\.)?livejasmin-com-qujef\.blogspot\.com
+https?:\/\/([^\/]*\.)?livescore\.esguay\.com
+https?:\/\/([^\/]*\.)?livescore\.ven\.bz
+https?:\/\/([^\/]*\.)?livesupportpal\.com
+https?:\/\/([^\/]*\.)?liviral\.myrealboard\.com
+https?:\/\/([^\/]*\.)?lixin642\.com
+https?:\/\/([^\/]*\.)?liymcc0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lizardofoz\.com
+https?:\/\/([^\/]*\.)?lizas\.asp2\.cz
+https?:\/\/([^\/]*\.)?lizscottrawson\.com
+https?:\/\/([^\/]*\.)?lkrzfkg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ll-four-sterto\.blogspot\.com
+https?:\/\/([^\/]*\.)?llillith\.blogspot\.com
+https?:\/\/([^\/]*\.)?lll1l\.info
+https?:\/\/([^\/]*\.)?llline\.info
+https?:\/\/([^\/]*\.)?llpcoil\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?llsky\.net
+https?:\/\/([^\/]*\.)?lm4nmu\.com
+https?:\/\/([^\/]*\.)?lmyzm\.szm\.sk
+https?:\/\/([^\/]*\.)?lnalpas\.myrealboard\.com
+https?:\/\/([^\/]*\.)?lnki9\.szm\.sk
+https?:\/\/([^\/]*\.)?lnqfa\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?lnqixlz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?loan-unsecuredcxp\.blogspot\.com
+https?:\/\/([^\/]*\.)?loans-insurance\.net
+https?:\/\/([^\/]*\.)?lodge\.webmelia\.com
+https?:\/\/([^\/]*\.)?lodita-com-dya6s22zu\.blogspot\.com
+https?:\/\/([^\/]*\.)?lodita-com-dz\.blogspot\.com
+https?:\/\/([^\/]*\.)?loestrin\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?logast\.com
+https?:\/\/([^\/]*\.)?logowap\.com
+https?:\/\/([^\/]*\.)?lojlo\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lojunbas\.forumzen\.com
+https?:\/\/([^\/]*\.)?lola-providence\.blogspot\.com
+https?:\/\/([^\/]*\.)?lolabear1121\.blogspot\.com
+https?:\/\/([^\/]*\.)?lolaparris\.freetzi\.com
+https?:\/\/([^\/]*\.)?loliti-com-c5m8mt\.blogspot\.com
+https?:\/\/([^\/]*\.)?lolovi\.naturalforum\.net
+https?:\/\/([^\/]*\.)?lomsts\.com
+https?:\/\/([^\/]*\.)?londra-ristorante\.freehostss\.info
+https?:\/\/([^\/]*\.)?lonely-wolf-com-rjqlm1d6\.blogspot\.com
+https?:\/\/([^\/]*\.)?long-porn-clip-info67s\.blogspot\.com
+https?:\/\/([^\/]*\.)?long-porn-clip-infosm4\.blogspot\.com
+https?:\/\/([^\/]*\.)?longestlist-com-b6\.blogspot\.com
+https?:\/\/([^\/]*\.)?longestlist-com-b683g4ik\.blogspot\.com
+https?:\/\/([^\/]*\.)?longestlist-hb\.blogspot\.com
+https?:\/\/([^\/]*\.)?longestlist-hohen\.blogspot\.com
+https?:\/\/([^\/]*\.)?longonline\.net
+https?:\/\/([^\/]*\.)?longvideos-net-gq78qyba\.blogspot\.com
+https?:\/\/([^\/]*\.)?longxiong\.ebloggy\.com
+https?:\/\/([^\/]*\.)?lony\.info
+https?:\/\/([^\/]*\.)?look-at-his-dick\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lookcity\.com
+https?:\/\/([^\/]*\.)?lopata\.snusk\.nu
+https?:\/\/([^\/]*\.)?lopressorhct\.sblog\.cz
+https?:\/\/([^\/]*\.)?lorazepams\.ru\.tf
+https?:\/\/([^\/]*\.)?lortab-911\.coz\.in
+https?:\/\/([^\/]*\.)?lortab\.xwiki\.com
+https?:\/\/([^\/]*\.)?losangelestickets\.org
+https?:\/\/([^\/]*\.)?lotausch\.ifrance\.com
+https?:\/\/([^\/]*\.)?loudmp3\.net
+https?:\/\/([^\/]*\.)?louisianamortgage-x\.com
+https?:\/\/([^\/]*\.)?lovefuckk-com-eg7gx\.blogspot\.com
+https?:\/\/([^\/]*\.)?lovefuckk-com-et2x2g1sk\.blogspot\.com
+https?:\/\/([^\/]*\.)?lovefuckk-com-setos\.blogspot\.com
+https?:\/\/([^\/]*\.)?lovegirlsonline\.info
+https?:\/\/([^\/]*\.)?lovejuliet3\.blogspot\.com
+https?:\/\/([^\/]*\.)?lovetgp-com-d74h1ed3o\.blogspot\.com
+https?:\/\/([^\/]*\.)?lowbudgetsuccess\.info
+https?:\/\/([^\/]*\.)?lqsbjau\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lrff5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lriwaq-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?lrlep\.szm\.sk
+https?:\/\/([^\/]*\.)?ltfl5\.szm\.sk
+https?:\/\/([^\/]*\.)?ltntp\.szm\.sk
+https?:\/\/([^\/]*\.)?lu-porn-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?lucking\.com\.cn
+https?:\/\/([^\/]*\.)?lucqt\.szm\.sk
+https?:\/\/([^\/]*\.)?luridess\.125mb\.com
+https?:\/\/([^\/]*\.)?lusi-ada\.blogspot\.com
+https?:\/\/([^\/]*\.)?lustjob\.info
+https?:\/\/([^\/]*\.)?lustwork\.info
+https?:\/\/([^\/]*\.)?lusvqm-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?lutaltli\.naturalforum\.net
+https?:\/\/([^\/]*\.)?lutrilar\.naturalforum\.net
+https?:\/\/([^\/]*\.)?lutzalvi\.naturalforum\.net
+https?:\/\/([^\/]*\.)?lvanrts\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lvsi\.ebloggy\.com
+https?:\/\/([^\/]*\.)?lwdf2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lwkmewp\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lycosss\.com
+https?:\/\/([^\/]*\.)?lyganbaili\.com
+https?:\/\/([^\/]*\.)?lyhbs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?lying-facial-expression\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?lyndawyllie\.com
+https?:\/\/([^\/]*\.)?lzouv\.szm\.sk
+https?:\/\/([^\/]*\.)?m-i-a-s-m-a\.blogspot\.com
+https?:\/\/([^\/]*\.)?m-sr\.net
+https?:\/\/([^\/]*\.)?m-teens-000\.blogspot\.com
+https?:\/\/([^\/]*\.)?m\.domaindlx\.com
+https?:\/\/([^\/]*\.)?m2mvc\.com
+https?:\/\/([^\/]*\.)?machi-neko\.blogspot\.com
+https?:\/\/([^\/]*\.)?mackenzie-kayne\.hostingtree\.org
+https?:\/\/([^\/]*\.)?macromob\.com
+https?:\/\/([^\/]*\.)?madesukadana\.com
+https?:\/\/([^\/]*\.)?madthumbs-com-hcq1m1\.blogspot\.com
+https?:\/\/([^\/]*\.)?mafy69\.blogspot\.com
+https?:\/\/([^\/]*\.)?magical-casino\.com
+https?:\/\/([^\/]*\.)?magneticwoman88\.blogspot\.com
+https?:\/\/([^\/]*\.)?maidenpeace\.com
+https?:\/\/([^\/]*\.)?main\.g2\.bx\.psu\.edu
+https?:\/\/([^\/]*\.)?mainemortgage-x\.com
+https?:\/\/([^\/]*\.)?maitybaba\.blogspot\.com
+https?:\/\/([^\/]*\.)?makaky\.dtdns\.net
+https?:\/\/([^\/]*\.)?makblxn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?make-my-dick-hard\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?makemoneyfast\.us
+https?:\/\/([^\/]*\.)?makeup\.ifreehosts\.net
+https?:\/\/([^\/]*\.)?male-hairy-leg\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?malinka\.b0b\.org
+https?:\/\/([^\/]*\.)?mama-rachelbeth\.blogspot\.com
+https?:\/\/([^\/]*\.)?mamaswarm\.sultryserver\.com
+https?:\/\/([^\/]*\.)?man-caught-wearing-womens-lingerie\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?man-ring\.boom\.ru
+https?:\/\/([^\/]*\.)?man-rings\.boom\.ru
+https?:\/\/([^\/]*\.)?man-skin\.nightmail\.ru
+https?:\/\/([^\/]*\.)?man-skin\.nm\.ru
+https?:\/\/([^\/]*\.)?man-woman-fucking-video-clip\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?man_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?managementproperty\.us
+https?:\/\/([^\/]*\.)?manka-kapak\.blogspot\.com
+https?:\/\/([^\/]*\.)?manoke\.cn
+https?:\/\/([^\/]*\.)?map4um\.com
+https?:\/\/([^\/]*\.)?mapas6\.com
+https?:\/\/([^\/]*\.)?maradona\.stabilt\.se
+https?:\/\/([^\/]*\.)?marhula\.weedns\.com
+https?:\/\/([^\/]*\.)?marinol\.xwiki\.com
+https?:\/\/([^\/]*\.)?mario-lopez-gayfgg\.blogspot\.com
+https?:\/\/([^\/]*\.)?marketing1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?marklar\.republika\.pl
+https?:\/\/([^\/]*\.)?marti-adp\.iespana\.es
+https?:\/\/([^\/]*\.)?marucollet\.jp
+https?:\/\/([^\/]*\.)?maryannec\.com
+https?:\/\/([^\/]*\.)?marylandmortgage-x\.com
+https?:\/\/([^\/]*\.)?masfac\.com
+https?:\/\/([^\/]*\.)?masiki\.110mb\.com
+https?:\/\/([^\/]*\.)?masiti\.com
+https?:\/\/([^\/]*\.)?massachusetts-hs\.newmail\.ru
+https?:\/\/([^\/]*\.)?massachusettsmortgage-x\.com
+https?:\/\/([^\/]*\.)?mast3t\.com
+https?:\/\/([^\/]*\.)?master-z-great\.blogspot\.com
+https?:\/\/([^\/]*\.)?master1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?master2005degree\.chat\.ru
+https?:\/\/([^\/]*\.)?masterboat\.ru
+https?:\/\/([^\/]*\.)?mastun\.com
+https?:\/\/([^\/]*\.)?masturbating-shemale-video\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?masturbation-techniques1\.notlong\.com
+https?:\/\/([^\/]*\.)?masvit\.com
+https?:\/\/([^\/]*\.)?matching-mom-and-baby-outfit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?matrac\.loopback\.nu
+https?:\/\/([^\/]*\.)?mattsvids-com-aqjt\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-bitches-com-ccvi3l\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-black-female\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?mature-blonde-fuck\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?mature-blonde-movie\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?mature-blonde-toying\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?mature-british-granny\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?mature-clip\.babubi\.net
+https?:\/\/([^\/]*\.)?mature-for-you-com-mt66\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-gang-bang\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature-gay-black\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature-gay-man-gallery\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?mature-man-photo\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?mature-man-picture\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?mature-milf-milfmuffin-com\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature-nl-kss7\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-pantie-upskirt\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature-pic-post\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?mature-porn-clip-newsj8c\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-porn-clip-zone5s0\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-porn-movie-sihu\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-porn-video-ku\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-post-com-iecsmld78\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-redhead\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?mature-secret-com-r6t85u5\.blogspot\.com
+https?:\/\/([^\/]*\.)?mature-sex-orgy\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?mature-sex-thumb\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature-throat-fuck\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?mature-wife-in-pantie-hose\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?mature-woman-vs-young\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?mature\.coz\.in
+https?:\/\/([^\/]*\.)?matureandyoung-com-bgf1\.blogspot\.com
+https?:\/\/([^\/]*\.)?maturedaily-net-oipq5\.blogspot\.com
+https?:\/\/([^\/]*\.)?maturedaily-net-oywdf7pj0\.blogspot\.com
+https?:\/\/([^\/]*\.)?maturehit-com-w8\.blogspot\.com
+https?:\/\/([^\/]*\.)?maturehit-com-zifid\.blogspot\.com
+https?:\/\/([^\/]*\.)?maximumsearch\.net
+https?:\/\/([^\/]*\.)?maybachexelero\.org
+https?:\/\/([^\/]*\.)?mayphyoe\.blogspot\.com
+https?:\/\/([^\/]*\.)?maypopmusic\.cn
+https?:\/\/([^\/]*\.)?mazda-6\.keckins\.be
+https?:\/\/([^\/]*\.)?mazdamaindealer\.cn
+https?:\/\/([^\/]*\.)?mazecreatorhosting\.net
+https?:\/\/([^\/]*\.)?mba1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?mbiu1\.szm\.sk
+https?:\/\/([^\/]*\.)?mbkxs\.szm\.sk
+https?:\/\/([^\/]*\.)?mbsz0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mcfontai\.dl\.pl
+https?:\/\/([^\/]*\.)?mciicvn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mckeithl\.ifrance\.com
+https?:\/\/([^\/]*\.)?mcynwst\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mdfo2\.szm\.sk
+https?:\/\/([^\/]*\.)?mdna8\.szm\.sk
+https?:\/\/([^\/]*\.)?mdoq5\.szm\.sk
+https?:\/\/([^\/]*\.)?meadelante\.blogspot\.com
+https?:\/\/([^\/]*\.)?med-ph\.com
+https?:\/\/([^\/]*\.)?medbig\.com
+https?:\/\/([^\/]*\.)?medgarsting\.info
+https?:\/\/([^\/]*\.)?medhls\.com
+https?:\/\/([^\/]*\.)?medic\.kilu\.de
+https?:\/\/([^\/]*\.)?medication-cheap\.com
+https?:\/\/([^\/]*\.)?meds-today\.com
+https?:\/\/([^\/]*\.)?megadyneinc\.com
+https?:\/\/([^\/]*\.)?megan-qt-cjg\.blogspot\.com
+https?:\/\/([^\/]*\.)?megaupkoad\.com
+https?:\/\/([^\/]*\.)?meindies\.com
+https?:\/\/([^\/]*\.)?melatrol\.podstavec\.yi\.org
+https?:\/\/([^\/]*\.)?melissa-doll\.cornut\.ipupdater\.com
+https?:\/\/([^\/]*\.)?melsner\.blogspot\.com
+https?:\/\/([^\/]*\.)?mens\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?menshealth\.110mb\.com
+https?:\/\/([^\/]*\.)?meoqwzr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?meridasexo\.com
+https?:\/\/([^\/]*\.)?meridia\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?meridia\.edu\.tf
+https?:\/\/([^\/]*\.)?meridia\.hav\.pl
+https?:\/\/([^\/]*\.)?meridia\.skocz\.net
+https?:\/\/([^\/]*\.)?meridiager\.queroumforum\.com
+https?:\/\/([^\/]*\.)?meryland\.dtdns\.net
+https?:\/\/([^\/]*\.)?mesothelioma-lawyer-help\.org
+https?:\/\/([^\/]*\.)?meweb\.ecn\.purdue\.edu
+https?:\/\/([^\/]*\.)?mewqsd\.org
+https?:\/\/([^\/]*\.)?mgnzupi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mi-kkiechang\.ifrance\.com
+https?:\/\/([^\/]*\.)?mia-movies-com-g2g1\.blogspot\.com
+https?:\/\/([^\/]*\.)?mia-movies-e86q7ic4y7\.blogspot\.com
+https?:\/\/([^\/]*\.)?miami-cose-fare\.hostzz\.info
+https?:\/\/([^\/]*\.)?michelepug\.org
+https?:\/\/([^\/]*\.)?michiganmortgage-x\.com
+https?:\/\/([^\/]*\.)?midaslubbock\.com
+https?:\/\/([^\/]*\.)?midnis\.com
+https?:\/\/([^\/]*\.)?migree\.com
+https?:\/\/([^\/]*\.)?mihaso\.com
+https?:\/\/([^\/]*\.)?mikeinbrazil-com-k1s8higm1o\.blogspot\.com
+https?:\/\/([^\/]*\.)?mikeinbrazil-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?mikesapartment-com-iwb02e1v\.blogspot\.com
+https?:\/\/([^\/]*\.)?mikesapartment-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?mikewsd\.org
+https?:\/\/([^\/]*\.)?miks1\.szm\.sk
+https?:\/\/([^\/]*\.)?miku-thu-vilu\.110mb\.com
+https?:\/\/([^\/]*\.)?mildew\.789mb\.com
+https?:\/\/([^\/]*\.)?milf-blow-job-gallery\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?milf-busty-fucking\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?milf-hunter-kate\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?milf-mature-big-tit\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?milf-tgp-wife\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?milfhunter-com-h2a7q51\.blogspot\.com
+https?:\/\/([^\/]*\.)?milflessons-com-bh6\.blogspot\.com
+https?:\/\/([^\/]*\.)?milfnextdoor-bk23v2p4\.blogspot\.com
+https?:\/\/([^\/]*\.)?milfnextdoor-w3ii\.blogspot\.com
+https?:\/\/([^\/]*\.)?milkmanbook-com-o7\.blogspot\.com
+https?:\/\/([^\/]*\.)?milkmanbook-com-rrup5f\.blogspot\.com
+https?:\/\/([^\/]*\.)?milkmanbook-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?milkmanbook-ods016\.blogspot\.com
+https?:\/\/([^\/]*\.)?milton-twins-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?mimija\.com
+https?:\/\/([^\/]*\.)?miniurl\.pl
+https?:\/\/([^\/]*\.)?minnesotamortgage-x\.com
+https?:\/\/([^\/]*\.)?minzec\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?missensign\.blogspot\.com
+https?:\/\/([^\/]*\.)?mississippimortgage-x\.com
+https?:\/\/([^\/]*\.)?missourimortgage-x\.com
+https?:\/\/([^\/]*\.)?mitsubishicarhire\.cn
+https?:\/\/([^\/]*\.)?mj-net\.jp
+https?:\/\/([^\/]*\.)?mj\.left-page\.com
+https?:\/\/([^\/]*\.)?mjlvan4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mjqnxn1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mjspb\.szm\.sk
+https?:\/\/([^\/]*\.)?mkia3\.szm\.sk
+https?:\/\/([^\/]*\.)?mkiss47346\.blogspot\.com
+https?:\/\/([^\/]*\.)?mksahf-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?mkzvni8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mlgta\.szm\.sk
+https?:\/\/([^\/]*\.)?mlm-business-leader\.com
+https?:\/\/([^\/]*\.)?mlvej\.szm\.sk
+https?:\/\/([^\/]*\.)?mmm100-com-aj\.blogspot\.com
+https?:\/\/([^\/]*\.)?mmm100-com-cisec\.blogspot\.com
+https?:\/\/([^\/]*\.)?mmm100-com-tql1xojt\.blogspot\.com
+https?:\/\/([^\/]*\.)?mnsp\.cn
+https?:\/\/([^\/]*\.)?mobfiller\.com
+https?:\/\/([^\/]*\.)?mobic\.sytes\.net
+https?:\/\/([^\/]*\.)?mobile-phone-dealoft\.blogspot\.com
+https?:\/\/([^\/]*\.)?mobile-phone-shopmgl\.blogspot\.com
+https?:\/\/([^\/]*\.)?mobile-phonegsn\.blogspot\.com
+https?:\/\/([^\/]*\.)?mobilefamilydental\.com
+https?:\/\/([^\/]*\.)?mobilewallpaperkre\.blogspot\.com
+https?:\/\/([^\/]*\.)?mobility-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?mobility2scooter\.chat\.ru
+https?:\/\/([^\/]*\.)?mobprofile\.com
+https?:\/\/([^\/]*\.)?modelsgroup-com-wrx\.blogspot\.com
+https?:\/\/([^\/]*\.)?modelsgroup-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?modlang\.boisestate\.edu
+https?:\/\/([^\/]*\.)?moju\.net\.cn
+https?:\/\/([^\/]*\.)?mol-ch\.com
+https?:\/\/([^\/]*\.)?mom-and-son-song\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?mom-music-video\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?mom-n-son\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?mom-vs-young\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?mommia-com-h32\.blogspot\.com
+https?:\/\/([^\/]*\.)?mommia-com-hvr6wy\.blogspot\.com
+https?:\/\/([^\/]*\.)?mommia-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?moms-teaching-teens-ceb\.blogspot\.com
+https?:\/\/([^\/]*\.)?monbocchi\.zikforum\.com
+https?:\/\/([^\/]*\.)?moncnamon\.ephpbb\.com
+https?:\/\/([^\/]*\.)?moncnamon\.forumculture\.net
+https?:\/\/([^\/]*\.)?monctr\.cultureforum\.net
+https?:\/\/([^\/]*\.)?mondelacel\.dl\.pl
+https?:\/\/([^\/]*\.)?monelal\.discutfree\.com
+https?:\/\/([^\/]*\.)?moneta-algeria\.hostzz\.info
+https?:\/\/([^\/]*\.)?monjco\.blogcu\.com
+https?:\/\/([^\/]*\.)?monletochi\.bbgraf\.com
+https?:\/\/([^\/]*\.)?monokal\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?monorget\.lolbb\.com
+https?:\/\/([^\/]*\.)?monpasrel\.dl\.pl
+https?:\/\/([^\/]*\.)?monster-cock-movie-big\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?monstersofcock-com-rvdurm2\.blogspot\.com
+https?:\/\/([^\/]*\.)?montana-flugsport\.com
+https?:\/\/([^\/]*\.)?montanamortgage-x\.com
+https?:\/\/([^\/]*\.)?montessori-spielzeug\.com
+https?:\/\/([^\/]*\.)?moody-immortal2\.blogspot\.com
+https?:\/\/([^\/]*\.)?morekes\.com
+https?:\/\/([^\/]*\.)?moremoms-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?moremoms-rj8f2r\.blogspot\.com
+https?:\/\/([^\/]*\.)?mortgage-911\.net
+https?:\/\/([^\/]*\.)?mortgagebrokers-x\.com
+https?:\/\/([^\/]*\.)?mortgagecompanies-x\.com
+https?:\/\/([^\/]*\.)?mortgagelenders-x\.com
+https?:\/\/([^\/]*\.)?mortgageloan-x\.com
+https?:\/\/([^\/]*\.)?mortgageloans-x\.com
+https?:\/\/([^\/]*\.)?mortgagerates-x\.com
+https?:\/\/([^\/]*\.)?mortgagerefinance-x\.com
+https?:\/\/([^\/]*\.)?mortgagerefinancing-x\.com
+https?:\/\/([^\/]*\.)?mortgages-411\.com
+https?:\/\/([^\/]*\.)?mortgagesnrefinance\.com
+https?:\/\/([^\/]*\.)?mosquito-ringtoneaee\.blogspot\.com
+https?:\/\/([^\/]*\.)?mosquitoringtonewmf\.blogspot\.com
+https?:\/\/([^\/]*\.)?mothershope\.com
+https?:\/\/([^\/]*\.)?mothrinventor\.blogspot\.com
+https?:\/\/([^\/]*\.)?motnolado\.org
+https?:\/\/([^\/]*\.)?motor-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?motorized-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?motorizedscooter\.chat\.ru
+https?:\/\/([^\/]*\.)?motorolaringtonesfreeucq\.blogspot\.com
+https?:\/\/([^\/]*\.)?motorolaringtoneskvp\.blogspot\.com
+https?:\/\/([^\/]*\.)?motorolaringtonesym\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviegalleries-com-gl8\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviepost-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviepost-h4s2iin\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviesarena-com-r42rng0\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviesarena-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviesgold-com-ig86ukjw\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviesgold-com-k0\.blogspot\.com
+https?:\/\/([^\/]*\.)?movieshark-d0vdon27\.blogspot\.com
+https?:\/\/([^\/]*\.)?moviesparade-com-a3hxnn6\.blogspot\.com
+https?:\/\/([^\/]*\.)?movietitan-com-i6shde\.blogspot\.com
+https?:\/\/([^\/]*\.)?movietitan-o6i14o0\.blogspot\.com
+https?:\/\/([^\/]*\.)?mozzarell\.republika\.pl
+https?:\/\/([^\/]*\.)?mp3ringtonerxw\.blogspot\.com
+https?:\/\/([^\/]*\.)?mp3sunrise\.com
+https?:\/\/([^\/]*\.)?mpdtbq8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mpeghunter-com-cyc0bec7k\.blogspot\.com
+https?:\/\/([^\/]*\.)?mqirai4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mrako4\.com
+https?:\/\/([^\/]*\.)?mrchewsasianbeaver-bwhmc0sk\.blogspot\.com
+https?:\/\/([^\/]*\.)?mrchewsasianbeaver-com-omazvpr\.blogspot\.com
+https?:\/\/([^\/]*\.)?mrntf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mrs-vette-hot-mom\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?mrwolfy49\.blogspot\.com
+https?:\/\/([^\/]*\.)?ms-dos-boot-disk\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?mster6\.com
+https?:\/\/([^\/]*\.)?mtaa5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mthelen\.250free\.com
+https?:\/\/([^\/]*\.)?muecst9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mughalbank\.com
+https?:\/\/([^\/]*\.)?mumms\.info
+https?:\/\/([^\/]*\.)?murdersoul\.blogspot\.com
+https?:\/\/([^\/]*\.)?murku-gunush\.110mb\.com
+https?:\/\/([^\/]*\.)?mus1ca\.info
+https?:\/\/([^\/]*\.)?muscle-pain-leg-cause\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?muscle-relaxers\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?music\.spacepur\.de
+https?:\/\/([^\/]*\.)?musicguild\.bc\.edu
+https?:\/\/([^\/]*\.)?mutantalias\.blogspot\.com
+https?:\/\/([^\/]*\.)?muwn9\.szm\.sk
+https?:\/\/([^\/]*\.)?muzyr\.szm\.sk
+https?:\/\/([^\/]*\.)?mvoht\.szm\.sk
+https?:\/\/([^\/]*\.)?mvsyonh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mwqbg\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?mwwkps6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mxmva\.szm\.sk
+https?:\/\/([^\/]*\.)?mxqwnn2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?my-cashadvance\.com
+https?:\/\/([^\/]*\.)?my-first-sex-teacherlbp\.blogspot\.com
+https?:\/\/([^\/]*\.)?my-friends-hot-mom-free-pic\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?my-friends-hot-mom-lesbian\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?my-friends-hot-mom-mrs-lee\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?my-host-space\.com
+https?:\/\/([^\/]*\.)?my-land\.bravehost\.com
+https?:\/\/([^\/]*\.)?my-mortgagerates\.com
+https?:\/\/([^\/]*\.)?my-summit\.com
+https?:\/\/([^\/]*\.)?my-teensex-wikes\.blogspot\.com
+https?:\/\/([^\/]*\.)?myfgj\.info
+https?:\/\/([^\/]*\.)?myhost\.gb\.com
+https?:\/\/([^\/]*\.)?mymitsubishiparts\.cn
+https?:\/\/([^\/]*\.)?mymr\.net
+https?:\/\/([^\/]*\.)?mynet-poker\.com
+https?:\/\/([^\/]*\.)?myprintworks\.com
+https?:\/\/([^\/]*\.)?myrotunda\.com
+https?:\/\/([^\/]*\.)?mysecretmovies-com-tul73\.blogspot\.com
+https?:\/\/([^\/]*\.)?myseo\.com\.cn
+https?:\/\/([^\/]*\.)?myshcompany\.com
+https?:\/\/([^\/]*\.)?mysmetrix\.asp2\.cz
+https?:\/\/([^\/]*\.)?myspace-myspace-my\.blogspot\.com
+https?:\/\/([^\/]*\.)?myteepo-3\.blogspot\.com
+https?:\/\/([^\/]*\.)?myts\.vip\.sina\.com
+https?:\/\/([^\/]*\.)?mywaybackwhen\.blogspot\.com
+https?:\/\/([^\/]*\.)?mzaxl\.szm\.sk
+https?:\/\/([^\/]*\.)?mzayxt2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mzlurz8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?mzwbifn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?n-free-porn-video-sample\.blogspot\.com
+https?:\/\/([^\/]*\.)?n-free-video-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?na-hummer\.jot\.com
+https?:\/\/([^\/]*\.)?naacpncnetwork\.org
+https?:\/\/([^\/]*\.)?naarttrl\.forumzen\.com
+https?:\/\/([^\/]*\.)?naffpqh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?naomiserge\.info
+https?:\/\/([^\/]*\.)?napalerd\.forumzen\.com
+https?:\/\/([^\/]*\.)?napas5\.com
+https?:\/\/([^\/]*\.)?naprosyn500mg\.sblog\.cz
+https?:\/\/([^\/]*\.)?naproxen\.zapto\.org
+https?:\/\/([^\/]*\.)?naqowp1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nariclet\.forumzen\.com
+https?:\/\/([^\/]*\.)?nas7fk\.com
+https?:\/\/([^\/]*\.)?nasacort\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?nasonex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?nastyalien-com-dk0wnd58i\.blogspot\.com
+https?:\/\/([^\/]*\.)?nastyalien-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?nastyrat-b7\.blogspot\.com
+https?:\/\/([^\/]*\.)?nastyrat-com-b8mu31h87m\.blogspot\.com
+https?:\/\/([^\/]*\.)?nastyrat-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?natskam\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?natural-skin\.nm\.ru
+https?:\/\/([^\/]*\.)?natural-tit-cum\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?natural_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?naughty-com-wdk\.blogspot\.com
+https?:\/\/([^\/]*\.)?naughty-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?navse\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nbay2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nbikkpb\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nbmhvbv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nbxc3\.szm\.sk
+https?:\/\/([^\/]*\.)?nchqqi4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ncpx5\.szm\.sk
+https?:\/\/([^\/]*\.)?ncwash\.com
+https?:\/\/([^\/]*\.)?nd-tli\.com
+https?:\/\/([^\/]*\.)?ndarj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ndnwrby\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nebraskamortgage-x\.com
+https?:\/\/([^\/]*\.)?nedneutr\.goodbb\.net
+https?:\/\/([^\/]*\.)?nedpbi3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?need-site\.com
+https?:\/\/([^\/]*\.)?nefariouswraith\.blogspot\.com
+https?:\/\/([^\/]*\.)?negozio-strumento-musicale\.19mb\.info
+https?:\/\/([^\/]*\.)?nejqssk\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?neko-adg\.blogspot\.com
+https?:\/\/([^\/]*\.)?nekoo\.cn
+https?:\/\/([^\/]*\.)?nekostar3\.blogspot\.com
+https?:\/\/([^\/]*\.)?nelaidla\.ifrance\.com
+https?:\/\/([^\/]*\.)?nelcala\.fr-bb\.com
+https?:\/\/([^\/]*\.)?nelior\.goodbb\.net
+https?:\/\/([^\/]*\.)?neri-albany\.blogspot\.com
+https?:\/\/([^\/]*\.)?neroj\.szm\.sk
+https?:\/\/([^\/]*\.)?nerve\.zyns\.com
+https?:\/\/([^\/]*\.)?net0551\.com
+https?:\/\/([^\/]*\.)?netbank\.cn
+https?:\/\/([^\/]*\.)?nethams\.pp\.ru
+https?:\/\/([^\/]*\.)?netinternetbanking\.info
+https?:\/\/([^\/]*\.)?netteak\.pp\.ru
+https?:\/\/([^\/]*\.)?nettyre\.pp\.ru
+https?:\/\/([^\/]*\.)?neux9\.szm\.sk
+https?:\/\/([^\/]*\.)?nevadamortgage-x\.com
+https?:\/\/([^\/]*\.)?nevados-hiking-boot\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?nevulo-teen-sex-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?new-ringtonesou\.blogspot\.com
+https?:\/\/([^\/]*\.)?new-watches\.fasthost\.tv
+https?:\/\/([^\/]*\.)?newae\.info
+https?:\/\/([^\/]*\.)?newaf\.info
+https?:\/\/([^\/]*\.)?newah\.info
+https?:\/\/([^\/]*\.)?newai\.info
+https?:\/\/([^\/]*\.)?newaq\.info
+https?:\/\/([^\/]*\.)?newar\.info
+https?:\/\/([^\/]*\.)?newau\.info
+https?:\/\/([^\/]*\.)?newbabyface\.net
+https?:\/\/([^\/]*\.)?newboyu\.com
+https?:\/\/([^\/]*\.)?newdietpills\.bravehost\.com
+https?:\/\/([^\/]*\.)?newgals-com-ean\.blogspot\.com
+https?:\/\/([^\/]*\.)?newhampshiremortgage-x\.com
+https?:\/\/([^\/]*\.)?newjerseymortgage-x\.com
+https?:\/\/([^\/]*\.)?newmexicomortgage-x\.com
+https?:\/\/([^\/]*\.)?newnewsonline\.info
+https?:\/\/([^\/]*\.)?newob\.info
+https?:\/\/([^\/]*\.)?newoc\.info
+https?:\/\/([^\/]*\.)?newom\.info
+https?:\/\/([^\/]*\.)?newov\.info
+https?:\/\/([^\/]*\.)?newox\.info
+https?:\/\/([^\/]*\.)?newoz\.info
+https?:\/\/([^\/]*\.)?news\.101freehost\.com
+https?:\/\/([^\/]*\.)?news\.engin\.brown\.edu
+https?:\/\/([^\/]*\.)?newwesthonda\.info
+https?:\/\/([^\/]*\.)?newworldmen\.com
+https?:\/\/([^\/]*\.)?newyorkmortgage-x\.com
+https?:\/\/([^\/]*\.)?nexium\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?nexiumbuy\.on\.to
+https?:\/\/([^\/]*\.)?nexiumbuygeneric\.snap\.to
+https?:\/\/([^\/]*\.)?nexiumcheap\.notrix\.ch
+https?:\/\/([^\/]*\.)?nexiumcheapbuy\.notrix\.de
+https?:\/\/([^\/]*\.)?nexiumgeneric\.dive\.to
+https?:\/\/([^\/]*\.)?nexxx-com-r138wgeob5\.blogspot\.com
+https?:\/\/([^\/]*\.)?nexxx-kc113s775\.blogspot\.com
+https?:\/\/([^\/]*\.)?nfbwx\.szm\.sk
+https?:\/\/([^\/]*\.)?nffnj\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nfl-cheerleader-outfit\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?nfme8\.szm\.sk
+https?:\/\/([^\/]*\.)?nfpg4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nfyxtime\.com
+https?:\/\/([^\/]*\.)?nggleb0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nginju3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nhqkyun\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nibko\.info
+https?:\/\/([^\/]*\.)?nice-asian-ass-and-sex\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?nice-boob-picture\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?niche-porn-sites\.org
+https?:\/\/([^\/]*\.)?nickdarula\.com
+https?:\/\/([^\/]*\.)?nicwan\.com
+https?:\/\/([^\/]*\.)?nidarim\.com
+https?:\/\/([^\/]*\.)?niebn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nifedipine-solubility\.tlg\.pl
+https?:\/\/([^\/]*\.)?nifjv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?niharpe\.dl\.pl
+https?:\/\/([^\/]*\.)?nihosi\.com
+https?:\/\/([^\/]*\.)?nika-ru\.blogspot\.com
+https?:\/\/([^\/]*\.)?nikkie-cole\.blogspot\.com
+https?:\/\/([^\/]*\.)?nimast\.com
+https?:\/\/([^\/]*\.)?nimit-zood\.ibelgique\.com
+https?:\/\/([^\/]*\.)?ninenailteen\.blogspot\.com
+https?:\/\/([^\/]*\.)?ninjasidestep\.com
+https?:\/\/([^\/]*\.)?ninostarto\.blogspot\.com
+https?:\/\/([^\/]*\.)?ninuni\.com
+https?:\/\/([^\/]*\.)?nipples-puffy-teenage\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?nipverify\.icspace\.net
+https?:\/\/([^\/]*\.)?nissan-240sx\.newmail\.ru
+https?:\/\/([^\/]*\.)?nissan-dealer\.newmail\.ru
+https?:\/\/([^\/]*\.)?nissan-frontier\.nm\.ru
+https?:\/\/([^\/]*\.)?nissan-motor\.nm\.ru
+https?:\/\/([^\/]*\.)?nissan-murano\.newmail\.ru
+https?:\/\/([^\/]*\.)?nissan-part\.nightmail\.ru
+https?:\/\/([^\/]*\.)?nissan-pathfinder\.hotmail\.ru
+https?:\/\/([^\/]*\.)?nissan-sentra\.hotmail\.ru
+https?:\/\/([^\/]*\.)?nissan-titan\.hotmail\.ru
+https?:\/\/([^\/]*\.)?nissan-truck\.hotmail\.ru
+https?:\/\/([^\/]*\.)?nissan-xterra\.hotmail\.ru
+https?:\/\/([^\/]*\.)?nissan_240sx\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_dealer\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_frontier\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_motor\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_murano1\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_part\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_pathfind\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_sentra\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_titan\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_truck\.chat\.ru
+https?:\/\/([^\/]*\.)?nissan_xterra\.chat\.ru
+https?:\/\/([^\/]*\.)?nixve\.blogspot\.com
+https?:\/\/([^\/]*\.)?njfc\.nease\.net
+https?:\/\/([^\/]*\.)?njhk\.jiuwu\.com
+https?:\/\/([^\/]*\.)?njhk\.yushantang\.com
+https?:\/\/([^\/]*\.)?njuta78\.125mb\.com
+https?:\/\/([^\/]*\.)?njzthvq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nkkqq\.szm\.sk
+https?:\/\/([^\/]*\.)?nkxow\.szm\.sk
+https?:\/\/([^\/]*\.)?nkzzm\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nlexc\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nmagiietending\.blogspot\.com
+https?:\/\/([^\/]*\.)?nmwj5\.szm\.sk
+https?:\/\/([^\/]*\.)?nnline\.info
+https?:\/\/([^\/]*\.)?no-deposit-casino-bonus\.any\.pl
+https?:\/\/([^\/]*\.)?no-faxing-payday--loan\.blogspot\.com
+https?:\/\/([^\/]*\.)?no-free-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?no1babes-com-juquj\.blogspot\.com
+https?:\/\/([^\/]*\.)?noalzel\.blogcu\.com
+https?:\/\/([^\/]*\.)?nobocli\.bbfr\.net
+https?:\/\/([^\/]*\.)?nobullhardcore-com-i7mpf5i83t\.blogspot\.com
+https?:\/\/([^\/]*\.)?nodb0\.szm\.sk
+https?:\/\/([^\/]*\.)?noelchi\.td\.pl
+https?:\/\/([^\/]*\.)?noeldar\.td\.pl
+https?:\/\/([^\/]*\.)?nofatonline\.com
+https?:\/\/([^\/]*\.)?nolamon\.naturalforum\.net
+https?:\/\/([^\/]*\.)?noletoolo\.dl\.pl
+https?:\/\/([^\/]*\.)?nomote4\.blogspot\.com
+https?:\/\/([^\/]*\.)?nopasrol\.myrealboard\.com
+https?:\/\/([^\/]*\.)?nord9maedchen73\.blogspot\.com
+https?:\/\/([^\/]*\.)?nordette\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?norflex100mg\.sblog\.cz
+https?:\/\/([^\/]*\.)?normanburke\.blogspot\.com
+https?:\/\/([^\/]*\.)?noro-alanis\.blogspot\.com
+https?:\/\/([^\/]*\.)?northcarolinamortgage-x\.com
+https?:\/\/([^\/]*\.)?northdakotamortgage-x\.com
+https?:\/\/([^\/]*\.)?norvasc\.coz\.in
+https?:\/\/([^\/]*\.)?norwichwriters\.org
+https?:\/\/([^\/]*\.)?noscudom\.forumzen\.com
+https?:\/\/([^\/]*\.)?noseypets\.com
+https?:\/\/([^\/]*\.)?nostawnevets53\.blogspot\.com
+https?:\/\/([^\/]*\.)?not-another-teen-movie-ddw5x\.blogspot\.com
+https?:\/\/([^\/]*\.)?notelymphatic\.org
+https?:\/\/([^\/]*\.)?notereport\.info
+https?:\/\/([^\/]*\.)?notrocli\.zj\.pl
+https?:\/\/([^\/]*\.)?novanasa\.php5\.cz
+https?:\/\/([^\/]*\.)?novar\.darkbb\.com
+https?:\/\/([^\/]*\.)?noviac\.jc\.pl
+https?:\/\/([^\/]*\.)?nox-teeniefiles-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?npchwp9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nqfahsc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nqkt4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nqllo\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nqlp7\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nqod6\.szm\.sk
+https?:\/\/([^\/]*\.)?nqquc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nqyz6\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?nsstc\.uah\.edu
+https?:\/\/([^\/]*\.)?nsxslk5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nthfind\.com
+https?:\/\/([^\/]*\.)?nu-alicia\.blogspot\.com
+https?:\/\/([^\/]*\.)?nucs2\.szm\.sk
+https?:\/\/([^\/]*\.)?nuddxy-free-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?nude-ass-video\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?nude-lingerie-model-photo\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?nude-little-ass\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?nude-teacher\.com
+https?:\/\/([^\/]*\.)?nudecelebritypictures-c6ob080\.blogspot\.com
+https?:\/\/([^\/]*\.)?nudecelebritypictures-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?nudecelebritypictures-nu-hqb65kdn\.blogspot\.com
+https?:\/\/([^\/]*\.)?nudestarz-com-xurig\.blogspot\.com
+https?:\/\/([^\/]*\.)?nudistlog-com-oygsrji75\.blogspot\.com
+https?:\/\/([^\/]*\.)?nugo-aerobics\.blogspot\.com
+https?:\/\/([^\/]*\.)?nuje9\.szm\.sk
+https?:\/\/([^\/]*\.)?numbness-in-right-leg\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?numimb\.com
+https?:\/\/([^\/]*\.)?numr2\.szm\.sk
+https?:\/\/([^\/]*\.)?nunikal\.stabilt\.se
+https?:\/\/([^\/]*\.)?nuqfz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nurglesnymphs-com-nuxow\.blogspot\.com
+https?:\/\/([^\/]*\.)?nurs-employment\.boom\.ru
+https?:\/\/([^\/]*\.)?nurs2employment\.chat\.ru
+https?:\/\/([^\/]*\.)?nurse-fucking-video\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?nursi2-education\.boom\.ru
+https?:\/\/([^\/]*\.)?nursin-education\.boom\.ru
+https?:\/\/([^\/]*\.)?nursin2education\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing-career\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-college\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-degree\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-degree\.fromru\.com
+https?:\/\/([^\/]*\.)?nursing-degree\.pochta\.ru
+https?:\/\/([^\/]*\.)?nursing-home\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-home\.land\.ru
+https?:\/\/([^\/]*\.)?nursing-home\.pochta\.ru
+https?:\/\/([^\/]*\.)?nursing-job\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-job\.land\.ru
+https?:\/\/([^\/]*\.)?nursing-job\.pochta\.ru
+https?:\/\/([^\/]*\.)?nursing-school\.fromru\.com
+https?:\/\/([^\/]*\.)?nursing-school\.pochta\.ru
+https?:\/\/([^\/]*\.)?nursing-scrubs\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing-uniform\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing2-school\.boom\.ru
+https?:\/\/([^\/]*\.)?nursing2college\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing2school\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing2scrubs\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing4career\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing4degree\.chat\.ru
+https?:\/\/([^\/]*\.)?nursing4job\.chat\.ru
+https?:\/\/([^\/]*\.)?nursingeducation\.chat\.ru
+https?:\/\/([^\/]*\.)?nutramigen-lipil\.leg4is\.be
+https?:\/\/([^\/]*\.)?nvdwc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nwxnv\.szm\.sk
+https?:\/\/([^\/]*\.)?nxbbyhc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nxnmwlh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?nxsq0\.szm\.sk
+https?:\/\/([^\/]*\.)?o-medic\.tripod\.com
+https?:\/\/([^\/]*\.)?o8\.aus\.cc
+https?:\/\/([^\/]*\.)?oa18\.cc
+https?:\/\/([^\/]*\.)?oa2010\.com
+https?:\/\/([^\/]*\.)?oalink\.cn
+https?:\/\/([^\/]*\.)?obesity-check\.com
+https?:\/\/([^\/]*\.)?obosra\.com
+https?:\/\/([^\/]*\.)?obrazok\.dtdns\.net
+https?:\/\/([^\/]*\.)?obsque\.cn
+https?:\/\/([^\/]*\.)?ocapk\.szm\.sk
+https?:\/\/([^\/]*\.)?oceshdes\.forumzen\.com
+https?:\/\/([^\/]*\.)?ockulpas\.forumzen\.com
+https?:\/\/([^\/]*\.)?ocleelia\.forumzen\.com
+https?:\/\/([^\/]*\.)?ocscrtro\.forumzen\.com
+https?:\/\/([^\/]*\.)?oczt4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?odfxci8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?odmi1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?odqw4\.szm\.sk
+https?:\/\/([^\/]*\.)?oechnxln\.tripod\.com
+https?:\/\/([^\/]*\.)?oecx6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?oeqls\.szm\.sk
+https?:\/\/([^\/]*\.)?offerta-volo-madrid\.19mb\.info
+https?:\/\/([^\/]*\.)?officialkes\.com
+https?:\/\/([^\/]*\.)?ogooch\.ifrance\.com
+https?:\/\/([^\/]*\.)?ogzx4\.szm\.sk
+https?:\/\/([^\/]*\.)?ohgood-com-dv8l\.blogspot\.com
+https?:\/\/([^\/]*\.)?ohgood-com-isxvi72\.blogspot\.com
+https?:\/\/([^\/]*\.)?ohgood-com-rv0\.blogspot\.com
+https?:\/\/([^\/]*\.)?ohiomortgage-x\.com
+https?:\/\/([^\/]*\.)?ohmybaby\.net
+https?:\/\/([^\/]*\.)?oilpaintingkingdom\.com
+https?:\/\/([^\/]*\.)?oily-skin\.newmail\.ru
+https?:\/\/([^\/]*\.)?oily_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?oip\.org\.ua
+https?:\/\/([^\/]*\.)?oirwt\.szm\.sk
+https?:\/\/([^\/]*\.)?ojdo0\.szm\.sk
+https?:\/\/([^\/]*\.)?ojdx7\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?okayhotels\.com
+https?:\/\/([^\/]*\.)?okcompany\.org
+https?:\/\/([^\/]*\.)?oklahomamortgage-x\.com
+https?:\/\/([^\/]*\.)?okrentcar\.org
+https?:\/\/([^\/]*\.)?old-lady-fuck\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?old-lady-suck-dick\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?old69-com-mdt71k\.blogspot\.com
+https?:\/\/([^\/]*\.)?old69-k40bqc\.blogspot\.com
+https?:\/\/([^\/]*\.)?older-mature-tgp\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?oldon\.info
+https?:\/\/([^\/]*\.)?oldp9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?oldreboc\.forumzen\.com
+https?:\/\/([^\/]*\.)?olijanko\.republika\.pl
+https?:\/\/([^\/]*\.)?olml2\.szm\.sk
+https?:\/\/([^\/]*\.)?olnnt\.szm\.sk
+https?:\/\/([^\/]*\.)?olocnamon\.cultureforum\.net
+https?:\/\/([^\/]*\.)?olocobo\.goodforum\.net
+https?:\/\/([^\/]*\.)?olocobo\.grafbb\.com
+https?:\/\/([^\/]*\.)?olodarelt\.heavenforum\.com
+https?:\/\/([^\/]*\.)?olodarelt\.highforum\.net
+https?:\/\/([^\/]*\.)?olodronric\.su\.pl
+https?:\/\/([^\/]*\.)?olodronro\.blogcu\.com
+https?:\/\/([^\/]*\.)?oloolovi\.ephpbb\.com
+https?:\/\/([^\/]*\.)?oloorrac\.blogcu\.com
+https?:\/\/([^\/]*\.)?olorelrel\.blogcu\.com
+https?:\/\/([^\/]*\.)?olorodom\.blogcu\.com
+https?:\/\/([^\/]*\.)?oltcha\.blogspot\.com
+https?:\/\/([^\/]*\.)?olyelzet\.forumzen\.com
+https?:\/\/([^\/]*\.)?omchades\.forumzen\.com
+https?:\/\/([^\/]*\.)?omega\.spb\.ru
+https?:\/\/([^\/]*\.)?omxmlvf\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?on-poteen-1-2\.blogspot\.com
+https?:\/\/([^\/]*\.)?onac2\.szm\.sk
+https?:\/\/([^\/]*\.)?one2you\.biz
+https?:\/\/([^\/]*\.)?one2you\.info
+https?:\/\/([^\/]*\.)?onfew\.szm\.sk
+https?:\/\/([^\/]*\.)?onlin-nurs-degre\.boom\.ru
+https?:\/\/([^\/]*\.)?online-blackjack-site\.com
+https?:\/\/([^\/]*\.)?online-casino-l\.blogspot\.com
+https?:\/\/([^\/]*\.)?online-casino-wiki\.com
+https?:\/\/([^\/]*\.)?online-casinos-city\.com
+https?:\/\/([^\/]*\.)?online-casinos-discovered\.com
+https?:\/\/([^\/]*\.)?online-degree-4you\.com
+https?:\/\/([^\/]*\.)?online-gambling-b\.blogspot\.com
+https?:\/\/([^\/]*\.)?online-games24x7\.com
+https?:\/\/([^\/]*\.)?online-medications24x7\.com
+https?:\/\/([^\/]*\.)?online-pharm\.zmail\.ru
+https?:\/\/([^\/]*\.)?online-pharmacy-24x7\.net
+https?:\/\/([^\/]*\.)?online-pharmacy-4u\.net
+https?:\/\/([^\/]*\.)?online-poker-game\.blogspot\.com
+https?:\/\/([^\/]*\.)?online-poker-online-poker\.net
+https?:\/\/([^\/]*\.)?online-poker\.black-poker\.com
+https?:\/\/([^\/]*\.)?online-poker\.dd\.vg
+https?:\/\/([^\/]*\.)?online-prozac\.boom\.ru
+https?:\/\/([^\/]*\.)?online-shop-24x7\.com
+https?:\/\/([^\/]*\.)?online-tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?online1-degree\.boom\.ru
+https?:\/\/([^\/]*\.)?online1course\.chat\.ru
+https?:\/\/([^\/]*\.)?online1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?online3course\.chat\.ru
+https?:\/\/([^\/]*\.)?online4nursing\.chat\.ru
+https?:\/\/([^\/]*\.)?onlineglass\.siteburg\.com
+https?:\/\/([^\/]*\.)?onlinepharmacy-4u\.net
+https?:\/\/([^\/]*\.)?onlinepharmacy2004\.net
+https?:\/\/([^\/]*\.)?onlinesexcity\.info
+https?:\/\/([^\/]*\.)?only-ringtone\.com
+https?:\/\/([^\/]*\.)?only4game\.com
+https?:\/\/([^\/]*\.)?onlycuties-com\.jalovica\.dtdns\.net
+https?:\/\/([^\/]*\.)?onlymovies-com-e1tez\.blogspot\.com
+https?:\/\/([^\/]*\.)?onlymovies-com-eczm1w\.blogspot\.com
+https?:\/\/([^\/]*\.)?onlyteenstgp-com-rmn\.blogspot\.com
+https?:\/\/([^\/]*\.)?onlyteenstgp-com-rrcamwws3\.blogspot\.com
+https?:\/\/([^\/]*\.)?onlyteenstgp-we\.blogspot\.com
+https?:\/\/([^\/]*\.)?onmycrew\.blogspot\.com
+https?:\/\/([^\/]*\.)?onrueetd\.forumzen\.com
+https?:\/\/([^\/]*\.)?oogqj\.szm\.sk
+https?:\/\/([^\/]*\.)?oohsexy-com-hob8e5y8r\.blogspot\.com
+https?:\/\/([^\/]*\.)?oohsexy-com-hpemrnff\.blogspot\.com
+https?:\/\/([^\/]*\.)?oohsexy\.com
+https?:\/\/([^\/]*\.)?oohsexy000\.blogspot\.com
+https?:\/\/([^\/]*\.)?ooline\.info
+https?:\/\/([^\/]*\.)?oolive\.info
+https?:\/\/([^\/]*\.)?oonk1\.szm\.sk
+https?:\/\/([^\/]*\.)?ooooi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ootop\.info
+https?:\/\/([^\/]*\.)?ooyy2\.szm\.sk
+https?:\/\/([^\/]*\.)?opastr\.com
+https?:\/\/([^\/]*\.)?oping\.info
+https?:\/\/([^\/]*\.)?opiytr\.com
+https?:\/\/([^\/]*\.)?opkr1\.szm\.sk
+https?:\/\/([^\/]*\.)?optbblx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?optfzj5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?opyfsen\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?oqaknky\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?oqfwt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?or-drondron\.xa\.pl
+https?:\/\/([^\/]*\.)?orabc\.info
+https?:\/\/([^\/]*\.)?oracelta\.lolforum\.net
+https?:\/\/([^\/]*\.)?orasta\.com
+https?:\/\/([^\/]*\.)?orbasolo\.dl\.pl
+https?:\/\/([^\/]*\.)?orcnaac\.discutfree\.com
+https?:\/\/([^\/]*\.)?orcoc\.lolbb\.com
+https?:\/\/([^\/]*\.)?orcore\.graphforum\.com
+https?:\/\/([^\/]*\.)?orddercelexa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orddercialisonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordderlevitra\.ovp\.pl
+https?:\/\/([^\/]*\.)?orddertramadolonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orddervalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?orddervaliumonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordderviagra\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordderviagraonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordderzithromax\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordeertramadol\.ovp\.pl
+https?:\/\/([^\/]*\.)?order-blue-phentermine\.coz\.in
+https?:\/\/([^\/]*\.)?order-ritalin-online\.contact\.cc
+https?:\/\/([^\/]*\.)?order-viagra\.health-livening\.com
+https?:\/\/([^\/]*\.)?orderacyclovirr\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderadipexx\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderalbenzaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderalprazolamm\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderambienn\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderamoxicillinn\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderativann\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderccialiss\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordercelexaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderciaalisonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordercialisonline\.jubiiblog\.de
+https?:\/\/([^\/]*\.)?ordercialiss\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordercializ\.blogcu\.com
+https?:\/\/([^\/]*\.)?ordercializ\.spotbb\.com
+https?:\/\/([^\/]*\.)?ordercymbaltaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderhydrocodonee\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderlevitraa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderllevitra\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordermeridiaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderphentermin\.phpbbx\.de
+https?:\/\/([^\/]*\.)?orderphenterminee\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderpropeciaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrcialisonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrlevitra\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrtramadoll\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrtramadolonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrvalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrviagraa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderrviagraonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordersoma\.blogsome\.com
+https?:\/\/([^\/]*\.)?ordersomaa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderssoma\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordertramadoll\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordertramadollonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderultramm\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordervaliumm\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderviagraa\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderviagraaonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?ordervvalium\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderxanaxx\.ovp\.pl
+https?:\/\/([^\/]*\.)?orderxenicalonline\.ir\.pl
+https?:\/\/([^\/]*\.)?orecchino\.7god\.info
+https?:\/\/([^\/]*\.)?orecchino\.freespase\.info
+https?:\/\/([^\/]*\.)?oregonmortgage-x\.com
+https?:\/\/([^\/]*\.)?orgetacel\.discutforum\.com
+https?:\/\/([^\/]*\.)?orgeter\.cultureforum\.net
+https?:\/\/([^\/]*\.)?orgs\.indianatech\.edu
+https?:\/\/([^\/]*\.)?orletovar\.zikforum\.com
+https?:\/\/([^\/]*\.)?ormme\.com
+https?:\/\/([^\/]*\.)?ornildom\.forumzen\.com
+https?:\/\/([^\/]*\.)?orrdercialisonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orrdertramadolonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?orsaverc\.forumzen\.com
+https?:\/\/([^\/]*\.)?ortar\.com
+https?:\/\/([^\/]*\.)?ortho-tri-cyclen\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ortrocrol\.heavenforum\.com
+https?:\/\/([^\/]*\.)?ortrocrol\.highforum\.net
+https?:\/\/([^\/]*\.)?orvict\.ephpbb\.com
+https?:\/\/([^\/]*\.)?oryc0\.szm\.sk
+https?:\/\/([^\/]*\.)?orzeldron\.lightbb\.com
+https?:\/\/([^\/]*\.)?osakabondage\.info
+https?:\/\/([^\/]*\.)?osfi5\.szm\.sk
+https?:\/\/([^\/]*\.)?osthtp1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?otqsc\.szm\.sk
+https?:\/\/([^\/]*\.)?oudomdar\.dl\.pl
+https?:\/\/([^\/]*\.)?oudomolo\.lolbb\.com
+https?:\/\/([^\/]*\.)?oudronc4t\.blogcu\.com
+https?:\/\/([^\/]*\.)?ouerco\.lightbb\.com
+https?:\/\/([^\/]*\.)?oufienoc\.forumzen\.com
+https?:\/\/([^\/]*\.)?ouglova\.blogspot\.com
+https?:\/\/([^\/]*\.)?ouhymtro\.forumzen\.com
+https?:\/\/([^\/]*\.)?ouor\.lightbb\.com
+https?:\/\/([^\/]*\.)?ouorrac\.bbfr\.net
+https?:\/\/([^\/]*\.)?ouracdron\.discutfree\.com
+https?:\/\/([^\/]*\.)?ourolal\.discutfree\.com
+https?:\/\/([^\/]*\.)?outrocvar\.zj\.pl
+https?:\/\/([^\/]*\.)?outward-dev\.com
+https?:\/\/([^\/]*\.)?ouvier\.zj\.pl
+https?:\/\/([^\/]*\.)?overseas-adventure-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?ovparnel\.dl\.pl
+https?:\/\/([^\/]*\.)?ovpn2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ovrie\.szm\.sk
+https?:\/\/([^\/]*\.)?ovu\.edu
+https?:\/\/([^\/]*\.)?owll1\.szm\.sk
+https?:\/\/([^\/]*\.)?oxpass-com-g5\.blogspot\.com
+https?:\/\/([^\/]*\.)?oxpass-com-gt71a0\.blogspot\.com
+https?:\/\/([^\/]*\.)?oxpass-com-hurol\.blogspot\.com
+https?:\/\/([^\/]*\.)?oyspa\.szm\.sk
+https?:\/\/([^\/]*\.)?oz6soqa\.nokedem\.com
+https?:\/\/([^\/]*\.)?ozbk9\.szm\.sk
+https?:\/\/([^\/]*\.)?ozgzm\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ozxz5\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ozyexk2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?p-free-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?p-n-lesbian-sex-video-d\.blogspot\.com
+https?:\/\/([^\/]*\.)?p-teens-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?p-vi\.com
+https?:\/\/([^\/]*\.)?p1v\.org
+https?:\/\/([^\/]*\.)?p2l\.info
+https?:\/\/([^\/]*\.)?pa19\.com
+https?:\/\/([^\/]*\.)?pacfic-poker\.mutogen\.be
+https?:\/\/([^\/]*\.)?pacficpoker\.xwiki\.com
+https?:\/\/([^\/]*\.)?pacific-poker\.black-poker\.com
+https?:\/\/([^\/]*\.)?paddedapex\.org
+https?:\/\/([^\/]*\.)?paeecpx\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pafyawv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pain-medications\.us
+https?:\/\/([^\/]*\.)?pain-relief\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?pain-relief\.2x4\.ru
+https?:\/\/([^\/]*\.)?pain-relief\.fromru\.com
+https?:\/\/([^\/]*\.)?pain-relief\.newmail\.ru
+https?:\/\/([^\/]*\.)?pain_relief\.chat\.ru
+https?:\/\/([^\/]*\.)?paisi\.com
+https?:\/\/([^\/]*\.)?paisidesign\.com
+https?:\/\/([^\/]*\.)?pam\.freehostia\.com
+https?:\/\/([^\/]*\.)?pamlicohouse\.com
+https?:\/\/([^\/]*\.)?panama2cruise\.boom\.ru
+https?:\/\/([^\/]*\.)?panama2cruise\.chat\.ru
+https?:\/\/([^\/]*\.)?panamacruise1\.boom\.ru
+https?:\/\/([^\/]*\.)?panamacruise1\.chat\.ru
+https?:\/\/([^\/]*\.)?pandamovies-com-g6lz762n76\.blogspot\.com
+https?:\/\/([^\/]*\.)?pandamovies-com-tq32\.blogspot\.com
+https?:\/\/([^\/]*\.)?pandamovies-o4me7xqq0f\.blogspot\.com
+https?:\/\/([^\/]*\.)?panshan888\.com
+https?:\/\/([^\/]*\.)?panss\.org
+https?:\/\/([^\/]*\.)?panthersjaguar\.info
+https?:\/\/([^\/]*\.)?panty-ass-com-w1\.blogspot\.com
+https?:\/\/([^\/]*\.)?panty-ass-com-w8\.blogspot\.com
+https?:\/\/([^\/]*\.)?pantybuns-com-a6ejgve\.blogspot\.com
+https?:\/\/([^\/]*\.)?pantybuns-com-axeoa77ze5\.blogspot\.com
+https?:\/\/([^\/]*\.)?pantybuns-com-tl0\.blogspot\.com
+https?:\/\/([^\/]*\.)?pantyhose-face\.pupava\.dtdns\.net
+https?:\/\/([^\/]*\.)?pantyhose-net\.com
+https?:\/\/([^\/]*\.)?paola-e-chiara\.host24h\.info
+https?:\/\/([^\/]*\.)?paper--shredder\.boom\.ru
+https?:\/\/([^\/]*\.)?paper-s\.boom\.ru
+https?:\/\/([^\/]*\.)?paper1-shredder\.boom\.ru
+https?:\/\/([^\/]*\.)?paper1shredder\.chat\.ru
+https?:\/\/([^\/]*\.)?paper5shredder\.chat\.ru
+https?:\/\/([^\/]*\.)?paperbox\.freephpwebhosting\.net
+https?:\/\/([^\/]*\.)?paperroom\.blogspot\.com
+https?:\/\/([^\/]*\.)?papr-shredder\.boom\.ru
+https?:\/\/([^\/]*\.)?paradisenudes-com-o71a\.blogspot\.com
+https?:\/\/([^\/]*\.)?paradisenudes-com-os\.blogspot\.com
+https?:\/\/([^\/]*\.)?paralegal1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?parench\.ifrance\.com
+https?:\/\/([^\/]*\.)?parigi-appartamento-vacanza\.zoom10x\.info
+https?:\/\/([^\/]*\.)?paris-hilton-huxik\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-lukuv\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-nude-tape\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-pijid\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-pojic\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-porn\.0800-porn\.com
+https?:\/\/([^\/]*\.)?paris-hilton-sex-tape-xxx\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-sex-video-gf5m5\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-sex-video-sez\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-socog\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris-hilton-xidig\.blogspot\.com
+https?:\/\/([^\/]*\.)?paris\.php5\.cz
+https?:\/\/([^\/]*\.)?parishilton-paris-hilton\.blogspot\.com
+https?:\/\/([^\/]*\.)?parishilton-paris\.blogspot\.com
+https?:\/\/([^\/]*\.)?parnvf8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?partei-deutsches-reich\.de
+https?:\/\/([^\/]*\.)?parties-supply\.jeepsyc\.be
+https?:\/\/([^\/]*\.)?party-poker\.black-poker\.com
+https?:\/\/([^\/]*\.)?pasacvi\.zikforum\.com
+https?:\/\/([^\/]*\.)?paschiel\.blogcu\.com
+https?:\/\/([^\/]*\.)?pasdronli\.winnerforum\.net
+https?:\/\/([^\/]*\.)?pashkak0marov\.blogspot\.com
+https?:\/\/([^\/]*\.)?paslibo\.myrealboard\.com
+https?:\/\/([^\/]*\.)?pasoloro\.graphforum\.com
+https?:\/\/([^\/]*\.)?pasoloro\.highforum\.net
+https?:\/\/([^\/]*\.)?pasracco\.blogcu\.com
+https?:\/\/([^\/]*\.)?pasrodron\.xa\.pl
+https?:\/\/([^\/]*\.)?passaf\.com
+https?:\/\/([^\/]*\.)?pastmagic\.blogspot\.com
+https?:\/\/([^\/]*\.)?pasviric\.td\.pl
+https?:\/\/([^\/]*\.)?patsytestis\.0moola\.com
+https?:\/\/([^\/]*\.)?pattywhack91\.ibelgique\.com
+https?:\/\/([^\/]*\.)?paulino\.greekboston\.com
+https?:\/\/([^\/]*\.)?paulino\.idilis\.ro
+https?:\/\/([^\/]*\.)?paxil-cr\.contact\.cc
+https?:\/\/([^\/]*\.)?paxil-without-prescription\.contact\.cc
+https?:\/\/([^\/]*\.)?paxil\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?paxil\.forospace\.com
+https?:\/\/([^\/]*\.)?paxilonline\.zoomshare\.com
+https?:\/\/([^\/]*\.)?payday-loan\.de\.com
+https?:\/\/([^\/]*\.)?payday-loans-4us\.com
+https?:\/\/([^\/]*\.)?payday-loans-ooo\.blogspot\.com
+https?:\/\/([^\/]*\.)?paydayloans-guide\.com
+https?:\/\/([^\/]*\.)?paydayloans-x\.com
+https?:\/\/([^\/]*\.)?pcb2002\.home4u\.china\.com
+https?:\/\/([^\/]*\.)?pcgzt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pdslnw6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?peace-weasel\.blogspot\.com
+https?:\/\/([^\/]*\.)?peacedoorball\.blogspot\.com
+https?:\/\/([^\/]*\.)?pearlibuttons\.blogspot\.com
+https?:\/\/([^\/]*\.)?pebwgu0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pecilu-free-sex-video-clip\.blogspot\.com
+https?:\/\/([^\/]*\.)?pee-4a\.com
+https?:\/\/([^\/]*\.)?peetliel\.jconserv\.net
+https?:\/\/([^\/]*\.)?pefi-albert\.blogspot\.com
+https?:\/\/([^\/]*\.)?pelnp\.szm\.sk
+https?:\/\/([^\/]*\.)?pendant\.hostcroc\.com
+https?:\/\/([^\/]*\.)?pennsylvaniamortgage-x\.com
+https?:\/\/([^\/]*\.)?people\.msoe\.edu
+https?:\/\/([^\/]*\.)?percocet-without-prescription\.contact\.cc
+https?:\/\/([^\/]*\.)?percocet\.xwiki\.com
+https?:\/\/([^\/]*\.)?perfect-boob\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?permanentmagnet\.com
+https?:\/\/([^\/]*\.)?persiankitty-com-kcfsibt01d\.blogspot\.com
+https?:\/\/([^\/]*\.)?persiankitty-com-ksa6l1a\.blogspot\.com
+https?:\/\/([^\/]*\.)?personales\.ciudad\.com\.ar
+https?:\/\/([^\/]*\.)?personalserotic\.com
+https?:\/\/([^\/]*\.)?petite-mature-blonde\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?petite-teen-ass\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?petiteteenager-com-cm8ku8w\.blogspot\.com
+https?:\/\/([^\/]*\.)?petiteteenager-com-md6\.blogspot\.com
+https?:\/\/([^\/]*\.)?petiteteenager-com-mns4n5a4\.blogspot\.com
+https?:\/\/([^\/]*\.)?petiteteenager-g687rhasjq\.blogspot\.com
+https?:\/\/([^\/]*\.)?peuct\.szm\.sk
+https?:\/\/([^\/]*\.)?pfes7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pffl4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pgbnjja\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pharm1\.info
+https?:\/\/([^\/]*\.)?pharmacies\.in\.ua
+https?:\/\/([^\/]*\.)?pharmacy-experts\.org
+https?:\/\/([^\/]*\.)?pharmacy-x\.ru\.ru
+https?:\/\/([^\/]*\.)?pharmacy\.sovuennir\.be
+https?:\/\/([^\/]*\.)?pharmacy\.t28\.net
+https?:\/\/([^\/]*\.)?pharmacy05\.com
+https?:\/\/([^\/]*\.)?pharmacybuy1\.angelcities\.com
+https?:\/\/([^\/]*\.)?pharmaduk\.xshorturl\.com
+https?:\/\/([^\/]*\.)?phendimetrazine\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?phendimetrazinenx\.u\.yuku\.com
+https?:\/\/([^\/]*\.)?phentermine--mine\.blogspot\.com
+https?:\/\/([^\/]*\.)?phentermine-911\.bee\.pl
+https?:\/\/([^\/]*\.)?phentermine-911\.coz\.in
+https?:\/\/([^\/]*\.)?phentermine-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?phentermine-choise\.ebloggy\.com
+https?:\/\/([^\/]*\.)?phentermine-forum\.tripod\.com
+https?:\/\/([^\/]*\.)?phentermine-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?phentermine-gs\.net\.tc
+https?:\/\/([^\/]*\.)?phentermine-hcl\.org
+https?:\/\/([^\/]*\.)?phentermine-online\.cheapills\.info
+https?:\/\/([^\/]*\.)?phentermine-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?phentermine-pharmacy\.fws1\.com
+https?:\/\/([^\/]*\.)?phentermine-support\.com
+https?:\/\/([^\/]*\.)?phentermine\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?phentermine\.acbox\.com
+https?:\/\/([^\/]*\.)?phentermine\.acbox\.net
+https?:\/\/([^\/]*\.)?phentermine\.arkadasi\.com
+https?:\/\/([^\/]*\.)?phentermine\.asistani\.com
+https?:\/\/([^\/]*\.)?phentermine\.bz
+https?:\/\/([^\/]*\.)?phentermine\.clubpage\.net
+https?:\/\/([^\/]*\.)?phentermine\.esguay\.com
+https?:\/\/([^\/]*\.)?phentermine\.flygande-apor\.com
+https?:\/\/([^\/]*\.)?phentermine\.goodpharm\.info
+https?:\/\/([^\/]*\.)?phentermine\.gotgeeks\.com
+https?:\/\/([^\/]*\.)?phentermine\.hallonsaft\.info
+https?:\/\/([^\/]*\.)?phentermine\.health-livening\.com
+https?:\/\/([^\/]*\.)?phentermine\.on-4\.com
+https?:\/\/([^\/]*\.)?phentermine\.ontspant\.nl
+https?:\/\/([^\/]*\.)?phentermine\.presteert\.nl
+https?:\/\/([^\/]*\.)?phentermine\.skocz\.net
+https?:\/\/([^\/]*\.)?phentermine\.su\.pl
+https?:\/\/([^\/]*\.)?phentermine\.tv
+https?:\/\/([^\/]*\.)?phentermine\.websiam\.net
+https?:\/\/([^\/]*\.)?phentermine2\.freewebsites\.com
+https?:\/\/([^\/]*\.)?phentermine7x\.forumup\.org
+https?:\/\/([^\/]*\.)?phenterminec\.phpbbx\.de
+https?:\/\/([^\/]*\.)?phentermineonline\.ds4a\.com
+https?:\/\/([^\/]*\.)?phentermineonline\.livelog\.com
+https?:\/\/([^\/]*\.)?phentermineq\.host-page\.com
+https?:\/\/([^\/]*\.)?phentermines\.int\.tf
+https?:\/\/([^\/]*\.)?phoenixbrngbrt\.blogspot\.com
+https?:\/\/([^\/]*\.)?phol8\.szm\.sk
+https?:\/\/([^\/]*\.)?phone-service\.newmail\.ru
+https?:\/\/([^\/]*\.)?phones-gsm\.haemati\.be
+https?:\/\/([^\/]*\.)?photo-of-girl-boob\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?photospacefree\.com
+https?:\/\/([^\/]*\.)?phots\.info
+https?:\/\/([^\/]*\.)?phpbbx\.de
+https?:\/\/([^\/]*\.)?phun-org-i08kd\.blogspot\.com
+https?:\/\/([^\/]*\.)?phun-org-ingg0\.blogspot\.com
+https?:\/\/([^\/]*\.)?pi-allyson\.blogspot\.com
+https?:\/\/([^\/]*\.)?pichunter-com-bkfwk\.blogspot\.com
+https?:\/\/([^\/]*\.)?pichunter-com-bzf\.blogspot\.com
+https?:\/\/([^\/]*\.)?pichunter-com-hmmcyoud8\.blogspot\.com
+https?:\/\/([^\/]*\.)?pichunter-com-kesip\.blogspot\.com
+https?:\/\/([^\/]*\.)?picpost-com-e3xqsc6a\.blogspot\.com
+https?:\/\/([^\/]*\.)?picpost-com-eu7refa3s5\.blogspot\.com
+https?:\/\/([^\/]*\.)?picture-cast-on-broken-leg\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?picture-of-gay-guys-fucking\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?picture-of-used-condom\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?picture\.8tt\.org
+https?:\/\/([^\/]*\.)?pictureheaven-com-ri7hn\.blogspot\.com
+https?:\/\/([^\/]*\.)?pictureheaven-com-rw\.blogspot\.com
+https?:\/\/([^\/]*\.)?pictures-free-org-wl0nj\.blogspot\.com
+https?:\/\/([^\/]*\.)?pictures-free-org-wmmkv2w\.blogspot\.com
+https?:\/\/([^\/]*\.)?piggy-soldier\.blogspot\.com
+https?:\/\/([^\/]*\.)?pigtime\.net\.ru
+https?:\/\/([^\/]*\.)?pigxxx-com-ctjj1\.blogspot\.com
+https?:\/\/([^\/]*\.)?pigxxx-com-ge1omxgp20\.blogspot\.com
+https?:\/\/([^\/]*\.)?pigxxx-com-geo8asd1i\.blogspot\.com
+https?:\/\/([^\/]*\.)?pigxxx-com-nevew\.blogspot\.com
+https?:\/\/([^\/]*\.)?pijjyh-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?pillalli\.info
+https?:\/\/([^\/]*\.)?pillnext\.com
+https?:\/\/([^\/]*\.)?pillow\.2x4\.ru
+https?:\/\/([^\/]*\.)?pills-catalog\.com
+https?:\/\/([^\/]*\.)?pills-pharmacy\.us
+https?:\/\/([^\/]*\.)?pills\.007webpro\.com
+https?:\/\/([^\/]*\.)?pills\.siemprelisto\.net
+https?:\/\/([^\/]*\.)?pills1\.org
+https?:\/\/([^\/]*\.)?pillsz\.com
+https?:\/\/([^\/]*\.)?pimpmyblackteen-com-t6ijmwbu\.blogspot\.com
+https?:\/\/([^\/]*\.)?pimpmyblackteen-com-t7d432c\.blogspot\.com
+https?:\/\/([^\/]*\.)?pindosam\.com
+https?:\/\/([^\/]*\.)?pine\.hostonmars\.com
+https?:\/\/([^\/]*\.)?pinkpornstars-com-da3njbu\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkpornstars-com-dnjx\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkpornstars-com-drm\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkworld-com-c84agv\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkworld-com-ci8e6\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkworld-com-ge4k4kmsd\.blogspot\.com
+https?:\/\/([^\/]*\.)?pinkworld-com-kp7s8i5\.blogspot\.com
+https?:\/\/([^\/]*\.)?pino-daniele\.19mb\.info
+https?:\/\/([^\/]*\.)?pinoyteens\.net
+https?:\/\/([^\/]*\.)?piomchel\.jconserv\.net
+https?:\/\/([^\/]*\.)?pisces\.8tt\.org
+https?:\/\/([^\/]*\.)?pitch\.101freehost\.com
+https?:\/\/([^\/]*\.)?pizda4\.com
+https?:\/\/([^\/]*\.)?pizza-hut\.hotmail\.ru
+https?:\/\/([^\/]*\.)?pjim6\.szm\.sk
+https?:\/\/([^\/]*\.)?pjju3\.szm\.sk
+https?:\/\/([^\/]*\.)?pjmykz8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pjryskur-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?pjuibhe\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pkufl\.szm\.sk
+https?:\/\/([^\/]*\.)?place\.sex-jet\.net
+https?:\/\/([^\/]*\.)?planetaacura\.info
+https?:\/\/([^\/]*\.)?planetwatt\.republika\.pl
+https?:\/\/([^\/]*\.)?plastictec\.net
+https?:\/\/([^\/]*\.)?plavix\.coz\.in
+https?:\/\/([^\/]*\.)?plavixbuy\.gameday\.de
+https?:\/\/([^\/]*\.)?plavixbuycheap\.dive\.to
+https?:\/\/([^\/]*\.)?plavixcheap\.hey\.to
+https?:\/\/([^\/]*\.)?plavixcheapgeneric\.go\.to
+https?:\/\/([^\/]*\.)?plavixgeneric\.change\.to
+https?:\/\/([^\/]*\.)?play-777\.com
+https?:\/\/([^\/]*\.)?play-online-casino\.de\.com
+https?:\/\/([^\/]*\.)?play-online-poker\.newmail\.ru
+https?:\/\/([^\/]*\.)?play-station-2-boot-disk\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?playandwinit777\.net
+https?:\/\/([^\/]*\.)?pleasebangmywife-com-i8zdgo1\.blogspot\.com
+https?:\/\/([^\/]*\.)?pleasebangmywife-com-iq\.blogspot\.com
+https?:\/\/([^\/]*\.)?pleasebangmywife-com-koguq\.blogspot\.com
+https?:\/\/([^\/]*\.)?pleasure\.hostonmars\.com
+https?:\/\/([^\/]*\.)?ploob\.blox\.pl
+https?:\/\/([^\/]*\.)?plugkblow\.pornomagnat\.net
+https?:\/\/([^\/]*\.)?plumper69-com-on3664rg\.blogspot\.com
+https?:\/\/([^\/]*\.)?plumper69-com-os4\.blogspot\.com
+https?:\/\/([^\/]*\.)?plumper69-com-sokis\.blogspot\.com
+https?:\/\/([^\/]*\.)?plxn1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pmrd2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pmyk8\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?po-alora\.blogspot\.com
+https?:\/\/([^\/]*\.)?pobpa\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?pocmlaq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?podnos\.stabilt\.se
+https?:\/\/([^\/]*\.)?poeller\.dl\.pl
+https?:\/\/([^\/]*\.)?pogeh\.szm\.sk
+https?:\/\/([^\/]*\.)?pohuym\.jo\.pl
+https?:\/\/([^\/]*\.)?pointyou\.info
+https?:\/\/([^\/]*\.)?poker-0\.com
+https?:\/\/([^\/]*\.)?poker-24x7\.com
+https?:\/\/([^\/]*\.)?poker-4all\.com
+https?:\/\/([^\/]*\.)?poker-7\.com
+https?:\/\/([^\/]*\.)?poker-boulevard\.com
+https?:\/\/([^\/]*\.)?poker-check\.com
+https?:\/\/([^\/]*\.)?poker-new\.com
+https?:\/\/([^\/]*\.)?poker-party-a\.com
+https?:\/\/([^\/]*\.)?poker-places-4u\.net
+https?:\/\/([^\/]*\.)?poker-places\.net
+https?:\/\/([^\/]*\.)?poker-pro\.us
+https?:\/\/([^\/]*\.)?poker-stadium\.com
+https?:\/\/([^\/]*\.)?poker-sys\.com
+https?:\/\/([^\/]*\.)?poker-unique\.com
+https?:\/\/([^\/]*\.)?poker-valley\.com
+https?:\/\/([^\/]*\.)?poker\.black-poker\.com
+https?:\/\/([^\/]*\.)?poker\.land\.ru
+https?:\/\/([^\/]*\.)?poker1table\.chat\.ru
+https?:\/\/([^\/]*\.)?pokera\.web\.com
+https?:\/\/([^\/]*\.)?pokermaniab\.atspace\.com
+https?:\/\/([^\/]*\.)?polex\.com\.cn
+https?:\/\/([^\/]*\.)?police-motorcycle-boot\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?police\.site\.io
+https?:\/\/([^\/]*\.)?polonka\.php5\.cz
+https?:\/\/([^\/]*\.)?polott\.org
+https?:\/\/([^\/]*\.)?polyphonic-ringtoneslsh\.blogspot\.com
+https?:\/\/([^\/]*\.)?polysorb\.myoco\.be
+https?:\/\/([^\/]*\.)?polyurethane-condom\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?pool-table\.hotmail\.ru
+https?:\/\/([^\/]*\.)?poopoovi\.forumculture\.net
+https?:\/\/([^\/]*\.)?pop\.egi\.biz
+https?:\/\/([^\/]*\.)?porn-clip-blog5jc\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-clip-boj\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-clip-om16o\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-movie-clips-blogk8p\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-movie-rj8a7\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-movie-ted\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-movie\.hostingtree\.org
+https?:\/\/([^\/]*\.)?porn-samples\.com
+https?:\/\/([^\/]*\.)?porn-star-clip-info0n0\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-star-movie-clip-newsigj\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-star-video-clip-zone44f\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-teacher\.com
+https?:\/\/([^\/]*\.)?porn-teen-pic\.com
+https?:\/\/([^\/]*\.)?porn-video-clip-bb-bb-f\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-video-clip-gallery-zonehp1\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-video-clips-news5v2\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn-video-jef\.blogspot\.com
+https?:\/\/([^\/]*\.)?porn1clip\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornaccess-com-k58\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornaccess-com-kkd1zvcobi\.blogspot\.com
+https?:\/\/([^\/]*\.)?porndirectory-com-m544ar5z47\.blogspot\.com
+https?:\/\/([^\/]*\.)?porndirectory-com-miyza\.blogspot\.com
+https?:\/\/([^\/]*\.)?porneskimo-com-hizrd2on\.blogspot\.com
+https?:\/\/([^\/]*\.)?porneskimo-com-hr1frq8hrr\.blogspot\.com
+https?:\/\/([^\/]*\.)?porneskimo-d4p5\.blogspot\.com
+https?:\/\/([^\/]*\.)?porneskimo-diheh\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornfreeusa\.info
+https?:\/\/([^\/]*\.)?pornno-com-cdtkjmj\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornno-com-cz5dknpwc\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornogames4\.com
+https?:\/\/([^\/]*\.)?pornoho-com-d7f\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornoho-com-db2ge0p\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstar-com-be1mbdy0l1\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstar-com-bsrzs22gn\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstar-com-nuvor\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstar-dz8j\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarbook-com-ag3477t\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarbook-com-agrpd\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarfinder-net-wp2lsr0\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarfinder-net-wuag8\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstargals-com-tj\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstargals-com-tk7hoxv36\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstars\.hostingtree\.org
+https?:\/\/([^\/]*\.)?pornstarvid-com-dinif\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarvid-com-h5\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornstarvid-com-h8xe\.blogspot\.com
+https?:\/\/([^\/]*\.)?pornweek-com\.isabel\.dtdns\.net
+https?:\/\/([^\/]*\.)?portal777\.com
+https?:\/\/([^\/]*\.)?portalrate\.info
+https?:\/\/([^\/]*\.)?portcityhonda\.info
+https?:\/\/([^\/]*\.)?portly\.byinter\.net
+https?:\/\/([^\/]*\.)?porzo-com-dsmefbsl\.blogspot\.com
+https?:\/\/([^\/]*\.)?porzo-com-gxo\.blogspot\.com
+https?:\/\/([^\/]*\.)?poshlo\.com
+https?:\/\/([^\/]*\.)?postdream\.org
+https?:\/\/([^\/]*\.)?potulnik\.php5\.cz
+https?:\/\/([^\/]*\.)?povicyt\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?powerlevelingweb\.com
+https?:\/\/([^\/]*\.)?pozorvostoka\.250free\.com
+https?:\/\/([^\/]*\.)?pp-shredd\.boom\.ru
+https?:\/\/([^\/]*\.)?pppsp\.szm\.sk
+https?:\/\/([^\/]*\.)?ppuhldv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pqis2\.szm\.sk
+https?:\/\/([^\/]*\.)?prakashcommunication\.com
+https?:\/\/([^\/]*\.)?prama\.info
+https?:\/\/([^\/]*\.)?prasut\.com
+https?:\/\/([^\/]*\.)?prearnha\.dl\.pl
+https?:\/\/([^\/]*\.)?prednisone\.3d-game\.com
+https?:\/\/([^\/]*\.)?prenotazione-albergo-rimini\.host24h\.info
+https?:\/\/([^\/]*\.)?prestito-taranto\.robzz\.info
+https?:\/\/([^\/]*\.)?prettyhair24-7\.blogspot\.com
+https?:\/\/([^\/]*\.)?prettyhotbabes-com-r2lu08uojn\.blogspot\.com
+https?:\/\/([^\/]*\.)?prettyhotbabes-com-rkgrt\.blogspot\.com
+https?:\/\/([^\/]*\.)?prettymob\.com
+https?:\/\/([^\/]*\.)?prevacid\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?price-top\.com
+https?:\/\/([^\/]*\.)?price100\.info
+https?:\/\/([^\/]*\.)?prilosec\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?prilosecbuycheap\.turn\.to
+https?:\/\/([^\/]*\.)?prilosecbuygeneric\.redirect\.to
+https?:\/\/([^\/]*\.)?priloseccheap\.turn\.to
+https?:\/\/([^\/]*\.)?priloseccheapgeneric\.redirect\.to
+https?:\/\/([^\/]*\.)?prilosecgeneric\.come\.to
+https?:\/\/([^\/]*\.)?primer\.fidosoft\.de
+https?:\/\/([^\/]*\.)?primojerky\.cn
+https?:\/\/([^\/]*\.)?primonona\.info
+https?:\/\/([^\/]*\.)?princesscruises\.chat\.ru
+https?:\/\/([^\/]*\.)?princesskariboo\.blogspot\.com
+https?:\/\/([^\/]*\.)?printer\.net\.cn
+https?:\/\/([^\/]*\.)?printingok\.net
+https?:\/\/([^\/]*\.)?private-porn-clip-newsmzm\.blogspot\.com
+https?:\/\/([^\/]*\.)?proactive-facial-product\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?problem-skin\.nm\.ru
+https?:\/\/([^\/]*\.)?problem_skin\.chat\.ru
+https?:\/\/([^\/]*\.)?prodotti-cosmetico\.nnme\.info
+https?:\/\/([^\/]*\.)?projectvoyeur-com-ec15a\.blogspot\.com
+https?:\/\/([^\/]*\.)?projectvoyeur-com-eq2w\.blogspot\.com
+https?:\/\/([^\/]*\.)?projectvoyeur-com-eyyd4q\.blogspot\.com
+https?:\/\/([^\/]*\.)?projectvoyeur-t3j\.blogspot\.com
+https?:\/\/([^\/]*\.)?prom\.createforum\.us
+https?:\/\/([^\/]*\.)?propecia\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?propecia\.esguay\.com
+https?:\/\/([^\/]*\.)?propecia\.skocz\.net
+https?:\/\/([^\/]*\.)?protonixbuy\.stick\.by
+https?:\/\/([^\/]*\.)?protonixbuycheap\.redirect\.to
+https?:\/\/([^\/]*\.)?protonixcheap\.connect\.to
+https?:\/\/([^\/]*\.)?protonixcheapgeneric\.soft-ware\.de
+https?:\/\/([^\/]*\.)?protonixgenericbuy\.cut\.by
+https?:\/\/([^\/]*\.)?provigilweight\.sblog\.cz
+https?:\/\/([^\/]*\.)?prozac\.rx4\.org
+https?:\/\/([^\/]*\.)?prsl4\.szm\.sk
+https?:\/\/([^\/]*\.)?prznic\.dtdns\.net
+https?:\/\/([^\/]*\.)?psfc\.mit\.edu
+https?:\/\/([^\/]*\.)?psmorrison\.blogspot\.com
+https?:\/\/([^\/]*\.)?psnuni\.com
+https?:\/\/([^\/]*\.)?psrq4\.szm\.sk
+https?:\/\/([^\/]*\.)?psychology-degre\.boom\.ru
+https?:\/\/([^\/]*\.)?psychology1degre\.chat\.ru
+https?:\/\/([^\/]*\.)?pszdc\.szm\.sk
+https?:\/\/([^\/]*\.)?ptpm9\.szm\.sk
+https?:\/\/([^\/]*\.)?ptrip\.net
+https?:\/\/([^\/]*\.)?pttqt\.szm\.sk
+https?:\/\/([^\/]*\.)?publicinvasion-com-bhtum2\.blogspot\.com
+https?:\/\/([^\/]*\.)?publicinvasion-com-bj\.blogspot\.com
+https?:\/\/([^\/]*\.)?publicinvasion-com-furok\.blogspot\.com
+https?:\/\/([^\/]*\.)?publicsaftor\.com
+https?:\/\/([^\/]*\.)?pued-com-maxu1g7\.blogspot\.com
+https?:\/\/([^\/]*\.)?pued-com-mf3\.blogspot\.com
+https?:\/\/([^\/]*\.)?pued-com-r0078gie\.blogspot\.com
+https?:\/\/([^\/]*\.)?pued-ox5y12mn7s\.blogspot\.com
+https?:\/\/([^\/]*\.)?puffybet\.sultryserver\.com
+https?:\/\/([^\/]*\.)?pulaskiterm\.info
+https?:\/\/([^\/]*\.)?pulse-squad\.com
+https?:\/\/([^\/]*\.)?pumpthatass-com-a78juz38f2\.blogspot\.com
+https?:\/\/([^\/]*\.)?pumpthatass-com-a7ouybe\.blogspot\.com
+https?:\/\/([^\/]*\.)?pumpthatass-com-xudeb\.blogspot\.com
+https?:\/\/([^\/]*\.)?punguinodoom\.110mb\.com
+https?:\/\/([^\/]*\.)?punjqm0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?punk-ass-bitch-wheatus\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?puppykibble-com-o7\.blogspot\.com
+https?:\/\/([^\/]*\.)?puppykibble-com-oh0w2te3k\.blogspot\.com
+https?:\/\/([^\/]*\.)?puppykibble-com-oqm7hu8d\.blogspot\.com
+https?:\/\/([^\/]*\.)?purextc-com-i8\.blogspot\.com
+https?:\/\/([^\/]*\.)?purextc-com-iy\.blogspot\.com
+https?:\/\/([^\/]*\.)?pussy-ass-bitch\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?pussy-org-kjsb51la\.blogspot\.com
+https?:\/\/([^\/]*\.)?pussy-org-km5\.blogspot\.com
+https?:\/\/([^\/]*\.)?putsta\.com
+https?:\/\/([^\/]*\.)?pvfws\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pvqoa\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pvsiwi7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pvudt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pvzj1\.szm\.sk
+https?:\/\/([^\/]*\.)?pwqx0\.szm\.sk
+https?:\/\/([^\/]*\.)?pymiw\.szm\.sk
+https?:\/\/([^\/]*\.)?pyr0lys1s\.blogspot\.com
+https?:\/\/([^\/]*\.)?pyrebi\.blogspot\.com
+https?:\/\/([^\/]*\.)?pyujxu0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?pzch0\.szm\.sk
+https?:\/\/([^\/]*\.)?pzek6\.szm\.sk
+https?:\/\/([^\/]*\.)?pzif1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?q-n-homemade-sex-video-z\.blogspot\.com
+https?:\/\/([^\/]*\.)?qbzmbwz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qctbue2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qdhr9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qdojv\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?qe-hentai-sex-video-sun\.blogspot\.com
+https?:\/\/([^\/]*\.)?qek-wetplace-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?qfoo7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qgre5\.szm\.sk
+https?:\/\/([^\/]*\.)?qgtdivl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qhiqu\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?qhprfm6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qhyvt\.szm\.sk
+https?:\/\/([^\/]*\.)?qietingqi\.ebloggy\.com
+https?:\/\/([^\/]*\.)?qingpao\.com
+https?:\/\/([^\/]*\.)?qinjq\.szm\.sk
+https?:\/\/([^\/]*\.)?qiqiu\.org
+https?:\/\/([^\/]*\.)?qite-alanna\.blogspot\.com
+https?:\/\/([^\/]*\.)?qjok9\.szm\.sk
+https?:\/\/([^\/]*\.)?qjt230\.com
+https?:\/\/([^\/]*\.)?qjvkvcd\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qklb4\.szm\.sk
+https?:\/\/([^\/]*\.)?qklhtf0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qknfl\.szm\.sk
+https?:\/\/([^\/]*\.)?qknpl\.info
+https?:\/\/([^\/]*\.)?qkpple2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qlpkce6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qltx2\.szm\.sk
+https?:\/\/([^\/]*\.)?qmjrpuo\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qnax1\.szm\.sk
+https?:\/\/([^\/]*\.)?qo-video-porn-gratis-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?qoclick\.com
+https?:\/\/([^\/]*\.)?qoeg6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qojodeh-bdsm-post-video-f\.blogspot\.com
+https?:\/\/([^\/]*\.)?qosmwx9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qpdoc\.com
+https?:\/\/([^\/]*\.)?qqdaj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qqer6\.szm\.sk
+https?:\/\/([^\/]*\.)?qqnbon4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qqwgp\.szm\.sk
+https?:\/\/([^\/]*\.)?qrvkof5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qsc7\.org\.ua
+https?:\/\/([^\/]*\.)?qsskk\.info
+https?:\/\/([^\/]*\.)?qtru3\.szm\.sk
+https?:\/\/([^\/]*\.)?qu-free-latina-sex-vide-wiv\.blogspot\.com
+https?:\/\/([^\/]*\.)?quails\.ipupdater\.us
+https?:\/\/([^\/]*\.)?quandugift\.com
+https?:\/\/([^\/]*\.)?queryguild\.com
+https?:\/\/([^\/]*\.)?quqob\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qutgmzbuje-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?qvewr\.szm\.sk
+https?:\/\/([^\/]*\.)?qvrzi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qvulp\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qwhhmaj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qwrn6\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?qxmk2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?qyda0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qyf99\.com
+https?:\/\/([^\/]*\.)?qypv5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qz\.informs\.com
+https?:\/\/([^\/]*\.)?qzjeqcv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?qzrhj\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?r-t-free-porn-video-clip-c\.blogspot\.com
+https?:\/\/([^\/]*\.)?racelleto\.dl\.pl
+https?:\/\/([^\/]*\.)?racer\.graphforum\.com
+https?:\/\/([^\/]*\.)?racerboc\.ephpbb\.com
+https?:\/\/([^\/]*\.)?rachel-hunter-as-stacys-mom\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?racnelelt\.fr-bb\.com
+https?:\/\/([^\/]*\.)?racoloboc\.graphforum\.com
+https?:\/\/([^\/]*\.)?racoloboc\.highforum\.net
+https?:\/\/([^\/]*\.)?racoloor\.dl\.pl
+https?:\/\/([^\/]*\.)?racrella\.dl\.pl
+https?:\/\/([^\/]*\.)?racsitli\.dl\.pl
+https?:\/\/([^\/]*\.)?ractrcna\.bb-fr\.com
+https?:\/\/([^\/]*\.)?racviget\.blogcu\.com
+https?:\/\/([^\/]*\.)?raezey\.blogspot\.com
+https?:\/\/([^\/]*\.)?raged\.info
+https?:\/\/([^\/]*\.)?rajzhze\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ramandrom\.com
+https?:\/\/([^\/]*\.)?randomlogik\.blogspot\.com
+https?:\/\/([^\/]*\.)?rappture\.blogspot\.com
+https?:\/\/([^\/]*\.)?raruzeol\.jconserv\.net
+https?:\/\/([^\/]*\.)?rate-boob-pic\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?ratonhteroad\.blogspot\.com
+https?:\/\/([^\/]*\.)?rawpussy-b0q\.blogspot\.com
+https?:\/\/([^\/]*\.)?rawpussy-com-t3l\.blogspot\.com
+https?:\/\/([^\/]*\.)?rawpussy-com-tawon6x\.blogspot\.com
+https?:\/\/([^\/]*\.)?raxm2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?razor-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?razor2scooter\.chat\.ru
+https?:\/\/([^\/]*\.)?rboub\.szm\.sk
+https?:\/\/([^\/]*\.)?rdavisinc\.com
+https?:\/\/([^\/]*\.)?re-advertising\.boom\.ru
+https?:\/\/([^\/]*\.)?re\.rutan\.org
+https?:\/\/([^\/]*\.)?readworld\.com
+https?:\/\/([^\/]*\.)?real-gay-sex-story\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?real-ringtoneserd\.blogspot\.com
+https?:\/\/([^\/]*\.)?realitsen\.info
+https?:\/\/([^\/]*\.)?realitypassplus-com-e34pddwt1\.blogspot\.com
+https?:\/\/([^\/]*\.)?realitypassplus-com-e7y\.blogspot\.com
+https?:\/\/([^\/]*\.)?realityporn\.coz\.in
+https?:\/\/([^\/]*\.)?realtimewatches\.info
+https?:\/\/([^\/]*\.)?realtors-x\.com
+https?:\/\/([^\/]*\.)?reboteen5\.blogspot\.com
+https?:\/\/([^\/]*\.)?rebuildsanmateohighschool\.org
+https?:\/\/([^\/]*\.)?recipe4you\.info
+https?:\/\/([^\/]*\.)?recupero-dati-hard-disk\.ll11\.info
+https?:\/\/([^\/]*\.)?redder\.my-wifi\.info
+https?:\/\/([^\/]*\.)?redfxo\.blogspot\.com
+https?:\/\/([^\/]*\.)?redsex4\.info
+https?:\/\/([^\/]*\.)?redtcyw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?reductildrug\.coz\.in
+https?:\/\/([^\/]*\.)?redway-org-d8u\.blogspot\.com
+https?:\/\/([^\/]*\.)?redway-org-dtxz0863\.blogspot\.com
+https?:\/\/([^\/]*\.)?redway-rla\.blogspot\.com
+https?:\/\/([^\/]*\.)?reeringtonesptl\.blogspot\.com
+https?:\/\/([^\/]*\.)?refinance-x\.com
+https?:\/\/([^\/]*\.)?reggdr\.org
+https?:\/\/([^\/]*\.)?regsh\.com
+https?:\/\/([^\/]*\.)?reiw9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rejoicing\.gigsweb\.com
+https?:\/\/([^\/]*\.)?rekara\.com
+https?:\/\/([^\/]*\.)?relagen\.orkan\.yi\.org
+https?:\/\/([^\/]*\.)?relalract\.lolforum\.net
+https?:\/\/([^\/]*\.)?relcadron\.bbgraf\.com
+https?:\/\/([^\/]*\.)?relcoli\.lightbb\.com
+https?:\/\/([^\/]*\.)?relics\.hackers-unite\.info
+https?:\/\/([^\/]*\.)?relmonric\.lolforum\.net
+https?:\/\/([^\/]*\.)?reloading-software\.lycan\.be
+https?:\/\/([^\/]*\.)?relsitelt\.darkbb\.com
+https?:\/\/([^\/]*\.)?relsitrel\.xa\.pl
+https?:\/\/([^\/]*\.)?reltaro\.lolbb\.com
+https?:\/\/([^\/]*\.)?remiza\.dtdns\.net
+https?:\/\/([^\/]*\.)?renova\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?rentbuscompany\.net
+https?:\/\/([^\/]*\.)?rentcarcenter\.com
+https?:\/\/([^\/]*\.)?rentcarok\.org
+https?:\/\/([^\/]*\.)?replacement-batteries\.loretic\.be
+https?:\/\/([^\/]*\.)?repq7\.szm\.sk
+https?:\/\/([^\/]*\.)?rerdiq4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?reshall\.iweb\.bsu\.edu
+https?:\/\/([^\/]*\.)?responderpal\.com
+https?:\/\/([^\/]*\.)?restless-leg--com\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?restless-leg-syndrome-com\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?retin-a\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?retirement1comm\.chat\.ru
+https?:\/\/([^\/]*\.)?returboc\.forumculture\.net
+https?:\/\/([^\/]*\.)?revitolantiaging\.com
+https?:\/\/([^\/]*\.)?rfjn0\.szm\.sk
+https?:\/\/([^\/]*\.)?rgvlg\.szm\.sk
+https?:\/\/([^\/]*\.)?rhdhh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rhinotickets\.com
+https?:\/\/([^\/]*\.)?rhn45\.nokedem\.com
+https?:\/\/([^\/]*\.)?rhodeislandmortgage-x\.com
+https?:\/\/([^\/]*\.)?rhooh\.flnet\.org
+https?:\/\/([^\/]*\.)?ri-hardcore-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?ricacelco\.dl\.pl
+https?:\/\/([^\/]*\.)?ricaldneu\.fr-bb\.com
+https?:\/\/([^\/]*\.)?riceltleto\.dl\.pl
+https?:\/\/([^\/]*\.)?ricetta-cucina\.host24h\.info
+https?:\/\/([^\/]*\.)?rich-r\.blogspot\.com
+https?:\/\/([^\/]*\.)?richards-realm-com-c4h\.blogspot\.com
+https?:\/\/([^\/]*\.)?richards-realm-com-cs\.blogspot\.com
+https?:\/\/([^\/]*\.)?riclarol\.dl\.pl
+https?:\/\/([^\/]*\.)?ricostruzione-unghia\.hostzz\.info
+https?:\/\/([^\/]*\.)?ricrelnel\.frbb\.net
+https?:\/\/([^\/]*\.)?rictaget\.uy\.pl
+https?:\/\/([^\/]*\.)?rictrocvar\.zikforum\.com
+https?:\/\/([^\/]*\.)?riczelur\.forumzen\.com
+https?:\/\/([^\/]*\.)?ridiaulctions\.blogspot\.com
+https?:\/\/([^\/]*\.)?right-leg-swelling\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?rigour\.info
+https?:\/\/([^\/]*\.)?rijulina\.dl\.pl
+https?:\/\/([^\/]*\.)?ring-tonecti\.blogspot\.com
+https?:\/\/([^\/]*\.)?ring2man\.chat\.ru
+https?:\/\/([^\/]*\.)?ring4man\.chat\.ru
+https?:\/\/([^\/]*\.)?ring4tel\.com
+https?:\/\/([^\/]*\.)?ringg\.info
+https?:\/\/([^\/]*\.)?ringtones-4phone\.com
+https?:\/\/([^\/]*\.)?ringtones-dir\.com
+https?:\/\/([^\/]*\.)?ringtones-dir\.net
+https?:\/\/([^\/]*\.)?ringtones-for-a-samsungtwt\.blogspot\.com
+https?:\/\/([^\/]*\.)?ringtones-rate\.com
+https?:\/\/([^\/]*\.)?ringtones\.blogharbor\.com
+https?:\/\/([^\/]*\.)?ringts\.269g\.net
+https?:\/\/([^\/]*\.)?risajno\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?risque-sexy-plus-size-lingerie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?rit\.edu
+https?:\/\/([^\/]*\.)?ritalin-without-prescription\.contact\.cc
+https?:\/\/([^\/]*\.)?ritalin\.myvnc\.com
+https?:\/\/([^\/]*\.)?river-road-motorcycle-boot\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?river\.greatfreehosting\.com
+https?:\/\/([^\/]*\.)?rivotril\.int\.tf
+https?:\/\/([^\/]*\.)?rm-ast-pants\.blogspot\.com
+https?:\/\/([^\/]*\.)?rmsq9\.szm\.sk
+https?:\/\/([^\/]*\.)?rmuuur3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rndk1\.szm\.sk
+https?:\/\/([^\/]*\.)?rnmg6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ro-westin\.blogspot\.com
+https?:\/\/([^\/]*\.)?robotqueen\.250free\.com
+https?:\/\/([^\/]*\.)?rochili\.alkablog\.com
+https?:\/\/([^\/]*\.)?rodar6or6\.dl\.pl
+https?:\/\/([^\/]*\.)?rodvww7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rogetou\.dl\.pl
+https?:\/\/([^\/]*\.)?rojeracr\.forumzen\.com
+https?:\/\/([^\/]*\.)?roketplanet\.weedns\.com
+https?:\/\/([^\/]*\.)?rokminric\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?rokzecdok\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?rolccna\.dl\.pl
+https?:\/\/([^\/]*\.)?rolcnac\.td\.pl
+https?:\/\/([^\/]*\.)?rolex\.heberg-forum\.net
+https?:\/\/([^\/]*\.)?rolexreplica\.269g\.net
+https?:\/\/([^\/]*\.)?rolica\.blogcu\.com
+https?:\/\/([^\/]*\.)?rollaolo\.blogcu\.com
+https?:\/\/([^\/]*\.)?rollatobas\.naturalforum\.net
+https?:\/\/([^\/]*\.)?rolracboc\.bb-fr\.com
+https?:\/\/([^\/]*\.)?roltrsit\.bbfr\.net
+https?:\/\/([^\/]*\.)?rom\.dl\.pl
+https?:\/\/([^\/]*\.)?romahotel\.org
+https?:\/\/([^\/]*\.)?romandie\.com
+https?:\/\/([^\/]*\.)?romanticmaui\.net
+https?:\/\/([^\/]*\.)?room-house\.jeepsyc\.be
+https?:\/\/([^\/]*\.)?root\.dns\.bz
+https?:\/\/([^\/]*\.)?roouvar\.dl\.pl
+https?:\/\/([^\/]*\.)?roricdom\.lightbb\.com
+https?:\/\/([^\/]*\.)?roseofgold52\.50webs\.com
+https?:\/\/([^\/]*\.)?rotl\.info
+https?:\/\/([^\/]*\.)?rotrocrol\.darkbb\.com
+https?:\/\/([^\/]*\.)?roundandbrown-com-bkb03g0hi\.blogspot\.com
+https?:\/\/([^\/]*\.)?roundandbrown-com-kp04\.blogspot\.com
+https?:\/\/([^\/]*\.)?roundandbrown-com-wqzj337l\.blogspot\.com
+https?:\/\/([^\/]*\.)?roundandbrown-com-wus56c\.blogspot\.com
+https?:\/\/([^\/]*\.)?routan\.org
+https?:\/\/([^\/]*\.)?roxyobsessed7\.blogspot\.com
+https?:\/\/([^\/]*\.)?rphqj\.szm\.sk
+https?:\/\/([^\/]*\.)?rqhdnj4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rqpwn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rrefr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rrgr4\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?rrlive\.info
+https?:\/\/([^\/]*\.)?rrsfmw7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rseo7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?rshu2\.szm\.sk
+https?:\/\/([^\/]*\.)?rsmy8\.szm\.sk
+https?:\/\/([^\/]*\.)?rthl0\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?rtugwoy\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ruanjian\.cwrjcn\.com
+https?:\/\/([^\/]*\.)?rucowdena\.ifrance\.com
+https?:\/\/([^\/]*\.)?rudecomputing\.com
+https?:\/\/([^\/]*\.)?rudu-adam\.blogspot\.com
+https?:\/\/([^\/]*\.)?ruimingwei\.com\.cn
+https?:\/\/([^\/]*\.)?rulurbuc\.forumzen\.com
+https?:\/\/([^\/]*\.)?runutr\.forumzen\.com
+https?:\/\/([^\/]*\.)?russiannudesgirlszxa\.blogspot\.com
+https?:\/\/([^\/]*\.)?russiapreteen\.com
+https?:\/\/([^\/]*\.)?russiavista\.sitiasp\.it
+https?:\/\/([^\/]*\.)?rwfe5\.szm\.sk
+https?:\/\/([^\/]*\.)?rxdate\.net
+https?:\/\/([^\/]*\.)?rxdfh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ryehfpz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ryhgsb\.com
+https?:\/\/([^\/]*\.)?ryryj\.szm\.sk
+https?:\/\/([^\/]*\.)?ryu-jounetsu\.blogspot\.com
+https?:\/\/([^\/]*\.)?rzwj8\.szm\.sk
+https?:\/\/([^\/]*\.)?s-r-free-porn-movie-clip-x\.blogspot\.com
+https?:\/\/([^\/]*\.)?s1xbucksamonkey\.blogspot\.com
+https?:\/\/([^\/]*\.)?s32\.bilsay\.com
+https?:\/\/([^\/]*\.)?saaaaa\.52blog\.net
+https?:\/\/([^\/]*\.)?safety-product\.hotmail\.ru
+https?:\/\/([^\/]*\.)?safety-product\.pochta\.ru
+https?:\/\/([^\/]*\.)?safety_product\.chat\.ru
+https?:\/\/([^\/]*\.)?sahezzz\.blogspot\.com
+https?:\/\/([^\/]*\.)?saibon\.com\.cn
+https?:\/\/([^\/]*\.)?sakura-watanuki\.blogspot\.com
+https?:\/\/([^\/]*\.)?salewroughtiron\.cn
+https?:\/\/([^\/]*\.)?sample-porn-clip-newst1x\.blogspot\.com
+https?:\/\/([^\/]*\.)?sample-porn-clip-zoneapa\.blogspot\.com
+https?:\/\/([^\/]*\.)?samsung-ringtonedta\.blogspot\.com
+https?:\/\/([^\/]*\.)?sand-stars\.blogspot\.com
+https?:\/\/([^\/]*\.)?sandra-teen-model-qux\.blogspot\.com
+https?:\/\/([^\/]*\.)?sangrandy\.com
+https?:\/\/([^\/]*\.)?sanhy\.com
+https?:\/\/([^\/]*\.)?sanpaulo\.flnet\.org
+https?:\/\/([^\/]*\.)?santjhon\.php5\.cz
+https?:\/\/([^\/]*\.)?sapphiceroticacom\.klose\.ipupdater\.com
+https?:\/\/([^\/]*\.)?sapphicparadise-com-r00asy\.blogspot\.com
+https?:\/\/([^\/]*\.)?sarobo\.com
+https?:\/\/([^\/]*\.)?satellite-tv\.hotmail\.ru
+https?:\/\/([^\/]*\.)?sauna-eq\.boom\.ru
+https?:\/\/([^\/]*\.)?sauna-heater\.boom\.ru
+https?:\/\/([^\/]*\.)?sauna-kit\.boom\.ru
+https?:\/\/([^\/]*\.)?sauna-room\.boom\.ru
+https?:\/\/([^\/]*\.)?saunaguide\.org
+https?:\/\/([^\/]*\.)?save-on-auto-insurance\.info
+https?:\/\/([^\/]*\.)?saved\.ddns\.info
+https?:\/\/([^\/]*\.)?sbarzn3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?scanthenet\.com
+https?:\/\/([^\/]*\.)?scat-fetish-story\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?school-driving\.info
+https?:\/\/([^\/]*\.)?school-girl-butt\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?school2home\.chat\.ru
+https?:\/\/([^\/]*\.)?sciensezero\.republika\.pl
+https?:\/\/([^\/]*\.)?scnh6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?scooter11\.chat\.ru
+https?:\/\/([^\/]*\.)?scooter2\.hotmail\.ru
+https?:\/\/([^\/]*\.)?screwedupmovies-com-a5wj\.blogspot\.com
+https?:\/\/([^\/]*\.)?screwedupmovies-com-ax\.blogspot\.com
+https?:\/\/([^\/]*\.)?scripts-cert\.mit\.edu
+https?:\/\/([^\/]*\.)?scscj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sdao7\.szm\.sk
+https?:\/\/([^\/]*\.)?sdfr0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sdfsfssss\.com
+https?:\/\/([^\/]*\.)?se4u\.net
+https?:\/\/([^\/]*\.)?seafordmed\.info
+https?:\/\/([^\/]*\.)?seainsurancegroup\.info
+https?:\/\/([^\/]*\.)?search4sex\.us
+https?:\/\/([^\/]*\.)?searchbigtits-com-apxd1hwatd\.blogspot\.com
+https?:\/\/([^\/]*\.)?searchbigtits-com-obraj\.blogspot\.com
+https?:\/\/([^\/]*\.)?searcheng\.com
+https?:\/\/([^\/]*\.)?searcheon\.com
+https?:\/\/([^\/]*\.)?searchgalleries-com-i7\.blogspot\.com
+https?:\/\/([^\/]*\.)?searchgalleries-com-ib2bi6on5\.blogspot\.com
+https?:\/\/([^\/]*\.)?searchgals-com-gu1810j\.blogspot\.com
+https?:\/\/([^\/]*\.)?searcholdies-com-msa\.blogspot\.com
+https?:\/\/([^\/]*\.)?searchsuperhit\.com
+https?:\/\/([^\/]*\.)?searchvids-com-h47g8mf\.blogspot\.com
+https?:\/\/([^\/]*\.)?seasonale\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?secure-network\.info
+https?:\/\/([^\/]*\.)?seeallhomes\.com
+https?:\/\/([^\/]*\.)?seeallnatural\.com
+https?:\/\/([^\/]*\.)?seeallsite\.com
+https?:\/\/([^\/]*\.)?seecomplete\.com
+https?:\/\/([^\/]*\.)?seehersquirt-com-k0\.blogspot\.com
+https?:\/\/([^\/]*\.)?seehersquirt-com-k3\.blogspot\.com
+https?:\/\/([^\/]*\.)?seekcounty\.com
+https?:\/\/([^\/]*\.)?seeyo\.info
+https?:\/\/([^\/]*\.)?segbqj1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sege-addison\.blogspot\.com
+https?:\/\/([^\/]*\.)?seho-aiyana\.blogspot\.com
+https?:\/\/([^\/]*\.)?sekapad\.info
+https?:\/\/([^\/]*\.)?sekbad\.info
+https?:\/\/([^\/]*\.)?selfbuying\.com
+https?:\/\/([^\/]*\.)?semarqua\.dl\.pl
+https?:\/\/([^\/]*\.)?senapier\.dl\.pl
+https?:\/\/([^\/]*\.)?send-flowers\.acb\.pl
+https?:\/\/([^\/]*\.)?sendon\.net\.cn
+https?:\/\/([^\/]*\.)?senlu\.com
+https?:\/\/([^\/]*\.)?sensorscity\.marshall\.edu
+https?:\/\/([^\/]*\.)?seo\.ohsu\.edu
+https?:\/\/([^\/]*\.)?seo88\.com
+https?:\/\/([^\/]*\.)?seomdahi\.jconserv\.net
+https?:\/\/([^\/]*\.)?seozone\.net
+https?:\/\/([^\/]*\.)?seranton\.blogspot\.com
+https?:\/\/([^\/]*\.)?sercheng\.com
+https?:\/\/([^\/]*\.)?serchlid\.com
+https?:\/\/([^\/]*\.)?serious-skin\.boom\.ru
+https?:\/\/([^\/]*\.)?serts\.blogshot\.nl
+https?:\/\/([^\/]*\.)?servemp3\.com
+https?:\/\/([^\/]*\.)?serversolutions\.us
+https?:\/\/([^\/]*\.)?servitch\.com
+https?:\/\/([^\/]*\.)?ses1\.info
+https?:\/\/([^\/]*\.)?sestrenish\.biografi\.org
+https?:\/\/([^\/]*\.)?setara\.dl\.pl
+https?:\/\/([^\/]*\.)?seventeenlive-com-bado3i\.blogspot\.com
+https?:\/\/([^\/]*\.)?seventeenlive-com-bmg\.blogspot\.com
+https?:\/\/([^\/]*\.)?seventeenlive-com-h4dw652dzl\.blogspot\.com
+https?:\/\/([^\/]*\.)?severnfollow\.info
+https?:\/\/([^\/]*\.)?sevtentoe\.blogspot\.com
+https?:\/\/([^\/]*\.)?sewingmachinesusa\.com
+https?:\/\/([^\/]*\.)?sex--x\.com
+https?:\/\/([^\/]*\.)?sex-clip-ce872\.blogspot\.com
+https?:\/\/([^\/]*\.)?sex-dating\.sexnation\.info
+https?:\/\/([^\/]*\.)?sex-movie-e8qbm\.blogspot\.com
+https?:\/\/([^\/]*\.)?sex-movie-qig\.blogspot\.com
+https?:\/\/([^\/]*\.)?sex-video-clip-haq3r\.blogspot\.com
+https?:\/\/([^\/]*\.)?sex-video-juz\.blogspot\.com
+https?:\/\/([^\/]*\.)?sex-without-condom\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?sex-woman-only-fuck\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?sex-xxx-free\.100freemb\.com
+https?:\/\/([^\/]*\.)?sex\.yeahost\.com
+https?:\/\/([^\/]*\.)?sex1movie\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexadultdating\.com
+https?:\/\/([^\/]*\.)?sexape-bpb0\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexape-com-chdaj7\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexape-com-cz4z44iud3\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexape-com-kw7623jxvd\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexape-com-qipil\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexape-mte7jm\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexdirectory-com-tbt0\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexegirls\.net
+https?:\/\/([^\/]*\.)?sexgrannies-com-d17v0sa\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexgrannies-com-dvg3lh0\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexmaxx-com-w2aoe7q\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexmaxx-com-w7\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexmaxx-com-wy23e2588\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexmaxx-kvhilzx76\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexnemo-com-joxud\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexnemo-com-r7iv5\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexnemo-com-rpj18ot\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexo-anal-teen\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?sexoasis-a00r68ac\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexoasis-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexoasis-hkz6z4fmr6\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-com-e2zci5\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-com-ew426c7qej\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-com-itvux\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-com-r6fjn1dz\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean-ibf53b\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexocean000\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexy-ass-and-leg\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?sexy-blonde-big-tit\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?sexy-busty-hot\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?sexy-knee-high-boot\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?sexy-leg-xxx\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?sexy-lesbian-having-sex\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?sexy-models-net-g13hqljr0\.blogspot\.com
+https?:\/\/([^\/]*\.)?sexy-teacher\.net
+https?:\/\/([^\/]*\.)?sexy\.dastish\.org
+https?:\/\/([^\/]*\.)?sexyst\.info
+https?:\/\/([^\/]*\.)?sfjo7\.szm\.sk
+https?:\/\/([^\/]*\.)?sftic\.szm\.sk
+https?:\/\/([^\/]*\.)?sfzone\.cn
+https?:\/\/([^\/]*\.)?sgkr3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?shaffelrecords\.com
+https?:\/\/([^\/]*\.)?shahang\.net
+https?:\/\/([^\/]*\.)?shakira-pa3t\.blogspot\.com
+https?:\/\/([^\/]*\.)?shakirafortner\.hostingweb\.us
+https?:\/\/([^\/]*\.)?shampoo\.moistri\.be
+https?:\/\/([^\/]*\.)?shavedgoat-com-hlfai1dvfb\.blogspot\.com
+https?:\/\/([^\/]*\.)?shbuscenter\.com
+https?:\/\/([^\/]*\.)?shcarcenter\.com
+https?:\/\/([^\/]*\.)?shdianjiang\.cn
+https?:\/\/([^\/]*\.)?sheji\.paim123\.com
+https?:\/\/([^\/]*\.)?shemale-action\.net
+https?:\/\/([^\/]*\.)?shemale-ebony-fuck\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?shemale-fuck-guys-com\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?shemale-no-cock\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?shemalefuckguy\.isabel\.dtdns\.net
+https?:\/\/([^\/]*\.)?shemales\.coz\.in
+https?:\/\/([^\/]*\.)?shemp-com-k1yng8\.blogspot\.com
+https?:\/\/([^\/]*\.)?shemp-com-kcutd\.blogspot\.com
+https?:\/\/([^\/]*\.)?shemp-com-zuhig\.blogspot\.com
+https?:\/\/([^\/]*\.)?shenzhenjp\.com
+https?:\/\/([^\/]*\.)?shesexy-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy-com-i1xf\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy-com-rugok\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy-com-w0dffbvzz\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy-gogub\.blogspot\.com
+https?:\/\/([^\/]*\.)?shesexy000\.blogspot\.com
+https?:\/\/([^\/]*\.)?shetelel\.jconserv\.net
+https?:\/\/([^\/]*\.)?shexpo2010\.com
+https?:\/\/([^\/]*\.)?shijiren\.com
+https?:\/\/([^\/]*\.)?shinylights\.org
+https?:\/\/([^\/]*\.)?shipeng\.net
+https?:\/\/([^\/]*\.)?shmoorge\.tripod\.com
+https?:\/\/([^\/]*\.)?shoesnike\.cn
+https?:\/\/([^\/]*\.)?shoesorder\.biz
+https?:\/\/([^\/]*\.)?shoesshop\.biz
+https?:\/\/([^\/]*\.)?shop24x7\.net
+https?:\/\/([^\/]*\.)?short-porn-clip-news8rj\.blogspot\.com
+https?:\/\/([^\/]*\.)?shoujicaixin\.com
+https?:\/\/([^\/]*\.)?shplaycenter\.cn
+https?:\/\/([^\/]*\.)?shredder-4paper\.boom\.ru
+https?:\/\/([^\/]*\.)?shredder-paper\.boom\.ru
+https?:\/\/([^\/]*\.)?shredder\.boom\.ru
+https?:\/\/([^\/]*\.)?shredder4paper\.chat\.ru
+https?:\/\/([^\/]*\.)?shrentcar\.com
+https?:\/\/([^\/]*\.)?shrudant\.jconserv\.net
+https?:\/\/([^\/]*\.)?shticketcenter\.com
+https?:\/\/([^\/]*\.)?shtiklmiaou\.fizwig\.com
+https?:\/\/([^\/]*\.)?shtranslate\.com
+https?:\/\/([^\/]*\.)?shufflequince\.org
+https?:\/\/([^\/]*\.)?siamforum\.com
+https?:\/\/([^\/]*\.)?siek2\.szm\.sk
+https?:\/\/([^\/]*\.)?sifa600\.com
+https?:\/\/([^\/]*\.)?sigla-cartoni-animati\.19mb\.info
+https?:\/\/([^\/]*\.)?sijalik\.blogspot\.com
+https?:\/\/([^\/]*\.)?sik-sapphicparadise-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?sildenafil-citrate\.perso\.tc
+https?:\/\/([^\/]*\.)?siliconpulse\.info
+https?:\/\/([^\/]*\.)?silly-n\.blogspot\.com
+https?:\/\/([^\/]*\.)?simply-gamine\.hostingweb\.us
+https?:\/\/([^\/]*\.)?simtershrapnel\.blogspot\.com
+https?:\/\/([^\/]*\.)?sinbiom\.blogspot\.com
+https?:\/\/([^\/]*\.)?sindyhalliday\.com
+https?:\/\/([^\/]*\.)?sinequanwithdrawal\.sblog\.cz
+https?:\/\/([^\/]*\.)?sineto\.net
+https?:\/\/([^\/]*\.)?sinfulcurves-com-obh\.blogspot\.com
+https?:\/\/([^\/]*\.)?singova\.org
+https?:\/\/([^\/]*\.)?siq-xxlmovies-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?sirloincentury\.org
+https?:\/\/([^\/]*\.)?sisus\.org
+https?:\/\/([^\/]*\.)?sitacsit\.goodforum\.net
+https?:\/\/([^\/]*\.)?sitacsit\.grafbb\.com
+https?:\/\/([^\/]*\.)?sitchi-or\.xa\.pl
+https?:\/\/([^\/]*\.)?sitdelcna\.lightbb\.com
+https?:\/\/([^\/]*\.)?sitdelta\.jc\.pl
+https?:\/\/([^\/]*\.)?sitdeltroc\.bbfr\.net
+https?:\/\/([^\/]*\.)?site\.voila\.fr
+https?:\/\/([^\/]*\.)?siteapts\.info
+https?:\/\/([^\/]*\.)?sitedating\.org
+https?:\/\/([^\/]*\.)?sitel\.goodforum\.net
+https?:\/\/([^\/]*\.)?sitel\.grafbb\.com
+https?:\/\/([^\/]*\.)?sitladar\.dl\.pl
+https?:\/\/([^\/]*\.)?sitorsit\.discutfree\.com
+https?:\/\/([^\/]*\.)?sittazel\.bb-fr\.com
+https?:\/\/([^\/]*\.)?sj-qh\.com
+https?:\/\/([^\/]*\.)?sjzwz\.com
+https?:\/\/([^\/]*\.)?skbrql5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?skelaxin\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?skelaxin800mg\.sblog\.cz
+https?:\/\/([^\/]*\.)?skin-care-tip\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-care\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?skin-diseas\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-disease\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-disease\.fromru\.com
+https?:\/\/([^\/]*\.)?skin-disease\.newmail\.ru
+https?:\/\/([^\/]*\.)?skin-product\.hotmail\.ru
+https?:\/\/([^\/]*\.)?skin-treat\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-treatm\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-treatment\.boom\.ru
+https?:\/\/([^\/]*\.)?skin-trt\.boom\.ru
+https?:\/\/([^\/]*\.)?skin1-disease\.boom\.ru
+https?:\/\/([^\/]*\.)?skin1disease\.chat\.ru
+https?:\/\/([^\/]*\.)?skin1tip4care\.chat\.ru
+https?:\/\/([^\/]*\.)?skin1treatment\.chat\.ru
+https?:\/\/([^\/]*\.)?skin_product\.chat\.ru
+https?:\/\/([^\/]*\.)?skincare\.ixdm\.info
+https?:\/\/([^\/]*\.)?skodasite\.info
+https?:\/\/([^\/]*\.)?skvonk\.blogspot\.com
+https?:\/\/([^\/]*\.)?skvvdm2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sleep-aids\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?sleepingsex\.coz\.in
+https?:\/\/([^\/]*\.)?slickgalleries-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?slickgalleries-com-acf4a01s86\.blogspot\.com
+https?:\/\/([^\/]*\.)?slots-wiki\.com
+https?:\/\/([^\/]*\.)?slutsvideos-com-mwnyvb2\.blogspot\.com
+https?:\/\/([^\/]*\.)?smack-dvd\.mutogen\.be
+https?:\/\/([^\/]*\.)?smackinghotlips\.blogspot\.com
+https?:\/\/([^\/]*\.)?smal\.php5\.cz
+https?:\/\/([^\/]*\.)?small-bubble-butt\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?smart\.45\.kg
+https?:\/\/([^\/]*\.)?smbay\.cn
+https?:\/\/([^\/]*\.)?smithtownelementarypta\.org
+https?:\/\/([^\/]*\.)?smkpe\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?smlwqj2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?smnvapnd-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?smolyak\.isuisse\.com
+https?:\/\/([^\/]*\.)?sms\.bjicp\.net
+https?:\/\/([^\/]*\.)?smsdown\.blogbus\.com
+https?:\/\/([^\/]*\.)?smut-house-com-c6t8hcv1be\.blogspot\.com
+https?:\/\/([^\/]*\.)?smutgremlins-com-a46sull\.blogspot\.com
+https?:\/\/([^\/]*\.)?smutgremlins-com-w6d7m6ji\.blogspot\.com
+https?:\/\/([^\/]*\.)?smutmaestro\.net
+https?:\/\/([^\/]*\.)?snafusurfer\.net
+https?:\/\/([^\/]*\.)?snakesworld-com-bye\.blogspot\.com
+https?:\/\/([^\/]*\.)?sneakercool\.com
+https?:\/\/([^\/]*\.)?sneakernice\.com
+https?:\/\/([^\/]*\.)?sneck\.info
+https?:\/\/([^\/]*\.)?snkfbl1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?snmcq\.szm\.sk
+https?:\/\/([^\/]*\.)?snorting-ritalin\.contact\.cc
+https?:\/\/([^\/]*\.)?snymk\.szm\.sk
+https?:\/\/([^\/]*\.)?so-big-tit-video-clip-kos\.blogspot\.com
+https?:\/\/([^\/]*\.)?so-home-sex-clip-god\.blogspot\.com
+https?:\/\/([^\/]*\.)?so-so-young-com-kk727o82n\.blogspot\.com
+https?:\/\/([^\/]*\.)?so1di\.info
+https?:\/\/([^\/]*\.)?soafacil\.com
+https?:\/\/([^\/]*\.)?socalmovies-com-enr61t\.blogspot\.com
+https?:\/\/([^\/]*\.)?socalmovies-com-oy08pp72i\.blogspot\.com
+https?:\/\/([^\/]*\.)?soccer-mom-sticker\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?socialsciencedeg\.chat\.ru
+https?:\/\/([^\/]*\.)?socsci\.mccneb\.edu
+https?:\/\/([^\/]*\.)?sodo0\.szm\.sk
+https?:\/\/([^\/]*\.)?sofiefie\.blogspot\.com
+https?:\/\/([^\/]*\.)?soft17-com-d1577f\.blogspot\.com
+https?:\/\/([^\/]*\.)?softcore-erotica\.net
+https?:\/\/([^\/]*\.)?software-engine\.org
+https?:\/\/([^\/]*\.)?softwarematrix\.org
+https?:\/\/([^\/]*\.)?sohardcore-com-r56bt\.blogspot\.com
+https?:\/\/([^\/]*\.)?soho0\.szm\.sk
+https?:\/\/([^\/]*\.)?solacemysoul\.blogspot\.com
+https?:\/\/([^\/]*\.)?solder\.lowestprices\.at
+https?:\/\/([^\/]*\.)?soler\.net\.cn
+https?:\/\/([^\/]*\.)?sologals-com-hs2xad\.blogspot\.com
+https?:\/\/([^\/]*\.)?sologals-grr5g3\.blogspot\.com
+https?:\/\/([^\/]*\.)?soma\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?soma\.homelinux\.com
+https?:\/\/([^\/]*\.)?soma\.int\.tf
+https?:\/\/([^\/]*\.)?soma\.php5\.cz
+https?:\/\/([^\/]*\.)?soma1\.skocz\.net
+https?:\/\/([^\/]*\.)?someshit\.ru
+https?:\/\/([^\/]*\.)?somqyxli-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?sonata\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?sonr4\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?sotremont\.ru
+https?:\/\/([^\/]*\.)?soulswallo\.blogspot\.com
+https?:\/\/([^\/]*\.)?soundandmossl\.com
+https?:\/\/([^\/]*\.)?southcarolinamortgage-x\.com
+https?:\/\/([^\/]*\.)?southdakotamortgage-x\.com
+https?:\/\/([^\/]*\.)?southtecrepair\.com
+https?:\/\/([^\/]*\.)?spacedim68\.blogspot\.com
+https?:\/\/([^\/]*\.)?spamim\.net
+https?:\/\/([^\/]*\.)?spawww\.info
+https?:\/\/([^\/]*\.)?spcw3\.szm\.sk
+https?:\/\/([^\/]*\.)?special-ringtones\.net
+https?:\/\/([^\/]*\.)?specific911\.biz
+https?:\/\/([^\/]*\.)?specific911\.org
+https?:\/\/([^\/]*\.)?speed-casino\.com
+https?:\/\/([^\/]*\.)?speens\.pass\.as
+https?:\/\/([^\/]*\.)?spermicide-trojan-condom\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?spermshack-al\.blogspot\.com
+https?:\/\/([^\/]*\.)?spermshack-com-bef\.blogspot\.com
+https?:\/\/([^\/]*\.)?spermshack-com-gee1\.blogspot\.com
+https?:\/\/([^\/]*\.)?spermshack-com-gtafrogps\.blogspot\.com
+https?:\/\/([^\/]*\.)?spermshack-g01u1\.blogspot\.com
+https?:\/\/([^\/]*\.)?spewie-com-mbntjlrkk\.blogspot\.com
+https?:\/\/([^\/]*\.)?spfwq\.zhengstar\.com
+https?:\/\/([^\/]*\.)?spice-girlpkg\.blogspot\.com
+https?:\/\/([^\/]*\.)?spirit-of-llama\.blogspot\.com
+https?:\/\/([^\/]*\.)?spirit-psyki\.ifrance\.com
+https?:\/\/([^\/]*\.)?spiserch\.com
+https?:\/\/([^\/]*\.)?splashka\.xhostar\.com
+https?:\/\/([^\/]*\.)?splendid-casino\.com
+https?:\/\/([^\/]*\.)?spoilzone\.epinoy\.com
+https?:\/\/([^\/]*\.)?spqi6\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?sprint-ringtonenot\.blogspot\.com
+https?:\/\/([^\/]*\.)?sprintringtonesxvt\.blogspot\.com
+https?:\/\/([^\/]*\.)?sprintringtoneuad\.blogspot\.com
+https?:\/\/([^\/]*\.)?spstestfree\.com\.com
+https?:\/\/([^\/]*\.)?spunkmonster\.net
+https?:\/\/([^\/]*\.)?spwnk\.szm\.sk
+https?:\/\/([^\/]*\.)?spxqly9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?spyware-adware-killer\.com
+https?:\/\/([^\/]*\.)?sqoi8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?squall\.my10gb\.com
+https?:\/\/([^\/]*\.)?sqvde\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sralua\.com
+https?:\/\/([^\/]*\.)?srarware\.com
+https?:\/\/([^\/]*\.)?srkyyca\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?srtongje\.republika\.pl
+https?:\/\/([^\/]*\.)?sruqsz3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ssdcard\.info
+https?:\/\/([^\/]*\.)?sslive\.info
+https?:\/\/([^\/]*\.)?sspwye7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sswingersss-777\.tripod\.com
+https?:\/\/([^\/]*\.)?st-pharmacy\.com
+https?:\/\/([^\/]*\.)?staa8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?staff\.jccc\.edu
+https?:\/\/([^\/]*\.)?stainlesssteelpipe\.net
+https?:\/\/([^\/]*\.)?stampa-foto-digitale\.ll11\.info
+https?:\/\/([^\/]*\.)?starcelebs-com-ewe5\.blogspot\.com
+https?:\/\/([^\/]*\.)?starcelebs-com-i3a2mxf\.blogspot\.com
+https?:\/\/([^\/]*\.)?starcelebs-wihuk\.blogspot\.com
+https?:\/\/([^\/]*\.)?starryland\.com\.cn
+https?:\/\/([^\/]*\.)?startchicks\.info
+https?:\/\/([^\/]*\.)?state-gay-marriage-legal\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?state-of-germany\.com
+https?:\/\/([^\/]*\.)?statisticpal\.com
+https?:\/\/([^\/]*\.)?stcc9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?steeen-s-bl\.blogspot\.com
+https?:\/\/([^\/]*\.)?steel-table-leg\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?stocking-fetish-video\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?stocking-movies-com-du1\.blogspot\.com
+https?:\/\/([^\/]*\.)?stocking-tease-b7gl\.blogspot\.com
+https?:\/\/([^\/]*\.)?stocking-tease-com-bm6h145g\.blogspot\.com
+https?:\/\/([^\/]*\.)?stockings\.coz\.in
+https?:\/\/([^\/]*\.)?stop-smoking\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?stpetersburg\.it
+https?:\/\/([^\/]*\.)?stphipps\.dl\.pl
+https?:\/\/([^\/]*\.)?strakac\.dtdns\.net
+https?:\/\/([^\/]*\.)?strange-bizarre-things\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?stranieriinitalia\.org
+https?:\/\/([^\/]*\.)?straponpost\.net
+https?:\/\/([^\/]*\.)?street-poker\.com
+https?:\/\/([^\/]*\.)?streetmp3\.com
+https?:\/\/([^\/]*\.)?strega\.us
+https?:\/\/([^\/]*\.)?strip-tease-video-bb-bb-z\.blogspot\.com
+https?:\/\/([^\/]*\.)?strongsong\.republika\.pl
+https?:\/\/([^\/]*\.)?structure-settlement\.hotmail\.ru
+https?:\/\/([^\/]*\.)?sts\.ucsd\.edu
+https?:\/\/([^\/]*\.)?students\.hsc\.unt\.edu
+https?:\/\/([^\/]*\.)?study-us\.cn
+https?:\/\/([^\/]*\.)?stvincent\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?stydx\.szm\.sk
+https?:\/\/([^\/]*\.)?sublimedirectory-com-otb\.blogspot\.com
+https?:\/\/([^\/]*\.)?sublimemovies-com-wdvh2wmm3\.blogspot\.com
+https?:\/\/([^\/]*\.)?sublimepie-com-e8g3dw2\.blogspot\.com
+https?:\/\/([^\/]*\.)?sudanportal\.mrcc\.aast\.edu
+https?:\/\/([^\/]*\.)?suede-cowboy-boot\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?suicidexlove\.blogspot\.com
+https?:\/\/([^\/]*\.)?sumeshi0206\.dyndns\.org
+https?:\/\/([^\/]*\.)?sunaseth\.blogspot\.com
+https?:\/\/([^\/]*\.)?sunp\.com
+https?:\/\/([^\/]*\.)?sunporno-com-avbxn\.blogspot\.com
+https?:\/\/([^\/]*\.)?sunporno-com-go5\.blogspot\.com
+https?:\/\/([^\/]*\.)?sunsetdreamscondo\.com
+https?:\/\/([^\/]*\.)?sunsky365\.net
+https?:\/\/([^\/]*\.)?superadultdirect\.info
+https?:\/\/([^\/]*\.)?supercalcinhas-com-rij\.blogspot\.com
+https?:\/\/([^\/]*\.)?superdiosas-com-tm5k7f1v3\.blogspot\.com
+https?:\/\/([^\/]*\.)?superfinancesolutions\.com
+https?:\/\/([^\/]*\.)?supergirls\.pochta\.ru
+https?:\/\/([^\/]*\.)?superha\.angelcities\.com
+https?:\/\/([^\/]*\.)?superinsuranceworld\.info
+https?:\/\/([^\/]*\.)?superinternetexplorer\.info
+https?:\/\/([^\/]*\.)?supershare\.cn
+https?:\/\/([^\/]*\.)?suphost\.info
+https?:\/\/([^\/]*\.)?supplements\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?supplements\.mylonso\.be
+https?:\/\/([^\/]*\.)?supplierlist\.com
+https?:\/\/([^\/]*\.)?surfacing\.101freehost\.com
+https?:\/\/([^\/]*\.)?surmontil\.sblog\.cz
+https?:\/\/([^\/]*\.)?suxwyj-free-porn\.blogspot\.com
+https?:\/\/([^\/]*\.)?suzoro-amateur-sex-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?suzulan\.blogspot\.com
+https?:\/\/([^\/]*\.)?svetys9i\.125mb\.com
+https?:\/\/([^\/]*\.)?svike\.info
+https?:\/\/([^\/]*\.)?swdella\.ifrance\.com
+https?:\/\/([^\/]*\.)?swechat\.republika\.pl
+https?:\/\/([^\/]*\.)?sweet-krissy\.babubi\.net
+https?:\/\/([^\/]*\.)?sweetpniangel87\.blogspot\.com
+https?:\/\/([^\/]*\.)?swingersadult\.net
+https?:\/\/([^\/]*\.)?sx\.nazari\.org
+https?:\/\/([^\/]*\.)?sx\.z0rz\.com
+https?:\/\/([^\/]*\.)?sxwliwe\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?sy-casino\.com
+https?:\/\/([^\/]*\.)?sygz\.51mp4mp3\.com
+https?:\/\/([^\/]*\.)?sylvan-queen\.iespana\.es
+https?:\/\/([^\/]*\.)?symphony\.8tt\.org
+https?:\/\/([^\/]*\.)?symptom-of-allergic-reaction-to-latex-condom\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?symy\.jp
+https?:\/\/([^\/]*\.)?synnin-viemaa\.blogspot\.com
+https?:\/\/([^\/]*\.)?sz-cj\.com
+https?:\/\/([^\/]*\.)?sz-dongtai\.com
+https?:\/\/([^\/]*\.)?sz-tianyicn\.com
+https?:\/\/([^\/]*\.)?sz4a\.cn
+https?:\/\/([^\/]*\.)?szarts\.com
+https?:\/\/([^\/]*\.)?szbeiyang\.net
+https?:\/\/([^\/]*\.)?szhangkong\.com
+https?:\/\/([^\/]*\.)?szhjc\.net
+https?:\/\/([^\/]*\.)?szhowfine\.com
+https?:\/\/([^\/]*\.)?szhx\.ebloggy\.com
+https?:\/\/([^\/]*\.)?szhxseo\.com
+https?:\/\/([^\/]*\.)?szjiuli\.com
+https?:\/\/([^\/]*\.)?szjiuli\.ebloggy\.com
+https?:\/\/([^\/]*\.)?szjpnet\.ebloggy\.com
+https?:\/\/([^\/]*\.)?szjyhk\.com
+https?:\/\/([^\/]*\.)?szlawyer\.home4u\.china\.com
+https?:\/\/([^\/]*\.)?szlichuang\.cn
+https?:\/\/([^\/]*\.)?szlszx\.com
+https?:\/\/([^\/]*\.)?sznuts\.cn
+https?:\/\/([^\/]*\.)?szpptc\.com
+https?:\/\/([^\/]*\.)?szsc-car\.com
+https?:\/\/([^\/]*\.)?szsfbq\.com
+https?:\/\/([^\/]*\.)?szyongjin\.ebloggy\.com
+https?:\/\/([^\/]*\.)?szzhuce\.home4u\.china\.com
+https?:\/\/([^\/]*\.)?t-sonnaya\.blogspot\.com
+https?:\/\/([^\/]*\.)?t-teens-for\.blogspot\.com
+https?:\/\/([^\/]*\.)?t\.tl
+https?:\/\/([^\/]*\.)?tabarlie\.forumzen\.com
+https?:\/\/([^\/]*\.)?tabgand\.info
+https?:\/\/([^\/]*\.)?tablitki\.xwiki\.com
+https?:\/\/([^\/]*\.)?taboo-porn-clip-blogeq2\.blogspot\.com
+https?:\/\/([^\/]*\.)?tackle\.247ihost\.com
+https?:\/\/([^\/]*\.)?tacomanissansubaru\.info
+https?:\/\/([^\/]*\.)?tactroc\.dl\.pl
+https?:\/\/([^\/]*\.)?tadalafil-\.ql\.st
+https?:\/\/([^\/]*\.)?tadalafil\.scanthenet\.com
+https?:\/\/([^\/]*\.)?tadalafil\.skocz\.net
+https?:\/\/([^\/]*\.)?tadalafil35\.lookscool\.com
+https?:\/\/([^\/]*\.)?taefis\.com
+https?:\/\/([^\/]*\.)?tagetboc\.darkbb\.com
+https?:\/\/([^\/]*\.)?talj5\.szm\.sk
+https?:\/\/([^\/]*\.)?tanoli\.su\.pl
+https?:\/\/([^\/]*\.)?tanorol\.dl\.pl
+https?:\/\/([^\/]*\.)?taouolo\.dl\.pl
+https?:\/\/([^\/]*\.)?tapz3\.szm\.sk
+https?:\/\/([^\/]*\.)?taracdom\.heavenforum\.com
+https?:\/\/([^\/]*\.)?tarfol\.com
+https?:\/\/([^\/]*\.)?target-oo6qbtx\.blogspot\.com
+https?:\/\/([^\/]*\.)?taria-m4j\.blogspot\.com
+https?:\/\/([^\/]*\.)?taricdam\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?tarkupu\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?taroelt\.bb-fr\.com
+https?:\/\/([^\/]*\.)?tarra-i6vqa54v\.blogspot\.com
+https?:\/\/([^\/]*\.)?tart0938\.blogspot\.com
+https?:\/\/([^\/]*\.)?taryn-hgxikm27y\.blogspot\.com
+https?:\/\/([^\/]*\.)?tarzuf\.com
+https?:\/\/([^\/]*\.)?tasculio\.forumzen\.com
+https?:\/\/([^\/]*\.)?tasha-rup0n3a\.blogspot\.com
+https?:\/\/([^\/]*\.)?tashia-w1evjakk7\.blogspot\.com
+https?:\/\/([^\/]*\.)?tasia-emtoy\.blogspot\.com
+https?:\/\/([^\/]*\.)?tasimd\.com
+https?:\/\/([^\/]*\.)?tasizuwann-tm7y\.blogspot\.com
+https?:\/\/([^\/]*\.)?tasnin\.com
+https?:\/\/([^\/]*\.)?tate-dt\.blogspot\.com
+https?:\/\/([^\/]*\.)?tateyana-c8s1ms4ai\.blogspot\.com
+https?:\/\/([^\/]*\.)?tateyona-br48\.blogspot\.com
+https?:\/\/([^\/]*\.)?tatrocbas\.dl\.pl
+https?:\/\/([^\/]*\.)?tatrocmon\.dl\.pl
+https?:\/\/([^\/]*\.)?tattoo-ojqmc35d\.blogspot\.com
+https?:\/\/([^\/]*\.)?tatum-mlzsfqw\.blogspot\.com
+https?:\/\/([^\/]*\.)?tatumn-i4anj15\.blogspot\.com
+https?:\/\/([^\/]*\.)?tatyiana-kwg0ud8fqf\.blogspot\.com
+https?:\/\/([^\/]*\.)?tauntianna-h6\.blogspot\.com
+https?:\/\/([^\/]*\.)?taurus-gx\.blogspot\.com
+https?:\/\/([^\/]*\.)?tayamarn\.blogspot\.com
+https?:\/\/([^\/]*\.)?taydem-wdm6rxd328\.blogspot\.com
+https?:\/\/([^\/]*\.)?taydra-ejk45\.blogspot\.com
+https?:\/\/([^\/]*\.)?tayla-t7b\.blogspot\.com
+https?:\/\/([^\/]*\.)?tayler-cfez\.blogspot\.com
+https?:\/\/([^\/]*\.)?taylor-bof5\.blogspot\.com
+https?:\/\/([^\/]*\.)?taylorbow-com-il3f4ae\.blogspot\.com
+https?:\/\/([^\/]*\.)?taylorbow-com-inbg2nw\.blogspot\.com
+https?:\/\/([^\/]*\.)?taynafrates\.freetzi\.com
+https?:\/\/([^\/]*\.)?taysha-avsm8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tazman-m6\.blogspot\.com
+https?:\/\/([^\/]*\.)?tbgbnt5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tbns\.net
+https?:\/\/([^\/]*\.)?tbrgxjv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tcsgn\.szm\.sk
+https?:\/\/([^\/]*\.)?tczxwwz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tczxxm6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tdzkzkt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tdzl\.sunp\.com
+https?:\/\/([^\/]*\.)?tea-imk7ry1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tea-pot\.keckins\.be
+https?:\/\/([^\/]*\.)?teacher-fucking-free\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?teacher-km\.blogspot\.com
+https?:\/\/([^\/]*\.)?teaching1degree\.chat\.ru
+https?:\/\/([^\/]*\.)?teainfo\.org
+https?:\/\/([^\/]*\.)?teamsquirt-com-kjcj3u3i\.blogspot\.com
+https?:\/\/([^\/]*\.)?tear\.hostcroc\.com
+https?:\/\/([^\/]*\.)?tech-txyvo8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tech\.china\.com
+https?:\/\/([^\/]*\.)?techinpet\.blogspot\.com
+https?:\/\/([^\/]*\.)?technical-school\.fromru\.com
+https?:\/\/([^\/]*\.)?technical-school\.hotmail\.ru
+https?:\/\/([^\/]*\.)?technical-school\.newmail\.ru
+https?:\/\/([^\/]*\.)?technical1school\.chat\.ru
+https?:\/\/([^\/]*\.)?teen-anal-cum-shot\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?teen-blonde-beauty\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?teen-blow-job-movie\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?teen-boob-fuck\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?teen-boob-porn\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?teen-buff\.net
+https?:\/\/([^\/]*\.)?teen-chick-masturbating\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?teen-facial-fuck\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?teen-feet-bew\.blogspot\.com
+https?:\/\/([^\/]*\.)?teen-internal-cum-shot\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?teen-kelly-lesbian\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?teen-movie\.freeinsite\.net
+https?:\/\/([^\/]*\.)?teen-porn-clip-newsyk6\.blogspot\.com
+https?:\/\/([^\/]*\.)?teen-sex-movie-f-d-t\.blogspot\.com
+https?:\/\/([^\/]*\.)?teen-sex-video-w8jpk\.blogspot\.com
+https?:\/\/([^\/]*\.)?teen-zips\.babubi\.net
+https?:\/\/([^\/]*\.)?teen6\.vdforum\.ru
+https?:\/\/([^\/]*\.)?teenax-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenax-com-pidoq\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenax-com-rh0ssu62yh\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenax-com-rke6\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenbe-com-bdp\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenbe-com-mb6x\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenbe-com-mh03o\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenblowjobs\.vdforum\.ru
+https?:\/\/([^\/]*\.)?teenboat-com-g6\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenboat-com-g6f103r\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenboat-com-mu1s7p\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenboat-e76l\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenboys-wel\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenel-com-hhd\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenel-com-hq0sgbm\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniefiles-com-g84lu\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniefiles-com-o43\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniefiles-com-ob782u\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniemovies-com-aptqg\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniemovies-com-as\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniemovies-com-hinof\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeniesxxx-b00\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenmodels\.hostingtree\.org
+https?:\/\/([^\/]*\.)?teenporn\.vdforum\.ru
+https?:\/\/([^\/]*\.)?teenpornrur\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenpussyfhv\.blogspot\.com
+https?:\/\/([^\/]*\.)?teens-chat\.info
+https?:\/\/([^\/]*\.)?teens-list-b-all\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenseven-com-c0jvb2z\.blogspot\.com
+https?:\/\/([^\/]*\.)?teensex-com-c4w3g\.blogspot\.com
+https?:\/\/([^\/]*\.)?teensex-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?teensex\.adultserv\.info
+https?:\/\/([^\/]*\.)?teensss-com-b8s44\.blogspot\.com
+https?:\/\/([^\/]*\.)?teensss-com-tds\.blogspot\.com
+https?:\/\/([^\/]*\.)?teensss-com-thrd\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentera-com-d5j3qqs\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentera-com-dyty5cv\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentera-com-w65\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentiger-com-e4e6i2f\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentiger-com-eo602\.blogspot\.com
+https?:\/\/([^\/]*\.)?teentiger-com-fozol\.blogspot\.com
+https?:\/\/([^\/]*\.)?teeny-boppers-club-beg\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenybopperclub-com-bgqk6ejjv\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenybopperclub-com-bukb\.blogspot\.com
+https?:\/\/([^\/]*\.)?teenybopperclub-segod\.blogspot\.com
+https?:\/\/([^\/]*\.)?tegan-d1yagb\.blogspot\.com
+https?:\/\/([^\/]*\.)?tehxm\.szm\.sk
+https?:\/\/([^\/]*\.)?tehya-csxo8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tehyana-bg3\.blogspot\.com
+https?:\/\/([^\/]*\.)?tekd8\.szm\.sk
+https?:\/\/([^\/]*\.)?tekiartur\.xhostar\.com
+https?:\/\/([^\/]*\.)?tekila-a5x7\.blogspot\.com
+https?:\/\/([^\/]*\.)?tela-ou3khz\.blogspot\.com
+https?:\/\/([^\/]*\.)?telenglish\.com\.cn
+https?:\/\/([^\/]*\.)?telephone-ip\.blogspot\.com
+https?:\/\/([^\/]*\.)?telnushka\.blogspot\.com
+https?:\/\/([^\/]*\.)?temazepam\.xwiki\.com
+https?:\/\/([^\/]*\.)?temma-k1n03ege\.blogspot\.com
+https?:\/\/([^\/]*\.)?temp-h33\.blogspot\.com
+https?:\/\/([^\/]*\.)?temptation-gujlu2\.blogspot\.com
+https?:\/\/([^\/]*\.)?ten-ra66722hs5\.blogspot\.com
+https?:\/\/([^\/]*\.)?tenea-w1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tenisha-e6f\.blogspot\.com
+https?:\/\/([^\/]*\.)?tennasa-ttk2oqe4m\.blogspot\.com
+https?:\/\/([^\/]*\.)?tennesseemortgage-x\.com
+https?:\/\/([^\/]*\.)?tennille-dm\.blogspot\.com
+https?:\/\/([^\/]*\.)?tennis-ca8swtk\.blogspot\.com
+https?:\/\/([^\/]*\.)?tenor-saxophone-fingering\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?tenuate\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?teopoo\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?teplomer\.dtdns\.net
+https?:\/\/([^\/]*\.)?tequila-be5\.blogspot\.com
+https?:\/\/([^\/]*\.)?teresanict-oorzzsxmjd\.blogspot\.com
+https?:\/\/([^\/]*\.)?teri-m84ywv38\.blogspot\.com
+https?:\/\/([^\/]*\.)?terika-i10\.blogspot\.com
+https?:\/\/([^\/]*\.)?term-paper\.fromru\.com
+https?:\/\/([^\/]*\.)?term-paper\.nm\.ru
+https?:\/\/([^\/]*\.)?term_paper\.chat\.ru
+https?:\/\/([^\/]*\.)?terminal-h0o2cfsibt\.blogspot\.com
+https?:\/\/([^\/]*\.)?terri-gqdjfrm33d\.blogspot\.com
+https?:\/\/([^\/]*\.)?terrianna-ru\.blogspot\.com
+https?:\/\/([^\/]*\.)?terrin-wmwxu3v\.blogspot\.com
+https?:\/\/([^\/]*\.)?terriona-erbvdaj\.blogspot\.com
+https?:\/\/([^\/]*\.)?terry-tqzto0ek\.blogspot\.com
+https?:\/\/([^\/]*\.)?terryikah-dhw46164c2\.blogspot\.com
+https?:\/\/([^\/]*\.)?terryiona-czcng\.blogspot\.com
+https?:\/\/([^\/]*\.)?terryn-b8p04mxhn2\.blogspot\.com
+https?:\/\/([^\/]*\.)?tess-oybaa0ng\.blogspot\.com
+https?:\/\/([^\/]*\.)?tessa-mugg\.blogspot\.com
+https?:\/\/([^\/]*\.)?test1\.com
+https?:\/\/([^\/]*\.)?test123-kpgwe3vie4\.blogspot\.com
+https?:\/\/([^\/]*\.)?test2-h6qofysx\.blogspot\.com
+https?:\/\/([^\/]*\.)?test2\.com
+https?:\/\/([^\/]*\.)?test3\.com
+https?:\/\/([^\/]*\.)?testmutherfucker\.com
+https?:\/\/([^\/]*\.)?testtest-g14\.blogspot\.com
+https?:\/\/([^\/]*\.)?tetteteent\.blogspot\.com
+https?:\/\/([^\/]*\.)?tettgwk\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?texas-hold-em-winner\.net
+https?:\/\/([^\/]*\.)?texas-hold-em\.black-poker\.com
+https?:\/\/([^\/]*\.)?texas-holdem-poker\.us\.com
+https?:\/\/([^\/]*\.)?texas-holdem-winner\.com
+https?:\/\/([^\/]*\.)?texas-holdem\.black-poker\.com
+https?:\/\/([^\/]*\.)?texas-rvmu1a0\.blogspot\.com
+https?:\/\/([^\/]*\.)?texas-va-loan\.com
+https?:\/\/([^\/]*\.)?texasdad\.com
+https?:\/\/([^\/]*\.)?texasholdem2\.com
+https?:\/\/([^\/]*\.)?texasholdemcenteral\.com
+https?:\/\/([^\/]*\.)?texasholdemsite\.net
+https?:\/\/([^\/]*\.)?texasmortgage-x\.com
+https?:\/\/([^\/]*\.)?teyana-wtpu\.blogspot\.com
+https?:\/\/([^\/]*\.)?teylore-ew24\.blogspot\.com
+https?:\/\/([^\/]*\.)?tez-teenybopperclub-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?tgao2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tgksg\.szm\.sk
+https?:\/\/([^\/]*\.)?tgp-movie-facial\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?tgpprincess\.net
+https?:\/\/([^\/]*\.)?tgpseeker\.net
+https?:\/\/([^\/]*\.)?thailand-t865\.blogspot\.com
+https?:\/\/([^\/]*\.)?thalia-d125yh\.blogspot\.com
+https?:\/\/([^\/]*\.)?thalya-cgjm\.blogspot\.com
+https?:\/\/([^\/]*\.)?thbxg\.szm\.sk
+https?:\/\/([^\/]*\.)?the-amberlady\.blogspot\.com
+https?:\/\/([^\/]*\.)?the-craftman\.blogspot\.com
+https?:\/\/([^\/]*\.)?the-female-orgasm-com-h1sx\.blogspot\.com
+https?:\/\/([^\/]*\.)?the-female-orgasm-com-h8qf5l27j\.blogspot\.com
+https?:\/\/([^\/]*\.)?the-most-biggest-boob-in-the-world\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?the-murderer\.blogspot\.com
+https?:\/\/([^\/]*\.)?the-roulette\.net
+https?:\/\/([^\/]*\.)?theaddedtouch\.net
+https?:\/\/([^\/]*\.)?theaf\.info
+https?:\/\/([^\/]*\.)?theaftor\.com
+https?:\/\/([^\/]*\.)?theag\.info
+https?:\/\/([^\/]*\.)?theap\.info
+https?:\/\/([^\/]*\.)?theas\.info
+https?:\/\/([^\/]*\.)?theat\.info
+https?:\/\/([^\/]*\.)?theaw\.info
+https?:\/\/([^\/]*\.)?thebestjaguar\.info
+https?:\/\/([^\/]*\.)?thebigswallow-com-khcs\.blogspot\.com
+https?:\/\/([^\/]*\.)?thebigswallow-com-kp3hmbl2e\.blogspot\.com
+https?:\/\/([^\/]*\.)?thebondbroker\.info
+https?:\/\/([^\/]*\.)?thecardinaleempire\.com
+https?:\/\/([^\/]*\.)?thechryslerjeep\.info
+https?:\/\/([^\/]*\.)?thedailywash\.blogspot\.com
+https?:\/\/([^\/]*\.)?thedrivingsite\.info
+https?:\/\/([^\/]*\.)?theente\.com
+https?:\/\/([^\/]*\.)?thefiatspider\.info
+https?:\/\/([^\/]*\.)?thehomeworkco\.com
+https?:\/\/([^\/]*\.)?theiconclub\.info
+https?:\/\/([^\/]*\.)?theillegalcause\.blogspot\.com
+https?:\/\/([^\/]*\.)?thejaguarracing\.cn
+https?:\/\/([^\/]*\.)?thejaguarracing\.info
+https?:\/\/([^\/]*\.)?theking-ox0p87\.blogspot\.com
+https?:\/\/([^\/]*\.)?theluckyman\.magnesia\.dtdns\.net
+https?:\/\/([^\/]*\.)?theman-mbvc\.blogspot\.com
+https?:\/\/([^\/]*\.)?themazdaspeed\.info
+https?:\/\/([^\/]*\.)?themoblogs\.com
+https?:\/\/([^\/]*\.)?theofe\.com
+https?:\/\/([^\/]*\.)?theorless\.com
+https?:\/\/([^\/]*\.)?theorrent\.com
+https?:\/\/([^\/]*\.)?thepartyplaza\.info
+https?:\/\/([^\/]*\.)?theresa-ipvfeka0y\.blogspot\.com
+https?:\/\/([^\/]*\.)?thesam118\.blogspot\.com
+https?:\/\/([^\/]*\.)?theseeall\.com
+https?:\/\/([^\/]*\.)?theslots\.biz
+https?:\/\/([^\/]*\.)?thesmart-casino\.com
+https?:\/\/([^\/]*\.)?thesportspark\.net
+https?:\/\/([^\/]*\.)?thessaloni-ka8qpmq7\.blogspot\.com
+https?:\/\/([^\/]*\.)?thestartrekuniverse\.net
+https?:\/\/([^\/]*\.)?thetexasholdpoker\.com
+https?:\/\/([^\/]*\.)?thetrafficproject\.com
+https?:\/\/([^\/]*\.)?thetruevoyeur-com-gkjz2m\.blogspot\.com
+https?:\/\/([^\/]*\.)?thetruevoyeur-com-gy0\.blogspot\.com
+https?:\/\/([^\/]*\.)?thetruevoyeur-com-iuswifnlo\.blogspot\.com
+https?:\/\/([^\/]*\.)?thewarhal\.com
+https?:\/\/([^\/]*\.)?thexe\.info
+https?:\/\/([^\/]*\.)?thexo\.info
+https?:\/\/([^\/]*\.)?thg\.org\.ua
+https?:\/\/([^\/]*\.)?thick-ass-movie\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?thick-ass-stripper\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?thick-black-ass-pic\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?thigh-boot-movie\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?thiyanna-hl74o5m\.blogspot\.com
+https?:\/\/([^\/]*\.)?thomarina-gt\.blogspot\.com
+https?:\/\/([^\/]*\.)?thomas-r6ik\.blogspot\.com
+https?:\/\/([^\/]*\.)?thomasina-wpcw\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongbattle-com-rtrllksm\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongbattle-com-rx2f2tcqrm\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongdreams-com-w0r16sf\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongdreams-com-wq50\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongdreams-com-wx67\.blogspot\.com
+https?:\/\/([^\/]*\.)?thongdreams-com-xehiw\.blogspot\.com
+https?:\/\/([^\/]*\.)?thornblack-eq3a55o4\.blogspot\.com
+https?:\/\/([^\/]*\.)?three-to8p73\.blogspot\.com
+https?:\/\/([^\/]*\.)?threesforest\.blogspot\.com
+https?:\/\/([^\/]*\.)?thugs-djaox\.blogspot\.com
+https?:\/\/([^\/]*\.)?thugz-cqi0x7wkb6\.blogspot\.com
+https?:\/\/([^\/]*\.)?thumbzilla-com-mq\.blogspot\.com
+https?:\/\/([^\/]*\.)?thumbzilla-com-mqtw65e\.blogspot\.com
+https?:\/\/([^\/]*\.)?thumper-bs3t1\.blogspot\.com
+https?:\/\/([^\/]*\.)?thunder-aq\.blogspot\.com
+https?:\/\/([^\/]*\.)?thunder\.hostonmars\.com
+https?:\/\/([^\/]*\.)?thursday-om2jka\.blogspot\.com
+https?:\/\/([^\/]*\.)?thusqus\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?thx1138-mh86v55t2\.blogspot\.com
+https?:\/\/([^\/]*\.)?tia-icc0gbqhya\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiahaat\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tiahnna-kf24x7i4n\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiaja-hr4ci\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiana-g12f0\.blogspot\.com
+https?:\/\/([^\/]*\.)?tianna-r4s2r44e50\.blogspot\.com
+https?:\/\/([^\/]*\.)?tianti\.com\.cn
+https?:\/\/([^\/]*\.)?tiava-com-i60\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiava-com-i73ph\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiava-fiduh\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiava-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiava-tqfgkv74\.blogspot\.com
+https?:\/\/([^\/]*\.)?tibisa-e5d1w5g\.blogspot\.com
+https?:\/\/([^\/]*\.)?ticket\.hostaim\.com
+https?:\/\/([^\/]*\.)?ticketcenter\.cn
+https?:\/\/([^\/]*\.)?tied-gay-bondage\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?tiepin\.my10gb\.com
+https?:\/\/([^\/]*\.)?tieteler\.jconserv\.net
+https?:\/\/([^\/]*\.)?tiffani-dvy3\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiffany-b5arc\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiffany-teen-video-ces\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiffanyteen-a75atrdr\.blogspot\.com
+https?:\/\/([^\/]*\.)?tigers-ows\.blogspot\.com
+https?:\/\/([^\/]*\.)?tigger-muhul2h8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tight-ik340a6f\.blogspot\.com
+https?:\/\/([^\/]*\.)?tight-tranny-ass\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?tightdelights-com-bayzdrm4r\.blogspot\.com
+https?:\/\/([^\/]*\.)?tightdelights-com-bproar5r\.blogspot\.com
+https?:\/\/([^\/]*\.)?tigre-k0qdp\.blogspot\.com
+https?:\/\/([^\/]*\.)?tijldebie\.net
+https?:\/\/([^\/]*\.)?tilneshia-r1\.blogspot\.com
+https?:\/\/([^\/]*\.)?timank\.com
+https?:\/\/([^\/]*\.)?timelee\.pp\.ru
+https?:\/\/([^\/]*\.)?timetopaynow\.com
+https?:\/\/([^\/]*\.)?timewill\.pp\.ru
+https?:\/\/([^\/]*\.)?timex-ironman\.leg4is\.be
+https?:\/\/([^\/]*\.)?timothy-tkd\.blogspot\.com
+https?:\/\/([^\/]*\.)?timsmovies-com-ck0iq6v\.blogspot\.com
+https?:\/\/([^\/]*\.)?timsmovies-com-cui64k6qv\.blogspot\.com
+https?:\/\/([^\/]*\.)?timyra-dy\.blogspot\.com
+https?:\/\/([^\/]*\.)?tina-ce\.blogspot\.com
+https?:\/\/([^\/]*\.)?tinman-bb4k610\.blogspot\.com
+https?:\/\/([^\/]*\.)?tintin-abz\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiny-cock-blow-job\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?tiny18-net-e5zw0x8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiny18-net-thb44\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiny18-net-tq5qwp\.blogspot\.com
+https?:\/\/([^\/]*\.)?tinyeve-net-d8ejy5\.blogspot\.com
+https?:\/\/([^\/]*\.)?tinyeve-net-dzjflb1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tinysblackadventures-com-a61px\.blogspot\.com
+https?:\/\/([^\/]*\.)?tinysblackadventures-com-a638lqrud\.blogspot\.com
+https?:\/\/([^\/]*\.)?tipw\.org\.ua
+https?:\/\/([^\/]*\.)?tise2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?titanium-ring\.boom\.ru
+https?:\/\/([^\/]*\.)?titanium-rings\.boom\.ru
+https?:\/\/([^\/]*\.)?titanium1ring\.chat\.ru
+https?:\/\/([^\/]*\.)?titanium4ring\.chat\.ru
+https?:\/\/([^\/]*\.)?titkis\.com
+https?:\/\/([^\/]*\.)?tittypalace-com-o352hny\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiye-e5rhl\.blogspot\.com
+https?:\/\/([^\/]*\.)?tiyona-t4m7cq\.blogspot\.com
+https?:\/\/([^\/]*\.)?tizanidine\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?tj-d04qczfk\.blogspot\.com
+https?:\/\/([^\/]*\.)?tjbb1\.szm\.sk
+https?:\/\/([^\/]*\.)?tjjp\.left-page\.com
+https?:\/\/([^\/]*\.)?tjjp\.zxvo\.com
+https?:\/\/([^\/]*\.)?tjzhh\.com\.cn
+https?:\/\/([^\/]*\.)?tjzrr\.com
+https?:\/\/([^\/]*\.)?tkml\.tblog\.com
+https?:\/\/([^\/]*\.)?tknani\.50webs\.com
+https?:\/\/([^\/]*\.)?tkzrb\.szm\.sk
+https?:\/\/([^\/]*\.)?tladies\.net
+https?:\/\/([^\/]*\.)?tlchjhs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tldley4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tlhd3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tljsrq\.com
+https?:\/\/([^\/]*\.)?tlkdb\.szm\.sk
+https?:\/\/([^\/]*\.)?tmhbj\.com
+https?:\/\/([^\/]*\.)?tmobilenfn\.blogspot\.com
+https?:\/\/([^\/]*\.)?tmooeen-six\.blogspot\.com
+https?:\/\/([^\/]*\.)?tneccotnec\.fr-bb\.com
+https?:\/\/([^\/]*\.)?tnt163\.com
+https?:\/\/([^\/]*\.)?toggle-c0t3\.blogspot\.com
+https?:\/\/([^\/]*\.)?tohj3\.szm\.sk
+https?:\/\/([^\/]*\.)?tohqy\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tokuctro\.forumzen\.com
+https?:\/\/([^\/]*\.)?tom-b56vx6b48\.blogspot\.com
+https?:\/\/([^\/]*\.)?tomato-a7e\.blogspot\.com
+https?:\/\/([^\/]*\.)?tomems\.125mb\.com
+https?:\/\/([^\/]*\.)?tommys-bookmarks-com-eeb0\.blogspot\.com
+https?:\/\/([^\/]*\.)?tommys-bookmarks-com-ev\.blogspot\.com
+https?:\/\/([^\/]*\.)?tomng\.info
+https?:\/\/([^\/]*\.)?tomsthumbs-com-ihj\.blogspot\.com
+https?:\/\/([^\/]*\.)?tomsthumbs-com-iqkobr\.blogspot\.com
+https?:\/\/([^\/]*\.)?ton4all\.com
+https?:\/\/([^\/]*\.)?tonea-m3t\.blogspot\.com
+https?:\/\/([^\/]*\.)?tonegativeone\.blogspot\.com
+https?:\/\/([^\/]*\.)?toniann-kr3\.blogspot\.com
+https?:\/\/([^\/]*\.)?tony-h3xs1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tonya-g0x1\.blogspot\.com
+https?:\/\/([^\/]*\.)?toons-fuck-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?toor3\.szm\.sk
+https?:\/\/([^\/]*\.)?tootsie-rjg323oj2\.blogspot\.com
+https?:\/\/([^\/]*\.)?top-hold-em\.us
+https?:\/\/([^\/]*\.)?top-holdem\.com
+https?:\/\/([^\/]*\.)?top-holdem\.us
+https?:\/\/([^\/]*\.)?top-mp3\.biz
+https?:\/\/([^\/]*\.)?top\.pcanywhere\.net
+https?:\/\/([^\/]*\.)?topacio-w3fpzg\.blogspot\.com
+https?:\/\/([^\/]*\.)?topairlines\.ifrance\.com
+https?:\/\/([^\/]*\.)?topcelebs-com-hf34tmj\.blogspot\.com
+https?:\/\/([^\/]*\.)?topdasar\.com
+https?:\/\/([^\/]*\.)?topee\.info
+https?:\/\/([^\/]*\.)?topege\.com
+https?:\/\/([^\/]*\.)?topfarmasearch\.info
+https?:\/\/([^\/]*\.)?topgun-ef7gc204\.blogspot\.com
+https?:\/\/([^\/]*\.)?topless-babes-com-mq6hbe5uvq\.blogspot\.com
+https?:\/\/([^\/]*\.)?topo20\.org
+https?:\/\/([^\/]*\.)?topography-tuowheetle\.blogspot\.com
+https?:\/\/([^\/]*\.)?topozo\.org
+https?:\/\/([^\/]*\.)?topworldauto\.info
+https?:\/\/([^\/]*\.)?torey-dr343r\.blogspot\.com
+https?:\/\/([^\/]*\.)?tori-cmg8\.blogspot\.com
+https?:\/\/([^\/]*\.)?toriana-baui\.blogspot\.com
+https?:\/\/([^\/]*\.)?tornado-axe8uch1ar\.blogspot\.com
+https?:\/\/([^\/]*\.)?toronto-ox7aprp\.blogspot\.com
+https?:\/\/([^\/]*\.)?toropiz\.125mb\.com
+https?:\/\/([^\/]*\.)?torri-mrmj\.blogspot\.com
+https?:\/\/([^\/]*\.)?tortoise-iz\.blogspot\.com
+https?:\/\/([^\/]*\.)?torucnro\.jconserv\.net
+https?:\/\/([^\/]*\.)?tosuralz\.forumzen\.com
+https?:\/\/([^\/]*\.)?tottiona-k1zx8juj\.blogspot\.com
+https?:\/\/([^\/]*\.)?touya012\.blogspot\.com
+https?:\/\/([^\/]*\.)?town-china\.cn
+https?:\/\/([^\/]*\.)?toxic-h8jasyqt1\.blogspot\.com
+https?:\/\/([^\/]*\.)?toyota-g8\.blogspot\.com
+https?:\/\/([^\/]*\.)?tpwyc\.szm\.sk
+https?:\/\/([^\/]*\.)?tqdd7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tqnkaoi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tqrkf\.szm\.sk
+https?:\/\/([^\/]*\.)?traci-r30narn\.blogspot\.com
+https?:\/\/([^\/]*\.)?tracie-wskg17md\.blogspot\.com
+https?:\/\/([^\/]*\.)?trackting\.com
+https?:\/\/([^\/]*\.)?tractor-etae7hau1y\.blogspot\.com
+https?:\/\/([^\/]*\.)?tracy-kae\.babubi\.net
+https?:\/\/([^\/]*\.)?tracy-toe7\.blogspot\.com
+https?:\/\/([^\/]*\.)?traesha-d8u3731bb6\.blogspot\.com
+https?:\/\/([^\/]*\.)?traffit\.info
+https?:\/\/([^\/]*\.)?tralina-bvqz366sv\.blogspot\.com
+https?:\/\/([^\/]*\.)?tramadol-4u\.net
+https?:\/\/([^\/]*\.)?tramadol-911\.coz\.in
+https?:\/\/([^\/]*\.)?tramadol-bznz\.blogspot\.com
+https?:\/\/([^\/]*\.)?tramadol-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?tramadol-gs\.eu\.tc
+https?:\/\/([^\/]*\.)?tramadol-gs\.net\.tc
+https?:\/\/([^\/]*\.)?tramadol-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?tramadol-wiki\.com
+https?:\/\/([^\/]*\.)?tramadol\.1\.forogratis\.es
+https?:\/\/([^\/]*\.)?tramadol\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?tramadol\.esguay\.com
+https?:\/\/([^\/]*\.)?tramadol\.fws1\.com
+https?:\/\/([^\/]*\.)?tramadol\.goodpharm\.info
+https?:\/\/([^\/]*\.)?tramadol\.knopkabablo\.info
+https?:\/\/([^\/]*\.)?tramadol\.presteert\.nl
+https?:\/\/([^\/]*\.)?tramadol\.skocz\.net
+https?:\/\/([^\/]*\.)?tramadol\.su\.pl
+https?:\/\/([^\/]*\.)?tramadol\.weboficial\.com
+https?:\/\/([^\/]*\.)?tramadol7\.php5\.cz
+https?:\/\/([^\/]*\.)?tramadolnx\.u\.yuku\.com
+https?:\/\/([^\/]*\.)?tramadolonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?tramadolonlinez\.blogsome\.com
+https?:\/\/([^\/]*\.)?tramadolq\.bloggingmylife\.com
+https?:\/\/([^\/]*\.)?tramadols\.us\.tf
+https?:\/\/([^\/]*\.)?trami-a7oq4k1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tramika-o4no\.blogspot\.com
+https?:\/\/([^\/]*\.)?tran-ma86bq3\.blogspot\.com
+https?:\/\/([^\/]*\.)?tranici\.info
+https?:\/\/([^\/]*\.)?tranlaura-ktn\.blogspot\.com
+https?:\/\/([^\/]*\.)?trannysurprise-com-ghn6k4r88\.blogspot\.com
+https?:\/\/([^\/]*\.)?trannysurprise-com-gq\.blogspot\.com
+https?:\/\/([^\/]*\.)?trannysurprise-com-i05csl\.blogspot\.com
+https?:\/\/([^\/]*\.)?transbiding\.com
+https?:\/\/([^\/]*\.)?transchinese\.com
+https?:\/\/([^\/]*\.)?transfer-h56d4zxl4\.blogspot\.com
+https?:\/\/([^\/]*\.)?translateatsh\.cn
+https?:\/\/([^\/]*\.)?translatebbs\.com
+https?:\/\/([^\/]*\.)?translateforcompany\.cn
+https?:\/\/([^\/]*\.)?traore-guh68nn\.blogspot\.com
+https?:\/\/([^\/]*\.)?trashnx\.datadiri\.cc
+https?:\/\/([^\/]*\.)?trastian-r1\.blogspot\.com
+https?:\/\/([^\/]*\.)?travel-blast\.com
+https?:\/\/([^\/]*\.)?travel-wa4g2\.blogspot\.com
+https?:\/\/([^\/]*\.)?travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?travel2nursing\.chat\.ru
+https?:\/\/([^\/]*\.)?travelmarket\.mytravelsearch\.info
+https?:\/\/([^\/]*\.)?travis-ez8v\.blogspot\.com
+https?:\/\/([^\/]*\.)?tray-t5\.blogspot\.com
+https?:\/\/([^\/]*\.)?trbodel\.frbb\.net
+https?:\/\/([^\/]*\.)?trbusget\.forumzen\.com
+https?:\/\/([^\/]*\.)?trcchi\.td\.pl
+https?:\/\/([^\/]*\.)?trcota\.bb-fr\.com
+https?:\/\/([^\/]*\.)?trdombas\.blogcu\.com
+https?:\/\/([^\/]*\.)?trerdron\.discutfree\.com
+https?:\/\/([^\/]*\.)?trerdron\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?tressa-a7w83sb\.blogspot\.com
+https?:\/\/([^\/]*\.)?tretinoingelbuy\.move\.to
+https?:\/\/([^\/]*\.)?tretinoingelbuycheap\.move\.to
+https?:\/\/([^\/]*\.)?tretinoingelbuygeneric\.drive\.to
+https?:\/\/([^\/]*\.)?tretinoingelcheap\.rulestheweb\.com
+https?:\/\/([^\/]*\.)?tretinoingelgeneric\.germany\.ms
+https?:\/\/([^\/]*\.)?trevisos\.org
+https?:\/\/([^\/]*\.)?trevor-obp5qlgdb\.blogspot\.com
+https?:\/\/([^\/]*\.)?trhlina\.republika\.pl
+https?:\/\/([^\/]*\.)?tribuna\.asp2\.cz
+https?:\/\/([^\/]*\.)?trident-m6wm\.blogspot\.com
+https?:\/\/([^\/]*\.)?trinbagoauto\.com
+https?:\/\/([^\/]*\.)?trinity-ikvstb\.blogspot\.com
+https?:\/\/([^\/]*\.)?triobuy\.vtost\.com
+https?:\/\/([^\/]*\.)?triphasil\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?tripto\.com
+https?:\/\/([^\/]*\.)?trisha-ksmv\.blogspot\.com
+https?:\/\/([^\/]*\.)?tristen-h2b1b1\.blogspot\.com
+https?:\/\/([^\/]*\.)?trivial-gk13on\.blogspot\.com
+https?:\/\/([^\/]*\.)?trixie-rkn\.blogspot\.com
+https?:\/\/([^\/]*\.)?trkucorc\.forumzen\.com
+https?:\/\/([^\/]*\.)?trlicut\.winnerforum\.net
+https?:\/\/([^\/]*\.)?trocacsit\.dl\.pl
+https?:\/\/([^\/]*\.)?troccvi\.darkbb\.com
+https?:\/\/([^\/]*\.)?trocdarc\.bb-fr\.com
+https?:\/\/([^\/]*\.)?troceltolo\.dl\.pl
+https?:\/\/([^\/]*\.)?trocoches\.info
+https?:\/\/([^\/]*\.)?trocrolac\.dl\.pl
+https?:\/\/([^\/]*\.)?troctrocro\.zj\.pl
+https?:\/\/([^\/]*\.)?trombone-wafnt\.blogspot\.com
+https?:\/\/([^\/]*\.)?trorolo\.ephpbb\.com
+https?:\/\/([^\/]*\.)?trorta\.blogcu\.com
+https?:\/\/([^\/]*\.)?trte2\.szm\.sk
+https?:\/\/([^\/]*\.)?trtrocli\.uy\.pl
+https?:\/\/([^\/]*\.)?trucks-t5rikxk1yk\.blogspot\.com
+https?:\/\/([^\/]*\.)?trumpet-d5846b6u\.blogspot\.com
+https?:\/\/([^\/]*\.)?trumst\.com
+https?:\/\/([^\/]*\.)?trzelor\.bbfr\.net
+https?:\/\/([^\/]*\.)?ts998\.com
+https?:\/\/([^\/]*\.)?tsc-clara\.hostingtree\.org
+https?:\/\/([^\/]*\.)?tsfzia5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tshirthell-com-h4dd14cx0g\.blogspot\.com
+https?:\/\/([^\/]*\.)?tshirthell-com-wbc\.blogspot\.com
+https?:\/\/([^\/]*\.)?tshirthell-com-wvayrpu2\.blogspot\.com
+https?:\/\/([^\/]*\.)?tslist-com-rwwi8zl\.blogspot\.com
+https?:\/\/([^\/]*\.)?tslist-com-ry\.blogspot\.com
+https?:\/\/([^\/]*\.)?tsoy7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tss-car\.com
+https?:\/\/([^\/]*\.)?tssuih5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tsvibak\.blogspot\.com
+https?:\/\/([^\/]*\.)?tt001\.com
+https?:\/\/([^\/]*\.)?tt002\.com
+https?:\/\/([^\/]*\.)?tt003\.com
+https?:\/\/([^\/]*\.)?tt004\.com
+https?:\/\/([^\/]*\.)?tt005\.com
+https?:\/\/([^\/]*\.)?tthumvir\.forumzen\.com
+https?:\/\/([^\/]*\.)?ttjpm\.szm\.sk
+https?:\/\/([^\/]*\.)?ttlive\.info
+https?:\/\/([^\/]*\.)?ttrgb\.szm\.sk
+https?:\/\/([^\/]*\.)?ttvpkp0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tu-wendi\.blogspot\.com
+https?:\/\/([^\/]*\.)?tubas-bc45h\.blogspot\.com
+https?:\/\/([^\/]*\.)?tuesday-anx780we1\.blogspot\.com
+https?:\/\/([^\/]*\.)?tufa\.info
+https?:\/\/([^\/]*\.)?tugjobs-com-kmr4pm\.blogspot\.com
+https?:\/\/([^\/]*\.)?tuhe-advil\.blogspot\.com
+https?:\/\/([^\/]*\.)?tulip123456\.ifrance\.com
+https?:\/\/([^\/]*\.)?turbo-o3f520u0jd\.blogspot\.com
+https?:\/\/([^\/]*\.)?turl\.jp
+https?:\/\/([^\/]*\.)?turtle-m6pr6y\.blogspot\.com
+https?:\/\/([^\/]*\.)?tuttle-i5\.blogspot\.com
+https?:\/\/([^\/]*\.)?tuttosport\.freespase\.info
+https?:\/\/([^\/]*\.)?tuubu\.szm\.sk
+https?:\/\/([^\/]*\.)?tv-bazzar\.com
+https?:\/\/([^\/]*\.)?twam0\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?tweety-k8z4spyz\.blogspot\.com
+https?:\/\/([^\/]*\.)?twelvalve\.blogspot\.com
+https?:\/\/([^\/]*\.)?twilightsex-cixeh\.blogspot\.com
+https?:\/\/([^\/]*\.)?twilightsex-com-o31qd\.blogspot\.com
+https?:\/\/([^\/]*\.)?twilightsex-com-op\.blogspot\.com
+https?:\/\/([^\/]*\.)?twins-hzhz\.blogspot\.com
+https?:\/\/([^\/]*\.)?twist-ga\.blogspot\.com
+https?:\/\/([^\/]*\.)?twister-r4\.blogspot\.com
+https?:\/\/([^\/]*\.)?two-lips-com-cfvn7fu3\.blogspot\.com
+https?:\/\/([^\/]*\.)?two-lips-com-cwk\.blogspot\.com
+https?:\/\/([^\/]*\.)?two-teen-kissing\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?two-wgn3t3\.blogspot\.com
+https?:\/\/([^\/]*\.)?twoq5\.szm\.sk
+https?:\/\/([^\/]*\.)?twxtbqn\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?txnpgc2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?txvfpo7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tyepobv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?tyj\.cwrjcn\.com
+https?:\/\/([^\/]*\.)?tyra-dna0lnjav\.blogspot\.com
+https?:\/\/([^\/]*\.)?tytiana-bjag\.blogspot\.com
+https?:\/\/([^\/]*\.)?tyvj5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uaobs\.szm\.sk
+https?:\/\/([^\/]*\.)?ub-mongolia\.mn
+https?:\/\/([^\/]*\.)?ubasak\.stabilt\.se
+https?:\/\/([^\/]*\.)?ubpmr\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ucdrun\.forumzen\.com
+https?:\/\/([^\/]*\.)?ucol2\.szm\.sk
+https?:\/\/([^\/]*\.)?udqhh\.szm\.sk
+https?:\/\/([^\/]*\.)?udtm7\.szm\.sk
+https?:\/\/([^\/]*\.)?uemhpgv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uglyjezz\.asp2\.cz
+https?:\/\/([^\/]*\.)?ugmhq\.szm\.sk
+https?:\/\/([^\/]*\.)?ukbettingweb\.com
+https?:\/\/([^\/]*\.)?ukek-hin\.isuisse\.com
+https?:\/\/([^\/]*\.)?ukrosi\.com
+https?:\/\/([^\/]*\.)?uksr9\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ulqj9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ultimateairpurifier\.com
+https?:\/\/([^\/]*\.)?ultimatesurrender-com-bkio\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultimatesurrender-com-bm8z1b\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultimatesurrender-com-c75r71j2e\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultracet\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ultradonkey-com-acp\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultradonkey-com-ag0\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultram-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultram\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?ultram\.47\.pl
+https?:\/\/([^\/]*\.)?ultram\.goodpharm\.info
+https?:\/\/([^\/]*\.)?ultram\.hav\.pl
+https?:\/\/([^\/]*\.)?ultram\.is-a-geek\.com
+https?:\/\/([^\/]*\.)?ultram\.serveftp\.com
+https?:\/\/([^\/]*\.)?ultram\.skocz\.net
+https?:\/\/([^\/]*\.)?ultrameds\.dtdns\.net
+https?:\/\/([^\/]*\.)?ultrams\.eu\.tf
+https?:\/\/([^\/]*\.)?ultrasexmovies-com-dm2dmh\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultrasexmovies-com-dz02q7\.blogspot\.com
+https?:\/\/([^\/]*\.)?ultrasexmovies-com-zujuz\.blogspot\.com
+https?:\/\/([^\/]*\.)?umax-forum\.com
+https?:\/\/([^\/]*\.)?umax-ppc\.com
+https?:\/\/([^\/]*\.)?umax-se\.com
+https?:\/\/([^\/]*\.)?umax-se\.info
+https?:\/\/([^\/]*\.)?umax-search-ppc-se-board\.com
+https?:\/\/([^\/]*\.)?umax-search-se\.com
+https?:\/\/([^\/]*\.)?umax-search\.net
+https?:\/\/([^\/]*\.)?umaxppc\.com
+https?:\/\/([^\/]*\.)?umaxse\.net
+https?:\/\/([^\/]*\.)?umaxse\.org
+https?:\/\/([^\/]*\.)?umaxsearch-search-engine\.com
+https?:\/\/([^\/]*\.)?umojucd\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?umsbm\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?un-fois\.blogspot\.com
+https?:\/\/([^\/]*\.)?un-nachrichten\.de
+https?:\/\/([^\/]*\.)?unbelievable-poker\.com
+https?:\/\/([^\/]*\.)?uncledeadly83\.blogspot\.com
+https?:\/\/([^\/]*\.)?understandish\.50webs\.org
+https?:\/\/([^\/]*\.)?unglaublichkeiten\.com
+https?:\/\/([^\/]*\.)?unicom\.027168\.com
+https?:\/\/([^\/]*\.)?uniform2nursing\.chat\.ru
+https?:\/\/([^\/]*\.)?unit01\.com
+https?:\/\/([^\/]*\.)?united-airline\.boom\.ru
+https?:\/\/([^\/]*\.)?united24\.com
+https?:\/\/([^\/]*\.)?unitedinchristchurch\.org
+https?:\/\/([^\/]*\.)?universal-hosting\.net
+https?:\/\/([^\/]*\.)?university-degre\.boom\.ru
+https?:\/\/([^\/]*\.)?university1degre\.chat\.ru
+https?:\/\/([^\/]*\.)?unixbrewers\.org
+https?:\/\/([^\/]*\.)?unka\.su\.pl
+https?:\/\/([^\/]*\.)?unseenoyster\.blogspot\.com
+https?:\/\/([^\/]*\.)?unwqs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uobasdel\.fr-bb\.com
+https?:\/\/([^\/]*\.)?uokx8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uous6\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?up-skirt-butt\.medved\.odessa\.ua
+https?:\/\/([^\/]*\.)?updatenames\.dtdns\.net
+https?:\/\/([^\/]*\.)?upskirt-ebony-teen\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?upskirt-gallery-leg\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?upskirtsexxfh\.blogspot\.com
+https?:\/\/([^\/]*\.)?upwaldru\.ifrance\.com
+https?:\/\/([^\/]*\.)?uraharaben1hime\.blogspot\.com
+https?:\/\/([^\/]*\.)?urkrdh5\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?urky5\.szm\.sk
+https?:\/\/([^\/]*\.)?us-senator-dick-durbin\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?us-viagra\.us
+https?:\/\/([^\/]*\.)?us\.kopuz\.com
+https?:\/\/([^\/]*\.)?usa-online-pharmacy\.net
+https?:\/\/([^\/]*\.)?usa568\.com
+https?:\/\/([^\/]*\.)?usaah\.com
+https?:\/\/([^\/]*\.)?usbestlawyer\.org
+https?:\/\/([^\/]*\.)?usbuorl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?usednotebooks\.ru
+https?:\/\/([^\/]*\.)?ushoh\.szm\.sk
+https?:\/\/([^\/]*\.)?uskbbb9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?usuc\.us
+https?:\/\/([^\/]*\.)?uszfp\.szm\.sk
+https?:\/\/([^\/]*\.)?utahmortgage-x\.com
+https?:\/\/([^\/]*\.)?utranslate\.org
+https?:\/\/([^\/]*\.)?utranslation\.net
+https?:\/\/([^\/]*\.)?uucwsw7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uulitr\.forumzen\.com
+https?:\/\/([^\/]*\.)?uulive\.info
+https?:\/\/([^\/]*\.)?uvfotuc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uvgpy\.szm\.sk
+https?:\/\/([^\/]*\.)?uvndhxh\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uwacadweb\.uwyo\.edu
+https?:\/\/([^\/]*\.)?uwek\.info
+https?:\/\/([^\/]*\.)?uxyei\.szm\.sk
+https?:\/\/([^\/]*\.)?uyjdrg3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?uzfde\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?uzzclm9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?v-f-sex-video-clip-g\.blogspot\.com
+https?:\/\/([^\/]*\.)?v-j-big-movie-tit-v\.blogspot\.com
+https?:\/\/([^\/]*\.)?v1h\.com
+https?:\/\/([^\/]*\.)?v5wednesday\.info
+https?:\/\/([^\/]*\.)?v7njlwgd\.nokedem\.com
+https?:\/\/([^\/]*\.)?vacanza-barcellona\.zoom10x\.info
+https?:\/\/([^\/]*\.)?vacanza-montagna\.freespase\.info
+https?:\/\/([^\/]*\.)?vacanza-neve\.zoom4x\.info
+https?:\/\/([^\/]*\.)?vacanza-toscana\.host24h\.info
+https?:\/\/([^\/]*\.)?vacuums\.be
+https?:\/\/([^\/]*\.)?vahitchc\.dl\.pl
+https?:\/\/([^\/]*\.)?valiubusines\.blogcu\.com
+https?:\/\/([^\/]*\.)?valium-911\.coz\.in
+https?:\/\/([^\/]*\.)?valium-cc\.blogspot\.com
+https?:\/\/([^\/]*\.)?valium-cheap\.18\.to
+https?:\/\/([^\/]*\.)?valium-online\.cheapills\.info
+https?:\/\/([^\/]*\.)?valium-qrxo\.blogspot\.com
+https?:\/\/([^\/]*\.)?valium\.269g\.net
+https?:\/\/([^\/]*\.)?valium\.47\.pl
+https?:\/\/([^\/]*\.)?valium\.goodpharm\.info
+https?:\/\/([^\/]*\.)?valium\.skocz\.net
+https?:\/\/([^\/]*\.)?valium\.su\.pl
+https?:\/\/([^\/]*\.)?valiumnx\.u\.yuku\.com
+https?:\/\/([^\/]*\.)?valiums\.eu\.tf
+https?:\/\/([^\/]*\.)?valleyswap\.info
+https?:\/\/([^\/]*\.)?valtrex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?vametase\.com
+https?:\/\/([^\/]*\.)?vands88\.blogspot\.com
+https?:\/\/([^\/]*\.)?vanhelsingsgirl\.datadiri\.cc
+https?:\/\/([^\/]*\.)?vaniqa\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?varac\.heavenforum\.com
+https?:\/\/([^\/]*\.)?varac\.highforum\.net
+https?:\/\/([^\/]*\.)?varelvi\.discutfree\.com
+https?:\/\/([^\/]*\.)?varnish\.8888mb\.com
+https?:\/\/([^\/]*\.)?varnotr\.naturalforum\.net
+https?:\/\/([^\/]*\.)?varoracel\.bbfr\.net
+https?:\/\/([^\/]*\.)?varracleto\.dl\.pl
+https?:\/\/([^\/]*\.)?vazicoj\.info
+https?:\/\/([^\/]*\.)?vboya\.9999mb\.com
+https?:\/\/([^\/]*\.)?vcjwc\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?vcpk9\.szm\.sk
+https?:\/\/([^\/]*\.)?vcsps\.com
+https?:\/\/([^\/]*\.)?vdpf4\.szm\.sk
+https?:\/\/([^\/]*\.)?ve-alisa\.blogspot\.com
+https?:\/\/([^\/]*\.)?vegetnuks\.blogspot\.com
+https?:\/\/([^\/]*\.)?veggis\.org\.cn
+https?:\/\/([^\/]*\.)?vehal\.com
+https?:\/\/([^\/]*\.)?vek-xxxpower-net\.blogspot\.com
+https?:\/\/([^\/]*\.)?velvetimalice\.ibelgique\.com
+https?:\/\/([^\/]*\.)?vemiles\.ifrance\.com
+https?:\/\/([^\/]*\.)?verba\.dyndns\.dk
+https?:\/\/([^\/]*\.)?verfolva\.blogspot\.com
+https?:\/\/([^\/]*\.)?veriel\.dl\.pl
+https?:\/\/([^\/]*\.)?verizonringtonersy\.blogspot\.com
+https?:\/\/([^\/]*\.)?verizonringtonesdvf\.blogspot\.com
+https?:\/\/([^\/]*\.)?vermontmortgage-x\.com
+https?:\/\/([^\/]*\.)?vertyg\.org
+https?:\/\/([^\/]*\.)?veryge\.com
+https?:\/\/([^\/]*\.)?veryprivatebanking\.info
+https?:\/\/([^\/]*\.)?vestuk\.com
+https?:\/\/([^\/]*\.)?veterinar\.spb\.ru
+https?:\/\/([^\/]*\.)?vets\.appliedphysics\.swri\.edu
+https?:\/\/([^\/]*\.)?vfrkiv6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vfrrto\.org
+https?:\/\/([^\/]*\.)?vhuekxi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vi-allo\.blogspot\.com
+https?:\/\/([^\/]*\.)?viadele\.dl\.pl
+https?:\/\/([^\/]*\.)?viagaravaegra\.com
+https?:\/\/([^\/]*\.)?viaggi-del-ventaglio\.forumhst\.info
+https?:\/\/([^\/]*\.)?viagra-4u\.us
+https?:\/\/([^\/]*\.)?viagra-online\.presteert\.nl
+https?:\/\/([^\/]*\.)?viagra-soft-tabs\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?viagra\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?viagra\.cheapills\.info
+https?:\/\/([^\/]*\.)?viagra\.edu\.tf
+https?:\/\/([^\/]*\.)?viagra\.esguay\.com
+https?:\/\/([^\/]*\.)?viagra\.inc5\.com
+https?:\/\/([^\/]*\.)?viagra\.rx4\.org
+https?:\/\/([^\/]*\.)?viagra\.skocz\.net
+https?:\/\/([^\/]*\.)?viagrai\.blogspot\.com
+https?:\/\/([^\/]*\.)?viagraorder\.mail15\.com
+https?:\/\/([^\/]*\.)?viagraq\.bloggingmylife\.com
+https?:\/\/([^\/]*\.)?viagrarx\.weboficial\.com
+https?:\/\/([^\/]*\.)?vicodin-pharm\.fws1\.com
+https?:\/\/([^\/]*\.)?vicodin\.269g\.net
+https?:\/\/([^\/]*\.)?vicodin\.conto\.pl
+https?:\/\/([^\/]*\.)?vicodin\.esguay\.com
+https?:\/\/([^\/]*\.)?vicodin\.guu\.pl
+https?:\/\/([^\/]*\.)?vicodin88\.tblog\.com
+https?:\/\/([^\/]*\.)?victoria-silvstedt\.freehostss\.info
+https?:\/\/([^\/]*\.)?videlric\.dl\.pl
+https?:\/\/([^\/]*\.)?video-comico\.host24h\.info
+https?:\/\/([^\/]*\.)?video-porn-caseros-ju\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-porn-gratis-sod\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-post-com-bejiq\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-post-com-bfoybt\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-post-com-my\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-post-com-thumbview-rehif\.blogspot\.com
+https?:\/\/([^\/]*\.)?video-spot-sexy\.19mb\.info
+https?:\/\/([^\/]*\.)?video-spot-sexy\.you-bizz\.info
+https?:\/\/([^\/]*\.)?video-whore-bb-bb-b\.blogspot\.com
+https?:\/\/([^\/]*\.)?videosection-com-h0xon\.blogspot\.com
+https?:\/\/([^\/]*\.)?videosection-com-w1w\.blogspot\.com
+https?:\/\/([^\/]*\.)?videosection-com-w62l\.blogspot\.com
+https?:\/\/([^\/]*\.)?videosharez\.com
+https?:\/\/([^\/]*\.)?vidgals-com-e13sc4yv0\.blogspot\.com
+https?:\/\/([^\/]*\.)?vidgals-com-e6ig7a\.blogspot\.com
+https?:\/\/([^\/]*\.)?vidgals-com-edvo\.blogspot\.com
+https?:\/\/([^\/]*\.)?vidronla\.blogcu\.com
+https?:\/\/([^\/]*\.)?vielsit\.su\.pl
+https?:\/\/([^\/]*\.)?vietnamparadisetravel\.com
+https?:\/\/([^\/]*\.)?viewerswives-net-c4\.blogspot\.com
+https?:\/\/([^\/]*\.)?viewerswives-net-oc\.blogspot\.com
+https?:\/\/([^\/]*\.)?viewgals-com-ah\.blogspot\.com
+https?:\/\/([^\/]*\.)?viewgals-com-il253r\.blogspot\.com
+https?:\/\/([^\/]*\.)?vigduk30\.xshorturl\.com
+https?:\/\/([^\/]*\.)?vigetleto\.heavenforum\.com
+https?:\/\/([^\/]*\.)?vihl6\.szm\.sk
+https?:\/\/([^\/]*\.)?viliolo\.winnerforum\.net
+https?:\/\/([^\/]*\.)?village\.asp2\.cz
+https?:\/\/([^\/]*\.)?villaggio-ischia\.ll11\.info
+https?:\/\/([^\/]*\.)?vinnie-1-hit\.blogspot\.com
+https?:\/\/([^\/]*\.)?vintage\.sexcluborgy\.net
+https?:\/\/([^\/]*\.)?vioxx\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?vioxx\.3d-game\.com
+https?:\/\/([^\/]*\.)?vipasrel\.cultureforum\.net
+https?:\/\/([^\/]*\.)?vipcrew-com-bj\.blogspot\.com
+https?:\/\/([^\/]*\.)?vipcrew-com-r0w\.blogspot\.com
+https?:\/\/([^\/]*\.)?vipcrew-com-rs74r7iy5\.blogspot\.com
+https?:\/\/([^\/]*\.)?viphls\.com
+https?:\/\/([^\/]*\.)?vipliz\.com
+https?:\/\/([^\/]*\.)?vipmsite\.com
+https?:\/\/([^\/]*\.)?virgin-porn\.futureblog\.org
+https?:\/\/([^\/]*\.)?virgin-sexy\.com
+https?:\/\/([^\/]*\.)?virginfucked-com-h200n1lxcg\.blogspot\.com
+https?:\/\/([^\/]*\.)?virginiamortgage-x\.com
+https?:\/\/([^\/]*\.)?viricrel\.lolbb\.com
+https?:\/\/([^\/]*\.)?virinok\.dynamicforum\.net
+https?:\/\/([^\/]*\.)?virtualeinfiniti\.cn
+https?:\/\/([^\/]*\.)?vitalitymax\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?vivino\.ephpbb\.com
+https?:\/\/([^\/]*\.)?vizelvar\.frbb\.net
+https?:\/\/([^\/]*\.)?vjkavu6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vjsgby0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vjuk7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vjwm2\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?vkblq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vksfucm\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vmdes\.com
+https?:\/\/([^\/]*\.)?vmpi4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vmvip\.com
+https?:\/\/([^\/]*\.)?vmvip\.net
+https?:\/\/([^\/]*\.)?vmvip\.org
+https?:\/\/([^\/]*\.)?vo-free-oral-movie-clip-toc\.blogspot\.com
+https?:\/\/([^\/]*\.)?voip-guide\.org
+https?:\/\/([^\/]*\.)?vol-soft17-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?voli-amsterdam\.freespase\.info
+https?:\/\/([^\/]*\.)?voli-argentina\.zoom10x\.info
+https?:\/\/([^\/]*\.)?voli-londra\.freespase\.info
+https?:\/\/([^\/]*\.)?voli-spagna\.freespase\.info
+https?:\/\/([^\/]*\.)?volume5\.8888mb\.com
+https?:\/\/([^\/]*\.)?voxn2\.szm\.sk
+https?:\/\/([^\/]*\.)?voyeur-video-amateur-free\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?voyeurzine-com-af2\.blogspot\.com
+https?:\/\/([^\/]*\.)?voyeurzine-com-dbhx1q\.blogspot\.com
+https?:\/\/([^\/]*\.)?voyiu\.szm\.sk
+https?:\/\/([^\/]*\.)?vpbu1\.szm\.sk
+https?:\/\/([^\/]*\.)?vrlw9\.szm\.sk
+https?:\/\/([^\/]*\.)?vrnjgk1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vstqfs3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vtop\.fateback\.com
+https?:\/\/([^\/]*\.)?vtop\.kilu\.de
+https?:\/\/([^\/]*\.)?vtop\.topcities\.com
+https?:\/\/([^\/]*\.)?vtrxzzwj-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?vttolldd\.org
+https?:\/\/([^\/]*\.)?vttthtgg\.org
+https?:\/\/([^\/]*\.)?vtwm7\.szm\.sk
+https?:\/\/([^\/]*\.)?vu-alias\.blogspot\.com
+https?:\/\/([^\/]*\.)?vu-aliases\.blogspot\.com
+https?:\/\/([^\/]*\.)?vu-free-big-sex-movie-fen\.blogspot\.com
+https?:\/\/([^\/]*\.)?vud-vipcrew-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?vue\.uit\.tufts\.edu
+https?:\/\/([^\/]*\.)?vulgarisprime\.50webs\.org
+https?:\/\/([^\/]*\.)?vuqi-alana\.blogspot\.com
+https?:\/\/([^\/]*\.)?vutwwd6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vuzeq-sex-video-d\.blogspot\.com
+https?:\/\/([^\/]*\.)?vvaliumonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?vvline\.info
+https?:\/\/([^\/]*\.)?vwjr2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vwzm6\.szm\.sk
+https?:\/\/([^\/]*\.)?vyqdvf1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?vyuf9\.szm\.sk
+https?:\/\/([^\/]*\.)?vzevz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?w-q-elmo-extreme-video-n\.blogspot\.com
+https?:\/\/([^\/]*\.)?w-s-free-gay-sex-video-l\.blogspot\.com
+https?:\/\/([^\/]*\.)?w2\.ftpcn\.cn
+https?:\/\/([^\/]*\.)?w528\.com
+https?:\/\/([^\/]*\.)?wacks\.info
+https?:\/\/([^\/]*\.)?wak1ngmel0dies\.blogspot\.com
+https?:\/\/([^\/]*\.)?walker-ross\.com
+https?:\/\/([^\/]*\.)?walkerproconsulting\.com
+https?:\/\/([^\/]*\.)?walt-disney-world-travel\.globaltr\.info
+https?:\/\/([^\/]*\.)?wanadoo-fr-eyn6u1yt0\.blogspot\.com
+https?:\/\/([^\/]*\.)?wanadoo-fr-gsz\.blogspot\.com
+https?:\/\/([^\/]*\.)?wanadoo-fr-i0iq\.blogspot\.com
+https?:\/\/([^\/]*\.)?wannawatch-com-k1rckf8\.blogspot\.com
+https?:\/\/([^\/]*\.)?wannawatch-com-krz7dxd5a\.blogspot\.com
+https?:\/\/([^\/]*\.)?wannawatch-com-oaeedr\.blogspot\.com
+https?:\/\/([^\/]*\.)?wapzhijia\.com
+https?:\/\/([^\/]*\.)?waserk\.com
+https?:\/\/([^\/]*\.)?washingtonmortgage-x\.com
+https?:\/\/([^\/]*\.)?watch-free-porn-clip-zone43l\.blogspot\.com
+https?:\/\/([^\/]*\.)?watch-free-porn-clip-zonekjl\.blogspot\.com
+https?:\/\/([^\/]*\.)?watch-free-porn-video-bu\.blogspot\.com
+https?:\/\/([^\/]*\.)?watchersweb-com-t61o4wrr4h\.blogspot\.com
+https?:\/\/([^\/]*\.)?watchersweb-com-tnwrlyoqk\.blogspot\.com
+https?:\/\/([^\/]*\.)?watchingthetube\.com
+https?:\/\/([^\/]*\.)?water\.toxhost\.com
+https?:\/\/([^\/]*\.)?waxen\.kwik\.to
+https?:\/\/([^\/]*\.)?wbun7\.szm\.sk
+https?:\/\/([^\/]*\.)?wc1\.worldcrossing\.com
+https?:\/\/([^\/]*\.)?we-alfred\.blogspot\.com
+https?:\/\/([^\/]*\.)?we-alondra\.blogspot\.com
+https?:\/\/([^\/]*\.)?we-lesbian-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?web\.missouri\.edu
+https?:\/\/([^\/]*\.)?web\.scc\.losrios\.edu
+https?:\/\/([^\/]*\.)?web\.skku\.edu
+https?:\/\/([^\/]*\.)?web55\.info
+https?:\/\/([^\/]*\.)?webhost11\.com
+https?:\/\/([^\/]*\.)?webhosting-x\.com
+https?:\/\/([^\/]*\.)?weblog\.xanga\.com
+https?:\/\/([^\/]*\.)?webmd-drugs\.com
+https?:\/\/([^\/]*\.)?websz\.com
+https?:\/\/([^\/]*\.)?wedding-knot\.com
+https?:\/\/([^\/]*\.)?weddingactions\.com
+https?:\/\/([^\/]*\.)?wedner\.info
+https?:\/\/([^\/]*\.)?weekly-pay\.com
+https?:\/\/([^\/]*\.)?weersa\.com
+https?:\/\/([^\/]*\.)?weight-loss\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?weixing\.hk\.cn
+https?:\/\/([^\/]*\.)?welisi\.hk
+https?:\/\/([^\/]*\.)?welivetogether-com-ek6boac\.blogspot\.com
+https?:\/\/([^\/]*\.)?welivetogether-com-oc7yzd4ev\.blogspot\.com
+https?:\/\/([^\/]*\.)?welivetogether-com-wcu8\.blogspot\.com
+https?:\/\/([^\/]*\.)?wellbutrin\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?wellbutrin\.php5\.cz
+https?:\/\/([^\/]*\.)?wenmasterworld\.com
+https?:\/\/([^\/]*\.)?werdq\.com
+https?:\/\/([^\/]*\.)?wess\.250free\.com
+https?:\/\/([^\/]*\.)?westvirginiamortgage-x\.com
+https?:\/\/([^\/]*\.)?wet-mature-slut\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?wet-pussy-cum-shot\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?wet-teen-panties-wen\.blogspot\.com
+https?:\/\/([^\/]*\.)?wetplace-com-g16jfp6\.blogspot\.com
+https?:\/\/([^\/]*\.)?wfkd3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wgxq2\.szm\.sk
+https?:\/\/([^\/]*\.)?whipped-ass-slut\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?whipsnorkel\.275mb\.com
+https?:\/\/([^\/]*\.)?white-guys-fucking-black-teen\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?whitehole\.republika\.pl
+https?:\/\/([^\/]*\.)?wholesale-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?whorevideos-com-hj8shgp\.blogspot\.com
+https?:\/\/([^\/]*\.)?whorevideos-com-wddx\.blogspot\.com
+https?:\/\/([^\/]*\.)?whorevideos-txe5g0x\.blogspot\.com
+https?:\/\/([^\/]*\.)?whpsjw1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?whss0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wierdporno-com-kur70yvrl0\.blogspot\.com
+https?:\/\/([^\/]*\.)?wifi-planet\.org
+https?:\/\/([^\/]*\.)?wiku-aikman\.blogspot\.com
+https?:\/\/([^\/]*\.)?wild-party-fuck\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?wild-poker\.com
+https?:\/\/([^\/]*\.)?willeyfordmazda\.info
+https?:\/\/([^\/]*\.)?win-for-italy\.info
+https?:\/\/([^\/]*\.)?wind\.8888mb\.com
+https?:\/\/([^\/]*\.)?winter-gossamer\.blogspot\.com
+https?:\/\/([^\/]*\.)?winter\.12gbfree\.com
+https?:\/\/([^\/]*\.)?wired-shemales\.lampa\.ipupdater\.com
+https?:\/\/([^\/]*\.)?wiremesh-guanda\.com
+https?:\/\/([^\/]*\.)?wisconsinmortgage-x\.com
+https?:\/\/([^\/]*\.)?wisdom123\.com
+https?:\/\/([^\/]*\.)?wisewomanguide\.com
+https?:\/\/([^\/]*\.)?wisnp\.szm\.sk
+https?:\/\/([^\/]*\.)?wix-timsmovies-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?wizingsh\.dl\.pl
+https?:\/\/([^\/]*\.)?wjch5\.szm\.sk
+https?:\/\/([^\/]*\.)?wjhh9\.szm\.sk
+https?:\/\/([^\/]*\.)?wjjk0\.szm\.sk
+https?:\/\/([^\/]*\.)?wjsueg-free-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?wkelleylucas\.com
+https?:\/\/([^\/]*\.)?wkfsi774k\.org
+https?:\/\/([^\/]*\.)?wljp9\.szm\.sk
+https?:\/\/([^\/]*\.)?wm-u\.com
+https?:\/\/([^\/]*\.)?wmis\.com\.cn
+https?:\/\/([^\/]*\.)?wmlpv\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wmtnd\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wnwr5\.szm\.sk
+https?:\/\/([^\/]*\.)?woilco6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wolflist-com-rkj7d3\.blogspot\.com
+https?:\/\/([^\/]*\.)?wolverine-steel-toe-work-boot\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?woman-masturbating-man\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?woman-who-can-lick-their-own-pussy\.gameover\.in\.ua
+https?:\/\/([^\/]*\.)?woman-who-fuck-donkey\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?woman-with-prosthetic-leg\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?womansmith\.com
+https?:\/\/([^\/]*\.)?women-fitness\.org
+https?:\/\/([^\/]*\.)?womens-hard-nipples\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?womens-snake-boot\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?woolygrrl\.blogspot\.com
+https?:\/\/([^\/]*\.)?worldsex-com-byzv1xjl\.blogspot\.com
+https?:\/\/([^\/]*\.)?worldsex-com-eqn4b\.blogspot\.com
+https?:\/\/([^\/]*\.)?worldtalktv\.net\.ru
+https?:\/\/([^\/]*\.)?worldufo\.net\.ru
+https?:\/\/([^\/]*\.)?worldwide-games\.net
+https?:\/\/([^\/]*\.)?worldwide-online-pharmacy\.net
+https?:\/\/([^\/]*\.)?worldwide-tramadol\.net
+https?:\/\/([^\/]*\.)?woro-adriana\.blogspot\.com
+https?:\/\/([^\/]*\.)?wot-smutgremlins-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?wow-gold\.dinmo\.cn
+https?:\/\/([^\/]*\.)?wow-powerleveling-wow\.com
+https?:\/\/([^\/]*\.)?wowgold\.org\.cn
+https?:\/\/([^\/]*\.)?wowtgp-com-ap4y\.blogspot\.com
+https?:\/\/([^\/]*\.)?wowvids-com-ooiofshz5\.blogspot\.com
+https?:\/\/([^\/]*\.)?woww0\.szm\.sk
+https?:\/\/([^\/]*\.)?wpgt1\.szm\.sk
+https?:\/\/([^\/]*\.)?wpnvjk9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wqhnog2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wqr\.cn
+https?:\/\/([^\/]*\.)?wrnf9\.szm\.sk
+https?:\/\/([^\/]*\.)?wshcroq\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wsuonline\.weber\.edu
+https?:\/\/([^\/]*\.)?wszqc\.szm\.sk
+https?:\/\/([^\/]*\.)?wtrpfpa\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wuconweb\.wustl\.edu
+https?:\/\/([^\/]*\.)?wujin\.dzsc\.com
+https?:\/\/([^\/]*\.)?wulzi\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wvuf0\.szm\.sk
+https?:\/\/([^\/]*\.)?wvwd6\.szm\.sk
+https?:\/\/([^\/]*\.)?wwfedgechristian\.com
+https?:\/\/([^\/]*\.)?wwlive\.info
+https?:\/\/([^\/]*\.)?wwtop\.info
+https?:\/\/([^\/]*\.)?www-girlygangbang-com\.magnesia\.dtdns\.net
+https?:\/\/([^\/]*\.)?www-loadmymouth-com\.klose\.ipupdater\.com
+https?:\/\/([^\/]*\.)?www-shemales-from-hell-com\.magnesia\.dtdns\.net
+https?:\/\/([^\/]*\.)?www\.aet\.cup\.edu
+https?:\/\/([^\/]*\.)?www\.ags\.uci\.edu
+https?:\/\/([^\/]*\.)?www\.chaco\.gov\.ar
+https?:\/\/([^\/]*\.)?www\.coe\.ohio-state\.edu
+https?:\/\/([^\/]*\.)?www\.csulb\.edu
+https?:\/\/([^\/]*\.)?www\.cucsur\.udg\.mx
+https?:\/\/([^\/]*\.)?www\.depts\.ttu\.edu
+https?:\/\/([^\/]*\.)?www\.elie\.com\.cn
+https?:\/\/([^\/]*\.)?www\.forourbano\.gov\.ar
+https?:\/\/([^\/]*\.)?www\.grad\.english\.ttu\.edu
+https?:\/\/([^\/]*\.)?www\.hcs\.harvard\.edu
+https?:\/\/([^\/]*\.)?www\.health-livening\.com
+https?:\/\/([^\/]*\.)?www\.imperial\.edu
+https?:\/\/([^\/]*\.)?www\.isis\.vanderbilt\.edu
+https?:\/\/([^\/]*\.)?www\.leal-alfa\.upc\.edu
+https?:\/\/([^\/]*\.)?www\.ns\.ui\.edu
+https?:\/\/([^\/]*\.)?www\.oswego\.edu
+https?:\/\/([^\/]*\.)?www\.oznet\.ksu\.edu
+https?:\/\/([^\/]*\.)?www\.polisci\.berkeley\.edu
+https?:\/\/([^\/]*\.)?www\.redwingnet\.com
+https?:\/\/([^\/]*\.)?www\.rit\.edu
+https?:\/\/([^\/]*\.)?www\.rso\.cmich\.edu
+https?:\/\/([^\/]*\.)?www\.sccs\.swarthmore\.edu
+https?:\/\/([^\/]*\.)?www\.sportsbackers\.org
+https?:\/\/([^\/]*\.)?www\.tamug\.edu
+https?:\/\/([^\/]*\.)?www\.ug\.it\.usyd\.edu\.au
+https?:\/\/([^\/]*\.)?www\.uky\.edu
+https?:\/\/([^\/]*\.)?www\.wvup\.edu
+https?:\/\/([^\/]*\.)?www1\.freehostingguru\.com
+https?:\/\/([^\/]*\.)?www2\.cs\.washington\.edu
+https?:\/\/([^\/]*\.)?www3\.ddns\.ms
+https?:\/\/([^\/]*\.)?www4\.epac\.to
+https?:\/\/([^\/]*\.)?www4\.nau\.edu
+https?:\/\/([^\/]*\.)?www4\.vjc\.edu
+https?:\/\/([^\/]*\.)?www6\.ezua\.com
+https?:\/\/([^\/]*\.)?www6\.ns1\.name
+https?:\/\/([^\/]*\.)?www69\.bestdeals\.at
+https?:\/\/([^\/]*\.)?www69\.byinter\.net
+https?:\/\/([^\/]*\.)?www69\.dynu\.com
+https?:\/\/([^\/]*\.)?www69\.findhere\.org
+https?:\/\/([^\/]*\.)?www69\.fw\.nu
+https?:\/\/([^\/]*\.)?www69\.ugly\.as
+https?:\/\/([^\/]*\.)?www7\.25u\.com
+https?:\/\/([^\/]*\.)?www7\.ygto\.com
+https?:\/\/([^\/]*\.)?www8\.ns01\.us
+https?:\/\/([^\/]*\.)?www9\.servequake\.com
+https?:\/\/([^\/]*\.)?www9\.trickip\.org
+https?:\/\/([^\/]*\.)?www99\.bounceme\.net
+https?:\/\/([^\/]*\.)?www99\.zapto\.org
+https?:\/\/([^\/]*\.)?wwweazol\.znamka\.yi\.org
+https?:\/\/([^\/]*\.)?wwwmenozac\.gumaky\.yi\.org
+https?:\/\/([^\/]*\.)?wwwpeterscumshotscom\.jalovica\.dtdns\.net
+https?:\/\/([^\/]*\.)?wwwpornweekcom\.lampa\.ipupdater\.com
+https?:\/\/([^\/]*\.)?wwwtheluckymancom\.hrable\.dtdns\.net
+https?:\/\/([^\/]*\.)?wxcl6\.szm\.sk
+https?:\/\/([^\/]*\.)?wxmbv\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?wxsbjx\.com
+https?:\/\/([^\/]*\.)?wxzgyb\.com
+https?:\/\/([^\/]*\.)?wy-ls\.com
+https?:\/\/([^\/]*\.)?wyeax\.szm\.sk
+https?:\/\/([^\/]*\.)?wyloguj\.php5\.cz
+https?:\/\/([^\/]*\.)?wyomingmortgage-x\.com
+https?:\/\/([^\/]*\.)?wywurxj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wzcub\.szm\.sk
+https?:\/\/([^\/]*\.)?wzhj\.com\.cn
+https?:\/\/([^\/]*\.)?wzhjom6\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?wzlsx\.com
+https?:\/\/([^\/]*\.)?x-cialis\.be
+https?:\/\/([^\/]*\.)?x-ho-com-m23lsy\.blogspot\.com
+https?:\/\/([^\/]*\.)?x-ho-com-mlk2tai422\.blogspot\.com
+https?:\/\/([^\/]*\.)?x-orgy-com-in7nn0o1\.blogspot\.com
+https?:\/\/([^\/]*\.)?x24\.xxuz\.com
+https?:\/\/([^\/]*\.)?x25\.2mydns\.com
+https?:\/\/([^\/]*\.)?x25\.plorp\.com
+https?:\/\/([^\/]*\.)?x4\.lov3\.net
+https?:\/\/([^\/]*\.)?x6x\.a\.la
+https?:\/\/([^\/]*\.)?x888x\.myserver\.org
+https?:\/\/([^\/]*\.)?x8x\.trickip\.net
+https?:\/\/([^\/]*\.)?xadultpersonals\.com
+https?:\/\/([^\/]*\.)?xafengyuan\.com
+https?:\/\/([^\/]*\.)?xaltc\.szm\.sk
+https?:\/\/([^\/]*\.)?xanax-911\.coz\.in
+https?:\/\/([^\/]*\.)?xanax-acpq\.blogspot\.com
+https?:\/\/([^\/]*\.)?xanax-ccc\.blogspot\.com
+https?:\/\/([^\/]*\.)?xanax-lyiy\.blogspot\.com
+https?:\/\/([^\/]*\.)?xanax-online\.cheapills\.info
+https?:\/\/([^\/]*\.)?xanax\.esguay\.com
+https?:\/\/([^\/]*\.)?xanax\.goodpharm\.info
+https?:\/\/([^\/]*\.)?xanax\.skocz\.net
+https?:\/\/([^\/]*\.)?xanax\.su\.pl
+https?:\/\/([^\/]*\.)?xanaxnx\.u\.yuku\.com
+https?:\/\/([^\/]*\.)?xawcj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xboct13\.blogspot\.com
+https?:\/\/([^\/]*\.)?xbyzkngo-teensite\.blogspot\.com
+https?:\/\/([^\/]*\.)?xcp\.51mp4mp3\.com
+https?:\/\/([^\/]*\.)?xd-fw\.com
+https?:\/\/([^\/]*\.)?xdwxs\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xdzs\.com\.cn
+https?:\/\/([^\/]*\.)?xef-publicinvasion-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?xejedot-sophie-marceau-c\.blogspot\.com
+https?:\/\/([^\/]*\.)?xelby0\.blogspot\.com
+https?:\/\/([^\/]*\.)?xenical\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?xenical\.1k\.pl
+https?:\/\/([^\/]*\.)?xenicallem\.queroumforum\.com
+https?:\/\/([^\/]*\.)?xfdr7\.szm\.sk
+https?:\/\/([^\/]*\.)?xfokcw0\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xgdlfj\.com
+https?:\/\/([^\/]*\.)?xhttp\.net
+https?:\/\/([^\/]*\.)?xian-hua\.nease\.net
+https?:\/\/([^\/]*\.)?xiangyujipiao\.com
+https?:\/\/([^\/]*\.)?xibch\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xih-snakesworld-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?xih-topless-babes-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?xihdl\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xionny\.cn
+https?:\/\/([^\/]*\.)?xitokiry\.blogspot\.com
+https?:\/\/([^\/]*\.)?xiwhr\.szm\.sk
+https?:\/\/([^\/]*\.)?xjenhx\.blogspot\.com
+https?:\/\/([^\/]*\.)?xlala\.com
+https?:\/\/([^\/]*\.)?xlale\.com
+https?:\/\/([^\/]*\.)?xlalu\.com
+https?:\/\/([^\/]*\.)?xlvc3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xlxx-com-i0xeru\.blogspot\.com
+https?:\/\/([^\/]*\.)?xlxx-fokiq\.blogspot\.com
+https?:\/\/([^\/]*\.)?xlxx-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?xmail\.net
+https?:\/\/([^\/]*\.)?xmodem-mal\.blogspot\.com
+https?:\/\/([^\/]*\.)?xnbs1\.szm\.sk
+https?:\/\/([^\/]*\.)?xnews\.soad\.umich\.edu
+https?:\/\/([^\/]*\.)?xnxx-com-e06t\.blogspot\.com
+https?:\/\/([^\/]*\.)?xnxx-crcdfs0jy6\.blogspot\.com
+https?:\/\/([^\/]*\.)?xnxxmovies-com-bv10g2\.blogspot\.com
+https?:\/\/([^\/]*\.)?xnxxmovies-com-wv\.blogspot\.com
+https?:\/\/([^\/]*\.)?xo-whatever\.blogspot\.com
+https?:\/\/([^\/]*\.)?xolz4\.szm\.sk
+https?:\/\/([^\/]*\.)?xometi\.com
+https?:\/\/([^\/]*\.)?xonlinedating\.com
+https?:\/\/([^\/]*\.)?xoomer\.alice\.it
+https?:\/\/([^\/]*\.)?xparamacy\.org
+https?:\/\/([^\/]*\.)?xpharmacy\.org
+https?:\/\/([^\/]*\.)?xqnqh\.szm\.sk
+https?:\/\/([^\/]*\.)?xr\.bz
+https?:\/\/([^\/]*\.)?xsecrets-com-kyms\.blogspot\.com
+https?:\/\/([^\/]*\.)?xsgr7\.szm\.sk
+https?:\/\/([^\/]*\.)?xshorturl\.info
+https?:\/\/([^\/]*\.)?xsyvh\.szm\.sk
+https?:\/\/([^\/]*\.)?xt168\.com
+https?:\/\/([^\/]*\.)?xudo-akira\.blogspot\.com
+https?:\/\/([^\/]*\.)?xujwy\.szm\.sk
+https?:\/\/([^\/]*\.)?xun-screwedupmovies-com\.blogspot\.com
+https?:\/\/([^\/]*\.)?xvbbols\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?xvec\.com
+https?:\/\/([^\/]*\.)?xvnj5\.szm\.sk
+https?:\/\/([^\/]*\.)?xwsdr\.szm\.sk
+https?:\/\/([^\/]*\.)?xxellaxx\.250free\.com
+https?:\/\/([^\/]*\.)?xxhk2\.szm\.sk
+https?:\/\/([^\/]*\.)?xxlmovies-com-gswie\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxlmovies-com-m7rg0g8viu\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxlmovies-mcorb4\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxufdm-free-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxx-mature-movie-gallery\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?xxx-pic-blonde\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?xxx-porn-clip-blogn0y\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxx0movie\.info
+https?:\/\/([^\/]*\.)?xxx1adult1video\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxx1clip\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxx1movie\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxx1video\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxdessert-com-rl7e3\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxfolder-com-h3126\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxkey-com-ma\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxlost\.info
+https?:\/\/([^\/]*\.)?xxxphenterm1nen0w\.tripod\.com
+https?:\/\/([^\/]*\.)?xxxpornstarclassics-com-cezx51lw8\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxpornstarclassics-com-d2ttwy\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxpower-net-aped3c1xa\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxproposal-com-b06etpw\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxvogue-hux\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxvogue-net-oe2t1p081c\.blogspot\.com
+https?:\/\/([^\/]*\.)?xxxvogue-net-qerij\.blogspot\.com
+https?:\/\/([^\/]*\.)?xyz-i2\.blogspot\.com
+https?:\/\/([^\/]*\.)?xyzzy-k7c37b5tuw\.blogspot\.com
+https?:\/\/([^\/]*\.)?xzc\.org\.ua
+https?:\/\/([^\/]*\.)?xzgang-bangorgy\.hav\.pl
+https?:\/\/([^\/]*\.)?xznylonlycra\.hav\.pl
+https?:\/\/([^\/]*\.)?xzrapeextreme\.hav\.pl
+https?:\/\/([^\/]*\.)?xzzoodogsex\.hav\.pl
+https?:\/\/([^\/]*\.)?y--e--s\.com
+https?:\/\/([^\/]*\.)?ya\.ru
+https?:\/\/([^\/]*\.)?yaahoeu\.com
+https?:\/\/([^\/]*\.)?yaco-hbkklx6ltp\.blogspot\.com
+https?:\/\/([^\/]*\.)?yahia-g3x\.blogspot\.com
+https?:\/\/([^\/]*\.)?yaho-rei6\.blogspot\.com
+https?:\/\/([^\/]*\.)?yahoochat-w11g7\.blogspot\.com
+https?:\/\/([^\/]*\.)?yale-eui5rgcu\.blogspot\.com
+https?:\/\/([^\/]*\.)?yamaha-scooter\.hotmail\.ru
+https?:\/\/([^\/]*\.)?yamaha-t46nzou\.blogspot\.com
+https?:\/\/([^\/]*\.)?yamaha2scooter\.chat\.ru
+https?:\/\/([^\/]*\.)?yamel-da\.blogspot\.com
+https?:\/\/([^\/]*\.)?yamil-c1n2ob52\.blogspot\.com
+https?:\/\/([^\/]*\.)?yamonee-bqcyojq\.blogspot\.com
+https?:\/\/([^\/]*\.)?yang-as\.blogspot\.com
+https?:\/\/([^\/]*\.)?yankees-o3\.blogspot\.com
+https?:\/\/([^\/]*\.)?yasashisa\.blogspot\.com
+https?:\/\/([^\/]*\.)?yashun-i63\.blogspot\.com
+https?:\/\/([^\/]*\.)?yasin-kfn0g\.blogspot\.com
+https?:\/\/([^\/]*\.)?yaskap\.com
+https?:\/\/([^\/]*\.)?yasmin-hovn5q\.blogspot\.com
+https?:\/\/([^\/]*\.)?yasmin\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?yazar-rnzt\.blogspot\.com
+https?:\/\/([^\/]*\.)?yblwoh-free-video\.blogspot\.com
+https?:\/\/([^\/]*\.)?ycft3\.szm\.sk
+https?:\/\/([^\/]*\.)?ycixxgt\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ycsv1\.szm\.sk
+https?:\/\/([^\/]*\.)?ydyofrj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ydyp\.left-web\.com
+https?:\/\/([^\/]*\.)?ydyp\.zxvo\.com
+https?:\/\/([^\/]*\.)?yehuo\.cn
+https?:\/\/([^\/]*\.)?yell0w-n1njaman\.blogspot\.com
+https?:\/\/([^\/]*\.)?yellow-wc4pxnc\.blogspot\.com
+https?:\/\/([^\/]*\.)?yellowstone-e4b\.blogspot\.com
+https?:\/\/([^\/]*\.)?yes-t2cfk28\.blogspot\.com
+https?:\/\/([^\/]*\.)?yesenia-dip5700iq\.blogspot\.com
+https?:\/\/([^\/]*\.)?yessenia-c0ue443\.blogspot\.com
+https?:\/\/([^\/]*\.)?yetbarek-b31fe\.blogspot\.com
+https?:\/\/([^\/]*\.)?yfojo\.szm\.sk
+https?:\/\/([^\/]*\.)?yfxy2\.szm\.sk
+https?:\/\/([^\/]*\.)?yhmh\.vip\.myrice\.com
+https?:\/\/([^\/]*\.)?yi-gan\.com
+https?:\/\/([^\/]*\.)?yicloqd\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?yiqiyibiao\.dzsc\.com
+https?:\/\/([^\/]*\.)?yisroel-a5dk2rzyvx\.blogspot\.com
+https?:\/\/([^\/]*\.)?yjyvm\.szm\.sk
+https?:\/\/([^\/]*\.)?ymaby\.info
+https?:\/\/([^\/]*\.)?yncharm\.com
+https?:\/\/([^\/]*\.)?ynij1\.szm\.sk
+https?:\/\/([^\/]*\.)?ynkbb\.szm\.sk
+https?:\/\/([^\/]*\.)?ynndy\.szm\.sk
+https?:\/\/([^\/]*\.)?ynztp\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?yoda-oz08ueg\.blogspot\.com
+https?:\/\/([^\/]*\.)?yoel-mu5ej\.blogspot\.com
+https?:\/\/([^\/]*\.)?yogee\.info
+https?:\/\/([^\/]*\.)?yojany-iu3bpg2\.blogspot\.com
+https?:\/\/([^\/]*\.)?yolanda-k1\.blogspot\.com
+https?:\/\/([^\/]*\.)?yomama-hmsa\.blogspot\.com
+https?:\/\/([^\/]*\.)?yongxun\.net
+https?:\/\/([^\/]*\.)?yosemite-gf77c0ggp\.blogspot\.com
+https?:\/\/([^\/]*\.)?yoshi-in-black\.blogspot\.com
+https?:\/\/([^\/]*\.)?yosuke-r8aua1\.blogspot\.com
+https?:\/\/([^\/]*\.)?young-anal-fuck\.travel-ag\.od\.ua
+https?:\/\/([^\/]*\.)?young-anal-sex\.travel-ag\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?young-blonde-slut\.medved\.uzhgorod\.ua
+https?:\/\/([^\/]*\.)?young-britney\.babubi\.net
+https?:\/\/([^\/]*\.)?young-cheerleader-pic\.medved\.od\.ua
+https?:\/\/([^\/]*\.)?young-chubby-pussy\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?young-ffm\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?young-lesbian-having-sex\.protime\.in\.ua
+https?:\/\/([^\/]*\.)?young-sex\.futureblog\.org
+https?:\/\/([^\/]*\.)?young-teen-girl-anal\.aroundworld\.in\.ua
+https?:\/\/([^\/]*\.)?young-tender\.info
+https?:\/\/([^\/]*\.)?young-wqn\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngerbabes-com-d1fem\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngerbabes-com-dpdc\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngerbabes-freesite\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngleafs-eh2a6kcze\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngpervs-com-wdh\.blogspot\.com
+https?:\/\/([^\/]*\.)?youngshemalesex\.com
+https?:\/\/([^\/]*\.)?your-online-health\.com
+https?:\/\/([^\/]*\.)?your-starry-sky\.blogspot\.com
+https?:\/\/([^\/]*\.)?yourbudgetcar\.info
+https?:\/\/([^\/]*\.)?yourbusinesshouston\.info
+https?:\/\/([^\/]*\.)?yourchryslersebring\.info
+https?:\/\/([^\/]*\.)?yourgunter\.com
+https?:\/\/([^\/]*\.)?yourhealthypharmacy\.com
+https?:\/\/([^\/]*\.)?yourlust-com-rttu8a0a\.blogspot\.com
+https?:\/\/([^\/]*\.)?yourmazdacar\.info
+https?:\/\/([^\/]*\.)?yourmerchandise\.org
+https?:\/\/([^\/]*\.)?yourofe\.com
+https?:\/\/([^\/]*\.)?yrada\.flnet\.org
+https?:\/\/([^\/]*\.)?yrecnfz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?yrgs2\.szm\.sk
+https?:\/\/([^\/]*\.)?yronc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ysvc0\.szm\.sk
+https?:\/\/([^\/]*\.)?ytdebao\.com
+https?:\/\/([^\/]*\.)?ytgf84j\.nokedem\.com
+https?:\/\/([^\/]*\.)?ythsq\.com
+https?:\/\/([^\/]*\.)?ytifexil\.org
+https?:\/\/([^\/]*\.)?ytlmc\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ytwoqlj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?yucaibooks\.com
+https?:\/\/([^\/]*\.)?yuebing\.com
+https?:\/\/([^\/]*\.)?yume-taira\.blogspot\.com
+https?:\/\/([^\/]*\.)?yuniel-ebyd5\.blogspot\.com
+https?:\/\/([^\/]*\.)?yunmak\.com
+https?:\/\/([^\/]*\.)?yushantang\.com
+https?:\/\/([^\/]*\.)?yvette-tshq577\.blogspot\.com
+https?:\/\/([^\/]*\.)?yvonte-dyv02l\.blogspot\.com
+https?:\/\/([^\/]*\.)?yvpwh\.szm\.sk
+https?:\/\/([^\/]*\.)?ywnid\.szm\.sk
+https?:\/\/([^\/]*\.)?ywuyuan\.com
+https?:\/\/([^\/]*\.)?ywxjm\.com
+https?:\/\/([^\/]*\.)?yycp\.com
+https?:\/\/([^\/]*\.)?yylive\.info
+https?:\/\/([^\/]*\.)?yyys\.com\.cn
+https?:\/\/([^\/]*\.)?z411\.net
+https?:\/\/([^\/]*\.)?za\.spamim\.net
+https?:\/\/([^\/]*\.)?zabavna9sy4ka\.biografi\.org
+https?:\/\/([^\/]*\.)?zaccary-ciworog\.blogspot\.com
+https?:\/\/([^\/]*\.)?zachariah-bebg88d2x\.blogspot\.com
+https?:\/\/([^\/]*\.)?zacharias-a0kmh1em7\.blogspot\.com
+https?:\/\/([^\/]*\.)?zacharygen-okno4540\.blogspot\.com
+https?:\/\/([^\/]*\.)?zacherie-m82qs0617\.blogspot\.com
+https?:\/\/([^\/]*\.)?zack-ir368\.blogspot\.com
+https?:\/\/([^\/]*\.)?zackari-kkcdz8\.blogspot\.com
+https?:\/\/([^\/]*\.)?zackarylee-h4qu\.blogspot\.com
+https?:\/\/([^\/]*\.)?zackerize-ge\.blogspot\.com
+https?:\/\/([^\/]*\.)?zahtavia-riy3\.blogspot\.com
+https?:\/\/([^\/]*\.)?zaid-wi0g\.blogspot\.com
+https?:\/\/([^\/]*\.)?zaidimar-ej\.blogspot\.com
+https?:\/\/([^\/]*\.)?zainab-t46we0w3y\.blogspot\.com
+https?:\/\/([^\/]*\.)?zakaria-c5j57crpj7\.blogspot\.com
+https?:\/\/([^\/]*\.)?zanaflex\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?zanuda-juja\.blogspot\.com
+https?:\/\/([^\/]*\.)?zap-ar2fzu\.blogspot\.com
+https?:\/\/([^\/]*\.)?zara-oze5dt\.blogspot\.com
+https?:\/\/([^\/]*\.)?zarat\.php5\.cz
+https?:\/\/([^\/]*\.)?zatowana-m5hsah3h\.blogspot\.com
+https?:\/\/([^\/]*\.)?zaxswq\.com
+https?:\/\/([^\/]*\.)?zayfa\.com
+https?:\/\/([^\/]*\.)?zazu-ikzc0402\.blogspot\.com
+https?:\/\/([^\/]*\.)?zbbi8\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?zbifhoep\.t35\.com
+https?:\/\/([^\/]*\.)?zbjyzm1\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zbrown\.org
+https?:\/\/([^\/]*\.)?zbwk\.com
+https?:\/\/([^\/]*\.)?zcld\.net
+https?:\/\/([^\/]*\.)?zdei\.nokedem\.com
+https?:\/\/([^\/]*\.)?zdpid\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?ze-sex-video-download\.blogspot\.com
+https?:\/\/([^\/]*\.)?zebbiejohnson\.blogspot\.com
+https?:\/\/([^\/]*\.)?zebra-ka8g\.blogspot\.com
+https?:\/\/([^\/]*\.)?zebutal\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?zeds\.info
+https?:\/\/([^\/]*\.)?zeku-airhead\.blogspot\.com
+https?:\/\/([^\/]*\.)?zelalal\.darkbb\.com
+https?:\/\/([^\/]*\.)?zelalli\.blogcu\.com
+https?:\/\/([^\/]*\.)?zelbasleto\.heavenforum\.com
+https?:\/\/([^\/]*\.)?zeldomric\.dl\.pl
+https?:\/\/([^\/]*\.)?zelekah-h5u4yo\.blogspot\.com
+https?:\/\/([^\/]*\.)?zella\.grafbb\.com
+https?:\/\/([^\/]*\.)?zelladar\.bb-fr\.com
+https?:\/\/([^\/]*\.)?zellapask\.lolbb\.com
+https?:\/\/([^\/]*\.)?zelpasacel\.dl\.pl
+https?:\/\/([^\/]*\.)?zelrelacel\.su\.pl
+https?:\/\/([^\/]*\.)?zelrelli\.zj\.pl
+https?:\/\/([^\/]*\.)?zelrelzel\.blogcu\.com
+https?:\/\/([^\/]*\.)?zelrictr\.lolforum\.net
+https?:\/\/([^\/]*\.)?zelvaracel\.zikforum\.com
+https?:\/\/([^\/]*\.)?zelviacel\.frbb\.net
+https?:\/\/([^\/]*\.)?zelvicat\.fr-bb\.com
+https?:\/\/([^\/]*\.)?zemiacik\.yi\.org
+https?:\/\/([^\/]*\.)?zena-grmhf3shi\.blogspot\.com
+https?:\/\/([^\/]*\.)?zenaidalee-rm0p6t8md\.blogspot\.com
+https?:\/\/([^\/]*\.)?zenda-wszf1\.blogspot\.com
+https?:\/\/([^\/]*\.)?zennie-ey5i633f\.blogspot\.com
+https?:\/\/([^\/]*\.)?zenw7\.szm\.sk
+https?:\/\/([^\/]*\.)?zephyr-tk1\.blogspot\.com
+https?:\/\/([^\/]*\.)?zepporah-dypvn5g3\.blogspot\.com
+https?:\/\/([^\/]*\.)?zerks\.info
+https?:\/\/([^\/]*\.)?zfbfbs9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zfkmaei\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zghy2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zgzr\.com
+https?:\/\/([^\/]*\.)?zhenrong\.com\.cn
+https?:\/\/([^\/]*\.)?zhihehotel\.com
+https?:\/\/([^\/]*\.)?zhiju\.home4u\.china\.com
+https?:\/\/([^\/]*\.)?zhkaw\.com
+https?:\/\/([^\/]*\.)?zhkuj\.fr33webhost\.com
+https?:\/\/([^\/]*\.)?zhopaitalii\.info
+https?:\/\/([^\/]*\.)?zhuxg\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zhw35iida\.org
+https?:\/\/([^\/]*\.)?ziahya-cbqb\.blogspot\.com
+https?:\/\/([^\/]*\.)?zimg4\.szm\.sk
+https?:\/\/([^\/]*\.)?zimmerman-a4shi\.blogspot\.com
+https?:\/\/([^\/]*\.)?zippedurl\.com
+https?:\/\/([^\/]*\.)?zisai\.com\.cn
+https?:\/\/([^\/]*\.)?ziseq-sex-movie-x\.blogspot\.com
+https?:\/\/([^\/]*\.)?zithromaxbuycheap\.drive\.to
+https?:\/\/([^\/]*\.)?zithromaxbuygeneric\.cut\.by
+https?:\/\/([^\/]*\.)?zithromaxcheap\.drive\.to
+https?:\/\/([^\/]*\.)?zithromaxgenericbuy\.drive\.to
+https?:\/\/([^\/]*\.)?zithromaxgenericcheap\.dive\.to
+https?:\/\/([^\/]*\.)?zithromaxxonline\.ovp\.pl
+https?:\/\/([^\/]*\.)?zivuc-free-sex-movie-l\.blogspot\.com
+https?:\/\/([^\/]*\.)?zjeyu\.com
+https?:\/\/([^\/]*\.)?zjpgxo4\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zjudeyah-m2r38d\.blogspot\.com
+https?:\/\/([^\/]*\.)?zjww\.com
+https?:\/\/([^\/]*\.)?zlid3\.szm\.sk
+https?:\/\/([^\/]*\.)?zljekr8\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zlocztw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zmga3\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zmodem-isjrjd\.blogspot\.com
+https?:\/\/([^\/]*\.)?zocor\.bad-food\.net
+https?:\/\/([^\/]*\.)?zocor\.barnkalas\.net
+https?:\/\/([^\/]*\.)?zocor\.blomberg\.nu
+https?:\/\/([^\/]*\.)?zocor\.bokmarke\.nu
+https?:\/\/([^\/]*\.)?zocor\.bredbandsfabriken\.nu
+https?:\/\/([^\/]*\.)?zocor\.center\.nu
+https?:\/\/([^\/]*\.)?zocor\.hellstrom\.nu
+https?:\/\/([^\/]*\.)?zocor\.hem\.nu
+https?:\/\/([^\/]*\.)?zocor\.infosajt\.net
+https?:\/\/([^\/]*\.)?zocor\.internetreklam\.nu
+https?:\/\/([^\/]*\.)?zocor\.jacobson\.nu
+https?:\/\/([^\/]*\.)?zoe-ktd\.blogspot\.com
+https?:\/\/([^\/]*\.)?zofarl\.com
+https?:\/\/([^\/]*\.)?zofia-hkn\.blogspot\.com
+https?:\/\/([^\/]*\.)?zoie-g2h02z5mta\.blogspot\.com
+https?:\/\/([^\/]*\.)?zoklaku\.forumculture\.net
+https?:\/\/([^\/]*\.)?zoklapec\.dynamicbb\.com
+https?:\/\/([^\/]*\.)?zoloft\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?zoloft\.1k\.pl
+https?:\/\/([^\/]*\.)?zoloft\.skocz\.net
+https?:\/\/([^\/]*\.)?zombie-r7ye\.blogspot\.com
+https?:\/\/([^\/]*\.)?zovirax\.esdemasiado\.com
+https?:\/\/([^\/]*\.)?zovirax\.inicioya\.com
+https?:\/\/([^\/]*\.)?zovirax\.ole\.to
+https?:\/\/([^\/]*\.)?zovirax\.redireccion\.com
+https?:\/\/([^\/]*\.)?zoya-w1tebgqbtr\.blogspot\.com
+https?:\/\/([^\/]*\.)?zpbvsng\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zpco4\.szm\.sk
+https?:\/\/([^\/]*\.)?zpykbi9\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zqit6\.szm\.sk
+https?:\/\/([^\/]*\.)?zqxss\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zsbupdo\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zswok\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zsxqgv2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ztauk\.szm\.sk
+https?:\/\/([^\/]*\.)?ztkvz\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ztlztpj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?ztnqok7\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zuleima-epbxv\.blogspot\.com
+https?:\/\/([^\/]*\.)?zulema-tsaieb\.blogspot\.com
+https?:\/\/([^\/]*\.)?zulmarie-dk8\.blogspot\.com
+https?:\/\/([^\/]*\.)?zuri-ch0\.blogspot\.com
+https?:\/\/([^\/]*\.)?zurysarai-bykp\.blogspot\.com
+https?:\/\/([^\/]*\.)?zusette-ai2\.blogspot\.com
+https?:\/\/([^\/]*\.)?zvcqr\.szm\.sk
+https?:\/\/([^\/]*\.)?zvnaw\.szm\.sk
+https?:\/\/([^\/]*\.)?zvoh2\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zvzsxqw\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zxtpets\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zya9\.info
+https?:\/\/([^\/]*\.)?zyban\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?zyban\.controlando\.com
+https?:\/\/([^\/]*\.)?zybans\.blogspot\.com
+https?:\/\/([^\/]*\.)?zyrtec\.1\.p2l\.info
+https?:\/\/([^\/]*\.)?zyrtec\.1k\.pl
+https?:\/\/([^\/]*\.)?zyrtec\.coz\.in
+https?:\/\/([^\/]*\.)?zywyn\.info
+https?:\/\/([^\/]*\.)?zzcwj\.myfreewebhost\.org
+https?:\/\/([^\/]*\.)?zzdx\.com
diff --git a/mod/dokuwiki/vendors/dokuwiki/conf/words.aspell.dist b/mod/dokuwiki/vendors/dokuwiki/conf/words.aspell.dist
new file mode 100644
index 000000000..a49138fcb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/conf/words.aspell.dist
@@ -0,0 +1,5 @@
+personal_ws-1.1 en 4 utf-8
+DokuWiki
+Wiki
+WikiWiki
+Gohr
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/_dummy
new file mode 100644
index 000000000..37ed18a63
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/_dummy
@@ -0,0 +1 @@
+data directory
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/attic/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/attic/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/attic/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/cache/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/cache/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/cache/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/index/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/index/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/index/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/locks/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/locks/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/locks/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/media/wiki/dokuwiki-128.png b/mod/dokuwiki/vendors/dokuwiki/data/media/wiki/dokuwiki-128.png
new file mode 100644
index 000000000..b2306ac95
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/media/wiki/dokuwiki-128.png
Binary files differ
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/meta/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/meta/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/meta/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/pages/playground/playground.txt b/mod/dokuwiki/vendors/dokuwiki/data/pages/playground/playground.txt
new file mode 100644
index 000000000..a2274bda4
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/pages/playground/playground.txt
@@ -0,0 +1 @@
+====== PlayGround ======
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/pages/sidebar.txt b/mod/dokuwiki/vendors/dokuwiki/data/pages/sidebar.txt
new file mode 100644
index 000000000..090a66349
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/pages/sidebar.txt
@@ -0,0 +1,2 @@
+{{indexmenu>..#1|js#thread navbar}}
+
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/dokuwiki.txt b/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/dokuwiki.txt
new file mode 100644
index 000000000..2cede366f
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/dokuwiki.txt
@@ -0,0 +1,66 @@
+[[http://www.dokuwiki.org/es:dokuwiki|es]] [[http://www.dokuwiki.org/ca:dokuwiki|ca]] [[http://www.dokuwiki.org/fr:dokuwiki|fr]] [[http://www.dokuwiki.org/dokuwiki|more]]
+
+====== DokuWiki ======
+
+[[doku>wiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki:syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files -- no database is required.
+
+Read the [[doku>manual|DokuWiki Manual]] to unleash the full power of DokuWiki.
+
+===== Download =====
+
+DokuWiki is available at http://www.splitbrain.org/go/dokuwiki
+
+
+===== Read More =====
+
+All documentation and additional information besides the [[syntax|syntax description]] is maintained in the DokuWiki at [[doku>|www.dokuwiki.org]].
+
+**About DokuWiki**
+
+ * [[doku>features|A feature list]] :!:
+ * [[doku>users|Happy Users]]
+ * [[doku>press|Who wrote about it]]
+ * [[doku>blogroll|What Bloggers think]]
+ * [[http://www.wikimatrix.org/show/DokuWiki|Compare it with other wiki software]]
+
+**Installing DokuWiki**
+
+ * [[doku>requirements|System Requirements]]
+ * [[http://www.splitbrain.org/go/dokuwiki|Download DokuWiki]] :!:
+ * [[doku>changes|Change Log]]
+ * [[doku>Install|How to install or upgrade]] :!:
+ * [[doku>config|Configuration]]
+
+**Using DokuWiki**
+
+ * [[doku>syntax|Wiki Syntax]]
+ * [[doku>manual|The manual]] :!:
+ * [[doku>FAQ|Frequently Asked Questions (FAQ)]]
+ * [[doku>glossary|Glossary]]
+ * [[http://search.dokuwiki.org|Search for DokuWiki help and documentation]]
+
+**Customizing DokuWiki**
+
+ * [[doku>tips|Tips and Tricks]]
+ * [[doku>Template|How to create and use templates]]
+ * [[doku>plugins|Installing plugins]]
+ * [[doku>development|Development Resources]]
+
+**DokuWiki Feedback and Community**
+
+ * [[doku>newsletter|Subscribe to the newsletter]] :!:
+ * [[doku>mailinglist|Join the mailing list]]
+ * [[http://forum.dokuwiki.org|Check out the user forum]]
+ * [[doku>irc|Talk to other users in the IRC channel]]
+ * [[http://bugs.splitbrain.org/index.php?project=1|Submit bugs and feature wishes]]
+ * [[http://www.wikimatrix.org/forum/viewforum.php?id=10|Share your experiences in the WikiMatrix forum]]
+ * [[doku>thanks|Some humble thanks]]
+
+
+===== Copyright =====
+
+2004-2009 (c) Andreas Gohr <andi@splitbrain.org>((Please do not contact me for help and support -- use the [[doku>mailinglist]] or [[http://forum.dokuwiki.org|forum]] instead))
+
+The DokuWiki engine is licensed under [[http://www.gnu.org/licenses/gpl.html|GNU General Public License]] Version 2. If you use DokuWiki in your company, consider [[doku>donate|donating]] a few bucks ;-).
+
+Not sure what this means? See the [[doku>faq:license|FAQ on the Licenses]].
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/syntax.txt b/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/syntax.txt
new file mode 100644
index 000000000..7dad453db
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/pages/wiki/syntax.txt
@@ -0,0 +1,488 @@
+[[http://www.dokuwiki.org/es:syntax|es]] [[http://www.dokuwiki.org/ca:syntax|ca]] [[http://www.dokuwiki.org/fr:syntax|fr]] [[http://www.dokuwiki.org/syntax|more]]
+
+====== Formatting Syntax ======
+
+[[doku>DokuWiki]] supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing the //Edit this page// button at the top or bottom of the page. If you want to try something, just use the [[playground:playground|playground]] page. The simpler markup is easily accessible via [[doku>toolbar|quickbuttons]], too.
+
+===== Basic Text Formatting =====
+
+DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these.
+
+ DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts.
+ Of course you can **__//''combine''//__** all these.
+
+You can use <sub>subscript</sub> and <sup>superscript</sup>, too.
+
+ You can use <sub>subscript</sub> and <sup>superscript</sup>, too.
+
+You can mark something as <del>deleted</del> as well.
+
+ You can mark something as <del>deleted</del> as well.
+
+**Paragraphs** are created from blank lines. If you want to **force a newline** without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
+
+This is some text with some linebreaks\\ Note that the
+two backslashes are only recognized at the end of a line\\
+or followed by\\ a whitespace \\this happens without it.
+
+ This is some text with some linebreaks\\ Note that the
+ two backslashes are only recognized at the end of a line\\
+ or followed by\\ a whitespace \\this happens without it.
+
+You should use forced newlines only if really needed.
+
+===== Links =====
+
+DokuWiki supports multiple ways of creating links.
+
+==== External ====
+
+External links are recognized automagically: http://www.google.com or simply www.google.com - You can set the link text as well: [[http://www.google.com|This Link points to google]]. Email addresses like this one: <andi@splitbrain.org> are recognized, too.
+
+ DokuWiki supports multiple ways of creating links. External links are recognized
+ automagically: http://www.google.com or simply www.google.com - You can set
+ link text as well: [[http://www.google.com|This Link points to google]]. Email
+ addresses like this one: <andi@splitbrain.org> are recognized, too.
+
+==== Internal ====
+
+Internal links are created by using square brackets. You can either just give a [[pagename]] or use an additional [[pagename|link text]].
+
+ Internal links are created by using square brackets. You can either just give
+ a [[pagename]] or use an additional [[pagename|link text]].
+
+[[doku>pagename|Wiki pagenames]] are converted to lowercase automatically, special characters are not allowed.
+
+You can use [[some:namespaces]] by using a colon in the pagename.
+
+ You can use [[some:namespaces]] by using a colon in the pagename.
+
+For details about namespaces see [[doku>namespaces]].
+
+Linking to a specific section is possible, too. Just add the section name behind a hash character as known from HTML. This links to [[syntax#internal|this Section]].
+
+ This links to [[syntax#internal|this Section]].
+
+Notes:
+
+ * Links to [[syntax|existing pages]] are shown in a different style from [[nonexisting]] ones.
+ * DokuWiki does not use [[wp>CamelCase]] to automatically create links by default, but this behavior can be enabled in the [[doku>config]] file. Hint: If DokuWiki is a link, then it's enabled.
+ * When a section's heading is changed, its bookmark changes, too. So don't rely on section linking too much.
+
+==== Interwiki ====
+
+DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]].
+
+ DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis.
+ For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]].
+
+
+==== Windows Shares ====
+
+Windows shares like [[\\server\share|this]] are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate [[wp>Intranet]].
+
+ Windows Shares like [[\\server\share|this]] are recognized, too.
+
+Notes:
+
+ * For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the "local zone").
+ * For Mozilla and Firefox it can be enabled through different workaround mentioned in the [[http://kb.mozillazine.org/Links_to_local_pages_don't_work|Mozilla Knowledge Base]].
+
+
+==== Image Links ====
+
+You can also use an image to link to another internal or external page by combining the syntax for links and [[#images_and_other_files|images]] (see below) like this:
+
+ [[http://www.php.net|{{wiki:dokuwiki-128.png}}]]
+
+[[http://www.php.net|{{wiki:dokuwiki-128.png}}]]
+
+Please note: The image formatting is the only formatting syntax accepted in link names.
+
+The whole [[#images_and_other_files|image]] and [[#links|link]] syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
+
+===== Footnotes =====
+
+You can add footnotes ((This is a footnote)) by using double parentheses.
+
+ You can add footnotes ((This is a footnote)) by using double parentheses.
+
+===== Sectioning =====
+
+You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically -- this can be disabled by including the string ''<nowiki>~~NOTOC~~</nowiki>'' in the document.
+
+==== Headline Level 3 ====
+=== Headline Level 4 ===
+== Headline Level 5 ==
+
+ ==== Headline Level 3 ====
+ === Headline Level 4 ===
+ == Headline Level 5 ==
+
+By using four or more dashes, you can make a horizontal line:
+
+----
+
+===== Images and Other Files =====
+
+You can include external and internal [[doku>images]] with curly brackets. Optionally you can specify the size of them.
+
+Real size: {{wiki:dokuwiki-128.png}}
+
+Resize to given width: {{wiki:dokuwiki-128.png?50}}
+
+Resize to given width and height((when the aspect ratio of the given width and height doesn't match that of the image, it will be cropped to the new ratio before resizing)): {{wiki:dokuwiki-128.png?200x50}}
+
+Resized external image: {{http://de3.php.net/images/php.gif?200x50}}
+
+ Real size: {{wiki:dokuwiki-128.png}}
+ Resize to given width: {{wiki:dokuwiki-128.png?50}}
+ Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}}
+ Resized external image: {{http://de3.php.net/images/php.gif?200x50}}
+
+
+By using left or right whitespaces you can choose the alignment.
+
+{{ wiki:dokuwiki-128.png}}
+
+{{wiki:dokuwiki-128.png }}
+
+{{ wiki:dokuwiki-128.png }}
+
+ {{ wiki:dokuwiki-128.png}}
+ {{wiki:dokuwiki-128.png }}
+ {{ wiki:dokuwiki-128.png }}
+
+Of course, you can add a title (displayed as a tooltip by most browsers), too.
+
+{{ wiki:dokuwiki-128.png |This is the caption}}
+
+ {{ wiki:dokuwiki-128.png |This is the caption}}
+
+If you specify a filename (external or internal) that is not an image (''gif, jpeg, png''), then it will be displayed as a link instead.
+
+For linking an image to another page see [[#Image Links]] above.
+
+===== Lists =====
+
+Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a ''*'' for unordered lists or a ''-'' for ordered ones.
+
+ * This is a list
+ * The second item
+ * You may have different levels
+ * Another item
+
+ - The same list but ordered
+ - Another item
+ - Just use indention for deeper levels
+ - That's it
+
+<code>
+ * This is a list
+ * The second item
+ * You may have different levels
+ * Another item
+
+ - The same list but ordered
+ - Another item
+ - Just use indention for deeper levels
+ - That's it
+</code>
+
+Also take a look at the [[doku>faq:lists|FAQ on list items]].
+
+===== Text Conversions =====
+
+DokuWiki can convert certain pre-defined characters or strings into images or other text or HTML.
+
+The text to image conversion is mainly done for smileys. And the text to HTML conversion is used for typography replacements, but can be configured to use other HTML as well.
+
+==== Text to Image Conversions ====
+
+DokuWiki converts commonly used [[wp>emoticon]]s to their graphical equivalents. Those [[doku>Smileys]] and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
+
+ * 8-) %% 8-) %%
+ * 8-O %% 8-O %%
+ * :-( %% :-( %%
+ * :-) %% :-) %%
+ * =) %% =) %%
+ * :-/ %% :-/ %%
+ * :-\ %% :-\ %%
+ * :-? %% :-? %%
+ * :-D %% :-D %%
+ * :-P %% :-P %%
+ * :-O %% :-O %%
+ * :-X %% :-X %%
+ * :-| %% :-| %%
+ * ;-) %% ;-) %%
+ * ^_^ %% ^_^ %%
+ * :?: %% :?: %%
+ * :!: %% :!: %%
+ * LOL %% LOL %%
+ * FIXME %% FIXME %%
+ * DELETEME %% DELETEME %%
+
+==== Text to HTML Conversions ====
+
+Typography: [[DokuWiki]] can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
+
+-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r)
+"He thought 'It's a man's world'..."
+
+<code>
+-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r)
+"He thought 'It's a man's world'..."
+</code>
+
+The same can be done to produce any kind of HTML, it just needs to be added to the [[doku>entities|pattern file]].
+
+There are three exceptions which do not come from that pattern file: multiplication entity (640x480), 'single' and "double quotes". They can be turned off through a [[doku>config:typography|config option]].
+
+===== Quoting =====
+
+Some times you want to mark some text to show it's a reply or comment. You can use the following syntax:
+
+ I think we should do it
+
+ > No we shouldn't
+
+ >> Well, I say we should
+
+ > Really?
+
+ >> Yes!
+
+ >>> Then lets do it!
+
+I think we should do it
+
+> No we shouldn't
+
+>> Well, I say we should
+
+> Really?
+
+>> Yes!
+
+>>> Then lets do it!
+
+===== Tables =====
+
+DokuWiki supports a simple syntax to create tables.
+
+^ Heading 1 ^ Heading 2 ^ Heading 3 ^
+| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
+| Row 2 Col 1 | some colspan (note the double pipe) ||
+| Row 3 Col 1 | Row 3 Col 2 | Row 3 Col 3 |
+
+Table rows have to start and end with a ''|'' for normal rows or a ''^'' for headers.
+
+ ^ Heading 1 ^ Heading 2 ^ Heading 3 ^
+ | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
+ | Row 2 Col 1 | some colspan (note the double pipe) ||
+ | Row 3 Col 1 | Row 3 Col 2 | Row 3 Col 3 |
+
+To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
+
+Vertical tableheaders are possible, too.
+
+| ^ Heading 1 ^ Heading 2 ^
+^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 |
+^ Heading 4 | no colspan this time | |
+^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 |
+
+As you can see, it's the cell separator before a cell which decides about the formatting:
+
+ | ^ Heading 1 ^ Heading 2 ^
+ ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 |
+ ^ Heading 4 | no colspan this time | |
+ ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 |
+
+You can have rowspans (vertically connected cells) by adding '':::'' into the cells below the one to which they should connect.
+
+^ Heading 1 ^ Heading 2 ^ Heading 3 ^
+| Row 1 Col 1 | this cell spans vertically | Row 1 Col 3 |
+| Row 2 Col 1 | ::: | Row 2 Col 3 |
+| Row 3 Col 1 | ::: | Row 2 Col 3 |
+
+Apart from the rowspan syntax those cells should not contain anything else.
+
+ ^ Heading 1 ^ Heading 2 ^ Heading 3 ^
+ | Row 1 Col 1 | this cell spans vertically | Row 1 Col 3 |
+ | Row 2 Col 1 | ::: | Row 2 Col 3 |
+ | Row 3 Col 1 | ::: | Row 2 Col 3 |
+
+You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
+
+^ Table with alignment ^^^
+| right| center |left |
+|left | right| center |
+| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
+
+This is how it looks in the source:
+
+ ^ Table with alignment ^^^
+ | right| center |left |
+ |left | right| center |
+ | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
+
+Note: Vertical alignment is not supported.
+
+===== No Formatting =====
+
+If you need to display text exactly like it is typed (without any formatting), enclose the area either with ''%%<nowiki>%%'' tags or even simpler, with double percent signs ''<nowiki>%%</nowiki>''.
+
+<nowiki>
+This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
+</nowiki>
+The same is true for %%//__this__ text// with a smiley ;-)%%.
+
+ <nowiki>
+ This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
+ </nowiki>
+ The same is true for %%//__this__ text// with a smiley ;-)%%.
+
+===== Code Blocks =====
+
+You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags ''%%<code>%%'' or ''%%<file>%%''.
+
+ This is text is indented by two spaces.
+
+<code>
+This is preformatted code all spaces are preserved: like <-this
+</code>
+
+<file>
+This is pretty much the same, but you could use it to show that you quoted a file.
+</file>
+
+Those blocks were created by this source:
+
+ This is text is indented by two spaces.
+
+ <code>
+ This is preformatted code all spaces are preserved: like <-this
+ </code>
+
+ <file>
+ This is pretty much the same, but you could use it to show that you quoted a file.
+ </file>
+
+==== Syntax Highlighting ====
+
+[[wiki:DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax is the same like in the code and file blocks in the previous section, but this time the name of the used language is inserted inside the tag. Eg. ''<nowiki><code java></nowiki>'' or ''<nowiki><file java></nowiki>''.
+
+<code java>
+/**
+ * The HelloWorldApp class implements an application that
+ * simply displays "Hello World!" to the standard output.
+ */
+class HelloWorldApp {
+ public static void main(String[] args) {
+ System.out.println("Hello World!"); //Display the string.
+ }
+}
+</code>
+
+The following language strings are currently recognized: //abap, actionscript-french, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoit, avisynth, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, cmake, cobol, cpp, cpp-qt, csharp, css, d, dcs, delphi, diff, div, dos, dot, eiffel, email, erlang, fo, fortran, freebasic, genero, glsl, gml, gnuplot, groovy, gettext, haskell, hq9plus, html, idl, ini, inno, intercal, io, java5, java, javascript, kixtart, klonec, klonecpp, latex, lisp, locobasic, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, make, matlab, mirc, modula3, mpasm, mxml, mysql, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle8, oracle11, pascal, perl, per, php-brief, php, pic16, pixelbender, plsql, povray, powershell, progress, prolog, properties, providex, python, qbasic, rails, rebol, reg, robots, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, tcl, teraterm, text, thinbasic, tsql, typoscript, vbnet, vb, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, winbatch, whois, xml, xorg_conf, xpp, z80//
+
+==== Downloadable Code Blocks ====
+
+When you use the ''%%<code>%%'' or ''%%<file>%%'' syntax as above, you might want to make the shown code available for download as well. You can to this by specifying a file name after language code like this:
+
+<code>
+<file php myexample.php>
+<?php echo "hello world!"; ?>
+</file>
+</code>
+
+<file php myexample.php>
+<?php echo "hello world!"; ?>
+</file>
+
+If you don't want any highlighting but want a downloadable file, specify a dash (''-'') as the language code: ''%%<code - myfile.foo>%%''.
+
+
+===== Embedding HTML and PHP =====
+
+You can embed raw HTML or PHP code into your documents by using the ''%%<html>%%'' or ''%%<php>%%'' tags. (Use uppercase tags if you need to enclose block level elements.)
+
+HTML example:
+
+<code>
+<html>
+This is some <span style="color:red;font-size:150%;">inline HTML</span>
+</html>
+<HTML>
+<p style="border:2px dashed red;">And this is some block HTML</p>
+</HTML>
+</code>
+
+<html>
+This is some <span style="color:red;font-size:150%;">inline HTML</span>
+</html>
+<HTML>
+<p style="border:2px dashed red;">And this is some block HTML</p>
+</HTML>
+
+PHP example:
+
+<code>
+<php>
+echo 'A logo generated by PHP:';
+echo '<img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" />';
+echo '(generated inline HTML)';
+</php>
+<PHP>
+echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>';
+echo '<td><img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" /></td>';
+echo '</tr></table>';
+</PHP>
+</code>
+
+<php>
+echo 'A logo generated by PHP:';
+echo '<img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" />';
+echo '(inline HTML)';
+</php>
+<PHP>
+echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>';
+echo '<td><img src="' . $_SERVER['PHP_SELF'] . '?=' . php_logo_guid() . '" alt="PHP Logo !" /></td>';
+echo '</tr></table>';
+</PHP>
+
+**Please Note**: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed.
+
+===== RSS/ATOM Feed Aggregation =====
+[[DokuWiki]] can integrate data from external XML feeds. For parsing the XML feeds, [[http://simplepie.org/|SimplePie]] is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
+
+^ Parameter ^ Description ^
+| any number | will be used as maximum number items to show, defaults to 8 |
+| reverse | display the last items in the feed first |
+| author | show item authors names |
+| date | show item dates |
+| description| show the item description. If [[doku>config:htmlok|HTML]] is disabled all tags will be stripped |
+| //n//[dhm] | refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). |
+
+The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. [[wiki:DokuWiki]] will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells [[wiki:DokuWiki]] to re-render the page if it is more than //refresh period// since the page was last rendered.
+
+**Example:**
+
+ {{rss>http://slashdot.org/index.rss 5 author date 1h }}
+
+{{rss>http://slashdot.org/index.rss 5 author date 1h }}
+
+
+===== Control Macros =====
+
+Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
+
+^ Macro ^ Description |
+| %%~~NOTOC~~%% | If this macro is found on the page, no table of contents will be created |
+| %%~~NOCACHE~~%% | DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the %%<php>%% syntax above is used), adding this macro will force DokuWiki to rerender a page on every call |
+
+===== Syntax Plugins =====
+
+DokuWiki's syntax can be extended by [[doku>plugins|Plugins]]. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
+
+~~INFO:syntaxplugins~~
diff --git a/mod/dokuwiki/vendors/dokuwiki/data/tmp/_dummy b/mod/dokuwiki/vendors/dokuwiki/data/tmp/_dummy
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/data/tmp/_dummy
diff --git a/mod/dokuwiki/vendors/dokuwiki/doku.php b/mod/dokuwiki/vendors/dokuwiki/doku.php
new file mode 100644
index 000000000..5566577f6
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/doku.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * DokuWiki mainscript
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// xdebug_start_profiling();
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
+global $ACT;
+global $conf;
+
+if (isset($_SERVER['HTTP_X_DOKUWIKI_DO'])){
+ $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO']));
+} elseif (!empty($IDX)) {
+ $ACT = 'index';
+} elseif (get_input('do')) {
+ $ACT = get_input('do');
+} else {
+ $ACT = 'show';
+}
+
+global $QUERY;
+global $ID;
+global $NS;
+global $REV;
+global $IDX;
+global $DATE;
+global $RANGE;
+global $HIGH;
+global $TEXT;
+global $PRE;
+global $SUF;
+global $SUM;
+global $REV;
+global $INFO;
+global $JSINFO;
+
+
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/events.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/html.php');
+require_once(DOKU_INC.'inc/auth.php');
+require_once(DOKU_INC.'inc/actions.php');
+
+//import variables
+$QUERY = trim(get_input('id'));
+$ID = getID();
+$NS = getNS($ID);
+$REV = get_input('rev');
+$IDX = get_input('idx');
+$DATE = get_input('date');
+$RANGE = get_input('lines');
+$HIGH = get_input('s');
+if(empty($HIGH)) $HIGH = getGoogleQuery();
+
+$TEXT = cleanText($_POST['wikitext']);
+$PRE = cleanText($_POST['prefix']);
+$SUF = cleanText($_POST['suffix']);
+$SUM = get_input('summary');
+
+//sanitize revision
+$REV = preg_replace('/[^0-9]/','',$REV);
+
+//make infos about the selected page available
+$INFO = pageinfo();
+
+//export minimal infos to JS, plugins can add more
+$JSINFO['id'] = $ID;
+$JSINFO['namespace'] = (string) $INFO['namespace'];
+
+
+// handle debugging
+if($conf['allowdebug'] && $ACT == 'debug'){
+ html_debug();
+ exit;
+}
+
+//send 404 for missing pages if configured or ID has special meaning to bots
+if(!$INFO['exists'] &&
+ ($conf['send404'] || preg_match('/^(robots\.txt|sitemap\.xml(\.gz)?|favicon\.ico|crossdomain\.xml)$/',$ID)) &&
+ ($ACT == 'show' || substr($ACT,0,7) == 'export_') ){
+ header('HTTP/1.0 404 Not Found');
+}
+
+//prepare breadcrumbs (initialize a static var)
+if ($conf['breadcrumbs']) breadcrumbs();
+
+// check upstream
+checkUpdateMessages();
+
+$tmp = array(); // No event data
+trigger_event('DOKUWIKI_STARTED',$tmp);
+
+//close session
+session_write_close();
+
+//do the work
+act_dispatch($ACT);
+
+$tmp = array(); // No event data
+trigger_event('DOKUWIKI_DONE', $tmp);
+
+// xdebug_dump_function_profile(1);
+?>
diff --git a/mod/dokuwiki/vendors/dokuwiki/feed.php b/mod/dokuwiki/vendors/dokuwiki/feed.php
new file mode 100644
index 000000000..e7ea5808c
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/feed.php
@@ -0,0 +1,353 @@
+<?php
+/**
+ * XML feed export
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/events.php');
+require_once(DOKU_INC.'inc/parserutils.php');
+require_once(DOKU_INC.'inc/feedcreator.class.php');
+require_once(DOKU_INC.'inc/auth.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/httputils.php');
+
+//close session
+session_write_close();
+
+// get params
+$opt = rss_parseOptions();
+
+// the feed is dynamic - we need a cache for each combo
+// (but most people just use the default feed so it's still effective)
+$cache = getCacheName(join('',array_values($opt)).$_SERVER['REMOTE_USER'],'.feed');
+$key = join('', array_values($opt)) . $_SERVER['REMOTE_USER'];
+$cache = new cache($key, '.feed');
+
+// prepare cache depends
+$depends['files'] = getConfigFiles('main');
+$depends['age'] = $conf['rss_update'];
+$depends['purge'] = ($_REQUEST['purge']) ? true : false;
+
+// check cacheage and deliver if nothing has changed since last
+// time or the update interval has not passed, also handles conditional requests
+header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+header('Pragma: public');
+header('Content-Type: application/xml; charset=utf-8');
+header('X-Robots-Tag: noindex');
+if($cache->useCache($depends)) {
+ http_conditionalRequest($cache->_time);
+ if($conf['allowdebug']) header("X-CacheUsed: $cache->cache");
+ print $cache->retrieveCache();
+ exit;
+} else {
+ http_conditionalRequest(time());
+ }
+
+// create new feed
+$rss = new DokuWikiFeedCreator();
+$rss->title = $conf['title'].(($opt['namespace']) ? ' '.$opt['namespace'] : '');
+$rss->link = DOKU_URL;
+$rss->syndicationURL = DOKU_URL.'feed.php';
+$rss->cssStyleSheet = DOKU_URL.'lib/exe/css.php?s=feed';
+
+$image = new FeedImage();
+$image->title = $conf['title'];
+$image->url = DOKU_URL."lib/images/favicon.ico";
+$image->link = DOKU_URL;
+$rss->image = $image;
+
+$data = null;
+if($opt['feed_mode'] == 'list'){
+ $data = rssListNamespace($opt);
+}elseif($opt['feed_mode'] == 'search'){
+ $data = rssSearch($opt);
+}else{
+ $eventData = array(
+ 'opt' => &$opt,
+ 'data' => &$data,
+ );
+ $event = new Doku_Event('FEED_MODE_UNKNOWN', $eventData);
+ if ($event->advise_before(true)) {
+ $data = rssRecentChanges($opt);
+ }
+ $event->advise_after();
+}
+
+rss_buildItems($rss, $data, $opt);
+$feed = $rss->createFeed($opt['feed_type'],'utf-8');
+
+// save cachefile
+$cache->storeCache($feed);
+
+// finally deliver
+print $feed;
+
+// ---------------------------------------------------------------- //
+
+/**
+ * Get URL parameters and config options and return a initialized option array
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function rss_parseOptions(){
+ global $conf;
+
+ $opt['items'] = (int) $_REQUEST['num'];
+ $opt['feed_type'] = $_REQUEST['type'];
+ $opt['feed_mode'] = $_REQUEST['mode'];
+ $opt['show_minor'] = $_REQUEST['minor'];
+ $opt['namespace'] = $_REQUEST['ns'];
+ $opt['link_to'] = $_REQUEST['linkto'];
+ $opt['item_content'] = $_REQUEST['content'];
+ $opt['search_query'] = $_REQUEST['q'];
+
+ if(!$opt['feed_type']) $opt['feed_type'] = $conf['rss_type'];
+ if(!$opt['item_content']) $opt['item_content'] = $conf['rss_content'];
+ if(!$opt['link_to']) $opt['link_to'] = $conf['rss_linkto'];
+ if(!$opt['items']) $opt['items'] = $conf['recent'];
+ $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none');
+
+ switch ($opt['feed_type']){
+ case 'rss':
+ $opt['feed_type'] = 'RSS0.91';
+ $opt['mime_type'] = 'text/xml';
+ break;
+ case 'rss2':
+ $opt['feed_type'] = 'RSS2.0';
+ $opt['mime_type'] = 'text/xml';
+ break;
+ case 'atom':
+ $opt['feed_type'] = 'ATOM0.3';
+ $opt['mime_type'] = 'application/xml';
+ break;
+ case 'atom1':
+ $opt['feed_type'] = 'ATOM1.0';
+ $opt['mime_type'] = 'application/atom+xml';
+ break;
+ default:
+ $opt['feed_type'] = 'RSS1.0';
+ $opt['mime_type'] = 'application/xml';
+ }
+
+ $eventData = array(
+ 'opt' => &$opt,
+ );
+ trigger_event('FEED_OPTS_POSTPROCESS', $eventData);
+ return $opt;
+}
+
+/**
+ * Add recent changed pages to a feed object
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param object $rss - the FeedCreator Object
+ * @param array $data - the items to add
+ * @param array $opt - the feed options
+ */
+function rss_buildItems(&$rss,&$data,$opt){
+ global $conf;
+ global $lang;
+ global $auth;
+
+ $eventData = array(
+ 'rss' => &$rss,
+ 'data' => &$data,
+ 'opt' => &$opt,
+ );
+ $event = new Doku_Event('FEED_DATA_PROCESS', $eventData);
+ if ($event->advise_before(false)){
+ foreach($data as $ditem){
+ if(!is_array($ditem)){
+ // not an array? then only a list of IDs was given
+ $ditem = array( 'id' => $ditem );
+ }
+
+ $item = new FeedItem();
+ $id = $ditem['id'];
+ $meta = p_get_metadata($id);
+
+ // add date
+ if($ditem['date']){
+ $date = $ditem['date'];
+ }elseif($meta['date']['modified']){
+ $date = $meta['date']['modified'];
+ }else{
+ $date = @filemtime(wikiFN($id));
+ }
+ if($date) $item->date = date('r',$date);
+
+ // add title
+ if($conf['useheading'] && $meta['title']){
+ $item->title = $meta['title'];
+ }else{
+ $item->title = $ditem['id'];
+ }
+ if($conf['rss_show_summary'] && !empty($ditem['sum'])){
+ $item->title .= ' - '.strip_tags($ditem['sum']);
+ }
+
+ // add item link
+ switch ($opt['link_to']){
+ case 'page':
+ $item->link = wl($id,'rev='.$date,true,'&');
+ break;
+ case 'rev':
+ $item->link = wl($id,'do=revisions&rev='.$date,true,'&');
+ break;
+ case 'current':
+ $item->link = wl($id, '', true,'&');
+ break;
+ case 'diff':
+ default:
+ $item->link = wl($id,'rev='.$date.'&do=diff',true,'&');
+ }
+
+ // add item content
+ switch ($opt['item_content']){
+ case 'diff':
+ case 'htmldiff':
+ require_once(DOKU_INC.'inc/DifferenceEngine.php');
+ $revs = getRevisions($id, 0, 1);
+ $rev = $revs[0];
+
+ if($rev){
+ $df = new Diff(explode("\n",htmlspecialchars(rawWiki($id,$rev))),
+ explode("\n",htmlspecialchars(rawWiki($id,''))));
+ }else{
+ $df = new Diff(array(''),
+ explode("\n",htmlspecialchars(rawWiki($id,''))));
+ }
+
+ if($opt['item_content'] == 'htmldiff'){
+ $tdf = new TableDiffFormatter();
+ $content = '<table>';
+ $content .= '<tr><th colspan="2" width="50%">'.$rev.'</th>';
+ $content .= '<th colspan="2" width="50%">'.$lang['current'].'</th></tr>';
+ $content .= $tdf->format($df);
+ $content .= '</table>';
+ }else{
+ $udf = new UnifiedDiffFormatter();
+ $content = "<pre>\n".$udf->format($df)."\n</pre>";
+ }
+ break;
+ case 'html':
+ $content = p_wiki_xhtml($id,$date,false);
+ // no TOC in feeds
+ $content = preg_replace('/(<!-- TOC START -->).*(<!-- TOC END -->)/s','',$content);
+
+ // make URLs work when canonical is not set, regexp instead of rerendering!
+ if(!$conf['canonical']){
+ $base = preg_quote(DOKU_REL,'/');
+ $content = preg_replace('/(<a href|<img src)="('.$base.')/s','$1="'.DOKU_URL,$content);
+ }
+
+ break;
+ case 'abstract':
+ default:
+ $content = $meta['description']['abstract'];
+ }
+ $item->description = $content; //FIXME a plugin hook here could be senseful
+
+ // add user
+ # FIXME should the user be pulled from metadata as well?
+ $user = null;
+ $user = @$ditem['user']; // the @ spares time repeating lookup
+ $item->author = '';
+ if($user && $conf['useacl'] && $auth){
+ $userInfo = $auth->getUserData($user);
+ $item->author = $userInfo['name'];
+ if($userInfo && !$opt['guardmail']){
+ $item->authorEmail = $userInfo['mail'];
+ }else{
+ //cannot obfuscate because some RSS readers may check validity
+ $item->authorEmail = $user.'@'.$ditem['ip'];
+ }
+ }elseif($user){
+ // this happens when no ACL but some Apache auth is used
+ $item->author = $user;
+ $item->authorEmail = $user.'@'.$ditem['ip'];
+ }else{
+ $item->authorEmail = 'anonymous@'.$ditem['ip'];
+ }
+
+ // add category
+ if($meta['subject']){
+ $item->category = $meta['subject'];
+ }else{
+ $cat = getNS($id);
+ if($cat) $item->category = $cat;
+ }
+
+ // finally add the item to the feed object, after handing it to registered plugins
+ $evdata = array('item' => &$item,
+ 'opt' => &$opt,
+ 'ditem' => &$ditem,
+ 'rss' => &$rss);
+ $evt = new Doku_Event('FEED_ITEM_ADD', $evdata);
+ if ($evt->advise_before()){
+ $rss->addItem($item);
+ }
+ $evt->advise_after(); // for completeness
+ }
+ }
+ $event->advise_after();
+}
+
+
+/**
+ * Add recent changed pages to the feed object
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function rssRecentChanges($opt){
+ global $conf;
+ global $auth;
+
+ $flags = RECENTS_SKIP_DELETED;
+ if(!$opt['show_minor']) $flags += RECENTS_SKIP_MINORS;
+
+ $recents = getRecents(0,$opt['items'],$opt['namespace'],$flags);
+ return $recents;
+}
+
+/**
+ * Add all pages of a namespace to the feed object
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function rssListNamespace($opt){
+ require_once(DOKU_INC.'inc/search.php');
+ global $conf;
+
+ $ns=':'.cleanID($opt['namespace']);
+ $ns=str_replace(':','/',$ns);
+
+ $data = array();
+ sort($data);
+ search($data,$conf['datadir'],'search_list','',$ns);
+
+ return $data;
+}
+
+/**
+ * Add the result of a full text search to the feed object
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function rssSearch($opt){
+ if(!$opt['search_query']) return;
+
+ require_once(DOKU_INC.'inc/fulltext.php');
+ $data = array();
+ $data = ft_pageSearch($opt['search_query'],$poswords);
+ $data = array_keys($data);
+
+ return $data;
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
diff --git a/mod/dokuwiki/vendors/dokuwiki/inc/DifferenceEngine.php b/mod/dokuwiki/vendors/dokuwiki/inc/DifferenceEngine.php
new file mode 100644
index 000000000..e28826c1f
--- /dev/null
+++ b/mod/dokuwiki/vendors/dokuwiki/inc/DifferenceEngine.php
@@ -0,0 +1,1066 @@
+<?php
+/**
+ * A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
+ *
+ * Additions by Axel Boldt for MediaWiki
+ *
+ * @copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
+ * @license You may copy this code freely under the conditions of the GPL.
+ */
+define('USE_ASSERTS', function_exists('assert'));
+
+class _DiffOp {
+ var $type;
+ var $orig;
+ var $closing;
+
+ function reverse() {
+ trigger_error("pure virtual", E_USER_ERROR);
+ }
+
+ function norig() {
+ return $this->orig ? sizeof($this->orig) : 0;
+ }
+
+ function nclosing() {
+ return $this->closing ? sizeof($this->closing) : 0;
+ }
+}
+
+class _DiffOp_Copy extends _DiffOp {
+ var $type = 'copy';
+
+ function _DiffOp_Copy ($orig, $closing = false) {
+ if (!is_array($closing))
+ $closing = $orig;
+ $this->orig = $orig;
+ $this->closing = $closing;
+ }
+
+ function reverse() {
+ return new _DiffOp_Copy($this->closing, $this->orig);
+ }
+}
+
+class _DiffOp_Delete extends _DiffOp {
+ var $type = 'delete';
+
+ function _DiffOp_Delete ($lines) {
+ $this->orig = $lines;
+ $this->closing = false;
+ }
+
+ function reverse() {
+ return new _DiffOp_Add($this->orig);
+ }
+}
+
+class _DiffOp_Add extends _DiffOp {
+ var $type = 'add';
+
+ function _DiffOp_Add ($lines) {
+ $this->closing = $lines;
+ $this->orig = false;
+ }
+
+ function reverse() {
+ return new _DiffOp_Delete($this->closing);
+ }
+}
+
+class _DiffOp_Change extends _DiffOp {
+ var $type = 'change';
+
+ function _DiffOp_Change ($orig, $closing) {
+ $this->orig = $orig;
+ $this->closing = $closing;
+ }
+
+ function reverse() {
+ return new _DiffOp_Change($this->closing, $this->orig);
+ }
+}
+
+
+/**
+ * Class used internally by Diff to actually compute the diffs.
+ *
+ * The algorithm used here is mostly lifted from the perl module
+ * Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
+ * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
+ *
+ * More ideas are taken from:
+ * http://www.ics.uci.edu/~eppstein/161/960229.html
+ *
+ * Some ideas are (and a bit of code) are from from analyze.c, from GNU
+ * diffutils-2.7, which can be found at:
+ * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
+ *
+ * closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations)
+ * are my own.
+ *
+ * @author Geoffrey T. Dairiki
+ * @access private
+ */
+class _DiffEngine
+{
+ function diff ($from_lines, $to_lines) {
+ $n_from = sizeof($from_lines);
+ $n_to = sizeof($to_lines);
+
+ $this->xchanged = $this->ychanged = array();
+ $this->xv = $this->yv = array();
+ $this->xind = $this->yind = array();
+ unset($this->seq);
+ unset($this->in_seq);
+ unset($this->lcs);
+
+ // Skip leading common lines.
+ for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {
+ if ($from_lines[$skip] != $to_lines[$skip])
+ break;
+ $this->xchanged[$skip] = $this->ychanged[$skip] = false;
+ }
+ // Skip trailing common lines.
+ $xi = $n_from; $yi = $n_to;
+ for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {
+ if ($from_lines[$xi] != $to_lines[$yi])
+ break;
+ $this->xchanged[$xi] = $this->ychanged[$yi] = false;
+ }
+
+ // Ignore lines which do not exist in both files.
+ for ($xi = $skip; $xi < $n_from - $endskip; $xi++)
+ $xhash[$from_lines[$xi]] = 1;
+ for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {
+ $line = $to_lines[$yi];
+ if ( ($this->ychanged[$yi] = empty($xhash[$line])) )
+ continue;
+ $yhash[$line] = 1;
+ $this->yv[] = $line;
+ $this->yind[] = $yi;
+ }
+ for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
+ $line = $from_lines[$xi];
+ if ( ($this->xchanged[$xi] = empty($yhash[$line])) )
+ continue;
+ $this->xv[] = $line;
+ $this->xind[] = $xi;
+ }
+
+ // Find the LCS.
+ $this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv));
+
+ // Merge edits when possible
+ $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged);
+ $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged);
+
+ // Compute the edit operations.
+ $edits = array();
+ $xi = $yi = 0;
+ while ($xi < $n_from || $yi < $n_to) {
+ USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]);
+ USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]);
+
+ // Skip matching "snake".
+ $copy = array();
+ while ( $xi < $n_from && $yi < $n_to
+ && !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
+ $copy[] = $from_lines[$xi++];
+ ++$yi;
+ }
+ if ($copy)
+ $edits[] = new _DiffOp_Copy($copy);
+
+ // Find deletes & adds.
+ $delete = array();
+ while ($xi < $n_from && $this->xchanged[$xi])
+ $delete[] = $from_lines[$xi++];
+
+ $add = array();
+ while ($yi < $n_to && $this->ychanged[$yi])
+ $add[] = $to_lines[$yi++];
+
+ if ($delete && $add)
+ $edits[] = new _DiffOp_Change($delete, $add);
+ elseif ($delete)
+ $edits[] = new _DiffOp_Delete($delete);
+ elseif ($add)
+ $edits[] = new _DiffOp_Add($add);
+ }
+ return $edits;
+ }
+
+
+ /**
+ * Divide the Largest Common Subsequence (LCS) of the sequences
+ * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally
+ * sized segments.
+ *
+ * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an
+ * array of NCHUNKS+1 (X, Y) indexes giving the diving points between
+ * sub sequences. The first sub-sequence is contained in [X0, X1),
+ * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note
+ * that (X0, Y0) == (XOFF, YOFF) and
+ * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM).
+ *
+ * This function assumes that the first lines of the specified portions
+ * of the two files do not match, and likewise that the last lines do not
+ * match. The caller must trim matching lines from the beginning and end
+ * of the portions it is going to specify.
+ */
+ function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {
+ $flip = false;
+
+ if ($xlim - $xoff > $ylim - $yoff) {
+ // Things seems faster (I'm not sure I understand why)
+ // when the shortest sequence in X.
+ $flip = true;
+ list ($xoff, $xlim, $yoff, $ylim)
+ = array( $yoff, $ylim, $xoff, $xlim);
+ }
+
+ if ($flip)
+ for ($i = $ylim - 1; $i >= $yoff; $i--)
+ $ymatches[$this->xv[$i]][] = $i;
+ else
+ for ($i = $ylim - 1; $i >= $yoff; $i--)
+ $ymatches[$this->yv[$i]][] = $i;
+
+ $this->lcs = 0;
+ $this->seq[0]= $yoff - 1;
+ $this->in_seq = array();
+ $ymids[0] = array();
+
+ $numer = $xlim - $xoff + $nchunks - 1;
+ $x = $xoff;
+ for ($chunk = 0; $chunk < $nchunks; $chunk++) {
+ if ($chunk > 0)
+ for ($i = 0; $i <= $this->lcs; $i++)
+ $ymids[$i][$chunk-1] = $this->seq[$i];
+
+ $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks);
+ for ( ; $x < $x1; $x++) {
+ $line = $flip ? $this->yv[$x] : $this->xv[$x];
+ if (empty($ymatches[$line]))
+ continue;
+ $matches = $ymatches[$line];
+ reset($matches);
+ while (list ($junk, $y) = each($matches))
+ if (empty($this->in_seq[$y])) {
+ $k = $this->_lcs_pos($y);
+ USE_ASSERTS && assert($k > 0);
+ $ymids[$k] = $ymids[$k-1];
+ break;
+ }
+ while (list ($junk, $y) = each($matches)) {
+ if ($y > $this->seq[$k-1]) {
+ USE_ASSERTS && assert($y < $this->seq[$k]);
+ // Optimization: this is a common case:
+ // next match is just replacing previous match.
+ $this->in_seq[$this->seq[$k]] = false;
+ $this->seq[$k] = $y;
+ $this->in_seq[$y] = 1;
+ }
+ else if (empty($this->in_seq[$y])) {
+ $k = $this->_lcs_pos($y);
+ USE_ASSERTS && assert($k > 0);
+ $ymids[$k] = $ymids[$k-1];
+ }
+ }
+ }
+ }
+
+ $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff);
+ $ymid = $ymids[$this->lcs];
+ for ($n = 0; $n < $nchunks - 1; $n++) {
+ $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks);
+ $y1 = $ymid[$n] + 1;
+ $seps[] = $flip ? array($y1, $x1) : array($x1, $y1);
+ }
+ $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim);
+
+ return array($this->lcs, $seps);
+ }
+
+ function _lcs_pos ($ypos) {
+ $end = $this->lcs;
+ if ($end == 0 || $ypos > $this->seq[$end]) {
+ $this->seq[++$this->lcs] = $ypos;
+ $this->in_seq[$ypos] = 1;
+ return $this->lcs;
+ }
+
+ $beg = 1;
+ while ($beg < $end) {
+ $mid = (int)(($beg + $end) / 2);
+ if ( $ypos > $this->seq[$mid] )
+ $beg = $mid + 1;
+ else
+ $end = $mid;
+ }
+
+ USE_ASSERTS && assert($ypos != $this->seq[$end]);
+
+ $this->in_seq[$this->seq[$end]] = false;
+ $this->seq[$end] = $ypos;
+ $this->in_seq[$ypos] = 1;
+ return $end;
+ }
+
+ /**
+ * Find LCS of two sequences.
+ *
+ * The results are recorded in the vectors $this->{x,y}changed[], by
+ * storing a 1 in the element for each line that is an insertion
+ * or deletion (ie. is not in the LCS).
+ *
+ * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1.
+ *
+ * Note that XLIM, YLIM are exclusive bounds.
+ * All line numbers are origin-0 and discarded lines are not counted.
+ */
+ function _compareseq ($xoff, $xlim, $yoff, $ylim) {
+ // Slide down the bottom initial diagonal.
+ while ($xoff < $xlim && $yoff < $ylim
+ && $this->xv[$xoff] == $this->yv[$yoff]) {
+ ++$xoff;
+ ++$yoff;
+ }
+
+ // Slide up the top initial diagonal.
+ while ($xlim > $xoff && $ylim > $yoff
+ && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
+ --$xlim;
+ --$ylim;
+ }
+
+ if ($xoff == $xlim || $yoff == $ylim)
+ $lcs = 0;
+ else {
+ // This is ad hoc but seems to work well.
+ //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5);
+ //$nchunks = max(2,min(8,(int)$nchunks));
+ $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1;
+ list ($lcs, $seps)
+ = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks);
+ }
+
+ if ($lcs == 0) {
+ // X and Y sequences have no common subsequence:
+ // mark all changed.
+ while ($yoff < $ylim)
+ $this->ychanged[$this->yind[$yoff++]] = 1;
+ while ($xoff < $xlim)
+ $this->xchanged[$this->xind[$xoff++]] = 1;
+ }
+ else {
+ // Use the partitions to split this problem into subproblems.
+ reset($seps);
+ $pt1 = $seps[0];
+ while ($pt2 = next($seps)) {
+ $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]);
+ $pt1 = $pt2;
+ }
+ }
+ }
+
+ /**
+ * Adjust inserts/deletes of identical lines to join changes
+ * as much as possible.
+ *
+ * We do something when a run of changed lines include a
+ * line at one end and has an excluded, identical line at the other.
+ * We are free to choose which identical line is included.
+ * `compareseq' usually chooses the one at the beginning,
+ * but usually it is cleaner to consider the following identical line
+ * to be the "change".
+ *
+ * This is extracted verbatim from analyze.c (GNU diffutils-2.7).
+ */
+ function _shift_boundaries ($lines, &$changed, $other_changed) {
+ $i = 0;
+ $j = 0;
+
+ USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)');
+ $len = sizeof($lines);
+ $other_len = sizeof($other_changed);
+
+ while (1) {
+ /*
+ * Scan forwards to find beginning of another run of changes.
+ * Also keep track of the corresponding point in the other file.
+ *
+ * Throughout this code, $i and $j are adjusted together so that
+ * the first $i elements of $changed and the first $j elements
+ * of $other_changed both contain the same number of zeros
+ * (unchanged lines).
+ * Furthermore, $j is always kept so that $j == $other_len or
+ * $other_changed[$j] == false.
+ */
+ while ($j < $other_len && $other_changed[$j])
+ $j++;
+
+ while ($i < $len && ! $changed[$i]) {
+ USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
+ $i++; $j++;
+ while ($j < $other_len && $other_changed[$j])
+ $j++;
+ }
+
+ if ($i == $len)
+ break;
+
+ $start = $i;
+