text:
Module:Protection banner/config

-- This module provides configuration data for Module:Protection banner.

return {

-- --                               BANNER DATA --

--[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection --  banners. -- * explanation - the text that appears below the main protection text, used --   to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small --   padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip --   text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock --   icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- --                          Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- --                                 Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) --     if protectionObj.level == 'autoconfirmed' then --         return 'foo' --     else --         return 'bar' --     end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set --     to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if --     unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware --     of editing the config field used by the function, as it could create an --     infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is --     protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is --     temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection --     template is incorrect. --]]

-- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' },

-- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' }	},	upload = {} },

-- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' biographies of living persons policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' Wikipedia's policy on the biographies"				.. ' of living people.', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', },		dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to Digital Millennium Copyright Act takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.'				end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " Office actions and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', },		dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format(						'%s',						mw.site.namespaces[protectionObj.title.namespace].talk.name,						protectionObj.title.text,						args.section,						display					) else disputes = display end

-- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is not an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', },		ecp = { description = 'For articles in topic areas authorized by' .. ' ArbCom or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', alt = 'Extended-protected ${PAGETYPE}', },		mainpage = { description = 'For pages protected for being displayed on the Main Page', text = 'This file is currently' .. ' protected from' .. ' editing because it is currently or will soon be displayed' .. ' on the Main Page.', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. ' '				.. "Administrators: Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate. ',		},		office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' Wikimedia Foundation Office' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', },		reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' Wikimedia Foundation Office' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a'				.. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' Neutral Point of View and Verifiability.' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''"

return ret end, image = 'Office-protection-shackle.svg', },		sock = { description = 'For pages protected due to' .. ' sock puppetry', text = '${INTROFRAGMENT} to prevent sock puppets of' .. ' blocked or' .. ' banned users' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', },		template = { description = 'For high-risk' .. ' templates and Lua modules', text = 'This is a permanently protected ${PAGETYPE},' .. ' as it is high-risk.', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' administrator or' .. ' template editor to make an edit if' .. ' it is uncontroversial or supported by' .. ' consensus. You can also' .. ' request that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', },		usertalk = { description = 'For pages protected against disruptive edits by a'				.. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' {{unblock}} template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' request an edit,' .. ' request unprotection,' .. ' log in,' .. ' or create an account.', },		vandalism = { description = 'For pages protected against' .. ' vandalism', text = '${INTROFRAGMENT} due to vandalism.', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is not an endorsement of the" .. ' ${CURRENTVERSION}. '				end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', }	},	move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is not an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' },		vandalism = { description = 'For pages protected against' .. ' page-move vandalism' }	},	autoreview = {}, upload = {} },

-- --                           GENERAL DATA TABLES --

-- Protection blurbs

-- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently '			.. 'protected from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by new or unregistered users is currently disabled', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', },	move = { default = 'This ${PAGETYPE} is currently protected' .. ' from page moves' },	autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' new or' .. ' unregistered' .. ' users are currently' .. ' subject to review' },	upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } },

-- Explanation blurbs

-- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' request unprotection, log in, or' .. ' create an account.', default = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' request unprotection, log in, or' .. ' create an account.', },		extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The policy on community use' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' arbitration sanctions.' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' consensus.' },		default = { subject = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' administrator to make an edit if it' .. ' is uncontroversial or supported by consensus. You may also request that this page be unprotected.', default = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' You may request an'				.. ' edit to this page, or ask for it to be unprotected.' }	},	move = { default = { subject = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at Requested moves. You can also' .. ' request that the page be' .. ' unprotected.', default = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' Requested moves. You can also' .. ' request that the page be' .. ' unprotected.' }	},	autoreview = { default = { default = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' request unprotection, log in, or' .. ' create an account.' },	},	upload = { default = { default = 'See the '				.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a'				.. ' protected edit request, or you' .. ' can request' .. ' that the file be unprotected.' }	} },

-- Protection levels

-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', },	move = { default = 'move-protected' },	autoreview = { },	upload = { default = 'upload-protected' } },

-- Images

-- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' },	move = { default = 'Move-protection-shackle.svg', },	autoreview = { default = 'Pending-protection-shackle.svg' },	upload = { default = 'Upload-protection-shackle.svg' } },

-- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true },

-- Image links

-- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' },	move = { default = 'Wikipedia:Protection policy#move' },	autoreview = { default = 'Wikipedia:Protection policy#pending' },	upload = { default = 'Wikipedia:Protection policy#upload' } },

-- Padlock indicator names

-- This table provides the "name" attribute for the extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' },

-- Protection categories

--[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- --       expiry    namespace reason   level     action -- order -- 1      1         1         1        1         1 -- 2      0         1         1        1         1 -- 3      1         0         1        1         1 -- 4      0         0         1        1         1 -- 5      1         1         0        1         1 -- 6      0         1         0        1         1 -- 7      1         0         0        1         1 -- 8      0         0         0        1         1 -- 9      1         1         1        0         1 -- 10     0         1         1        0         1 -- 11     1         0         1        0         1 -- 12     0         0         1        0         1 -- 13     1         1         0        0         1 -- 14     0         1         0        0         1 -- 15     1         0         0        0         1 -- 16     0         0         0        0         1 -- 17     1         1         1        1         0 -- 18     0         1         1        1         0 -- 19     1         0         1        1         0 -- 20     0         0         1        1         0 -- 21     1         1         0        1         0 -- 22     0         1         0        1         0 -- 23     1         0         0        1         0 -- 24     0         0         0        1         0 -- 25     1         1         1        0         0 -- 26     0         1         1        0         0 -- 27     1         0         1        0         0 -- 28     0         0         1        0         0 -- 29     1         1         0        0         0 -- 30     0         1         0        0         0 -- 31     1         0         0        0         0 -- 32     0         0         0        0         0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]]

-- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, },

-- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', },

protectionCategories = { ['all|all|all|all|all']                    = 'Wikipedia fully protected pages', ['all|all|office|all|all']                 = 'Wikipedia Office-protected pages', ['all|all|reset|all|all']                  = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all']                   = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all']               = 'Wikipedia fully-protected main page files', ['all|all|all|extendedconfirmed|all']      = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all']      = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit']              = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit']         = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit']       = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit']         = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit']        = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit']     = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit']        = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit']   = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit']    = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit']        = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit']      = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit']     = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit']        = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit']    = 'Wikibooks semi-protected templates', ['all|user|all|autoconfirmed|edit']        = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|edit']        = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit']   = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move']   = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit']                 = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit']                = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit']             = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit']                = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit']           = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit']            = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit']                = 'Wikipedia fully-protected files', ['all|project|all|sysop|edit']             = 'Wikipedia fully-protected project pages', ['all|talk|all|sysop|edit']                = 'Wikipedia fully-protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit']            = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit']                = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit']                = 'Wikipedia fully-protected modules', ['all|module|all|templateeditor|edit']     = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit']  = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit']      = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move']                 = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move']               = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move']             = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move']           = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move']              = 'Wikipedia move-protected portals', ['all|project|all|sysop|move']             = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move']                = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move']            = 'Wikipedia move-protected templates', ['all|user|all|sysop|move']                = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview']   = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload']                = 'Wikipedia upload-protected files', },

-- Expiry category config

-- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if --  an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: --  1) an expiry parameter is not set, and --   2) a reason is provided, and --  3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck --      table.

expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false },

reasonsWithoutExpiryCheck = { blp = true, template = true, },

-- Pagetypes

-- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' },

-- Strings marking indefinite protection

-- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, },

-- Group hierarchy

-- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} },

-- Wrapper templates and their default arguments

-- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- -- -- If other content is desired, it can be added between -- ... tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp']                        = {}, ['Template:Pp-extended']               = {'ecp'}, ['Template:Pp-blp']                    = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute']                = {'dispute'}, ['Template:Pp-main-page']              = {'mainpage'}, ['Template:Pp-move']                   = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute']           = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism']         = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office']                 = {'office'}, ['Template:Pp-office-dmca']            = {'dmca'}, ['Template:Pp-pc']                     = {action = 'autoreview', small = true}, ['Template:Pp-pc1']                    = {action = 'autoreview', small = true}, ['Template:Pp-reset']                  = {'reset'}, ['Template:Pp-semi-indef']             = {small = true}, ['Template:Pp-sock']                   = {'sock'}, ['Template:Pp-template']               = {'template', small = true}, ['Template:Pp-upload']                 = {action = 'upload'}, ['Template:Pp-usertalk']               = {'usertalk'}, ['Template:Pp-vandalism']              = {'vandalism'}, },

-- --                                MESSAGES --

msg = {

-- Intro blurb and intro fragment

-- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',

-- Tooltip blurb

-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',

-- Special explanation blurb

-- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the '	.. 'protection policy and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' administrator to make an edit if it' .. ' is uncontroversial or supported by consensus.',

-- Protection log display values

-- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log',

-- Current version display values

-- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version',

-- Talk page

-- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page',

-- Edit requests

-- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request',

-- Expiry date format

-- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e',

-- Tracking categories

-- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',

-- Images

-- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif',

-- End messages

}

-- End configuration

}

title: Module:Protection banner/config


text:
Module:List

local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools')

local p = {}

local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true }

function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {}

-- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame:extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } }	elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame:extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } }	end table.insert(data.classes, args.class)

-- Main div style data.style = args.style

-- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type']

-- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end

-- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end

-- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style

-- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do		local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end

function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do		root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end

-- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType }	if data.listStyle then list:cssText(data.listStyle) end

-- Render the list items for _, t in ipairs(data.items or {}) do		local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end

return data.templatestyles .. tostring(root) end

function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do		k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. ''	end return ret end

function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2)	end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end

for listType in pairs(listTypes) do	p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, {			valueFunc = function (key, value)			if not value or not mw.ustring.find(value, '%S') then return nil end			if mw.ustring.find(value, '^%s*[%*#;:]') then				return value			else				return value:match('^%s*(.-)%s*$')			end			return nil		end		}) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do			args[k] = v		end return p.makeList(listType, args) end end

return p

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Module:List


text:
The Legend of Zelda: Link's Awakening (2019 video game)/Trendy Game Shop

The Trendy Game Shop contains the following items. The "Shop" is actually a claw game. Once per game you can move the claw continuously upwards, and once per game you can move the claw to the right. Once the moves are extended, the claw falls down after a short delay. This game uses a physics simulation, so some items are easier or harder to grasp then others.

You can talk to the shopkeeper to start the game, or simply walk up to the controls to start the play dialogue.


text:
High School Mathematics Extensions/Markov Chains

= Markov Chains = In short, Markov Chains are models of a random process that is based on the probabilities of previous process. In other words, the following state of the model is dependent on the probabilities of the previous state of the model. These models have to follow a rule known as the Markov Property, a property that requires the probability of the future of a random process (a stochastic process in math lingo!) to be dependent only on its present state.

For example, based on the Example Markov Chain Image to the right, the probability that a creature will eat a certain food (whether that be grapes, lettuce, or cheese) is dependent on the last one they ate. If they ate lettuce previously, they have a 40% chance to eat grapes next, a 60% chance they will eat cheese next, and a 0% chance they will eat more lettuce afterwards.


text:
Module:Lua banner

-- This module implements the template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box')

local p = {}

function p.main(frame) local origArgs = frame:getParent.args local args = {} for k, v in pairs(origArgs) do		v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v		end end return p._main(args) end

function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end

function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = ' Error: no modules specified ' else local moduleLinks = {} for i, module in ipairs(modules) do			moduleLinks[i] = string.format('%s', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' (sandbox)', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses Lua:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '' return mMessageBox.main('mbox', boxArgs) end

function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end

local cats = {}

-- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end

-- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true }	if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' }				category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 }			local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do				if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do		cats[i] = string.format('', cat) end return table.concat(cats) end

return p

title: Module:Lua banner


text:
Module:Lua banner/doc

This module implements the lua template.

Usage from wikitext
This module cannot be used directly from wikitext. It can only be used through the lua template. Please see the template page for documentation.

Usage from Lua modules
To use this module from other Lua modules, first load the module.

You can then generate a side box using the _main function.

The args variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the lua template documentation.

title: Module:Lua banner/doc


text:
Solutions To Mathematics Textbooks/Algebra (9780132413770)

= Solutions to Algebra (2nd Edition), M. Artin =

Chapter 1

Chapter 2

Chapter 3

Chapter 4


text:
User:Atif Farhan

What is Adolescence?

title: User:Atif Farhan


text:
User:Spongebob is cute/sandbox

 * Don't waste your time with explanations: people only hear what they want to hear.

 * ― Paulo Coelho

 * To be independent of public opinion is the first formal condition of achieving anything great.

 * ― Georg Wilhelm Friedrich Hegel

Background
In 2019, a great number of people were infected by pneumonia in Wuhan, China. After the experts investigation and research found that it is a notel betacoronavirus and was called COVID-19. This virus spreads out swiftly via droplets so humans get infected at a high rate and there is no specific medication accessible in hospitals to treat them. There are countries that have many people who have died. The number of patients at the hospital has reached an all-time high, and ambulances have been running around the clock every day. Because it is a horrifying virus that dramatically altered people’s lives. World government has ordered citizens to wear masks and stay home for almost a year. Many people have lost their jobs and some young people who do not have savings have had a hard time getting through this period. Many countries‘ unemployment rate has been climbing steadily since December, 2019. There is a statistics about unemployee rate:
 * In April 2020, the unemployment rate reached 14.8%—the highest rate observed since data collection began in 1948. In April 2021, unemployment remained higher (6.1%) than it had been in February 2020 (3.5%). The labor force participation rate declined to 60.2% in April 2020—a level not seen since the early 1970s—then began a partial recovery in May 2020. The labor force participation rate was 61.7% in April 2021, 1.7 percentage points below the level in January 2020, before the pandemic and the economic recession.

Many are irritated, bewildered, and concerned about what causes the virus. In response to the uncertainty brought by the epidemic, a bizarre conspiracy hypothesis has emerged on social media about Fifth Generation (5G) technology aiding in the spread of the Coronavirus, which has been shared widely on the Internet. What is the conspiracy theory? People’s generalizations of how they typically presume there must be hidden conspiracies behind important events are referred to as conspiracy theories.

How do people react to the fake theory that COVID-19 is caused by 5G?
Some individuals have even committed atrocities to oppose 5G. In the United Kingdom, the conspiracy was peddled by conspiracy theorists and celebrities on social media, so there were many supporters of the hypothesis who set telephone poles on fire and attacked telecommunication engineers constructing fiber-optic connections. In addition, many demonstrators marched in Australia, even preventing telecommuting workers from finishing their jobs. Why is this so? Because some people have been swayed by bad faith actors with ulterior objectives into thinking that a group of world leaders have orchestrated the pandemic to take control of the global economy. This conspiracy theory is called the Great Reset, and it presents COVID-19 as a biological weapon that is being distributed in part via 5G cell towers as part of the depopulation plan.

Why do some people believe in this conspiracy?
There are three reasons: people who reject 5G also reject 4G, 3G, and other wireless technologies; and the rise in the number of unemployed people has resulted in an increase in the number of people doing nothing; and the dissemination of unverified information on social media. There have been conspiracy theories about the supposed harm of 5G wireless waves since the technology began gaining public attention. The basic idea is that 5G wireless signals use “additional higher frequency electromagnetic waves in addition to low and medium band frequencies used in previous cellular networks" such as 4G or 3G and they are therefore dangerous to humans and animals. The origin story for this theory was presented in March 2020 in a YouTube video lecture by Dr. Thomas Cowan, who is an American doctor who is at present on disciplinary probation. In the video, Dr. Thomas proposes that all viruses in human history are caused by electromagnetic waves, specifically mentioning that the 1918 “Spanish flu” pandemic coincided with the introduction of radio at a global scale. Dr. Thomas believes the Coronavirus is a type of cellular poisoning caused by the lowering of the body’s immunity by electromagnetic fields. People who live near a 5G base station are immune compromised by waves emitted by the base station, making them more vulnerable to the virus. As evidence, he cites the lack of outbreaks in Africa because there is no 5G in that continent yet. However, in the article “Does 5G Cause or Spread the Coronavirus? Here’s What Experts Say,” the author points out that the lower bands, encompassing everything from AM radio to cell phones to microwave ovens, are categorized as nonionizing radiation, and do not harm DNA directly. They have long been considered harmless except for potentially heating cells at close range. Moreover, leading national authorities like the Food and Drug Administration (FDA), the National Cancer Institute (NCI), and the Federal Communications Commission (FCC) maintain that there is little to no health risk from using mobile phones given the safety limits already in place.

There is no relationship between COVID-19 and 5G
The statement by the worldwide radiation watchdog the International Commission on Non-Ionizing Radiation Protection (ICNIRP), which issued revised recommendations for 5G frequency deployment, confirming that the frequencies at which 5G would be implemented are safe:

ICNIRP has just released new guidelines for exposure to radio frequency electromagnetic fields, and we considered all possible adverse health effects. The only proven effect is that of heating of (parts of) the body, and the guidelines are set to such a low level that this will not occur if they are observed. Adverse health effects resulting from effects on the immune system have not been found and thus also cannot form a basis for exposure guidelines.

Moreover, according to the World Health Organization (WHO) and the Center for Disease Control (CDC), we must come into physical contact with the Coronavirus to become sick because it is transmitted from human to human by tiny respiratory droplets which travel through the air through talking, breathing, and coughing. Because it is an electromagnetic wave, 5G cannot bring you into touch with the virus. The Federal Emergency Management Agency (FEMA) of the United States also replied to the theory with “5G technology does not cause Coronavirus". According to medical and scientific experts, like some other recent outbreaks, the novel Coronavirus is most likely transmitted to humans by animals.

5G advantages
The pandemic has actually encouraged the adoption of 5G. In the article,  “COVID-19 showed the importance of 5G for the economy and the environment,” Börje Ekholm points out that during the pandemic, 5G has an important role for the economy and the environment. The data shows that:

 * In its first 5G Outlook Series report, the World Economic Forum highlighted several activities behind that increased usage: in healthcare, a 490% increase in telemedicine urgent care visits; in socialization a 75% increase in online gaming; and in retail, online transactions were up 74% globally. In the world of work, Ericsson’s Mobility Report showed 60% of white-collar workers increased their usage of video calls

 * Despite the sudden and unprecedented changes in traffic patterns and demand, the networks performed well, with operators generally providing enough network performance. This strong performance was reflected in users’ perceptions, with 83% claiming ICT helped them a lot, in one way or another, to cope with lockdowns.

 * Without the investments made in 4G and 5G, none of the uses including telemedicine, video calls and gaming could have been delivered to the extent seen through the pandemic.

In addition, All of the applications place demands on today's networks that would quickly push them to their limits. The development of 5G has increased network use and facilitated companies' significant science and technology development. Therefore, the development of 5G technology has brought us advantages and convenience. The most important thing is that 5G has also enabled more new positions in society, and local groups have more job opportunities.

Conclusion
In conclusion, all evidence provided that COVID-19 is not caused by 5G. Rather, the pandemic has promoted the demand and created a larger market for 5G, accelerating its application and providing opportunities for its global implementation. As 5G consumers, people will benefit from this new technology, which includes connection speeds as fast as fiber, more stable connections, smoother streaming, and video calling with fewer buffering.When deciding whether or not to adopt something new, we should not rely on public opinion to determine if it is good or bad. This should be a lesson as to why we must stick to the scientific method of separating facts from fiction.

Comprehension questions

 * How is 5G technology different from 4G and 3G? How did its difference cause some people to believe 5G was creating the pandemic?
 * Who and what was harmed by this conspiracy theory?
 * What real impact has 5G played in the epidemic?

Discussion questions

 * What could be the reasons why people began to spread this conspiracy theory about COVID-19 and 5G? What could be the reasons other people support this theory and share it?
 * Describe a conspiracy theory that you would never share with your social network and explain why you would not share it. How do you judge whether the information is true or false?

title: User:Spongebob is cute/sandbox


text:
User:AdamsElevagemaroc

Adams Elevage

Adams.ma Vous Offre Un Vaste Choix D'equipements Pour tout type d'elevage, Instalation et mse en fonction des equipements.

title: User:AdamsElevagemaroc


text:
Final Fantasy VIII

Final Fantasy VIII

 * /General Information/
 * /The Setting/
 * /Timeline/

Main Characters

 * /Squall Leonhart/
 * /Rinoa Heartilly/
 * /Seifer Almasy/
 * /Quistis Trepe/
 * /Zell Dincht/
 * /Irvine Kinneas/
 * /Selphie Tilmitt/
 * /Laguna Loire/

Other Characters

 * /Ellone Loire/
 * /Kiros Seagill/
 * /Ward Zabac/
 * /The Sorceress Edea/
 * /The Sorceress Adel/
 * /Headmaster Cid/
 * /Headmaster Martine/
 * /Raine Leonhart/
 * /Julia Heartilly/
 * /General Caraway/
 * /Doctor Kadowaki/
 * /Xu/
 * /Nida/
 * /Ma Dincht/
 * /Raijin/
 * /Fujin/
 * /Wedge/
 * /Biggs/

Guardian Forces

 * /Quezacotl/
 * /Shiva/
 * /Ifrit/
 * /Siren/
 * /The Brothers/
 * /Diablos/
 * /Carbuncle/
 * /Leviathan/
 * /Pandemona/
 * /Cerberus/
 * /Alexander/
 * /Doomtrain/
 * /Bahamut/
 * /Jumbo Cactuar/
 * /Tonberry King/
 * /Eden/
 * /Odin/
 * /Gilgamesh/

title: Final Fantasy VIII


text: Category:Book:Final Fantasy X-2

title: Category:Book:Final Fantasy X-2


text: Category:Book:Final Fantasy VII

title: Category:Book:Final Fantasy VII


text: Category:Book:Final Fantasy VIII

title: Category:Book:Final Fantasy VIII


text: Category:Book:Final Fantasy X

title: Category:Book:Final Fantasy X


text: Category:Book:Final Fantasy XI

title: Category:Book:Final Fantasy XI


text:
Perspectives in Digital Literacy/The Fake News Effect

"Don't waste your time with explanations: people only hear what they want to hear. ― Paulo Coelho"

"To be independent of public opinion is the first formal condition of achieving anything great.  ― Georg Wilhelm Friedrich Hegel"

Background
In 2019, a great number of people were infected by pneumonia in Wuhan, China. Experts investigated, finding its cause was a new betacoronavirus and called it COVID-19. This virus spreads out swiftly via droplets so humans get infected at a high rate and there is no specific medication accessible in hospitals to treat it. There are countries that have thousands of people who have died. The number of patients at the hospital has reached an all-time high, and ambulances have been running around the clock every day. Because it is a horrifying virus that dramatically alters people’s lives, governments around the world have ordered citizens to wear masks and stay home for over a year. Many people have lost their jobs and some young people who do not have savings have had a hard time getting through this period. In the United States, for example, the unemployment rate climbed steadily from the end of 2019 through mid 2020:

 * In April 2020, the unemployment rate reached 14.8%—the highest rate observed since data collection began in 1948. In April 2021, unemployment remained higher (6.1%) than it had been in February 2020 (3.5%). The labor force participation rate declined to 60.2% in April 2020—a level not seen since the early 1970s—then began a partial recovery in May 2020. The labor force participation rate was 61.7% in April 2021, 1.7 percentage points below the level in January 2020, before the pandemic and the economic recession.

Many are irritated, bewildered, and concerned about what causes the virus. In response to the uncertainty brought by the epidemic, a bizarre conspiracy hypothesis has emerged on social media about Fifth Generation (5G) technology aiding in the spread of the coronavirus, which has been shared widely by Internet users.

How have some people reacted to the theory that COVID-19 is caused by 5G?
Some individuals have bought into this fake theory and even committed atrocities to oppose 5G. In the United Kingdom, the conspiracy was peddled by conspiracy theorists and celebrities on social media, so there were many supporters of the hypothesis who set telephone poles on fire and attacked telecommunication engineers constructing fiber-optic connections. In addition, many demonstrators marched in Australia, even preventing telecommuting workers from finishing their jobs. Why is this so? Because some people have been swayed by bad faith actors with ulterior objectives into thinking that a group of world leaders have orchestrated the pandemic to take control of the global economy. This conspiracy theory is called "The Great Reset", and it presents COVID-19 as a biological weapon that is being distributed in part via 5G cell towers as part of the depopulation plan.

Why do people believe in this conspiracy?
There are three reasons: 1) people who reject 5G also reject 4G, 3G, and other wireless technologies, 2) the rise in the number of unemployed people has resulted in an increase in the number of people doing nothing, and 3) the dissemination of unverified information on social media. There have been conspiracy theories about the supposed harm of 5G wireless waves since the technology began gaining public attention. The basic idea is that 5G wireless signals use “additional higher frequency electromagnetic waves in addition to low and medium band frequencies used in previous cellular networks," such as 4G or 3G, and they are therefore dangerous to humans and animals. The origin story for this theory was presented in March 2020 in a YouTube video lecture by Dr. Thomas Cowan, who is an American doctor who is at present on disciplinary probation. In the video, Dr. Thomas proposes that all viruses in human history are caused by electromagnetic waves, specifically mentioning that the 1918 “Spanish flu” pandemic coincided with the introduction of radio at a global scale. Dr. Thomas believes the coronavirus is a type of cellular poisoning caused by the lowering of the body’s immunity by electromagnetic fields. People who live near a 5G base station are immune compromised by waves emitted by the base station, making them more vulnerable to the virus. As evidence, he cites the lack of outbreaks in Africa because there is no 5G in that continent yet. However, in the article “Does 5G Cause or Spread the Coronavirus? Here’s What Experts Say,” the author points out that the lower bands, encompassing everything from AM radio to cell phones to microwave ovens, are categorized as nonionizing radiation, and do not harm DNA directly. They have long been considered harmless except for potentially heating cells at close range. Moreover, leading national authorities like the Food and Drug Administration (FDA), the National Cancer Institute (NCI), and the Federal Communications Commission (FCC) maintain that there is little to no health risk from using mobile phones given the safety limits already in place.

There is no relationship between COVID-19 and 5G
A statement by the worldwide radiation watchdog the International Commission on Non-Ionizing Radiation Protection (ICNIRP), which issued revised recommendations for 5G frequency deployment, confirmed that the frequencies at which 5G would be implemented are safe:

 * ICNIRP has just released new guidelines for exposure to radio frequency electromagnetic fields, and we considered all possible adverse health effects. The only proven effect is that of heating of (parts of) the body, and the guidelines are set to such a low level that this will not occur if they are observed. Adverse health effects resulting from effects on the immune system have not been found and thus also cannot form a basis for exposure guidelines.

Moreover, according to the World Health Organization (WHO) and the Center for Disease Control (CDC), we must come into physical contact with the coronavirus to become sick because it is transmitted from human to human by tiny respiratory droplets which travel through the air through talking, breathing, and coughing. Because it is an electromagnetic wave, 5G cannot bring you into touch with the virus. The Federal Emergency Management Agency (FEMA) of the United States also replied to the theory with “5G technology does not cause Coronavirus". According to medical and scientific experts, like some other recent outbreaks, the novel coronavirus is most likely transmitted to humans by animals.

Advantages of 5G
The pandemic has actually encouraged the adoption of 5G. In the article “COVID-19 showed the importance of 5G for the economy and the environment,” Börje Ekholm points out that during the pandemic, 5G has an important role for the economy and the environment. The data shows that:

 * In its first 5G Outlook Series report, the World Economic Forum highlighted several activities behind that increased usage: in healthcare, a 490% increase in telemedicine urgent care visits; in socialization a 75% increase in online gaming; and in retail, online transactions were up 74% globally. In the world of work, Ericsson’s Mobility Report showed 60% of white-collar workers increased their usage of video calls.

 * Despite the sudden and unprecedented changes in traffic patterns and demand, the networks performed well, with operators generally providing enough network performance. This strong performance was reflected in users’ perceptions, with 83% claiming ICT helped them a lot, in one way or another, to cope with lockdowns.

 * Without the investments made in 4G and 5G, none of the uses including telemedicine, video calls and gaming could have been delivered to the extent seen through the pandemic.

In addition, All of the applications place demands on today's networks that would quickly push them to their limits. The development of 5G has increased network use and facilitated companies' significant science and technology development. Therefore, the development of 5G technology has brought us advantages and convenience. The most important thing is that 5G has also enabled more new positions in society, and local groups have more job opportunities.

Conclusion
In conclusion, all evidence shows that COVID-19 is not caused by 5G. Rather, the pandemic has promoted the demand and created a larger market for 5G, accelerating its application and providing opportunities for its global implementation. As 5G consumers, people will benefit from this new technology, which includes connection speeds as fast as fiber, more stable connections, smoother streaming, and video calling with fewer buffering. When deciding whether or not to adopt something new, we should not rely on public opinion to determine if it is good or bad. This should be a lesson as to why we must stick to the scientific method of separating facts from fiction.

Comprehension questions

 * How is 5G technology different from 4G and 3G? How did its difference cause some people to believe 5G was creating the pandemic?
 * Who and what was harmed by this conspiracy theory?
 * What real impact has 5G played in the epidemic?

Discussion questions

 * What could be the reasons why people began to spread this conspiracy theory about COVID-19 and 5G? What could be the reasons other people support this theory and share it?
 * Describe a conspiracy theory that you would never share with your social network and explain why you would not share it.


text:
Final Fantasy VII/Introduction

Button names
The guide tries to use the button names as specified in the game controls section. Some bits may refer to either the specific Playstation or PC controls; these should probably refer to the generic control names instead, with possible explanations on which buttons to use on either platform. Example: Instead of "Press O to climb the ladder" the guide should say "Press [OK] to climb the ladder", or, if necessary, "Press [OK] (Enter on PC, O on Playstation) to climb the ladder".

Bold
In general, boldface entries in text is used to denote

 * an important item that the player might be interested in picking up (for example, "On the floor you'll find Steal materia.)
 * flunkies of a boss (see below)

For editors: Materia names should be marked fully in bold ("Steal materia" instead of "Steal materia"). Boldface may also be used to emphasise important issues, but for that purpose, italics is recommended.

Boss statistics
An example of boss statistics is as follows:

The statistics are explained as follows:

 * Boss name should be self-explanatory. You can see the boss name in the game by pressing [Assist] to bring up the name display, or by using the Sense materia (if Sense works on this boss at all).
 * Level means just about the same as character level; if your party is close to the level of this boss, the fight should be fairly straightforward to win. A good trick to do is to train your party to be near the level of the boss before wading in to the area where it's found.
 * HP and MP tell how tough the boss is, physically and magically. Like the characters, the boss dies if it's HP goes to zero. If MP goes to zero, the boss can't use magic attacks anymore (some bosses use attack arsenal based entirely on magic attacks, and thus become sitting ducks if their MP runs out).
 * Weak against shows attack types that are particularly effective against the boss.
 * Strong against (In more technical terms, Blocks) has attacks which do little damage against the boss. This field also includes attacks that the boss Nullifies (in other words, does no damage whatsoever to the boss). As a side note, most bosses are strong against Gravity attacks (Demi, etc).
 * Absorbs lists attacks that not only are useless against the boss, but actually heals the boss (This is often pretty obvious - a creature that's obviously on fire might just be healed if you use Fire attack on it), sometimes as much as the damage that would be normally inflicted.
 * Strategy text should be self-explanatory. This section will also list possible flunkies of the boss (ie, smaller enemies the boss keeps summoning over and over) in boldface. The strategy generally refers to how to defeat the boss as a whole.

title: Final Fantasy VII/Introduction


text:
Final Fantasy VII/About the game

Final Fantasy VII was a seminal release in Square Enix's Final Fantasy series, widely regarded as one of the most successful gaming franchises in history. Released in 1997, FFVII was a gamble for the company. Prior to VII all the Final Fantasy games had been on Nintendo consoles but VII was released for the Sony PlayStation. FFVII took the series in a new direction, which it has pursued ever since. This landmark release paid off, it is thought by some to be the most popular and well-liked game in the Final Fantasy series, possibly the best RPG ever made or even the best game ever made.

Final Fantasy VII was released under the same name in Japan, the US and Europe - correcting inconsistencies in numbering between the regions. With each new release, Squaresoft (now Square Enix) added new features. The latest release of the original title in Europe (PAL) contained bonus material not seen before, namely the two WEAPONs; Ruby and Emerald.

title: Final Fantasy VII/About the game


text:
Final Fantasy VII/Characters

This article has an overview of the different characters in Final Fantasy VII.

Background
Growing up in the sleepy mountain town of Nibelheim, Cloud never quite fit in with the other children in the village, though he often tried to get closer to his next-door neighbor, Tifa Lockhart. Hoping to prove his worth, he set out to join SOLDIER like his hero Sephiroth. At fourteen, and after saying goodbye to Tifa, he left for Midgar to pursue this dream. 7 years later Cloud meets Tifa again in the Sector 7 Slum in Midgar. Cloud, now a mercenary, is hired by Tifa and AVALANCHE to destroy the Number One Mako Reactor.

Details and further information

 * Limit Breaks

Background
Leader of the terrorist group AVALANCHE, and bitter enemy of the Shinra. He grew up in the mining town of North Corel, where he was involved in a decision to have the town switch from mining coal to using Mako energy, against the protests of his friend Dyne. The decision turned out to be disastrous for the people there, and both him and Dyne lost one of their arms after an attack from the Shinra. Barret had an operation to have his arm replaced with a gun, and learned that Dyne did the same. He adopted Dyne's daughter, Marlene, and traveled to Cosmo Canyon where he learned about the harm the Shinra and their Mako reactors were inflicting upon the planet. He came to live in the Midgar slums, where he took command of a group called AVALANCHE to fight back against what he believed the Mako reactors were doing to the planet.

Details and further information

 * Limit Breaks

Background
Bright and optimistic. Tifa always cheers up the others when they're down. But don't let her looks fool you, she can decimate almost any enemy with her fists. She is one of the main members of AVALANCHE. She and Cloud were childhood friends, and although she has strong feelings for him, she would never admit it.

Details and further information

 * Limit Breaks

Background
Young, beautiful, and somewhat mysterious, Aerith met Cloud while selling flowers on the streets of Midgar. She decided to join him soon after. Her unusual abilities enable her to use magic, but she seems more interested in the deepening love triangle between herself, Cloud and Tifa.

Details and further information

 * Limit Breaks

Background
Just as his name implies, he is an animal with fire-red fur. But under his fierce exterior he possesses a great intelligence. His sharp claws and fangs make him good at close-range fighting, but other than that, not much is known about him. It's not even certain that "Red XIII" is his real name. A real enigma.

Details and further information

 * Limit Breaks

Background
Cid is a tough-talking, warm-hearted old pilot who hasn't forgotten his dreams. There's no better pilot by air or sea. He believes someday he'll fly to the ends of the universe. With his handmade spear and knowledge of machinery, he throws himself into any attack regardless of the danger.

Details and further information

 * Limit Breaks

Background
Cait Sith rides around on the back of a huge stuffed Mog he magically brought to life. Megaphone in hand, he's always shouting orders and creating dopey attacks. When his slot machine attack works, the enemy lines look like an overturned toy box. His hobby is fortune telling, but like his personality, it's pretty unreliable.

Details and further information

 * Limit Breaks

Background
A mystical man, stern and upright while at the same time dark and mysterious. His past connection with Shinra, Inc. is what made him join Cloud and the others. He may seem frail at first glance, but hidden inside his body lurks a fearsome power.

Details and further information

 * Limit Breaks
 * Getting Vincent to the party

Background
Although you'd never know it by looking at her, Yuffie comes from a long line of Ninjas. She forced herself into the group just to get a 'certain something'. She's sneaky, arrogant and "way" selfish. But with her super shuriken and her special skills, there isn't anyone else you'd rather have on your side in a fight.

Details and further information

 * Limit Breaks
 * Getting Yuffie to the party

title: Final Fantasy VII/Characters


text:
Final Fantasy VII/Characters/Limit Breaks

Limit breaks are powerful attacks, or other handy status boosts, that can be performed once the limit bar is full. The limit bar is slowly filled as enemies attack the character. Fury status makes limit bar fill quicker and Sadness status makes the limit bar fill slower.

Most characters have 4 levels of limits; these characters can only learn the 4th limit once all other limits are learned. The 4th level limit is hidden, and comes in form of a "manual" to the limit. Once all other limits are learned, simply use this manual object on the character to learn the level 4 limit.

Most of the first limits on each level are learned by killing more and more enemies. This means that the character has to be the one that deals the killing blow; it doesn't matter if other characters damage the enemy as well. Most second limits on each level are simply gained by using the first limit on the level enough times.

These tables below list the number of times you have to use the first limit break of each level to get second limit breaks, as well as the number of kills needed to gain the first limit break of the next level. These numbers aren't conclusive because there is an amount of randomness to the system, they should be used as guidelines

Tifa
Tifa's limit breaks are chained. When a limit break is used, she will do all of the attacks in the following order, up to the maximum limit of the level currently selected. The slots system is used to pick how well the limits in question are handled: "Hit" means normal damage, "Yeah!" gives extra damage, and "Miss" will mean the limit is not going to be used. Too many misses will break the chain and the limits that follow aren't used. If a "Miss" occurs for a certain limit break, the count for that limit break doesn't go up. Also only the first limit break of the Level Tifa is set on will accumlate uses. For example, if Tifa has her first limit breaks of Level 1 and Level 2 and is set on the Level 2 limit. Then no matter how many times she gets a "Hit" or "Yeah!" on the Beat Rush portion of the slot, her count for Beat Rush will not improve.

In game, there's one way of learning the melody - during Cloud's story in Kalm. You can get the limit break even if you don't find the melody out then, however, just play the melody normally.

([[Media:FF7-Tifa-Limit-Piano.mid|Listen to MIDI version]]) Melody: Do Re Mi Ti La Do Re Mi So Fa Do Re Do Keys: [Cancel], [Switch] , [Menu] , [Pgup]+[Menu] , [Pgup]+[Switch] , [Cancel] , [Switch] , [Menu] , [Pgup]+[Cancel] , [OK] , [Cancel] , [Switch] , [Cancel] Playstation version: X, S, T, R1+T, R1+S, X, S, T, R1+X, O, X, S, X PC version: Ins Del Plus 9+Plus 9+Del Ins Del Plus 9+Ins Enter Ins Del Ins Note: Tifa must be in your party when you play the song to get the limit break.

See also Separate module about Tifa's piano.

Aeris
To make it easier to get Aerith's 2nd and 3rd limit breaks just do the following. After you escape from the Church give Aerith some Materia (I gave her Fire, Ice, and Restore Materia) and get into some random battles. Fight only with Aerith using her magic (this should instantly kill most enemies) and use Cloud for healing. Do this until you have her 2nd limit break (If you don't have Seal Evil limit break by the time this is done...you can do it now if you want). Seems like it'll take forever? It only took me a little more than a half an hour. Take a break from playing, (Unless you want to continue of course!) and repeat to get her 3rd limit break. This'll make it easier when you want to get her last limit break.

To get the Level 4 manual, you need to talk to the sleeping man in a cave near Junon. He'll tell how many battles you've been in. When the two last digits of the battle count are same and odd, he'll give you a piece of Mythril. This can then be traded for the Great Gospel manual at the blacksmith on the peninsula south of Gongaga. The blacksmith will give you two boxes to choose from, the "big one" and the "small one", choose the "small one". The small box is located up the stairs in a grey safe.

You can do this any time after getting out of the Corel Desert prison and before going to the Temple of the Ancients. Take the buggy given from Dio, go to Costa de Sol, and take the boat back to Junon. It will allow you to cross the river to get to the cave. You can also get there by following the coasts and going up the river with the Tiny Bronco.

Cait Sith
Cait Sith only has two limit breaks.

Vincent
Vincent, unlike all the others, has only one limit break per limit level, and his limit breaks involve morphing into another creature. You cannot control Vincent while he is morphed.

To get the lvl4 manual, go to the waterfall on the northern side of the round lake on the second continent. You need a either a colored chocobo or the submarine to reach it.

If you go to the waterfall with Vincent in your party, a cutscene follows. Return to the waterfall after approximately one hour of play time, and you will get both the manual and Vincent's best weapon.


text:
Final Fantasy VII/Characters/Training

General Tips
Training is essential as you won't be powerful enough just running through the game. It is also fun and rewarding, there's nothing better than killing what is meant to be a difficult boss in a few strokes. Some describe this as cheating, but my idea of cheating does not include hours of work.

Anyway, the best training stops, obviously, give you good EXP, AP and Gil. However, you should be able to kill the enemies there without too much trouble, and, most importantly, quickly. You should be close enough to a save point of the world map so you can duck out and use a tent if you get in trouble, and to PHS so you can bring in new people for training.

Use double and triple strength equipment as much as possible. And always fill them up with materia completely, you should be able to defeat the enemies wherever you're training easily - so there's no need to bother about combining materia for effect - just take whatever needs levelling.

Having said that, one little combination is good for racking up kills. Long Range/Cover/Counter Attack allows you to concentrate kills on one character, in order to gain limit breaks or just to rack up the kill counter.

Gaining EXP
The purpose of EXP is to level up your characters. EXP is gained by defeating enemies. As you progress through the game, enemies will give you increasingly more EXP each time you win a battle. However, it takes increasingly more EXP in order to level up at higher levels. Only members of your party will receive the full amount of EXP quoted after the battle. However, other characters will receive a portion of the EXP received.

Gaining AP
AP is used for leveling-up materia, like EXP, there's no real trick to getting this. You can however maximise growth by using Double and Triple growth weapons and armour. Failing that, use weapons/armour with as many slots as possible. When you master a materia, it spawns a new peice of that materia - which can then be levelled up further to replace the old materia which can usually be sold for a tidy profit.

Mideel and Corral Valley (see below) are good places to gain AP.

Stat-building

 * Strength - you can gain Strength Sources quickly in the Gongaga Reactor. The only enemy there is a large, Rhino-headed tank which morphs into a Strength Source.
 * ALL STATS - In the sunken gelinka underwater, every enemy can be morphed into a source.

Gaining Limit Breaks
Limit levels are gained in one of two ways - a) using your current limit break a set number of times or b) getting a set number of kills. Usually, the first limit break of a limit level is received by killing 80 enemies while the second limit break is received by using the first limit break between 6 and 10 times. There are a couple of exceptions to this rule including Vincent and Cait Sith. Try using powerful magic with all, or all-hitting enemy skills to wipe out large groups of enemies to fulfill the first. To gain the second Limits on each level, find a powerful enemy to manipulate and have it attack you to build up your limit meter. Repeat. You can also just use Hyper which will make your meter fill up faster.

A good place to gain the second skill of a limit level is Mideel - if you don't kill the monsters instantly, and have Hypered the characters, their limit break meters should fill up pretty fast.

Fourth level limit breaks can only be obtained by getting a special item which is different for each chartacter. Note: Cait Sith only has 2 limit levels and does not have an ultimate limit break.

For more details, see the Limit Breaks Appendix.

Gaining Gil
You can gain gil from battles just like EXP or AP - there's no trick.

However, a much better way to gain gil is to master ALL materias (see the AP section. These can be mastered very easily, but can be sold for a whopping 1.4 million gil. Once you've mastered one, let the spawned materia take its place and sell the old one.

Another way is to find the area - the island south of Bone Village - with an enemy called "Trick Play". Thay have an attack called "Gold Mountain" that attacks you with gold-giving you 800 gil each time. Just set up your party so nobody is a level that is a multiple of four (because it has level 4 suicide) and that they absorb fire/ice/water/ect. other good choices are coupling final attack and life together, but not with Phoenix, as it will kill it. With elemental defences set up, it will be hard to get a game over, as Trick Play has an attack called "Hot Springs" that actually heals it's target. Now, why don't you just let the game run, and go make yourself a sandwich, or put a pizza in the oven and eat lunch? Just check on your party every now and then. After so much time, the beast has hopefully used Gold Mountain a lot, giving you lots of gil whenever you choose to finally put it out of it's misery.

The Mythril Mine
The first good place to train up is the Mythril Mines near Junon. This is a fantastic spot to gain all of the Limit Breaks in Levels 1 through 3 for Cloud, Barret, Tifa, Aeris, Red XIII and Yuffie. Before you start, be sure to acquire the Enemy Skill Matra Magic from the robots around Midgar - this is effective for killing off an entire party of monsters with minimal MP cost. If you forgot to get Matra Magic, use Quake-all, though it's not as effective. You'll also want to go through the cave once and get Yuffie on the other side (see Appendix: Optional Characters).

Once you have done this, re-enter the cave. You're looking for a particular room, just north of the screen next to the Junon entrance. It's basically a cliff, with a treasure chest in the bottom-left. Here you will meet large groups of enemies which you can kill off using Matra Magic to rack up your kill meter fast. Do one character at a time, giving them all the kills to gain limit levels. None of these enemies pose a risk to you, except, Ark Dragons. These rather insect-like creatures are perfect for gaining the second limit break on each level as their Flamethrower attack significantly increases your limit meter. TIP: The Arc Dragon will always go for the enemy with the most HP, so, attack two of your characters until they are sufficiently low. You can then concentrate on a single character. Just let the Ark Dragon toast you, occasionally healing, until either your Limit Meter fills (then you can use the Limit to finish off the Ark Dragon) or the Ark Dragon runs out of MP. When this happens, simply put it out of it's misery with a few physical attacks.

It may take a while, but eventually you'll have all the Limit Breaks - a real benefit so early in the game. You'll also be around level 25 AND you should have enough money to get some potions, status-curing items and weapons for a while. PLUS: You should now be plenty strong to go try and get the enemy skill Beta from the Midgar Zolom. Just remember to equip the person who has the enemy skill materia with a elemental-fire combo on his/her armor and the talisman as an accessory to up your spirit.

Corral Valley
Between the Sleeping Forest and the City of the Ancients is the very aquatic landscape of Corral Valley. You want the screen with the hollowed out tree-bridge, which gives exceptionally good EXP, AP and Gil for this point in the game. You'll be fighting different groups of very weak creatures, whose only attack is Dance; which is irritating, but by no means deadly. This little beasties give a massive 2000 exp and 200 ap a go. Use Trine, or another decent-strength all-attack to wipe out groups of monsters (if you're quick, you can do it before they start a wave of time-consuming Dances).

The amount of EXP/AP you get here is unmatched for a LONG time, so make the most of it. You can very easily and quickly max out all your magic materia and a good 4 alls - use any weapons with double growth you have, the Edincoat and Cait Sith's Silver M-Phone can also hold lots of materia for growing. You should be able to reach around level 50 in just a few hours - and you can go forward a screen to the world map in order to switch party members. You'll make about 250 000 gil - which is nothing considering you hopefully mastered enough alls to get about 6 million gil. Hold on to these until you get to the Icicle Inn, you won't need the money til then anyway.

Mideel area
If you travel to the Mideel area, and go by the Chocobo tracks to the west of Mideel's place in the forest, the beach on the southside of the tracks has a rather useful enemy to fight - Sea worms. They give 200AP, 1300 EXP & 5000 gil and are easy to kill, seems fire isn't greatly effective but everything else should work a treat. The sea worms are the only monsters that appear in battle on that beach, and are easy pickings. I have found it a useful place to train-up and get gil as its attacks are extremely weak, just wack a comet2 an ice3 and an attack on it and its done. You can steal a dragon scale, and at times get a turbo-ether from killing it.

The Wutai Area
The Wutai area is also a good place to level up. The enemies usually comes in groups of three, and are generally easy to defeat. Defeating these will give you a bunch of EXP and AP, and also, good items, such as X-Potions.

The Northern Cave
The Northern Cave is the best possible place to level up. On the way down, the Gargoyles and Dragons are good enemies to defeat for EXP and AP, but, once you get to the place where you choose paths, along the left path, and the top room (I think), there is a swamp area. In this area you will fight Magic Pots (little urn-like things) and Movers (red bouncing balls). To kill the Magic Pots, you must give them an Elixer, and you can finish them off pretty fast (they only have 4096 HP). They give you a whopping 8,000 EXP, 1,000 AP, and 8,500 Gil each, and generally comes in groups of two or three. Also, the Movers, more rare to find (though I generally get them pretty often), are good enemies to combat. They come in groups of three, and have harmless attacks. Each Mover, although they wont get you any EXP, will give you 800 AP, and 30,000 Gil each; for a total of 2,400 AP and 90,000 Gil per battle. Use double and triple growth weapons, such as the Apocalypse to level up materia quickly.

Note: This is a good place to use your save crystal.

Problem: Can i exit the cave after choosing a path!?!?!?

Methods of Auto-levelling
Auto-levelling is considered by many to be cheating, it involves setting up your game so you can automatically win battles and then leaving the game to play for hours. There are a few methods:

Midgar Zolom:

This is easy. Just set up everybody's materia so that you can easily win against a Midgar Zolom. It might be smart to hook up final attack materia with life, just to make sure. Then maybe hook up a strong command/magic/summon with an hp or mp absorb materia. You may also wish to set up your party so they can resist/absorb fire attacks, just in case it casts Beta. Anyway, just set up the game for easy victory, then do something that will automatically press the accept button for you, like tie a rubber band around the controller, or tape down the button, or equip counter materia, or counter=slash-all/counter=mime combinations. Now, just sit in the marshes so that the Zolom will keep coming to you. Now, go see a movie, or get some sleep. When you return to your PlayStation, you will be much stronger, and richer! (if your party did not die.)

title: Final Fantasy VII/Characters/Training