<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_mapframe</id>
	<title>Module:Infobox mapframe - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_mapframe"/>
	<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Infobox_mapframe&amp;action=history"/>
	<updated>2026-04-05T14:06:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://www.cultopedia.org/index.php?title=Module:Infobox_mapframe&amp;diff=1594&amp;oldid=prev</id>
		<title>Cultopedia-admin: Cultopedia: guard Infobox_mapframe when Wikibase is unavailable</title>
		<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Infobox_mapframe&amp;diff=1594&amp;oldid=prev"/>
		<updated>2026-04-04T20:31:47Z</updated>

		<summary type="html">&lt;p&gt;Cultopedia: guard Infobox_mapframe when Wikibase is unavailable&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:31, 4 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local util = {}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local util = {}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local wb = mw.wikibase&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function util.noop(info)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function util.noop(info)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;Line 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function util.getBestStatement(item_id, property_id)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function util.getBestStatement(item_id, property_id)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not(item_id) or not(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.isValidEntityId(item_id)) or not(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.entityExists(item_id)) then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;not wb or &lt;/ins&gt;not(item_id) or not(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb&lt;/ins&gt;.isValidEntityId(item_id)) or not(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb&lt;/ins&gt;.entityExists(item_id)) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local statements = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getBestStatements(item_id, property_id)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local statements = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb&lt;/ins&gt;.getBestStatements(item_id, property_id)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not statements or #statements == 0 then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not statements or #statements == 0 then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l168&quot;&gt;Line 168:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 169:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		maskItem = args.geomask&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		maskItem = args.geomask&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	elseif maskType == &amp;quot;property&amp;quot; then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	elseif maskType == &amp;quot;property&amp;quot; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		maskItem = util.relatedEntity(args.id or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getEntityIdForCurrentPage(), args.geomask)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		maskItem = util.relatedEntity(args.id or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(wb and wb&lt;/ins&gt;.getEntityIdForCurrentPage(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;), args.geomask)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local maskItemLabel = maskItem and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getLabel( maskItem )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local maskItemLabel = maskItem and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb and wb&lt;/ins&gt;.getLabel( maskItem )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	return maskItemLabel and &amp;quot;Location in &amp;quot;..maskItemLabel&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	return maskItemLabel and &amp;quot;Location in &amp;quot;..maskItemLabel&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		or util.noop(&amp;quot;missing maskItemLabel with type &amp;quot; .. (maskType or &amp;quot;nil&amp;quot;) .. &amp;quot; and item &amp;quot; .. (maskItem or &amp;quot;nil&amp;quot;))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		or util.noop(&amp;quot;missing maskItemLabel with type &amp;quot; .. (maskType or &amp;quot;nil&amp;quot;) .. &amp;quot; and item &amp;quot; .. (maskItem or &amp;quot;nil&amp;quot;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l195&quot;&gt;Line 195:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 196:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Require wikidata item, or specified coords&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Require wikidata item, or specified coords&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local wikidataId = config.id or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getEntityIdForCurrentPage()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local wikidataId = config.id or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(wb and wb&lt;/ins&gt;.getEntityIdForCurrentPage(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not(wikidataId) and not(config.coord) then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not(wikidataId) and not(config.coord) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false, util.trackAndWarn(&amp;#039;Pages using infobox mapframe with missing coordinates&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false, util.trackAndWarn(&amp;#039;Pages using infobox mapframe with missing coordinates&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l290&quot;&gt;Line 290:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 291:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskItems = {}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskItems = {}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskItemId = util.relatedEntity(wikidataId, &amp;quot;P276&amp;quot;) or  util.relatedEntity(wikidataId, &amp;quot;P131&amp;quot;)  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskItemId = util.relatedEntity(wikidataId, &amp;quot;P276&amp;quot;) or  util.relatedEntity(wikidataId, &amp;quot;P131&amp;quot;)  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskLabel = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getLabel(maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		local maskLabel = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb and wb&lt;/ins&gt;.getLabel(maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= &amp;quot;&amp;quot; do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= &amp;quot;&amp;quot; do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			table.insert(maskLabels, maskLabel)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			table.insert(maskLabels, maskLabel)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			table.insert(maskItems, maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			table.insert(maskItems, maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			maskItemId = maskItemId and util.relatedEntity(maskItemId, &amp;quot;P131&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			maskItemId = maskItemId and util.relatedEntity(maskItemId, &amp;quot;P131&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			maskLabel = maskItemId and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getLabel(maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			maskLabel = maskItemId and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wb and wb&lt;/ins&gt;.getLabel(maskItemId)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if #maskLabels &amp;gt; 1 then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if #maskLabels &amp;gt; 1 then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l313&quot;&gt;Line 313:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 314:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if #maskItems &amp;gt; 1 then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if #maskItems &amp;gt; 1 then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for i, item in ipairs(maskItems) do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for i, item in ipairs(maskItems) do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				table.insert(maskLabels, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.wikibase&lt;/del&gt;.getLabel(item))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				table.insert(maskLabels, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(wb and wb&lt;/ins&gt;.getLabel(item)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) or item&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			args.switch = table.concat(maskLabels, &amp;quot;###&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			args.switch = table.concat(maskLabels, &amp;quot;###&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-249:rev-1594:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Cultopedia-admin</name></author>
	</entry>
	<entry>
		<id>https://www.cultopedia.org/index.php?title=Module:Infobox_mapframe&amp;diff=249&amp;oldid=prev</id>
		<title>imported&gt;Hike395: rm controversial warning message</title>
		<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Infobox_mapframe&amp;diff=249&amp;oldid=prev"/>
		<updated>2025-11-24T04:39:55Z</updated>

		<summary type="html">&lt;p&gt;rm controversial warning message&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mf = require(&amp;#039;Module:Mapframe&amp;#039;)&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local infoboxImage = require(&amp;#039;Module:InfoboxImage&amp;#039;).InfoboxImage&lt;br /&gt;
&lt;br /&gt;
-- Defaults&lt;br /&gt;
local DEFAULT_FRAME_WIDTH = &amp;quot;270&amp;quot;&lt;br /&gt;
local DEFAULT_FRAME_HEIGHT = &amp;quot;200&amp;quot;&lt;br /&gt;
local DEFAULT_ZOOM = 10&lt;br /&gt;
local DEFAULT_GEOMASK_STROKE_WIDTH = &amp;quot;1&amp;quot;&lt;br /&gt;
local DEFAULT_GEOMASK_STROKE_COLOR = &amp;quot;#777777&amp;quot;&lt;br /&gt;
local DEFAULT_GEOMASK_FILL = &amp;quot;#888888&amp;quot;&lt;br /&gt;
local DEFAULT_GEOMASK_FILL_OPACITY = &amp;quot;0.25&amp;quot;&lt;br /&gt;
local DEFAULT_SHAPE_STROKE_WIDTH = &amp;quot;2&amp;quot;&lt;br /&gt;
local DEFAULT_SHAPE_STROKE_COLOR = &amp;quot;#FF0000&amp;quot;&lt;br /&gt;
local DEFAULT_SHAPE_FILL = &amp;quot;#606060&amp;quot;&lt;br /&gt;
local DEFAULT_SHAPE_FILL_OPACITY = &amp;quot;0.1&amp;quot;&lt;br /&gt;
local DEFAULT_LINE_STROKE_WIDTH = &amp;quot;5&amp;quot;&lt;br /&gt;
local DEFAULT_LINE_STROKE_COLOR = &amp;quot;#FF0000&amp;quot;&lt;br /&gt;
local DEFAULT_MARKER_COLOR = &amp;quot;#5E74F3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local util = {}&lt;br /&gt;
&lt;br /&gt;
function util.noop(info)&lt;br /&gt;
	local DEFAULT_NOOP_OUTPUT = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- uncomment this when debugging&lt;br /&gt;
	-- DEFAULT_NOOP_OUTPUT = &amp;quot;debug: mapframe no-op: &amp;quot; .. info&lt;br /&gt;
	-- mw.log(DEFAULT_NOOP_OUTPUT)&lt;br /&gt;
&lt;br /&gt;
	return DEFAULT_NOOP_OUTPUT&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Trim whitespace from args, and remove empty args&lt;br /&gt;
function util.trimArgs(argsTable)&lt;br /&gt;
	local cleanArgs = {}&lt;br /&gt;
	for key, val in pairs(argsTable) do&lt;br /&gt;
		if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			val = val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
			if val ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				cleanArgs[key] = val&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cleanArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return cleanArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.getBestStatement(item_id, property_id)&lt;br /&gt;
	if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local statements = mw.wikibase.getBestStatements(item_id, property_id)&lt;br /&gt;
	if not statements or #statements == 0 then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == &amp;#039;novalue&amp;#039; )&lt;br /&gt;
	if hasNoValue then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return statements[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.hasWikidataProperty(item_id, property_id)&lt;br /&gt;
	return util.getBestStatement(item_id, property_id) and true or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.getStatementValue(statement)&lt;br /&gt;
	return statement and statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.relatedEntity(item_id, property_id)&lt;br /&gt;
	local value = util.getStatementValue( util.getBestStatement(item_id, property_id) )&lt;br /&gt;
	return value and value.id or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.idType(id)&lt;br /&gt;
	if not id then &lt;br /&gt;
		return nil&lt;br /&gt;
	elseif mw.ustring.match(id, &amp;quot;[Pp]%d+&amp;quot;) then&lt;br /&gt;
		return &amp;quot;property&amp;quot;&lt;br /&gt;
	elseif mw.ustring.match(id, &amp;quot;[Qq]%d+&amp;quot;) then&lt;br /&gt;
		return &amp;quot;item&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.shouldAutoRun(frame)&lt;br /&gt;
	-- Check if should be running&lt;br /&gt;
	local pargs = frame.getParent(frame).args&lt;br /&gt;
	local explicitlyOn = yesno(mw.text.trim(pargs.mapframe or &amp;quot;&amp;quot;)) -- true of false or nil&lt;br /&gt;
	if pargs.coordinates == &amp;quot;&amp;amp;#123;&amp;amp;#123;&amp;amp;#123;coordinates&amp;amp;#125;&amp;amp;#125;&amp;amp;#125;&amp;quot; then explicitlyOn = false end&lt;br /&gt;
	local onByDefault = (explicitlyOn == nil) and yesno(mw.text.trim(frame.args.onByDefault or &amp;quot;&amp;quot;), false) -- true or false&lt;br /&gt;
	return explicitlyOn or onByDefault&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.argsFromAuto(frame)&lt;br /&gt;
	-- Get args from the frame (invoke call) and the parent (template call).&lt;br /&gt;
	-- Frame arguments are default values which are overridden by parent values&lt;br /&gt;
	-- when both are present&lt;br /&gt;
	local args = getArgs(frame, {parentFirst = true})&lt;br /&gt;
&lt;br /&gt;
	-- Discard args not prefixed with &amp;quot;mapframe-&amp;quot;, remove that prefix from those that remain&lt;br /&gt;
	local fixedArgs = {}&lt;br /&gt;
	for name, val in pairs(args) do&lt;br /&gt;
		local fixedName = string.match(name, &amp;quot;^mapframe%-(.+)$&amp;quot; )&lt;br /&gt;
		if fixedName then&lt;br /&gt;
			fixedArgs[fixedName] = val&lt;br /&gt;
		-- allow coord, coordinates, etc to be unprefixed&lt;br /&gt;
		elseif name == &amp;quot;coordinates&amp;quot; or name == &amp;quot;coord&amp;quot; or name == &amp;quot;coordinate&amp;quot; and not fixedArgs.coord then&lt;br /&gt;
			fixedArgs.coord = val&lt;br /&gt;
		-- allow id, qid to be unprefixed, map to id (if not already present)&lt;br /&gt;
		elseif name == &amp;quot;id&amp;quot; or name == &amp;quot;qid&amp;quot; and not fixedArgs.id then&lt;br /&gt;
			fixedArgs.id = val&lt;br /&gt;
        -- allow captionstyle to be unprefixed, for compatibility with [[Module:Infobox]]&lt;br /&gt;
        elseif name == &amp;quot;captionstyle&amp;quot; and not fixedArgs.captionstyle then&lt;br /&gt;
            fixedArgs.captionstyle = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return fixedArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function util.parseCustomWikitext(customWikitext)&lt;br /&gt;
	-- infoboxImage will format an image if given wikitext containing an&lt;br /&gt;
	-- image, or else pass through the wikitext unmodified&lt;br /&gt;
	return infoboxImage({&lt;br /&gt;
		args = {&lt;br /&gt;
			image = customWikitext&lt;br /&gt;
		}&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function util.trackAndWarn(trackingCat, warning)&lt;br /&gt;
    local title = mw.title.getCurrentTitle()&lt;br /&gt;
    local results = title and title.namespace == 0 and trackingCat and &amp;#039;[[Category:&amp;#039;..trackingCat..&amp;#039;]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
    if warning then&lt;br /&gt;
        local warn = require(&amp;#039;Module:If preview&amp;#039;)._warning&lt;br /&gt;
        results = results..warn({warning})&lt;br /&gt;
    end&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function util.ternary(flag, other)&lt;br /&gt;
    other = other or &amp;#039;other&amp;#039;&lt;br /&gt;
    flag = flag == &amp;#039;none&amp;#039; and &amp;#039;no&amp;#039; or flag&lt;br /&gt;
    local yesNoOut = yesno(flag,other)&lt;br /&gt;
    local yes = (yesNoOut == true)&lt;br /&gt;
    local no = (yesNoOut == false)&lt;br /&gt;
    return yes, no&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p._caption = function(args)&lt;br /&gt;
	if args.caption then&lt;br /&gt;
		return args.caption&lt;br /&gt;
	elseif args.switcher then &lt;br /&gt;
		return util.noop(&amp;quot;no caption or switcher&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local maskItem&lt;br /&gt;
	local maskType = util.idType(args.geomask)&lt;br /&gt;
	if maskType == &amp;#039;item&amp;#039; then&lt;br /&gt;
		maskItem = args.geomask&lt;br /&gt;
	elseif maskType == &amp;quot;property&amp;quot; then&lt;br /&gt;
		maskItem = util.relatedEntity(args.id or mw.wikibase.getEntityIdForCurrentPage(), args.geomask)&lt;br /&gt;
	end&lt;br /&gt;
	local maskItemLabel = maskItem and mw.wikibase.getLabel( maskItem )&lt;br /&gt;
	return maskItemLabel and &amp;quot;Location in &amp;quot;..maskItemLabel&lt;br /&gt;
		or util.noop(&amp;quot;missing maskItemLabel with type &amp;quot; .. (maskType or &amp;quot;nil&amp;quot;) .. &amp;quot; and item &amp;quot; .. (maskItem or &amp;quot;nil&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--A list of types for objects that are too small to allow Kartographer to take over zoom&lt;br /&gt;
local tinyType = {&lt;br /&gt;
    landmark=true,&lt;br /&gt;
    railwaystation=true,&lt;br /&gt;
    edu=true,&lt;br /&gt;
    pass=true,&lt;br /&gt;
    camera=true&lt;br /&gt;
}                 &lt;br /&gt;
&lt;br /&gt;
p._main = function(_config)&lt;br /&gt;
    -- accumulate tracking cats&lt;br /&gt;
    local tracking = &amp;#039;&amp;#039;&lt;br /&gt;
	-- `config` is the args passed to this module&lt;br /&gt;
	local config = util.trimArgs(_config)&lt;br /&gt;
	&lt;br /&gt;
    -- allow alias for config.coord&lt;br /&gt;
    config.coord = config.coord or config.coordinates&lt;br /&gt;
&lt;br /&gt;
	-- Require wikidata item, or specified coords&lt;br /&gt;
	local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if not(wikidataId) and not(config.coord) then&lt;br /&gt;
		return false, util.trackAndWarn(&amp;#039;Pages using infobox mapframe with missing coordinates&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Require coords (specified or from wikidata), so that map will be centred somewhere&lt;br /&gt;
	-- (P625 = coordinate location)&lt;br /&gt;
    local wdCoordinates = util.getStatementValue(util.getBestStatement(wikidataId, &amp;#039;P625&amp;#039;))&lt;br /&gt;
    if not (config.coord or wdCoordinates) then&lt;br /&gt;
		return false, util.trackAndWarn(&amp;#039;Pages using infobox mapframe with missing coordinates&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- `args` is the arguments which will be passed to the mapframe module&lt;br /&gt;
	local args = {}&lt;br /&gt;
&lt;br /&gt;
	-- Some defaults/overrides for infobox presentation&lt;br /&gt;
	args.display = &amp;quot;inline&amp;quot;&lt;br /&gt;
	args.frame = &amp;quot;yes&amp;quot;&lt;br /&gt;
	args.plain = &amp;quot;yes&amp;quot;&lt;br /&gt;
	args[&amp;quot;frame-width&amp;quot;]  = config[&amp;quot;frame-width&amp;quot;] or config.width or DEFAULT_FRAME_WIDTH&lt;br /&gt;
	args[&amp;quot;frame-height&amp;quot;] = config[&amp;quot;frame-height&amp;quot;] or config.height or DEFAULT_FRAME_HEIGHT&lt;br /&gt;
	args[&amp;quot;frame-align&amp;quot;]  = &amp;quot;center&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	args[&amp;quot;frame-coord&amp;quot;] = config[&amp;quot;frame-coordinates&amp;quot;] or config[&amp;quot;frame-coord&amp;quot;]&lt;br /&gt;
	-- Note: config[&amp;quot;coordinates&amp;quot;] or config[&amp;quot;coord&amp;quot;] should not be used for the alignment of the frame;&lt;br /&gt;
	-- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 )&lt;br /&gt;
&lt;br /&gt;
	-- deprecated lat and long parameters&lt;br /&gt;
	args[&amp;quot;frame-lat&amp;quot;]    = config[&amp;quot;frame-lat&amp;quot;] or config[&amp;quot;frame-latitude&amp;quot;]&lt;br /&gt;
	args[&amp;quot;frame-long&amp;quot;]   = config[&amp;quot;frame-long&amp;quot;] or config[&amp;quot;frame-longitude&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
    -- if zoom isn&amp;#039;t specified from config, first check wikidata&lt;br /&gt;
    local zoom = config.zoom or util.getStatementValue(util.getBestStatement(wikidataId, &amp;#039;P6592&amp;#039;))&lt;br /&gt;
    if not zoom then&lt;br /&gt;
	    -- Calculate zoom from length or area (converted to km or km2)&lt;br /&gt;
	    -- Zoom so that length or area is completely included in mapframe&lt;br /&gt;
	    local getZoom = require(&amp;#039;Module:Infobox dim&amp;#039;)._zoom&lt;br /&gt;
	    zoom = getZoom({length_km=config.length_km, length_mi=config.length_mi,&lt;br /&gt;
                        width_km=config.width_km, width_mi=config.width_mi,&lt;br /&gt;
		                area_km2=config.area_km2, area_mi2=config.area_mi2,&lt;br /&gt;
                        area_ha=config.area_ha, area_acre=config.area_acre,&lt;br /&gt;
                        type=config.type, population=config.population,&lt;br /&gt;
		                viewport_px=math.min(args[&amp;quot;frame-width&amp;quot;],args[&amp;quot;frame-height&amp;quot;]),&lt;br /&gt;
                        latitude=wdCoordinates and wdCoordinates.latitude})&lt;br /&gt;
    end&lt;br /&gt;
    args.zoom = zoom or DEFAULT_ZOOM&lt;br /&gt;
&lt;br /&gt;
	-- Use OSM relation ID if available; otherwise use geoshape if that is available&lt;br /&gt;
	-- (geoshape is required for defunct entities, which are outside OSM&amp;#039;s scope)&lt;br /&gt;
	local hasOsmRelationId = util.hasWikidataProperty(wikidataId, &amp;#039;P402&amp;#039;) -- P402 is OSM relation ID&lt;br /&gt;
	local hasGeoshape = util.hasWikidataProperty(wikidataId, &amp;#039;P3896&amp;#039;) -- P3896 is geoshape&lt;br /&gt;
	local wikidataProvidesGeo = hasOsmRelationId or hasGeoshape&lt;br /&gt;
&lt;br /&gt;
    -- determine marker argument value, determine whether to show marker&lt;br /&gt;
    local forcePoint, suppressPoint = util.ternary(config.point)&lt;br /&gt;
    local forceMarker, suppressMarker = util.ternary(config.marker,true)&lt;br /&gt;
&lt;br /&gt;
    forcePoint = forcePoint or forceMarker&lt;br /&gt;
    suppressPoint = suppressPoint or suppressMarker&lt;br /&gt;
&lt;br /&gt;
    local showMarker = not suppressPoint and (forcePoint or not wikidataProvidesGeo or config.coord)&lt;br /&gt;
    &lt;br /&gt;
    -- wikidata = &amp;quot;yes&amp;quot; turns on both shape and line&lt;br /&gt;
    -- wikidata = &amp;quot;no&amp;quot; turns off both shape and line&lt;br /&gt;
    -- otherwise show both if wikidata provides geo&lt;br /&gt;
    local forceWikidata, suppressWikidata = util.ternary(config.wikidata)&lt;br /&gt;
    local showShape = not suppressWikidata and (forceWikidata or wikidataProvidesGeo or not config.coord)&lt;br /&gt;
    local showLine = showShape&lt;br /&gt;
&lt;br /&gt;
    -- determine shape parameter value, determine whether to show or suppress shape&lt;br /&gt;
    -- also determine whether to invert shape&lt;br /&gt;
    local forceShape, suppressShape = util.ternary(config.shape)&lt;br /&gt;
    showShape = wikidataId and not suppressShape and (forceShape or showShape)&lt;br /&gt;
	local shapeType = config.shape == &amp;#039;inverse&amp;#039; and &amp;#039;shape-inverse&amp;#039; or &amp;#039;shape&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    -- determine line parameter value, determine whether to show or suppress line&lt;br /&gt;
    local forceLine, suppressLine = util.ternary(config.line)&lt;br /&gt;
    showLine = wikidataId and not suppressLine and (forceLine or showLine)&lt;br /&gt;
&lt;br /&gt;
    local maskItem&lt;br /&gt;
	-- Switcher&lt;br /&gt;
	if config.switcher == &amp;quot;zooms&amp;quot; then&lt;br /&gt;
		-- switching between zoom levels&lt;br /&gt;
		local maxZoom = math.max(tonumber(args.zoom), 3) -- what zoom would have otherwise been (if 3 or more, otherwise 3)&lt;br /&gt;
		local minZoom = 1 -- completely zoomed out&lt;br /&gt;
		local midZoom = math.floor((maxZoom + minZoom)/2) -- midway between maxn and min&lt;br /&gt;
		args.switch = &amp;quot;zoomed in, zoomed midway, zoomed out&amp;quot;&lt;br /&gt;
		args.zoom = string.format(&amp;quot;SWITCH:%d,%d,%d&amp;quot;, maxZoom, midZoom, minZoom)&lt;br /&gt;
	elseif config.switcher == &amp;quot;auto&amp;quot; then&lt;br /&gt;
		-- switching between P276 and P131 areas with recursive lookup, e.g. item&amp;#039;s city,&lt;br /&gt;
		-- that city&amp;#039;s state, and that state&amp;#039;s country&lt;br /&gt;
		args.zoom = nil -- let kartographer determine the zoom&lt;br /&gt;
		local maskLabels = {}&lt;br /&gt;
		local maskItems = {}&lt;br /&gt;
		local maskItemId = util.relatedEntity(wikidataId, &amp;quot;P276&amp;quot;) or  util.relatedEntity(wikidataId, &amp;quot;P131&amp;quot;) &lt;br /&gt;
		local maskLabel = mw.wikibase.getLabel(maskItemId)&lt;br /&gt;
		while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= &amp;quot;&amp;quot; do&lt;br /&gt;
			table.insert(maskLabels, maskLabel)&lt;br /&gt;
			table.insert(maskItems, maskItemId)&lt;br /&gt;
			maskItemId = maskItemId and util.relatedEntity(maskItemId, &amp;quot;P131&amp;quot;)&lt;br /&gt;
			maskLabel = maskItemId and mw.wikibase.getLabel(maskItemId)&lt;br /&gt;
		end&lt;br /&gt;
		if #maskLabels &amp;gt; 1 then&lt;br /&gt;
			args.switch = table.concat(maskLabels, &amp;quot;###&amp;quot;)&lt;br /&gt;
			maskItem = &amp;quot;SWITCH:&amp;quot; .. table.concat(maskItems, &amp;quot;,&amp;quot;)&lt;br /&gt;
		elseif #maskLabels == 1 then&lt;br /&gt;
			maskItem = maskItemId[1]&lt;br /&gt;
		end&lt;br /&gt;
	elseif config.switcher == &amp;quot;geomasks&amp;quot; and config.geomask then&lt;br /&gt;
		-- switching between items in geomask parameter&lt;br /&gt;
		args.zoom = nil -- let kartographer determine the zoom&lt;br /&gt;
		local separator = (mw.ustring.find(config.geomask, &amp;quot;###&amp;quot;, 0, true ) and &amp;quot;###&amp;quot;) or&lt;br /&gt;
			(mw.ustring.find(config.geomask, &amp;quot;;&amp;quot;, 0, true ) and &amp;quot;;&amp;quot;) or &amp;quot;,&amp;quot;&lt;br /&gt;
		local pattern = &amp;quot;%s*&amp;quot;..separator..&amp;quot;%s*&amp;quot;&lt;br /&gt;
		local maskItems = mw.text.split(mw.ustring.gsub(config.geomask, &amp;quot;SWITCH:&amp;quot;, &amp;quot;&amp;quot;), pattern)&lt;br /&gt;
		local maskLabels = {}&lt;br /&gt;
		if #maskItems &amp;gt; 1 then&lt;br /&gt;
			for i, item in ipairs(maskItems) do&lt;br /&gt;
				table.insert(maskLabels, mw.wikibase.getLabel(item))&lt;br /&gt;
			end&lt;br /&gt;
			args.switch = table.concat(maskLabels, &amp;quot;###&amp;quot;)&lt;br /&gt;
			maskItem = &amp;quot;SWITCH:&amp;quot; .. table.concat(maskItems, &amp;quot;,&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- resolve geomask item id (if not using geomask switcher)&lt;br /&gt;
	if not maskItem then --  &lt;br /&gt;
		local maskType = util.idType(config.geomask)&lt;br /&gt;
		if maskType == &amp;#039;item&amp;#039; then&lt;br /&gt;
			maskItem = config.geomask&lt;br /&gt;
		elseif maskType == &amp;quot;property&amp;quot; then&lt;br /&gt;
			maskItem = util.relatedEntity(wikidataId, config.geomask)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- if asking for shape or line from Wikidata&lt;br /&gt;
    -- and if Wikidata actually has shape/line data (wikidataProvidesGeo=true)&lt;br /&gt;
    -- and if no geomask&lt;br /&gt;
    -- and if zoom not explicitly set&lt;br /&gt;
    -- and if the object size inferred from its type is not too small&lt;br /&gt;
    -- then let Kartographer &amp;quot;take over&amp;quot; zoom&lt;br /&gt;
    if (showLine or showShape) and wikidataProvidesGeo and not maskItem&lt;br /&gt;
       and not config.zoom and not (config.type and tinyType[config.type]) then&lt;br /&gt;
	    args.zoom = nil&lt;br /&gt;
    end	&lt;br /&gt;
&lt;br /&gt;
    if not maskItem and not showShape and not showLine and not showMarker then&lt;br /&gt;
        return false, util.trackAndWarn(&amp;#039;Pages using infobox mapframe with no geometry&amp;#039;,&amp;#039;No geometry specified for mapframe&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	-- Keep track of arg numbering&lt;br /&gt;
	local argNumber = &amp;#039;&amp;#039;&lt;br /&gt;
	local function incrementArgNumber()&lt;br /&gt;
		if argNumber == &amp;#039;&amp;#039; then&lt;br /&gt;
			argNumber = 2&lt;br /&gt;
		else&lt;br /&gt;
			argNumber = argNumber + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Geomask&lt;br /&gt;
	if maskItem then&lt;br /&gt;
		args[&amp;quot;type&amp;quot;..argNumber] = &amp;quot;shape-inverse&amp;quot;&lt;br /&gt;
		args[&amp;quot;id&amp;quot;..argNumber] = maskItem&lt;br /&gt;
		args[&amp;quot;stroke-width&amp;quot;..argNumber] = config[&amp;quot;geomask-stroke-width&amp;quot;] or DEFAULT_GEOMASK_STROKE_WIDTH&lt;br /&gt;
		args[&amp;quot;stroke-color&amp;quot;..argNumber] = config[&amp;quot;geomask-stroke-color&amp;quot;] or config[&amp;quot;geomask-stroke-colour&amp;quot;] or DEFAULT_GEOMASK_STROKE_COLOR&lt;br /&gt;
		args[&amp;quot;fill&amp;quot;..argNumber] = config[&amp;quot;geomask-fill&amp;quot;] or DEFAULT_GEOMASK_FILL&lt;br /&gt;
		args[&amp;quot;fill-opacity&amp;quot;..argNumber] = config[&amp;quot;geomask-fill-opacity&amp;quot;] or DEFAULT_SHAPE_FILL_OPACITY&lt;br /&gt;
		-- Let kartographer determine zoom and position, unless it is explicitly set in config&lt;br /&gt;
		if not config.zoom and not config.switcher then&lt;br /&gt;
			args.zoom = nil&lt;br /&gt;
			args[&amp;quot;frame-coord&amp;quot;] = nil&lt;br /&gt;
			args[&amp;quot;frame-lat&amp;quot;] = nil&lt;br /&gt;
			args[&amp;quot;frame-long&amp;quot;] = nil 	&lt;br /&gt;
			local maskArea = util.getStatementValue( util.getBestStatement(maskItem, &amp;#039;P2046&amp;#039;) )&lt;br /&gt;
		end&lt;br /&gt;
		incrementArgNumber()&lt;br /&gt;
		-- Hack to fix phab:T255932&lt;br /&gt;
		if not args.zoom then&lt;br /&gt;
			args[&amp;quot;type&amp;quot;..argNumber] = &amp;quot;line&amp;quot;&lt;br /&gt;
			args[&amp;quot;id&amp;quot;..argNumber] = maskItem&lt;br /&gt;
			args[&amp;quot;stroke-width&amp;quot;..argNumber] = 0&lt;br /&gt;
			incrementArgNumber()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Shape (or shape-inverse)&lt;br /&gt;
	if showShape then&lt;br /&gt;
		args[&amp;quot;type&amp;quot;..argNumber] = shapeType&lt;br /&gt;
		if hasGeoshape and not hasOsmRelationId then&lt;br /&gt;
			args[&amp;quot;from&amp;quot;..argNumber] = string.sub( util.getStatementValue( util.getBestStatement(wikidataId, &amp;#039;P3896&amp;#039;) ), 6)&lt;br /&gt;
		elseif config.id then &lt;br /&gt;
			args[&amp;quot;id&amp;quot;..argNumber] = config.id&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;stroke-width&amp;quot;..argNumber] = config[&amp;quot;shape-stroke-width&amp;quot;] or config[&amp;quot;stroke-width&amp;quot;] or DEFAULT_SHAPE_STROKE_WIDTH&lt;br /&gt;
		args[&amp;quot;stroke-color&amp;quot;..argNumber] = config[&amp;quot;shape-stroke-color&amp;quot;] or config[&amp;quot;shape-stroke-colour&amp;quot;] or config[&amp;quot;stroke-color&amp;quot;] or config[&amp;quot;stroke-colour&amp;quot;] or DEFAULT_SHAPE_STROKE_COLOR&lt;br /&gt;
		args[&amp;quot;fill&amp;quot;..argNumber] = config[&amp;quot;shape-fill&amp;quot;] or DEFAULT_SHAPE_FILL&lt;br /&gt;
		args[&amp;quot;fill-opacity&amp;quot;..argNumber] = config[&amp;quot;shape-fill-opacity&amp;quot;] or DEFAULT_SHAPE_FILL_OPACITY&lt;br /&gt;
		incrementArgNumber()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Line&lt;br /&gt;
	if showLine then&lt;br /&gt;
		args[&amp;quot;type&amp;quot;..argNumber] = &amp;quot;line&amp;quot;&lt;br /&gt;
		if hasGeoshape and not hasOsmRelationId then&lt;br /&gt;
			args[&amp;quot;from&amp;quot;..argNumber] = string.sub( util.getStatementValue( util.getBestStatement(wikidataId, &amp;#039;P3896&amp;#039;) ), 6)&lt;br /&gt;
		elseif config.id then &lt;br /&gt;
			args[&amp;quot;id&amp;quot;..argNumber] = config.id&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;stroke-width&amp;quot;..argNumber] = config[&amp;quot;line-stroke-width&amp;quot;] or config[&amp;quot;stroke-width&amp;quot;] or DEFAULT_LINE_STROKE_WIDTH&lt;br /&gt;
		args[&amp;quot;stroke-color&amp;quot;..argNumber] = config[&amp;quot;line-stroke-color&amp;quot;] or config[&amp;quot;line-stroke-colour&amp;quot;] or config[&amp;quot;stroke-color&amp;quot;] or config[&amp;quot;stroke-colour&amp;quot;] or DEFAULT_LINE_STROKE_COLOR&lt;br /&gt;
		incrementArgNumber()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Point marker&lt;br /&gt;
	if showMarker then&lt;br /&gt;
		args[&amp;quot;type&amp;quot;..argNumber] = &amp;quot;point&amp;quot;&lt;br /&gt;
		if config.id then args[&amp;quot;id&amp;quot;..argNumber] = config.id end&lt;br /&gt;
		if config.coord then args[&amp;quot;coord&amp;quot;..argNumber] = config.coord end&lt;br /&gt;
		if config.marker then args[&amp;quot;marker&amp;quot;..argNumber] = config.marker end&lt;br /&gt;
		args[&amp;quot;marker-color&amp;quot;..argNumber] = config[&amp;quot;marker-color&amp;quot;] or config[&amp;quot;marker-colour&amp;quot;] or DEFAULT_MARKER_COLOR&lt;br /&gt;
		incrementArgNumber()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- if Wikidata doesn&amp;#039;t link to OSM and the map has no mask or point,&lt;br /&gt;
    -- then center the map on the coordinates either from the infobox or from wikidata&lt;br /&gt;
    if not maskItem and not showMarker and not wikidataProvidesGeo then&lt;br /&gt;
        if config.coord then&lt;br /&gt;
            args[&amp;quot;frame-coord&amp;quot;] = args[&amp;quot;frame-coord&amp;quot;] or config.coord&lt;br /&gt;
        else&lt;br /&gt;
            args[&amp;quot;frame-lat&amp;quot;] = args[&amp;quot;frame-lat&amp;quot;] or wdCoordinates.latitude&lt;br /&gt;
            args[&amp;quot;frame-long&amp;quot;] = args[&amp;quot;frame-long&amp;quot;] or wdCoordinates.longitude&lt;br /&gt;
        end&lt;br /&gt;
        tracking = tracking..util.trackAndWarn(&amp;#039;Pages using infobox mapframe with forced centering&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- protect against nil frame arguments&lt;br /&gt;
    args[&amp;quot;frame-coord&amp;quot;] = args[&amp;quot;frame-coord&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
    args[&amp;quot;frame-lat&amp;quot;] = args[&amp;quot;frame-lat&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
    args[&amp;quot;frame-long&amp;quot;] = args[&amp;quot;frame-long&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local mapframe = args.switch and mf.multi(args) or mf._main(args)&lt;br /&gt;
	tracking = tracking..((showLine or showShape) and not wikidataProvidesGeo &lt;br /&gt;
                          and util.trackAndWarn(&amp;#039;Pages using infobox mapframe without shape links in Wikidata&amp;#039;)&lt;br /&gt;
                          or &amp;#039;&amp;#039;)&lt;br /&gt;
	return true, mapframe.. tracking&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry points&lt;br /&gt;
&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local parentArgs = parent.args&lt;br /&gt;
	local _, mapframe = p._main(parentArgs)&lt;br /&gt;
	return frame:preprocess(mapframe)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.auto = function(frame)&lt;br /&gt;
	if not util.shouldAutoRun(frame) then&lt;br /&gt;
		return util.noop(&amp;quot;auto should not autorun&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local args = util.argsFromAuto(frame)&lt;br /&gt;
	if args.custom then&lt;br /&gt;
		return frame:preprocess(util.parseCustomWikitext(args.custom))&lt;br /&gt;
	end&lt;br /&gt;
	local _, mapframe = p._main(args)&lt;br /&gt;
	return frame:preprocess(mapframe)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.autocaption = function(frame)&lt;br /&gt;
	if not util.shouldAutoRun(frame) then&lt;br /&gt;
		return util.noop(&amp;quot;autocaption should not autorun&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local args = util.argsFromAuto(frame)&lt;br /&gt;
    local caption = p._caption(args)&lt;br /&gt;
    return caption&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.autoWithCaption = function(frame)&lt;br /&gt;
	if not util.shouldAutoRun(frame) then&lt;br /&gt;
		return util.noop(&amp;quot;autoWithCaption should not autorun&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local args = util.argsFromAuto(frame)&lt;br /&gt;
    local wikitext&lt;br /&gt;
    local caption&lt;br /&gt;
    local ok&lt;br /&gt;
    if args.custom then&lt;br /&gt;
        ok = true&lt;br /&gt;
        wikitext = util.parseCustomWikitext(args.custom)&lt;br /&gt;
    else&lt;br /&gt;
        ok, wikitext = p._main(args)&lt;br /&gt;
    end&lt;br /&gt;
    if not ok then return wikitext end&lt;br /&gt;
    wikitext = frame:preprocess(wikitext)&lt;br /&gt;
    caption = p._caption(args)&lt;br /&gt;
    local data = mw.html.create():wikitext(wikitext)&lt;br /&gt;
    data:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
	    :addClass(&amp;#039;infobox-caption&amp;#039;)&lt;br /&gt;
		:cssText(args.captionstyle)&lt;br /&gt;
		:wikitext(caption)&lt;br /&gt;
    return tostring(data)&lt;br /&gt;
end&lt;br /&gt;
    &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Hike395</name></author>
	</entry>
</feed>