Wikipedia
gvwiki
https://gv.wikipedia.org/wiki/Ard-ghuillag
MediaWiki 1.47.0-wmf.14
first-letter
Meanyn
Er lheh
Resooney
Ymmydeyr
Resooney ymmydeyr
Wikipedia
Resooney Wikipedia
Coadan
Resooney coadan
MediaWiki
Resooney MediaWiki
Clowan
Resooney clowan
Cooney
Resooney cooney
Ronney
Resooney ronney
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Yn Pheroo
0
2175
387375
387374
2026-08-05T12:07:20Z
MacTire02
219
lettyraghey
387375
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght y Pheroo
|ennym_foddey_cadjincliaghtagh= {{nobold|República del Perú {{small|([[Spaainish]])}}<br/>{{rolley yn-filley |titlestyle = background:transparent;line-height:normal;text-align:center;|title = {{nobold|Enmyn co-oikoil}}
|{{Infobox
|subbox=yes
|bodystyle=font-size:80%;font-weight:normal;
|rowclass1 = mergedrow
|label1=[[Quechua]]:
|data1={{lang|qu|Piruw Ripuwlika}}
|rowclass2 = mergedrow
|label2=[[Aymarish]]:
|data2={{lang|ay|Piruwxa Ripuwlika}}
}}
}}
}}
|ennym_gienneydagh = y Pheroo
|jalloo_brattagh = Flag of Peru.svg
|jalloo_cleinney = Escudo nacional del Perú.svg
|jalloo_caslys = Peru (orthographic projection).svg
|jarroo-raa = {{lang|es|"[[Shickyr as Maynrey da'n Unnaneys|Firme y feliz por la unión]]{{noitalic|"}}|nolink=on}}<br />"Shickyr as Maynrey da'n Unnaneys"
|arrane_ashoonagh = {{lang|es|"[[Arrane Ashoonagh y Pheroo|Himno Nacional del Perú]]"}}<br />"Arrane Ashoonagh y Pheroo"{{parabr}}{{center|[[Coadan:United States Navy Band - Marcha Nacional del Perú.ogg]]}}
|çhengaghyn_oikoil = [[Spaainish]]
|sorçh_çhengaghyn = Çhengaghyn co-oikoil
|çhengaghyn = {{Plainlist|
* [[Quechua]]
* [[Aymarish]]
* [[Çhengaghyn y Pheroo|Çhengaghyn bun-dooghyssagh elley]]
}}
|possanyn_kynneeagh =
|preeu-valley = [[Lima]]
|latd=12 |latm=02.6 |latNS=S |longd=77 |longm=01.7 |longEW=W |latNSgael=Yiass |longEWgael=Heear
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh
|enmys1_fer-toshee = [[Eaghtyrane y Pheroo|Eaghtyrane]]
|ennym1_fer-toshee = [[Keiko Fujimori]]
|enmys2_fer-toshee = [[Lhiass-eaghtyrane y Pheroo|Lhiass-eaghtyrane]]
|ennym2_fer-toshee = [[Luis Galarreta]]
|enmys3_fer-toshee = [[Eaghtyrane Choonseil Shirveishee yn Pheroo|Ard-vinishter]]
|ennym3_fer-toshee = [[Luis Galarreta]]
|enmys4_fer-toshee = [[Eaghtyrane Chohionnal Phobblaght y Pheroo|Eaghtyrane y Chohionnal]]
|ennym4_fer-toshee = [[Miki Torres]]/<br>[[Óscar de Jesús Reto Otero]]
|eaghtyr_km2 = 1,285,216
|eaghtyr_mi_ker = 496,222
|eaghtyr_rhenk = 20oo
|ushtey_sy_cheead = 8.8
|pobble_ooley = 28,220,764
|blein_ooley_pobble = 2007
|rhenk_ooley_pobble =
|pobble_coontey = {{WD Earroo yn Phobble cour Kishtey Fys}}
|blein_coontey_pobble =
|rhenk_coontey_pobble =
|glooaght_pobble_km2 = 22
|glooaght_pobble_mi_ker = 57
|rhenk_glooaght_pobble = 193oo
|blein_LTS_CCK = 2025
|LTS_CCK = {{increase}} $643.05 billoon<ref name="IMFWEO.PE">{{cite web |url=https://www.imf.org/en/Publications/WEO/weo-database/2023/October/weo-report?c=293,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2020&ey=2028&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1 |title=World Economic Outlook Database, October 2023 Edition. (Peru) |publisher=[[Tashtey Argidoil Eddyrashoonagh]] |date=10 Jerrey Fouyir 2023 |access-date=12 Jerrey Fouyir 2023 |archive-date=29 Jerrey Fouyir 2023 |archive-url=https://web.archive.org/web/20231029022041/https://www.imf.org/en/Publications/WEO/weo-database/2023/October/weo-report?c=293,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2020&ey=2028&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1 |url-status=live}}</ref>
|rhenk_LTS_CCK = 47oo
|LTS_CCK_yn_dooinney = {{increase}} $18,689<ref name="IMFWEO.PE" />
|rhenk_LTS_CCK_yn_dooinney = 99oo
|LTS_ennymagh = {{increase}} $303.3 billoon<ref name="IMFWEO.PE" />
|rhenk_LTS_ennymagh = 47oo
|blein_LTS_ennymagh = 2025
|LTS_ennymagh_yn_dooinney = {{increase}} $8,814<ref name="IMFWEO.PE" />
|rhenk_LTS_ennymagh_yn_dooinney = 86oo
|Gini = 40.2<ref>{{cite web |url=https://data.worldbank.org/indicator/SI.POV.GINI?locations=PE |title=Gini Index |publisher=[[yn Banc Dowanagh|Y Banc Dowanagh]] |access-date=12 Mayrnt 2024 |archive-date=3 Mayrnt 2024 |archive-url=https://web.archive.org/web/20240303115916/https://data.worldbank.org/indicator/SI.POV.GINI?locations=PE |url-status=live}}</ref>
|blein_Gini = 2022
|ronney_Gini =
|blein_ALD = 2023
|ALD = 0.794<ref>{{cite web|url=https://hdr.undp.org/data-center/specific-country-data#/countries/PER|title=Human Development Report 2023/24|language=en|publisher=[[Claare Lhiasaghey ny h-Ashoonyn Unnaneysit]]|date=13 March 2024|access-date=13 Mayrnt 2024|archive-date=13 Mayrnt 2024|archive-url=https://web.archive.org/web/20240313164319/https://hdr.undp.org/system/files/documents/global-report-document/hdr2023-24reporten.pdf|url-status=live}}</ref>
|rhenk_ALD = 79oo
|ronney_ALD =
|sorçh_kiondeeaght = [[Caggey Neuchrogheydys y Pheroo|Neuchrogheydys]]
|note_kiondeeaght = veih'n [[Shennaghys y Spaainey (1814-1873)|Spaainey]]
| taghyrt1_bunnit = [[Caggey Neuchrogheydys y Pheroo|Fogrit magh]]
| date1_bunnit = 28 Jerrey Souree 1821
| taghyrt2_bunnit = [[Cah Ayacucho|Co-hickyrit]]
| date2_bunnit = 9 Nollick 1824
| taghyrt3_bunnit = Ennit
| date3_bunnit = 14 Luanistyn 1879
|argid = [[Sol y Pheroo]]
|coad_argid = PEN
|traa_ynnydagh = [[Traa ynnydagh y Pheroo|PET]]
|ashchur_utc = -5
|traa_ynnydagh_TTLS =
|ashchur_utc_TTLS =
|cctld = [[.pe]]
|coad_çhellvane = 51
|fo-note1 =
}}
She çheer ayns [[America Yiass]] ee '''yn Pheroo''' ({{lang-es|Perú}}, [[Quechua]]: ''Piruw'', [[Aymarish]]: ''Piruw''). T'ee çhemmit liorish [[Ecuador]] as [[Yn Cholombey|y Cholombey]] da'n twoaie, [[Yn Vrasseel|y Vrasseel]] da'n shiar, [[Yn Volivia|y Volivia]] da'n shiar yiass, liorish [[Yn Çhillee|y Çhillee]] da'n jiass as liorish [[Yn Keayn Sheealtagh|y Cheayn Sheealtagh]] da'n sheear. She [[Lima]] yn [[preeu-valley]].
[[File:Peru - Regions and departments (labeled).svg|thumb|250px| Yn Pheroo]]
[[File:Peru Machu Picchu Sunrise.jpg|thumb|250px| Machu Picchu - Yn Pheroo]]
==Imraaghyn==
{{reflist}}
{{commonscat|Peru|Yn Pheroo}}
{{America Yiass}}
{{Gurneil eaghtyrys}}{{Coord|10|S|76|W|region:PE|display=title}}
{{DEFAULTSORT:Pheroo, Yn}}
{{bun}}
[[Ronney:Yn Pheroo| ]]
[[Ronney:Yn Boodeeys Andeeagh]]
[[Ronney:Çheeraghyn America Yiass]]
[[Ronney:Eear-choloinyn Spaainagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1821]]
[[Ronney:Clean shiveeltaght]]
[[Ronney:CPTPP]]
fuay81otd5bqhjtt8asw7k5j8dkja8b
Ronney:1935
14
3872
387603
273954
2026-08-05T19:17:38Z
MacTire02
219
clowan noa
387603
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1813
14
3874
387727
280633
2026-08-05T23:24:19Z
MacTire02
219
clowan noa
387727
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1812
14
3906
387728
273970
2026-08-05T23:24:27Z
MacTire02
219
clowan noa
387728
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1732
14
3907
387806
326823
2026-08-05T23:38:39Z
MacTire02
219
clowan noa
387806
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1870
14
3909
387670
280640
2026-08-05T23:07:31Z
MacTire02
219
clowan noa
387670
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1818
14
3911
387722
280642
2026-08-05T23:23:34Z
MacTire02
219
clowan noa
387722
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1848
14
3913
387692
280645
2026-08-05T23:13:04Z
MacTire02
219
clowan noa
387692
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1903
14
3915
387637
273971
2026-08-05T23:01:15Z
MacTire02
219
clowan noa
387637
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1950
14
3917
387588
273972
2026-08-05T19:14:57Z
MacTire02
219
clowan noa
387588
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1952
14
3920
387586
273974
2026-08-05T19:14:41Z
MacTire02
219
clowan noa
387586
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1998
14
3922
387520
281163
2026-08-05T18:55:09Z
MacTire02
219
clowan noa
387520
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1977
14
3926
387544
273975
2026-08-05T19:02:38Z
MacTire02
219
clowan noa
387544
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1557
14
3929
387942
326552
2026-08-06T00:08:59Z
MacTire02
219
clowan noa
387942
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1491
14
3930
387993
386960
2026-08-06T00:18:57Z
MacTire02
219
clowan noa
387993
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1932
14
3933
387606
273977
2026-08-05T19:18:04Z
MacTire02
219
clowan noa
387606
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1882
14
3935
387658
280649
2026-08-05T23:05:25Z
MacTire02
219
clowan noa
387658
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1941
14
3937
387597
273984
2026-08-05T19:16:14Z
MacTire02
219
clowan noa
387597
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1960
14
3939
387578
273985
2026-08-05T19:13:31Z
MacTire02
219
clowan noa
387578
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1970
14
3941
387551
280652
2026-08-05T19:03:39Z
MacTire02
219
clowan noa
387551
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1958
14
3943
387580
273986
2026-08-05T19:13:49Z
MacTire02
219
clowan noa
387580
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1949
14
3945
387589
273987
2026-08-05T19:15:05Z
MacTire02
219
clowan noa
387589
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1943
14
3947
387595
273988
2026-08-05T19:15:57Z
MacTire02
219
clowan noa
387595
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1942
14
3951
387596
273990
2026-08-05T19:16:05Z
MacTire02
219
clowan noa
387596
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1934
14
3953
387604
273991
2026-08-05T19:17:47Z
MacTire02
219
clowan noa
387604
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1968
14
3955
387570
281165
2026-08-05T19:12:22Z
MacTire02
219
clowan noa
387570
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1940
14
4131
387598
274072
2026-08-05T19:16:23Z
MacTire02
219
clowan noa
387598
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1814
14
4134
387726
280626
2026-08-05T23:24:10Z
MacTire02
219
clowan noa
387726
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1865
14
4136
387675
280627
2026-08-05T23:09:56Z
MacTire02
219
clowan noa
387675
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1937
14
4142
387601
274076
2026-08-05T19:17:20Z
MacTire02
219
clowan noa
387601
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1892
14
4174
387648
280630
2026-08-05T23:03:16Z
MacTire02
219
clowan noa
387648
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1973
14
4176
387548
280622
2026-08-05T19:03:13Z
MacTire02
219
clowan noa
387548
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1685
14
4184
387845
278322
2026-08-05T23:44:57Z
MacTire02
219
clowan noa
387845
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1881
14
4186
387659
280623
2026-08-05T23:05:35Z
MacTire02
219
clowan noa
387659
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1750
14
4187
387790
280624
2026-08-05T23:36:16Z
MacTire02
219
clowan noa
387790
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1916
14
4189
387624
380479
2026-08-05T22:58:59Z
MacTire02
219
clowan noa
387624
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1963
14
4266
387575
280628
2026-08-05T19:13:06Z
MacTire02
219
clowan noa
387575
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1980
14
4281
387541
280643
2026-08-05T19:00:27Z
MacTire02
219
clowan noa
387541
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1962
14
4297
387576
274121
2026-08-05T19:13:16Z
MacTire02
219
clowan noa
387576
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1981
14
4302
387540
280646
2026-08-05T19:00:16Z
MacTire02
219
clowan noa
387540
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1990
14
4338
387530
280657
2026-08-05T18:57:15Z
MacTire02
219
clowan noa
387530
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1983
14
4340
387538
280658
2026-08-05T18:59:46Z
MacTire02
219
clowan noa
387538
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1974
14
4341
387547
280660
2026-08-05T19:03:04Z
MacTire02
219
clowan noa
387547
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1978
14
4358
387543
280662
2026-08-05T19:02:29Z
MacTire02
219
clowan noa
387543
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1955
14
4361
387583
274154
2026-08-05T19:14:14Z
MacTire02
219
clowan noa
387583
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1982
14
4365
387539
280663
2026-08-05T19:00:05Z
MacTire02
219
clowan noa
387539
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1979
14
4375
387542
280664
2026-08-05T19:02:20Z
MacTire02
219
clowan noa
387542
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1987
14
4376
387533
280665
2026-08-05T18:57:48Z
MacTire02
219
clowan noa
387533
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1965
14
4383
387573
280667
2026-08-05T19:12:47Z
MacTire02
219
clowan noa
387573
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1951
14
4384
387587
274167
2026-08-05T19:14:50Z
MacTire02
219
clowan noa
387587
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:37
14
4391
387555
274170
2026-08-05T19:05:10Z
MacTire02
219
clowan noa
387555
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:68
14
4393
387557
278326
2026-08-05T19:05:45Z
MacTire02
219
clowan noa
387557
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:65
14
4395
387556
285553
2026-08-05T19:05:33Z
MacTire02
219
clowan noa
387556
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:3
14
4398
387554
274179
2026-08-05T19:04:49Z
MacTire02
219
clowan noa
387554
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2
14
4399
387553
274182
2026-08-05T19:04:39Z
MacTire02
219
clowan noa
387553
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1
14
4400
387552
274184
2026-08-05T19:04:23Z
MacTire02
219
clowan noa
387552
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1911
14
4420
387629
380473
2026-08-05T22:59:51Z
MacTire02
219
cl
387629
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1997
14
4422
387523
280674
2026-08-05T18:56:11Z
MacTire02
219
clowan noa
387523
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1757
14
4452
387783
280680
2026-08-05T23:35:09Z
MacTire02
219
clowan noa
387783
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1836
14
4454
387704
280682
2026-08-05T23:20:49Z
MacTire02
219
clowan noa
387704
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1758
14
4463
387782
280683
2026-08-05T23:35:00Z
MacTire02
219
clowan noa
387782
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1831
14
4465
387709
281172
2026-08-05T23:21:34Z
MacTire02
219
clowan noa
387709
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1782
14
4467
387758
324939
2026-08-05T23:30:55Z
MacTire02
219
clowan noa
387758
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1826
14
4469
387714
281173
2026-08-05T23:22:19Z
MacTire02
219
clowan noa
387714
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1827
14
4470
387713
280688
2026-08-05T23:22:10Z
MacTire02
219
clowan noa
387713
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1751
14
4473
387789
278722
2026-08-05T23:36:07Z
MacTire02
219
clowan noa
387789
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1815
14
4478
387725
280690
2026-08-05T23:24:01Z
MacTire02
219
clowan noa
387725
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1852
14
4480
387688
280691
2026-08-05T23:12:08Z
MacTire02
219
clowan noa
387688
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1790
14
4484
387750
280692
2026-08-05T23:29:27Z
MacTire02
219
clowan noa
387750
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1862
14
4486
387678
280693
2026-08-05T23:10:26Z
MacTire02
219
clowan noa
387678
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1923
14
4489
387615
274229
2026-08-05T19:19:57Z
MacTire02
219
clowan noa
387615
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1988
14
4501
387532
280695
2026-08-05T18:57:39Z
MacTire02
219
clowan noa
387532
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1000
14
4526
387495
274249
2026-08-05T17:52:23Z
MacTire02
219
++
387495
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1964
14
4532
387574
280699
2026-08-05T19:12:57Z
MacTire02
219
clowan noa
387574
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1897
14
4561
387643
280654
2026-08-05T23:02:23Z
MacTire02
219
clowan noa
387643
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2007
14
4565
388038
280659
2026-08-06T00:27:31Z
MacTire02
219
clowan noa
388038
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1928
14
4567
387610
274264
2026-08-05T19:18:48Z
MacTire02
219
clowan noa
387610
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1833
14
4578
387707
280671
2026-08-05T23:21:16Z
MacTire02
219
clowan noa
387707
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1735
14
4579
387804
326212
2026-08-05T23:38:23Z
MacTire02
219
clowan noa
387804
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1841
14
4582
387699
280673
2026-08-05T23:14:09Z
MacTire02
219
clowan noa
387699
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1904
14
4584
387636
274278
2026-08-05T23:01:06Z
MacTire02
219
cl
387636
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1957
14
4590
387581
274283
2026-08-05T19:13:57Z
MacTire02
219
clowan noa
387581
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1840
14
4594
387700
280677
2026-08-05T23:14:18Z
MacTire02
219
clowan noa
387700
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1893
14
4596
387647
280678
2026-08-05T23:03:07Z
MacTire02
219
clowan noa
387647
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1986
14
4597
387534
280679
2026-08-05T18:57:58Z
MacTire02
219
clowan noa
387534
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1984
14
4598
387537
280681
2026-08-05T18:59:34Z
MacTire02
219
clowan noa
387537
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2008
14
4604
388037
280684
2026-08-06T00:27:19Z
MacTire02
219
clowan noa
388037
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1948
14
4609
387590
274291
2026-08-05T19:15:15Z
MacTire02
219
clowan noa
387590
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1995
14
4611
387525
280687
2026-08-05T18:56:28Z
MacTire02
219
clowan noa
387525
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:999
14
4619
387492
278791
2026-08-05T17:47:52Z
MacTire02
219
clowan noa
387492
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:658
14
4620
387470
285555
2026-08-05T17:42:42Z
MacTire02
219
clowan noa
387470
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:650
14
4621
387469
285554
2026-08-05T17:42:26Z
MacTire02
219
clowan noa
387469
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:100
14
4622
387559
285532
2026-08-05T19:06:22Z
MacTire02
219
clowan noa
387559
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1079
14
4623
387502
278120
2026-08-05T17:53:40Z
MacTire02
219
clowan noa
387502
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1100
14
4624
387506
285534
2026-08-05T17:54:18Z
MacTire02
219
clowan noa
387506
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1200
14
4625
387401
386970
2026-08-05T16:13:44Z
MacTire02
219
ronney elley
387401
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1200}}
[[Ronney:13oo eash rere blein|00]]
[[Ronney:1200yn| 0]]
7gcjfkg3bnjjjcrnm5fcepk9s82yj9e
387415
387401
2026-08-05T16:30:59Z
MacTire02
219
clowan noa
387415
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1266
14
4626
387427
386982
2026-08-05T17:31:59Z
MacTire02
219
clowan noa
387427
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1300
14
4627
387431
278805
2026-08-05T17:33:31Z
MacTire02
219
clowan noa
387431
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1301
14
4628
387432
278125
2026-08-05T17:33:40Z
MacTire02
219
clowan noa
387432
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1302
14
4629
387433
278806
2026-08-05T17:33:51Z
MacTire02
219
clowan noa
387433
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1303
14
4630
387434
278126
2026-08-05T17:34:05Z
MacTire02
219
clowan noa
387434
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1304
14
4631
387435
278831
2026-08-05T17:34:17Z
MacTire02
219
clowan noa
387435
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1305
14
4632
387436
278127
2026-08-05T17:34:30Z
MacTire02
219
clowan noa
387436
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1306
14
4633
387437
278128
2026-08-05T17:34:46Z
MacTire02
219
clowan noa
387437
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1307
14
4634
387438
278129
2026-08-05T17:34:56Z
MacTire02
219
clowan noa
387438
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1308
14
4635
387439
278130
2026-08-05T17:35:05Z
MacTire02
219
clowan noa
387439
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1309
14
4636
387440
278131
2026-08-05T17:35:20Z
MacTire02
219
clowan noa
387440
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1310
14
4637
387441
280694
2026-08-05T17:35:29Z
MacTire02
219
clowan noa
387441
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1311
14
4638
387442
278132
2026-08-05T17:35:37Z
MacTire02
219
clowan noa
387442
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1312
14
4639
387443
278832
2026-08-05T17:35:49Z
MacTire02
219
clowan noa
387443
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1313
14
4640
387444
278133
2026-08-05T17:36:01Z
MacTire02
219
clowan noa
387444
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1314
14
4641
387445
278134
2026-08-05T17:36:10Z
MacTire02
219
clowan noa
387445
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1380
14
4642
387451
386994
2026-08-05T17:37:42Z
MacTire02
219
clowan noa
387451
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1400
14
4643
387453
278844
2026-08-05T17:38:07Z
MacTire02
219
clowan noa
387453
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1538
14
4644
387958
326839
2026-08-06T00:12:03Z
MacTire02
219
clowan noa
387958
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1540
14
4645
387956
325999
2026-08-06T00:11:44Z
MacTire02
219
clowan noa
387956
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1765
14
4646
387775
278845
2026-08-05T23:33:52Z
MacTire02
219
clowan noa
387775
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1800
14
4647
387740
280696
2026-08-05T23:27:18Z
MacTire02
219
clowan noa
387740
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1801
14
4648
387739
280697
2026-08-05T23:27:10Z
MacTire02
219
clowan noa
387739
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1822
14
4649
387718
280698
2026-08-05T23:22:56Z
MacTire02
219
clowan noa
387718
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1900
14
4650
387640
274293
2026-08-05T23:01:48Z
MacTire02
219
clowan noa
387640
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1901
14
4651
387639
274294
2026-08-05T23:01:37Z
MacTire02
219
clowan noa
387639
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2000
14
4652
387521
301864
2026-08-05T18:55:37Z
MacTire02
219
clowan noa
387521
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2001
14
4653
388044
280701
2026-08-06T00:28:31Z
MacTire02
219
clowan noa
388044
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2002
14
4654
388043
280702
2026-08-06T00:28:21Z
MacTire02
219
clowan noa
388043
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2003
14
4655
388042
281174
2026-08-06T00:28:10Z
MacTire02
219
clowan noa
388042
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2004
14
4656
388041
280703
2026-08-06T00:28:00Z
MacTire02
219
clowan noa
388041
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2005
14
4657
388040
280704
2026-08-06T00:27:50Z
MacTire02
219
clowan noa
388040
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2006
14
4658
388039
280705
2026-08-06T00:27:40Z
MacTire02
219
clowan noa
388039
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1999
14
4659
387522
280706
2026-08-05T18:55:50Z
MacTire02
219
clowan noa
387522
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1902
14
4660
387638
274295
2026-08-05T23:01:24Z
MacTire02
219
clowan noa
387638
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1917
14
4661
387623
380480
2026-08-05T22:58:47Z
MacTire02
219
clowan noa
387623
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1918
14
4662
387622
380481
2026-08-05T22:58:37Z
MacTire02
219
clowan noa
387622
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1919
14
4663
387621
380482
2026-08-05T22:58:25Z
MacTire02
219
clowan noa
387621
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1920
14
4664
387620
274299
2026-08-05T22:58:14Z
MacTire02
219
clowan noa
387620
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1921
14
4665
387619
274300
2026-08-05T22:58:04Z
MacTire02
219
clowan noa
387619
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1922
14
4666
387618
274301
2026-08-05T22:57:53Z
MacTire02
219
clowan noa
387618
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1924
14
4667
387614
274302
2026-08-05T19:19:50Z
MacTire02
219
clowan noa
387614
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1925
14
4668
387613
274303
2026-08-05T19:19:12Z
MacTire02
219
clowan noa
387613
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1926
14
4669
387612
274304
2026-08-05T19:19:04Z
MacTire02
219
clowan noa
387612
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1927
14
4670
387611
274305
2026-08-05T19:18:56Z
MacTire02
219
clowan noa
387611
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1929
14
4671
387609
274306
2026-08-05T19:18:33Z
MacTire02
219
clowan noa
387609
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1930
14
4672
387608
274307
2026-08-05T19:18:26Z
MacTire02
219
clowan noa
387608
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1931
14
4673
387607
274308
2026-08-05T19:18:14Z
MacTire02
219
clowan noa
387607
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1933
14
4674
387605
274309
2026-08-05T19:17:55Z
MacTire02
219
clowan noa
387605
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1936
14
4675
387602
274310
2026-08-05T19:17:29Z
MacTire02
219
clowan noa
387602
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1938
14
4676
387600
274311
2026-08-05T19:17:12Z
MacTire02
219
clowan noa
387600
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1939
14
4677
387599
274312
2026-08-05T19:17:04Z
MacTire02
219
clowan noa
387599
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1944
14
4678
387594
274313
2026-08-05T19:15:48Z
MacTire02
219
clowan noa
387594
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1945
14
4679
387593
274314
2026-08-05T19:15:39Z
MacTire02
219
clowan noa
387593
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1946
14
4680
387592
274315
2026-08-05T19:15:30Z
MacTire02
219
clowan noa
387592
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1947
14
4681
387591
274316
2026-08-05T19:15:23Z
MacTire02
219
clowan noa
387591
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1953
14
4682
387585
274317
2026-08-05T19:14:32Z
MacTire02
219
clowan noa
387585
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1954
14
4683
387584
274318
2026-08-05T19:14:23Z
MacTire02
219
clowan noa
387584
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1956
14
4684
387582
274319
2026-08-05T19:14:06Z
MacTire02
219
clowan noa
387582
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1959
14
4685
387579
274320
2026-08-05T19:13:41Z
MacTire02
219
clowan noa
387579
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1961
14
4686
387577
280707
2026-08-05T19:13:24Z
MacTire02
219
clowan noa
387577
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1966
14
4687
387572
280708
2026-08-05T19:12:39Z
MacTire02
219
clowan noa
387572
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1967
14
4688
387571
280709
2026-08-05T19:12:30Z
MacTire02
219
clowan noa
387571
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1969
14
4689
387569
280710
2026-08-05T19:12:12Z
MacTire02
219
clowan noa
387569
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1971
14
4690
387550
281175
2026-08-05T19:03:31Z
MacTire02
219
clowan noa
387550
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1972
14
4691
387549
280711
2026-08-05T19:03:22Z
MacTire02
219
clowan noa
387549
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1975
14
4692
387546
280712
2026-08-05T19:02:55Z
MacTire02
219
clowan noa
387546
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1976
14
4693
387545
280713
2026-08-05T19:02:46Z
MacTire02
219
clowan noa
387545
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1985
14
4694
387535
280714
2026-08-05T18:58:08Z
MacTire02
219
clowan noa
387535
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1989
14
4695
387531
280715
2026-08-05T18:57:29Z
MacTire02
219
clowan noa
387531
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1991
14
4696
387529
280716
2026-08-05T18:57:00Z
MacTire02
219
clowan noa
387529
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1992
14
4697
387528
280717
2026-08-05T18:56:52Z
MacTire02
219
clowan noa
387528
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1993
14
4698
387527
280718
2026-08-05T18:56:44Z
MacTire02
219
clowan noa
387527
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1994
14
4699
387526
280719
2026-08-05T18:56:36Z
MacTire02
219
clowan noa
387526
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1996
14
4700
387524
280720
2026-08-05T18:56:20Z
MacTire02
219
clowan noa
387524
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:961
14
4704
387490
278135
2026-08-05T17:47:24Z
MacTire02
219
clowan noa
387490
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1022
14
4741
387496
274338
2026-08-05T17:52:40Z
MacTire02
219
clowan noa
387496
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1066
14
4743
387500
280724
2026-08-05T17:53:20Z
MacTire02
219
clowan noa
387500
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1723
14
4752
387815
326846
2026-08-05T23:40:08Z
MacTire02
219
clowan noa
387815
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1533
14
4766
387963
330598
2026-08-06T00:12:54Z
MacTire02
219
clowan noa
387963
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1603
14
4768
387911
321451
2026-08-06T00:02:20Z
MacTire02
219
clowan noa
387911
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1884
14
4787
387656
280727
2026-08-05T23:04:44Z
MacTire02
219
clowan noa
387656
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1905
14
4882
387635
274381
2026-08-05T23:00:55Z
MacTire02
219
clowan noa
387635
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1850
14
4896
387690
280731
2026-08-05T23:12:28Z
MacTire02
219
clowan noa
387690
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1031
14
4945
387497
278138
2026-08-05T17:52:51Z
MacTire02
219
clowan noa
387497
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1859
14
4946
387681
280733
2026-08-05T23:10:55Z
MacTire02
219
clowan noa
387681
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1093
14
4948
387504
300269
2026-08-05T17:54:02Z
MacTire02
219
clowan noa
387504
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1473
14
4982
388006
278331
2026-08-06T00:21:23Z
MacTire02
219
clowan noa
388006
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1846
14
4984
387694
280737
2026-08-05T23:13:22Z
MacTire02
219
clowan noa
387694
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1906
14
5004
387634
274430
2026-08-05T23:00:45Z
MacTire02
219
clowan noa
387634
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1907
14
5006
387633
274432
2026-08-05T23:00:36Z
MacTire02
219
clowan noa
387633
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1584
14
5049
387924
321317
2026-08-06T00:05:19Z
MacTire02
219
clowan noa
387924
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1711
14
5051
387826
278838
2026-08-05T23:41:58Z
MacTire02
219
clowan noa
387826
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1484
14
5054
388000
386968
2026-08-06T00:20:24Z
MacTire02
219
clowan noa
388000
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1485
14
5056
387999
386967
2026-08-06T00:20:14Z
MacTire02
219
clowan noa
387999
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1486
14
5058
387998
386965
2026-08-06T00:19:58Z
MacTire02
219
clowan noa
387998
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1487
14
5060
387997
386964
2026-08-06T00:19:44Z
MacTire02
219
clowan noa
387997
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1488
14
5062
387996
386963
2026-08-06T00:19:31Z
MacTire02
219
clowan noa
387996
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1489
14
5064
387995
386952
2026-08-06T00:19:19Z
MacTire02
219
clowan noa
387995
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1490
14
5066
387994
386961
2026-08-06T00:19:07Z
MacTire02
219
clowan noa
387994
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1908
14
5069
387632
274464
2026-08-05T23:00:27Z
MacTire02
219
clowan noa
387632
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1910
14
5076
387630
380474
2026-08-05T23:00:02Z
MacTire02
219
clowan noa
387630
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1885
14
5088
387655
280739
2026-08-05T23:04:34Z
MacTire02
219
clowan noa
387655
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1817
14
5092
387723
281180
2026-08-05T23:23:43Z
MacTire02
219
clowan noa
387723
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1825
14
5094
387715
280740
2026-08-05T23:22:27Z
MacTire02
219
clowan noa
387715
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1797
14
5098
387743
278828
2026-08-05T23:27:50Z
MacTire02
219
clowan noa
387743
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1809
14
5102
387731
280741
2026-08-05T23:24:55Z
MacTire02
219
clowan noa
387731
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1845
14
5108
387695
278144
2026-08-05T23:13:31Z
MacTire02
219
clowan noa
387695
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1869
14
5111
387671
280742
2026-08-05T23:07:42Z
MacTire02
219
clowan noa
387671
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1877
14
5113
387663
350113
2026-08-05T23:06:15Z
MacTire02
219
clowan noa
387663
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1789
14
5118
387751
280744
2026-08-05T23:29:37Z
MacTire02
219
clowan noa
387751
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1829
14
5120
387711
280745
2026-08-05T23:21:51Z
MacTire02
219
clowan noa
387711
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1837
14
5122
387703
280746
2026-08-05T23:20:39Z
MacTire02
219
clowan noa
387703
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1849
14
5124
387691
280747
2026-08-05T23:12:51Z
MacTire02
219
clowan noa
387691
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1853
14
5126
387687
280748
2026-08-05T23:11:59Z
MacTire02
219
clowan noa
387687
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1857
14
5128
387683
280749
2026-08-05T23:11:22Z
MacTire02
219
clowan noa
387683
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1861
14
5130
387679
280750
2026-08-05T23:10:36Z
MacTire02
219
clowan noa
387679
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1889
14
5132
387651
280751
2026-08-05T23:03:48Z
MacTire02
219
clowan noa
387651
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1909
14
5135
387631
274499
2026-08-05T23:00:17Z
MacTire02
219
clowan noa
387631
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1913
14
5137
387627
380476
2026-08-05T22:59:30Z
MacTire02
219
clowan noa
387627
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1366
14
5140
387449
386990
2026-08-05T17:37:13Z
MacTire02
219
clowan noa
387449
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1895
14
5146
387645
350106
2026-08-05T23:02:46Z
MacTire02
219
clowan noa
387645
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1912
14
5150
387628
380475
2026-08-05T22:59:39Z
MacTire02
219
clowan noa
387628
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1914
14
5154
387626
380477
2026-08-05T22:59:20Z
MacTire02
219
clowan noa
387626
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1915
14
5155
387625
380478
2026-08-05T22:59:11Z
MacTire02
219
clowan noa
387625
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1265
14
5219
387428
386981
2026-08-05T17:32:10Z
MacTire02
219
clowan noa
387428
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1321
14
5221
387446
278785
2026-08-05T17:36:31Z
MacTire02
219
clowan noa
387446
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1799
14
5225
387741
280754
2026-08-05T23:27:27Z
MacTire02
219
clowan noa
387741
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1890
14
5234
387650
280755
2026-08-05T23:03:38Z
MacTire02
219
clowan noa
387650
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1678
14
5269
387850
278903
2026-08-05T23:45:44Z
MacTire02
219
clowan noa
387850
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1741
14
5271
387799
280759
2026-08-05T23:37:39Z
MacTire02
219
clowan noa
387799
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1005
14
5272
387493
274545
2026-08-05T17:48:13Z
MacTire02
219
clowan noa
387493
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1639
14
5273
387883
278333
2026-08-05T23:57:49Z
MacTire02
219
clowan noa
387883
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1791
14
5274
387749
280760
2026-08-05T23:29:17Z
MacTire02
219
clowan noa
387749
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1880
14
5275
387660
280761
2026-08-05T23:05:44Z
MacTire02
219
clowan noa
387660
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1886
14
5276
387654
280762
2026-08-05T23:04:23Z
MacTire02
219
clowan noa
387654
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1600
14
5277
387913
278334
2026-08-06T00:02:40Z
MacTire02
219
clowan noa
387913
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1756
14
5278
387784
280763
2026-08-05T23:35:17Z
MacTire02
219
clowan noa
387784
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1770
14
5279
387770
280764
2026-08-05T23:33:07Z
MacTire02
219
clowan noa
387770
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1811
14
5280
387729
280765
2026-08-05T23:24:36Z
MacTire02
219
clowan noa
387729
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1819
14
5281
387721
280766
2026-08-05T23:23:24Z
MacTire02
219
clowan noa
387721
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1856
14
5282
387684
280768
2026-08-05T23:11:31Z
MacTire02
219
clowan noa
387684
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1621
14
5326
387894
278335
2026-08-05T23:59:39Z
MacTire02
219
clowan noa
387894
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1695
14
5328
387838
278337
2026-08-05T23:43:52Z
MacTire02
219
clowan noa
387838
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1608
14
5388
387906
278336
2026-08-06T00:01:33Z
MacTire02
219
clowan noa
387906
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1697
14
5391
387836
320665
2026-08-05T23:43:30Z
MacTire02
219
clowan noa
387836
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1674
14
5393
387853
285550
2026-08-05T23:46:16Z
MacTire02
219
clowan noa
387853
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1855
14
5969
387685
281191
2026-08-05T23:11:39Z
MacTire02
219
clowan noa
387685
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1810
14
6453
387730
281531
2026-08-05T23:24:45Z
MacTire02
219
clowan noa
387730
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1824
14
6456
387716
281533
2026-08-05T23:22:35Z
MacTire02
219
clowan noa
387716
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1759
14
6460
387781
281544
2026-08-05T23:34:50Z
MacTire02
219
clowan noa
387781
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1899
14
6499
387641
281542
2026-08-05T23:02:00Z
MacTire02
219
clowan noa
387641
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1802
14
6508
387738
281511
2026-08-05T23:27:01Z
MacTire02
219
clowan noa
387738
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1803
14
6510
387737
281534
2026-08-05T23:26:52Z
MacTire02
219
clowan noa
387737
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1874
14
6568
387666
280781
2026-08-05T23:06:53Z
MacTire02
219
clowan noa
387666
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1879
14
6575
387661
350115
2026-08-05T23:05:55Z
MacTire02
219
clowan noa
387661
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1883
14
6610
387657
280783
2026-08-05T23:04:54Z
MacTire02
219
clowan noa
387657
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1887
14
6613
387653
280784
2026-08-05T23:04:14Z
MacTire02
219
clowan noa
387653
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1868
14
6618
387672
280785
2026-08-05T23:09:31Z
MacTire02
219
clowan noa
387672
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1743
14
6694
387797
281541
2026-08-05T23:37:19Z
MacTire02
219
clowan noa
387797
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1767
14
6712
387773
279090
2026-08-05T23:33:33Z
MacTire02
219
clowan noa
387773
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1773
14
6719
387767
281530
2026-08-05T23:32:20Z
MacTire02
219
clowan noa
387767
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1795
14
6739
387745
281529
2026-08-05T23:28:08Z
MacTire02
219
clowan noa
387745
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1784
14
6747
387756
281516
2026-08-05T23:30:35Z
MacTire02
219
clowan noa
387756
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1804
14
6768
387736
281536
2026-08-05T23:26:42Z
MacTire02
219
clowan noa
387736
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1808
14
6782
387732
281194
2026-08-05T23:25:05Z
MacTire02
219
clowan noa
387732
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1875
14
6784
387665
280788
2026-08-05T23:06:44Z
MacTire02
219
clowan noa
387665
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1843
14
6813
387697
280791
2026-08-05T23:13:50Z
MacTire02
219
clowan noa
387697
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1858
14
6816
387682
280787
2026-08-05T23:11:13Z
MacTire02
219
clowan noa
387682
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1872
14
6852
387668
280789
2026-08-05T23:07:12Z
MacTire02
219
clowan noa
387668
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2009
14
7248
388036
280796
2026-08-06T00:27:04Z
MacTire02
219
clowan noa
388036
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1896
14
7388
387644
280798
2026-08-05T23:02:33Z
MacTire02
219
clowan noa
387644
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1820
14
7434
387720
280803
2026-08-05T23:23:15Z
MacTire02
219
clowan noa
387720
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1325
14
7513
387447
386992
2026-08-05T17:36:43Z
MacTire02
219
clowan noa
387447
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1521
14
7515
387972
275137
2026-08-06T00:14:59Z
MacTire02
219
clowan noa
387972
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1894
14
8013
387646
350107
2026-08-05T23:02:56Z
MacTire02
219
clowan noa
387646
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1898
14
8108
387642
281224
2026-08-05T23:02:11Z
MacTire02
219
clowan noa
387642
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1860
14
8191
387680
280836
2026-08-05T23:10:45Z
MacTire02
219
clowan noa
387680
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1504
14
8533
387984
325109
2026-08-06T00:17:18Z
MacTire02
219
clowan noa
387984
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1451
14
8534
388018
326895
2026-08-06T00:23:35Z
MacTire02
219
clowan noa
388018
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1101
14
10123
387507
285535
2026-08-05T17:54:31Z
MacTire02
219
clowan noa
387507
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Yn Oarpey 'sy vlein 1923
14
10594
387616
284674
2026-08-05T19:20:28Z
MacTire02
219
MacTire02 moved page [[Ronney:1923 'syn Oarpey]] to [[Ronney:Yn Oarpey 'sy vlein 1923]] without leaving a redirect: aght
284674
wikitext
text/x-wiki
{{Commonscat|1923 in Europe}}
[[Ronney:1923|Oarpey]]
[[Ronney:Bleeantyn y 20oo eash 'syn Oarpey]]
npox2c885h4g41c94ta3aqghsqdhv6z
387617
387616
2026-08-05T19:20:50Z
MacTire02
219
ronnaghyn elley
387617
wikitext
text/x-wiki
{{Commonscat|1923 in Europe}}
[[Ronney:1923|Oarpey]]
[[Ronney:Yn Oarpey 'sy 20oo eash rere blein| 1923]]
f8ca5u1o7yrvwz83vdubd6rfg0cnrnp
Ronney:1675
14
13013
387852
278255
2026-08-05T23:46:05Z
MacTire02
219
clowan noa
387852
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1632
14
13016
387886
278256
2026-08-05T23:58:18Z
MacTire02
219
clowan noa
387886
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1863
14
13017
387677
280412
2026-08-05T23:10:16Z
MacTire02
219
clowan noa
387677
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1832
14
13050
387708
281020
2026-08-05T23:21:25Z
MacTire02
219
clowan noa
387708
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1593
14
13196
387919
326817
2026-08-06T00:04:26Z
MacTire02
219
clowan noa
387919
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1652
14
13200
387871
325387
2026-08-05T23:55:50Z
MacTire02
219
clowan noa
387871
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1666
14
13218
387859
325648
2026-08-05T23:47:30Z
MacTire02
219
clowan noa
387859
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1186
14
13387
387514
278274
2026-08-05T17:55:59Z
MacTire02
219
clowan noa
387514
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1471
14
13542
388008
330534
2026-08-06T00:21:47Z
MacTire02
219
clowan noa
388008
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1528
14
13546
387967
325051
2026-08-06T00:13:34Z
MacTire02
219
clowan noa
387967
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1753
14
13692
387787
280431
2026-08-05T23:35:47Z
MacTire02
219
clowan noa
387787
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
King Chiaullee
0
13795
387384
322461
2026-08-05T13:46:41Z
MacTire02
219
++
387384
wikitext
text/x-wiki
{{Kishtey fys ellyneyr kiaullee
| jalloo = Kc lorient.jpg
| fo-heidyl = King Chiaullee er yn ardan ayns [[An Oriant]] 'sy vlein 2008.
|bleeantyn_obbree = 1994–2010yn
|aa-olteynyn =
{{ubl
|Adam Rhodes
|David Kilgallon
|Russel Cowin
|Gilno Carswell
|Matthew Kelly
}}
}}
Va '''King Chiaullee''' ny vann kiaullee veih [[Mannin]]. Hie yn bann ry-cheilley 'sy scoill 'sy vlein 1994, as veih'n traa shen, ren y bann cloie ayns ram feaillaghyn kiaullee er feie'n [[Reeriaght Unnaneysit]], [[yn Oarpey]], as ayns [[ny Steatyn Unnaneysit]].
Ta queig olteynyn 'sy vann:
* Adam Rhodes ([[fiddyl]] as [[bouzouki]])
* David Kilgallon ([[fiddyl]])
* Russel Cowin ([[bodhrán]] as [[biol injil]])
* Gilno Carswell ([[feddan]])
* Matthew Kelly ([[gitar]] as [[mandalyn]])
Ren King Chiaullee mestey kiaull hradishoonagh ass [[Mannin]], [[Nalbin]] as [[Nerin]] marish arraneyn bunneydagh ta screeuit ec olteynyn y vann, dys mestey jeh chiaull Cheltiagh dy chur magh. Ta tree albymyn skeaylt magh ec y vann: ''Baase Cooil Stroo'' (2000), ''Reel: Ode'' (2003), as ''Nish!'' (2006), as ta ram cohoyrtyssyn jeant oc ayns albymyn elley.
'Sy vlein 2008 ren y bann cloie ayns [[Feailley Eddyr-cheltiagh An Oriant]] 'sy Vritaan, as va'n aundyr ''Trophée Cidrerie des Terroirs'' cosnit ec y vann - y chied ynnyd 'sy chohirrey bann.
==Kianglaghyn magh==
* [https://web.archive.org/web/20090531080913/http://www.kciom.com/ Ynnyd-eggey oikoil]
{{gurneil eaghtyrys}}
{{bun}}
[[Ronney:Possanyn kiaullee Manninagh]]
[[Ronney:Possanyn kiaullee bunnit 'sy vlein 1994]]
[[Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994]]
[[Ronney:Kiaull Vannin ayns ny 1990yn]]
[[Ronney:Kiaull Vannin ayns ny 2000yn]]
[[Ronney:Kiaull Vannin ayns ny 2010yn]]
[[Ronney:Jee-vunneeaghtyn ayns Mannin ayns ny 2010yn]]
[[Ronney:Possanyn kiaull çheerey Manninagh]]
ju2khco7pmkss0s0zfuotlazjtiay9a
387390
387384
2026-08-05T15:54:33Z
MacTire02
219
- > ndash
387390
wikitext
text/x-wiki
{{Kishtey fys ellyneyr kiaullee
| jalloo = Kc lorient.jpg
| fo-heidyl = King Chiaullee er yn ardan ayns [[An Oriant]] 'sy vlein 2008.
|bleeantyn_obbree = 1994–2010yn
|aa-olteynyn =
{{ubl
|Adam Rhodes
|David Kilgallon
|Russel Cowin
|Gilno Carswell
|Matthew Kelly
}}
}}
Va '''King Chiaullee''' ny vann kiaullee veih [[Mannin]]. Hie yn bann ry-cheilley 'sy scoill 'sy vlein 1994, as veih'n traa shen, ren y bann cloie ayns ram feaillaghyn kiaullee er feie'n [[Reeriaght Unnaneysit]], [[yn Oarpey]], as ayns [[ny Steatyn Unnaneysit]].
Ta queig olteynyn 'sy vann:
* Adam Rhodes ([[fiddyl]] as [[bouzouki]])
* David Kilgallon ([[fiddyl]])
* Russel Cowin ([[bodhrán]] as [[biol injil]])
* Gilno Carswell ([[feddan]])
* Matthew Kelly ([[gitar]] as [[mandalyn]])
Ren King Chiaullee mestey kiaull hradishoonagh ass [[Mannin]], [[Nalbin]] as [[Nerin]] marish arraneyn bunneydagh ta screeuit ec olteynyn y vann, dys mestey jeh chiaull Cheltiagh dy chur magh. Ta tree albymyn skeaylt magh ec y vann: ''Baase Cooil Stroo'' (2000), ''Reel: Ode'' (2003), as ''Nish!'' (2006), as ta ram cohoyrtyssyn jeant oc ayns albymyn elley.
'Sy vlein 2008 ren y bann cloie ayns [[Feailley Eddyr-cheltiagh An Oriant]] 'sy Vritaan, as va'n aundyr ''Trophée Cidrerie des Terroirs'' cosnit ec y vann – y chied ynnyd 'sy chohirrey bann.
==Kianglaghyn magh==
* [https://web.archive.org/web/20090531080913/http://www.kciom.com/ Ynnyd-eggey oikoil]
{{gurneil eaghtyrys}}
{{bun}}
[[Ronney:Possanyn kiaullee Manninagh]]
[[Ronney:Possanyn kiaullee bunnit 'sy vlein 1994]]
[[Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994]]
[[Ronney:Kiaull Vannin ayns ny 1990yn]]
[[Ronney:Kiaull Vannin ayns ny 2000yn]]
[[Ronney:Kiaull Vannin ayns ny 2010yn]]
[[Ronney:Jee-vunneeaghtyn ayns Mannin ayns ny 2010yn]]
[[Ronney:Possanyn kiaull çheerey Manninagh]]
ct2pf3oi6ra38iv7bvpvor4ovmbcvj0
Ronney:1095
14
14058
387505
278280
2026-08-05T17:54:10Z
MacTire02
219
clowan noa
387505
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1775
14
14403
387765
325145
2026-08-05T23:32:01Z
MacTire02
219
clowan noa
387765
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2010
14
14614
388035
280455
2026-08-06T00:26:51Z
MacTire02
219
clowan noa
388035
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2011
14
14883
388034
280465
2026-08-06T00:26:40Z
MacTire02
219
clowan noa
388034
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1891
14
15055
387649
280467
2026-08-05T23:03:29Z
MacTire02
219
clowan noa
387649
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1807
14
15255
387733
280468
2026-08-05T23:25:14Z
MacTire02
219
clowan noa
387733
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1805
14
15256
387735
280469
2026-08-05T23:25:35Z
MacTire02
219
clowan noa
387735
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1806
14
15257
387734
280470
2026-08-05T23:25:23Z
MacTire02
219
clowan noa
387734
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1873
14
15452
387667
281091
2026-08-05T23:07:02Z
MacTire02
219
clowan noa
387667
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2012
14
16737
388033
280528
2026-08-06T00:26:30Z
MacTire02
219
clowan noa
388033
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Yn Phroosh
0
17408
387377
360166
2026-08-05T12:23:48Z
MacTire02
219
rere en
387377
wikitext
text/x-wiki
{{Kishtey fys shenn-çheer
|mooar-rheynn = Yn Oaraishey
|ard =
|stayd =
|çheer =
|eash =
|sorçh_reiltys = [[Reeriaght]]
|tammylt =
|blein_hoshee = 1525
|blein_yerrinagh = 1947
|ennym_gienneydagh= y Phroosh
|ennym_dooghyssagh= Preußen
|ennym_foddey_cadjincliaghtit = Yn Phroosh
|taghyrt_toshiaght= [[Duicaght y Phroosh]]
|date_toshee = 10 Averil
|taghyrt_jerrey = [[Coonseil Stiuree ny Cochaarjyn|Scryssey]] (''[[de jure]]'')
|date_jerrinagh = 25 T. Arree
|taghyrt1 = [[Brandenburg-Y Phroosh|Unnaneyssey rish Brandenburg]]
|date_taghyrt1 = 27 Luanistyn 1618
|taghyrt2 = [[Reeriaght y Phroosh]]
|date_taghyrt2 = 18 J. Geuree 1701
|taghyrt3 = [[Steat Seyr y Phroosh]]
|date_taghyrt3 = 9 Sauin 1918
|taghyrt4 = [[Preußenschlag|Scryssey]] (''[[de facto]]'')
|date_taghyrt4 = 30 J. Geuree 1934
|caslys_brattagh = Flag_of_the_Kingdom_of_Prussia_(1803-1892).svg
|caslys_cowrey = Preußischer_Adler.svg
|sorçh_cowrey = Armys
|caslys_çheerey = Map-DR-Prussia.svg
|preeu-valley = [[Königsberg]], as [[Berleen]] ny s'anmey
|jarroo-raa_ashoonagh = Suum cuique <small>([[Ladjyn]])</small><br />"Leshyn, ny ta toilçhin"
|çhengaghyn_cadjin= [[Germaanish]]
|staydraa_blein1 = 1939
|staydraa_eaghtyr1= 297007
|staydraa_pob1 = 41915040
}}
She reeriaght Ghermaanagh as y bun eck ayns [[Diucaght y Proosh]] as [[Marg-eearlaght Brandenburg]] va'n '''Phroosh''' ({{lang-de|Preußen}}; {{lang-la|Borussia, Prutenia}}; {{lang-lv|Prūsija}}; {{lang-lt|Prūsija}}; {{lang-pl|Prusy}}; [[Shenn Phrooshish]]: ''Prūsija''; {{lang-dk|Prøjsen}}; {{lang-ru|Пруссия, ''Prussija''}}). Er feie ny keead-bleeantyn ren reeaghyn ass [[Reeraghtys Hohenzollern]] stiurey yn Phroosh. Ren ad mooadaghey yn steat liorish y çheshaght chaggee feer-reaghit ec y steat. Ren y Phroosh cur cummey er [[shennaghys y Ghermaan]] as y preeu-valley eck ayns [[Berleen]] lurg y vlein 1451. Roish y vlein 1871 haink er ram steatyn beggey dy ve conastit as kianglt rish y Phroosh, obbraghey ren cur er bun [[Impiraght y Ghermaan]]. 'Sy vlein 1918 dirree y lught reeoil magh ass oik as chaill y lught ooasle y chooid smoo jeh ny pooraghyn politickagh oc. Haink jerrey lesh y Phroosh 'sy vlein 1932 dy breeoil, as haink jerrey lhee dy h-oikoil 'sy vlein 1947.
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Phroosh, Yn}}
[[Ronney:Yn Phroosh| ]]
[[Ronney:Eear-heeraghyn yn Oarpey]]
[[Ronney:Shennaghys Brandenburg]]
[[Ronney:Bunneeaghtyn 'sy Phroosh 'sy vlein 1525]]
[[Ronney:Jee-vunneeaghtyn 'sy Phroosh 'sy vlein 1947]]
[[Ronney:Ardjyn shenndeeagh]]
{{bun}}
r1khp2yj49j06kl7wzrjbaf09cgqf34
Ronney:2013
14
17635
388032
277783
2026-08-06T00:26:21Z
MacTire02
219
clowan noa
388032
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1663
14
18029
387861
285549
2026-08-05T23:47:48Z
MacTire02
219
clowan noa
387861
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1701
14
18585
387833
285439
2026-08-05T23:43:04Z
MacTire02
219
clowan noa
387833
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1744
14
18587
387796
285441
2026-08-05T23:37:10Z
MacTire02
219
clowan noa
387796
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1564
14
18635
387937
286020
2026-08-06T00:08:02Z
MacTire02
219
clowan noa
387937
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1257
14
18641
387430
386979
2026-08-05T17:32:31Z
MacTire02
219
clowan noa
387430
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1475
14
18646
388004
286034
2026-08-06T00:21:03Z
MacTire02
219
clowan noa
388004
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1838
14
18648
387702
286036
2026-08-05T23:14:36Z
MacTire02
219
clowan noa
387702
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:600
14
19277
387467
291402
2026-08-05T17:42:00Z
MacTire02
219
clowan noa
387467
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2014
14
19371
388031
294609
2026-08-06T00:26:10Z
MacTire02
219
clowan noa
388031
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ymmydeyr:Llywelyn2000/List of Manx people
2
19947
388163
387207
2026-08-06T10:21:00Z
ListeriaBot
10339
Wikidata list updated [V2]
388163
wikitext
text/x-wiki
{{Wikidata list
|sparql=SELECT ?item ?yob ?yod WHERE {
?item wdt:P19 ?pob .
?pob wdt:P131* wd:Q9676 .
OPTIONAL { ?item wdt:P569 ?dob . BIND(YEAR(?dob) as ?yob) }
OPTIONAL { ?item wdt:P570 ?dod . BIND(YEAR(?dod) as ?yod) }
. }
|wdq=.
|sort=569
|section=31
|columns=number:#,P18:XXX Add 'Image' in Manx here please! XXX,label:XXX change to 'Name' in Manx! XXX,?yob:XXX dob XXX,?yod:XXX date of death XXX,P19:xxx Place of birth xxx
}}
== human ==
{| class='wikitable sortable'
! #
! XXX Add 'Image' in Manx here please! XXX
! XXX change to 'Name' in Manx! XXX
! XXX dob XXX
! XXX date of death XXX
! xxx Place of birth xxx
|-
| style='text-align:right'| 1
|
| ''[[:d:Q135256163|Michael Higgins]]''
| 1939
| 1988
| [[Mannin]]
|-
| style='text-align:right'| 2
|
| ''[[:d:Q136434024|Albert Hugh Teare]]''
| 1877
| 1932
| [[Rhumsaa]]
|-
| style='text-align:right'| 3
| [[Coadan:Frederick Agnew Gill LCCN2014714984 (cropped).jpg|center|128px]]
| [[Frederick Agnew Gill]]
| 1873
| 1938
| [[Balley Chashtal]]
|-
| style='text-align:right'| 4
|
| ''[[:d:Q75456632|Elizabeth Quayle]]''
|
|
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 5
| [[Coadan:RobinGibb.jpg|center|128px]]
| ''[[:d:Q188482|Robin Gibb]]''
| 1949
| 2012
| [[Doolish]]
|-
| style='text-align:right'| 6
| [[Coadan:Maurice Gibb (Bee Gees) - TopPop 1973 (cropped).png|center|128px]]
| ''[[:d:Q296876|Maurice Gibb]]''
| 1949
| 2003
| [[Doolish]]
|-
| style='text-align:right'| 7
|
| [[Randolph Quirk]]
| 1920
| 2017
| [[Maayl]]
|-
| style='text-align:right'| 8
|
| [[Ned Maddrell]]
| 1877
| 1974
| [[Creneash]]
|-
| style='text-align:right'| 9
| [[Coadan:Rhodri Mawr - Historiae Cambriae.png|center|128px]]
| ''[[:d:Q470862|Rhodri Mawr]]''
| 820
| 878
| [[Mannin]]
|-
| style='text-align:right'| 10
| [[Coadan:John Thomas Caine.jpg|center|128px]]
| ''[[:d:Q964884|John Thomas Caine]]''
| 1829
| 1911
| [[Mannin]]
|-
| style='text-align:right'| 11
|
| ''[[:d:Q1064177|Charles Duncan Cameron]]''
| 1825
| 1870
| [[Doolish]]
|-
| style='text-align:right'| 12
|
| [[Chris Killip]]
| 1946
| 2020
| [[Doolish]]
|-
| style='text-align:right'| 13
| [[Coadan:Edward Forbes.jpg|center|128px]]
| [[Edward Forbes]]
| 1815
| 1854
| [[Doolish]]
|-
| style='text-align:right'| 14
| [[Coadan:Peter Heywood, by John Simpson.jpg|center|128px]]
| ''[[:d:Q1370965|Peter Heywood]]''
| 1772
| 1831
| [[Doolish]]
|-
| style='text-align:right'| 15
| [[Coadan:Eredoctoraten UvA nr. 21, 22 Charles B. Timmer , nr. 1 20 prof. J. Frank Kerm, Bestanddeelnr 934-1653.jpg|center|128px]]
| [[Frank Kermode]]
| 1919
| 2010
| [[Mannin]]
|-
| style='text-align:right'| 16
| [[Coadan:Hugh Binney.jpeg|center|128px]]
| ''[[:d:Q1634227|Hugh Binney]]''
| 1883
| 1953
| [[Doolish]]
|-
| style='text-align:right'| 17
|
| ''[[:d:Q2025044|Daniel Lowey]]''
| 1878
| 1951
| [[Rhumsaa]]
|-
| style='text-align:right'| 18
| [[Coadan:Gofraid Crobán (British Library Cotton MS Julius A VII, folio 50v).jpg|center|128px]]
| [[Gorree Crovan]]
| 1050
| 1095
| [[Mannin]]
|-
| style='text-align:right'| 19
| [[Coadan:MikeKerruish.jpg|center|128px]]
| [[Mike Kerruish]]
| 1948
| 2010
| [[Mannin]]
|-
| style='text-align:right'| 20
| [[Coadan:Brian Stowell - Gaisgeach na Gaelg.jpg|center|128px]]
| [[Brian Stowell]]
| 1936
| 2019
| [[Doolish]]
|-
| style='text-align:right'| 21
| [[Coadan:Archibald Knox.jpg|center|128px]]
| ''[[:d:Q2860090|Archibald Knox]]''
| 1864
| 1933
| [[Mannin]]
|-
| style='text-align:right'| 22
| [[Coadan:Goshen-Routh 10.jpg|center|128px]]
| [[Arthur Caley]]
| 1824
| 1889
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 23
|
| ''[[:d:Q2917082|Peter Buckley]]''
| 1944
| 1969
| [[Doolish]]
|-
| style='text-align:right'| 24
|
| ''[[:d:Q2960723|Charles de Viry]]''
| 1809
| 1888
| [[Doolish]]
|-
| style='text-align:right'| 25
|
| ''[[:d:Q2979086|Clifford Irving]]''
| 1914
| 2004
| [[Mannin]]
|-
| style='text-align:right'| 26
|
| ''[[:d:Q3048476|Edward Christian]]''
| 1600<br/>1590
| 1659<br/>1661
| [[Mannin]]
|-
| style='text-align:right'| 27
|
| ''[[:d:Q3082831|Frank Tipper]]''
| 1909
| 1963
| [[Doolish]]
|-
| style='text-align:right'| 28
|
| [[Hilary Pritchard]]
| 1942
| 1996
| [[Mannin]]
|-
| style='text-align:right'| 29
| [[Coadan:Illiam Dhone.JPG|center|128px]]
| [[Illiam Dhone]]
| 1608
| 1662<br/>1663
| [[Camys y Ree]]
|-
| style='text-align:right'| 30
| [[Coadan:Captain John Quilliam RN.jpg|center|128px]]
| ''[[:d:Q3182325|John Quilliam]]''
| 1771
| 1829
| [[Mannin]]
|-
| style='text-align:right'| 31
|
| ''[[:d:Q3184768|Joseph Clayton Clark]]''
| 1857<br/>1856
| 1937
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 32
|
| [[Joseph Davidson Qualtrough]]
| 1885
| 1960
| [[Mannin]]
|-
| style='text-align:right'| 33
|
| ''[[:d:Q3375184|Percy Cowley]]''
| 1886
| 1958
| [[Rhumsaa]]
|-
| style='text-align:right'| 34
|
| ''[[:d:Q3780140|Gwen Crellin]]''
| 1917
| 2007
| [[Mannin]]
|-
| style='text-align:right'| 35
|
| ''[[:d:Q4647267|A.P. Penketh]]''
| 1865
| 1932
| [[Mannin]]
|-
| style='text-align:right'| 36
|
| ''[[:d:Q4684998|Adrian Earnshaw]]''
| 1950
| 2022
| [[Mannin]]
|-
| style='text-align:right'| 37
| [[Coadan:AWM 099103 Arnold Potts.jpg|center|128px]]
| ''[[:d:Q4795209|Arnold Potts]]''
| 1896
| 1968
| [[Mannin]]
|-
| style='text-align:right'| 38
| [[Coadan:Arthur William Moore.png|center|128px]]
| [[Arthur William Moore]]
| 1853
| 1909
| [[Doolish]]
|-
| style='text-align:right'| 39
| [[Coadan:Baldwin Wake Walker.jpg|center|128px]]
| ''[[:d:Q4850612|Baldwin Wake Walker]]''
| 1802
| 1876
| ''[[:d:Q3398663|Port e Vullen]]''
|-
| style='text-align:right'| 40
| [[Coadan:Bertram Kelly, vicar.jpg|center|128px]]
| [[Bertram Kelly]]
| 1884
| 1976
| [[Doolish]]
|-
| style='text-align:right'| 41
|
| [[Bill Malarkey (politickeyr)|Bill Malarkey]]
| 1951
| 2020
| [[Mannin]]
|-
| style='text-align:right'| 42
|
| ''[[:d:Q4980208|Bryan Kneale]]''
| 1930
| 2025
| [[Doolish]]
|-
| style='text-align:right'| 43
|
| [[Charles Kerruish]]
| 1917
| 2003
| [[Mannin]]
|-
| style='text-align:right'| 44
| [[Coadan:TT Lightweight - Dan Kneen (8985019419).jpg|center|128px]]
| ''[[:d:Q5213818|Dan Kneen]]''
| 1987
| 2018
| [[Doolish]]
|-
| style='text-align:right'| 45
|
| ''[[:d:Q5232102|David Callister]]''
| 1935
| 2020
| [[Mannin]]
|-
| style='text-align:right'| 46
|
| ''[[:d:Q5233727|David Forbes]]''
| 1828
| 1876
| [[Doolish]]
|-
| style='text-align:right'| 47
|
| ''[[:d:Q5262311|Derek Robinson]]''
| 1941
| 2002
| [[Mannin]]
|-
| style='text-align:right'| 48
|
| [[Dursley McLinden]]
| 1965
| 1995
| [[Doolish]]
|-
| style='text-align:right'| 49
|
| ''[[:d:Q5339649|Edmund Lowey]]''
| 1938
| 2024
| [[Balley Sallagh]]
|-
| style='text-align:right'| 50
|
| ''[[:d:Q5442313|Felix Fordati Ready]]''
| 1872
| 1940
| [[Balley Sallagh]]
|-
| style='text-align:right'| 51
|
| ''[[:d:Q5534099|Geoff Corkish]]''
| 1953
| 2025
| [[Mannin]]
|-
| style='text-align:right'| 52
|
| ''[[:d:Q5585508|Gordon Manley]]''
| 1902
| 1980
| [[Doolish]]
|-
| style='text-align:right'| 53
|
| ''[[:d:Q5702651|Harry Dacre]]''
| 1860
| 1922
| [[Mannin]]
|-
| style='text-align:right'| 54
| [[Coadan:Hugh Stowell Brown.jpg|center|128px]]
| [[Hugh Stowell Brown]]
| 1823
| 1886
| [[Doolish]]
|-
| style='text-align:right'| 55
|
| [[Jack Nivison]]
| 1910
| 2003
| [[Skeerey Vraddan|Skeerey Braddan]]<br/>[[Kione Droghad]]
|-
| style='text-align:right'| 56
| [[Coadan:James Ashton.jpeg|center|128px]]
| ''[[:d:Q6128902|James Ashton]]''
| 1859
| 1935
| [[Mannin]]
|-
| style='text-align:right'| 57
| [[Coadan:James Kewley Ward 1890.jpg|center|128px]]
| ''[[:d:Q6137285|James Kewley Ward]]''
| 1819
| 1910
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 58
|
| ''[[:d:Q6218777|John Allen Mylrea]]''
| 1849
| 1911
| [[Doolish]]
|-
| style='text-align:right'| 59
|
| [[John Joseph Kneen]]
| 1873
| 1938
| [[Doolish]]
|-
| style='text-align:right'| 60
| [[Coadan:John McHutchin.jpg|center|128px]]
| ''[[:d:Q6247893|John McHutchin]]''
| 1788
| 1847
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 61
|
| ''[[:d:Q6387399|Ken Burns]]''
| 1923
| 2006
| [[Rhumsaa]]
|-
| style='text-align:right'| 62
| [[Coadan:Mark Cubbon b1785.jpg|center|128px]]
| ''[[:d:Q6767214|Mark Cubbon]]''
| 1775
| 1861
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 63
| [[Coadan:ColMarkWilks.jpg|center|128px]]
| ''[[:d:Q6770348|Mark Wilks]]''
| 1759
| 1831
| [[Mannin]]
|-
| style='text-align:right'| 64
|
| ''[[:d:Q6777668|Martyn Quayle]]''
| 1959
| 2016
| [[Mannin]]
|-
| style='text-align:right'| 65
|
| ''[[:d:Q7173434|Peter Craine]]''
| 2000
| 2003
| [[Doolish]]
|-
| style='text-align:right'| 66
|
| ''[[:d:Q7324916|Richard Costain]]''
| 1839
| 1902
| [[Mannin]]
|-
| style='text-align:right'| 67
|
| ''[[:d:Q7342026|Robert Benjamin Young]]''
| 1773
| 1846
| [[Doolish]]
|-
| style='text-align:right'| 68
|
| ''[[:d:Q7351285|Robert Wylie]]''
| 1839
| 1877
| [[Mannin]]
|-
| style='text-align:right'| 69
| [[Coadan:Sophia Morrison.jpg|center|128px]]
| [[Sophia Morrison]]
| 1859
| 1917
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 70
|
| ''[[:d:Q7627097|Stuart Slack]]''
| 1935
| 1998
| [[Doolish]]
|-
| style='text-align:right'| 71
| [[Coadan:T. E. Brown (young).jpg|center|128px]]
| ''[[:d:Q7789264|Thomas Edward Brown]]''
| 1830
| 1897
| [[Doolish]]
|-
| style='text-align:right'| 72
|
| ''[[:d:Q7790684|Thomas Hill Dixon]]''
| 1816
| 1880
| [[Mannin]]
|-
| style='text-align:right'| 73
|
| ''[[:d:Q7821311|Toni Onley]]''
| 1928
| 2004
| [[Doolish]]
|-
| style='text-align:right'| 74
|
| [[Walter y Chleree]]
| 1928
| 2007
| [[Rhumsaa]]
|-
| style='text-align:right'| 75
|
| ''[[:d:Q8010366|William H. Corlett]]''
| 1856
| 1937
| [[Mannin]]
|-
| style='text-align:right'| 76
|
| [[William Kennish]]
| 1799
| 1862
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 77
| [[Coadan:William Moore (1898).jpg|center|128px]]
| ''[[:d:Q8015768|William Moore]]''
| 1823
| 1914
| [[Mannin]]
|-
| style='text-align:right'| 78
| [[Coadan:Sir William Rowan.jpg|center|128px]]
| ''[[:d:Q8017805|William Rowan]]''
| 1789
| 1879
| [[Mannin]]
|-
| style='text-align:right'| 79
| [[Coadan:Rushen Abbey.jpg|center|128px]]
| ''[[:d:Q8017850|William Russell]]''
|
| 1374
| [[Mannin]]
|-
| style='text-align:right'| 80
|
| ''[[:d:Q9374876|William Russell]]''
| 1852
| 1940
| [[Doolish]]
|-
| style='text-align:right'| 81
|
| ''[[:d:Q10314191|Kenneth Creer]]''
| 1925
| 2020
| [[Doolish]]
|-
| style='text-align:right'| 82
|
| [[John Kelly (scoillar)|John Kelly]]
| 1750
| 1809
| [[Doolish]]
|-
| style='text-align:right'| 83
|
| [[Noel Cringle]]
| 1937
| 2021
| [[Mannin]]
|-
| style='text-align:right'| 84
| [[Coadan:Edward Faragher.jpeg|center|128px]]
| [[Edward Faragher]]
| 1831
| 1908
| [[Creneash]]
|-
| style='text-align:right'| 85
| [[Coadan:Josephine Kermode (Cushag).jpg|center|128px]]
| [[Josephine Kermode]]
| 1852
| 1937
| [[Rhumsaa]]
|-
| style='text-align:right'| 86
| [[Coadan:Mona Margaret McBURNEY.jpg|center|128px]]
| ''[[:d:Q15433239|Mona McBurney]]''
| 1862
| 1932
| [[Doolish]]
|-
| style='text-align:right'| 87
| [[Coadan:Philip Moore Callow Kermode.png|center|128px]]
| ''[[:d:Q15453822|P. M. C. Kermode]]''
| 1855
| 1932
| [[Rhumsaa]]
|-
| style='text-align:right'| 89
| [[Coadan:Hugo Flinn 1933.png|center|128px]]
| ''[[:d:Q15996075|Hugo Flinn]]''
| 1880
| 1943
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 90
| [[Coadan:Canon John Quine.jpg|center|128px]]
| ''[[:d:Q15997058|John Quine]]''
| 1857
| 1940
| [[Skeerey Charmane]]
|-
| style='text-align:right'| 91
| [[Coadan:W. Walter Gill.jpg|center|128px]]
| ''[[:d:Q16002989|W. Walter Gill]]''
| 1876
| 1963
| [[Mannin]]
|-
| style='text-align:right'| 92
|
| ''[[:d:Q16007058|Harry Korris]]''
| 1891
| 1971
| [[Kione Droghad]]
|-
| style='text-align:right'| 93
| [[Coadan:Christopher R. Shimmin.jpg|center|128px]]
| ''[[:d:Q16029252|Christopher R. Shimmin]]''
| 1870
| 1933
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 94
| [[Coadan:Actress Annie Yeamans, c. 1896.png|center|128px]]
| [[Annie Yeamans]]
| 1835
| 1912
| [[Mannin]]
|-
| style='text-align:right'| 95
| [[Coadan:Robert Q. Kermode.jpg|center|128px]]
| ''[[:d:Q16065654|Robert Kermode]]''
| 1812
| 1870
| [[Mannin]]
|-
| style='text-align:right'| 96
|
| ''[[:d:Q16169661|John Dongan]]''
| 1301
| 1413
| [[Mannin]]
|-
| style='text-align:right'| 97
|
| ''[[:d:Q16200333|Esther Nelson]]''
| 1810
| 1843
| [[Jorby]]
|-
| style='text-align:right'| 98
| [[Coadan:Kathleen Faragher.jpg|center|128px]]
| [[Kathleen Faragher]]
| 1904
| 1974
| [[Rhumsaa]]
|-
| style='text-align:right'| 99
|
| ''[[:d:Q16825531|Stewart Henbest Capper]]''
| 1859
| 1925
| [[Lunnin]]<br/>[[Doolish]]
|-
| style='text-align:right'| 100
|
| ''[[:d:Q17182825|William Garrett]]''
| 1842
| 1916
| [[Mannin]]
|-
| style='text-align:right'| 101
|
| ''[[:d:Q17309064|Charles Gibbon]]''
| 1843
| 1890
| [[Mannin]]
|-
| style='text-align:right'| 102
| [[Coadan:Plexus (1901) (14597471297).jpg|center|128px]]
| ''[[:d:Q18157096|William Edward Quine]]''
| 1847
| 1922
| [[Skeerey Stondane]]
|-
| style='text-align:right'| 103
| [[Coadan:Capt. William Gill, the first Captain of the line..jpg|center|128px]]
| [[William Gill (marrinagh)|William Gill]]
| 1795
| 1858
| [[Rhumsaa]]
|-
| style='text-align:right'| 104
| [[Coadan:William Cubbon.jpg|center|128px]]
| [[William Cubbon]]
| 1865
| 1955
| [[Colby]]
|-
| style='text-align:right'| 105
| [[Coadan:Sir Benjamin Alfred Dobson statue, Bolton (4).JPG|center|128px]]
| ''[[:d:Q18681459|Benjamin Dobson]]''
| 1847
| 1898
| [[Doolish]]
|-
| style='text-align:right'| 106
| [[Coadan:Sir James Gell.jpg|center|128px]]
| ''[[:d:Q18922358|James Gell]]''
| 1823
| 1905
| [[Mannin]]
|-
| style='text-align:right'| 107
| [[Coadan:Archibald Cregeen.png|center|128px]]
| [[Archibald Cregeen]]
| 1774
| 1841
| [[Colby]]
|-
| style='text-align:right'| 108
| [[Coadan:Rev thomas bacon.jpg|center|128px]]
| ''[[:d:Q19282324|Thomas Bacon]]''
| 1711
| 1768
| [[Mannin]]
|-
| style='text-align:right'| 109
|
| ''[[:d:Q20639142|Annie Warren Gill]]''
| 1862
| 1930
| [[Balley Chashtal]]
|-
| style='text-align:right'| 110
|
| ''[[:d:Q20683954|Charles Clague]]''
| 1890
| 1962
| [[Mannin]]
|-
| style='text-align:right'| 111
|
| ''[[:d:Q20711846|Frank Gill]]''
| 1866
| 1950
| [[Balley Chashtal]]
|-
| style='text-align:right'| 112
|
| ''[[:d:Q20747196|Arthur Lemon]]''
| 1850
| 1912
| [[Mannin]]
|-
| style='text-align:right'| 113
|
| ''[[:d:Q20756364|Patrick William Stuart-Menteath]]''
| 1845
| 1925
| [[Doolish]]
|-
| style='text-align:right'| 114
|
| ''[[:d:Q20763301|Richard Paget Murray]]''
| 1842
| 1908
| [[Mannin]]
|-
| style='text-align:right'| 115
| [[Coadan:Joseph Creer MLA.png|center|128px]]
| ''[[:d:Q20810712|Joseph Creer]]''
| 1832
| 1913
| [[Mannin]]
|-
| style='text-align:right'| 116
|
| ''[[:d:Q20877240|Edward Quayle]]''
| 1802
| 1862
| [[Mannin]]
|-
| style='text-align:right'| 117
|
| ''[[:d:Q20981819|Sidney Nowell Rostron]]''
| 1883
| 1948
| [[Doolish]]
|-
| style='text-align:right'| 118
|
| ''[[:d:Q21461346|Frederick Swynnerton]]''
| 1858
| 1918
| [[Doolish]]
|-
| style='text-align:right'| 119
|
| ''[[:d:Q21538837|Thomas O'Reilly]]''
| 1819
| 1881
| [[Doolish]]
|-
| style='text-align:right'| 120
| [[Coadan:Capt. James Teare of the RMS Ellan Vannin..JPG|center|128px]]
| ''[[:d:Q22018744|James Teare]]''
| 1872
| 1909
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 121
|
| ''[[:d:Q24034942|Amelia Jane Murray]]''
| 1800
| 1896
| [[Doolish]]
|-
| style='text-align:right'| 122
|
| ''[[:d:Q24205000|William Cain]]''
| 1831
| 1914
| [[Mannin]]
|-
| style='text-align:right'| 123
|
| ''[[:d:Q24264205|James F. Keggin]]''
| 1905
| 1993
| [[Mannin]]
|-
| style='text-align:right'| 124
|
| [[Doolish y Karagher]]
| 1926
| 1987
| [[Doolish]]
|-
| style='text-align:right'| 125
|
| ''[[:d:Q26330510|William Hutchison]]''
| 1904
| 1975
| [[Mannin]]
|-
| style='text-align:right'| 126
|
| ''[[:d:Q27178436|Robert H. Nesbitt]]''
| 1883
| 1966
| [[Mannin]]
|-
| style='text-align:right'| 127
| [[Coadan:David "Dawsey" Kewley.jpg|center|128px]]
| ''[[:d:Q27827705|David Kewley]]''
| 1850
| 1904
| [[Doolish]]
|-
| style='text-align:right'| 128
| [[Coadan:James Stowell Gell.jpg|center|128px]]
| ''[[:d:Q28179118|James Stowell Gell]]''
| 1855
| 1919
| [[Balley Chashtal]]
|-
| style='text-align:right'| 129
| [[Coadan:Samuel Harris.jpg|center|128px]]
| ''[[:d:Q28203030|Samuel Harris]]''
| 1815
| 1905
| [[Doolish]]
|-
| style='text-align:right'| 130
| [[Coadan:Paul Lebiedzinski.jpg|center|128px]]
| ''[[:d:Q28810393|Paul Lebiedzinski]]''
| 1951
| 1995
| [[Rhumsaa]]
|-
| style='text-align:right'| 131
| [[Coadan:John Moore Jeffcott.png|center|128px]]
| ''[[:d:Q31201248|John Moore Jeffcott]]''
| 1817
| 1892
| [[Balley Chashtal]]
|-
| style='text-align:right'| 132
| [[Coadan:Stewart Stevenson Moore.jpg|center|128px]]
| ''[[:d:Q37154286|Stewart Stevenson Moore]]''
| 1860
| 1951
| [[Mannin]]
|-
| style='text-align:right'| 133
|
| ''[[:d:Q39070085|John Kelly]]''
| 1793
| 1854
| [[Mannin]]
|-
| style='text-align:right'| 134
| [[Coadan:Snaefell Miners.jpg|center|128px]]
| ''[[:d:Q41757067|John Kewley]]''
| 1832
| 1905
| [[Mannin]]
|-
| style='text-align:right'| 135
| [[Coadan:Elizabeth S. Nutt, A.R.C.A. (I0007923).jpg|center|128px]]
| ''[[:d:Q43196426|Elizabeth Styring Nutt]]''
| 1870
| 1946
| [[Kione Droghad]]
|-
| style='text-align:right'| 136
|
| ''[[:d:Q43606976|Charles Swynnerton]]''
| 1843
| 1923
| [[Mannin]]
|-
| style='text-align:right'| 137
|
| ''[[:d:Q43779525|Mark Hildesley Quayle]]''
| 1804
| 1879
| [[Mannin]]
|-
| style='text-align:right'| 138
|
| ''[[:d:Q43945628|Mark Quayle]]''
| 1770
| 1804
| [[Mannin]]
|-
| style='text-align:right'| 139
|
| ''[[:d:Q44049933|John Quayle]]''
| 1693
| 1755
| [[Mannin]]
|-
| style='text-align:right'| 140
|
| ''[[:d:Q44746168|Mark Quayle]]''
| 1841
| 1928
| [[Mannin]]
|-
| style='text-align:right'| 141
|
| ''[[:d:Q48110870|Joseph Swynnerton]]''
| 1848
| 1910
| [[Doolish]]
|-
| style='text-align:right'| 142
|
| ''[[:d:Q52148110|Jim Caine]]''
| 1926
| 2018
| [[Doolish]]
|-
| style='text-align:right'| 143
|
| ''[[:d:Q53196681|Wilfred Kissack]]''
| 1873
| 1942
| [[Mannin]]
|-
| style='text-align:right'| 144
|
| ''[[:d:Q54553548|Millie Robinson]]''
| 1924
| 1994
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 145
| [[Coadan:Nellie Brennan.jpg|center|128px]]
| ''[[:d:Q55418295|Nelly Brennan]]''
| 1792
| 1859
| [[Doolish]]
|-
| style='text-align:right'| 146
|
| ''[[:d:Q56254209|Thomas Stowell]]''
| 1764
| 1821
| [[Mannin]]
|-
| style='text-align:right'| 147
|
| ''[[:d:Q56452187|Derek Ennett]]''
| 1931
| 1956
| [[Balley Chashtal]]
|-
| style='text-align:right'| 148
|
| ''[[:d:Q56528264|Thomas Tobin]]''
| 1775
| 1863
| [[Doolish]]
|-
| style='text-align:right'| 149
| [[Coadan:John D. LaMothe.jpg|center|128px]]
| ''[[:d:Q56665493|John Dominique LaMothe]]''
| 1868
| 1928
| [[Rhumsaa]]
|-
| style='text-align:right'| 150
|
| ''[[:d:Q56887925|Nina Morrison]]''
| 1915
| 2011
| [[Doolish]]
|-
| style='text-align:right'| 151
|
| [[Dorothy Pantin]]
| 1896
| 1985
| [[Doolish]]
|-
| style='text-align:right'| 152
| [[Coadan:John Quayle (1725 - 1797).png|center|128px]]
| ''[[:d:Q60754040|John Quayle]]''
| 1725
| 1797
| [[Mannin]]
|-
| style='text-align:right'| 153
|
| ''[[:d:Q64685433|Francis Claudius Armstrong]]''
| 1802
| 1872
| [[Mannin]]
|-
| style='text-align:right'| 154
|
| ''[[:d:Q64685645|Hugh Coleman Davidson]]''
| 1852
| 1934
| [[Balley Chashtal]]
|-
| style='text-align:right'| 155
|
| ''[[:d:Q65767130|Pilcher George Ralfe]]''
| 1861
| 1936
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 156
|
| ''[[:d:Q65768017|Frank Stanley Graves]]''
| 1863
| 1935
| [[Skeerey Charmane]]
|-
| style='text-align:right'| 157
|
| ''[[:d:Q66606883|John Joseph Heywood]]''
| 1789
| 1855
| [[Mannin]]
|-
| style='text-align:right'| 158
| [[Coadan:Mona Hirst 1925.jpg|center|128px]]
| ''[[:d:Q70743693|Mona Hirst]]''
| 1903
| 1988
| [[Mannin]]
|-
| style='text-align:right'| 159
| [[Coadan:Emily Maria Gawne.jpg|center|128px]]
| ''[[:d:Q75265312|Emily Maria Gawne]]''
| 1814
| 1889
| [[Doolish]]
|-
| style='text-align:right'| 160
|
| [[Ewan Christian (briw)|Ewan Christian]]
| 1579
| 1655
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 161
| [[Coadan:Portrait of Esther Taubman, née Christian (by George Romney).jpg|center|128px]]
| ''[[:d:Q75456778|Esther Christian]]''
| 1711
| 1802
| [[Rhumsaa]]
|-
| style='text-align:right'| 162
|
| ''[[:d:Q75458718|George Horsley Wood]]''
|
| 1874
| [[Doolish]]
|-
| style='text-align:right'| 163
|
| ''[[:d:Q75460583|Robert Christian]]''
| 1625
| 1668
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 164
|
| ''[[:d:Q75463324|Margaret Moore]]''
| 1733<br/>1730
| 1782<br/>1807
| [[Doolish]]
|-
| style='text-align:right'| 165
|
| ''[[:d:Q75463414|Margaret Moore]]''
| 1736
| 1828
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 166
|
| ''[[:d:Q75463447|Margaret Moore]]''
| 1769
| 1804
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 167
|
| ''[[:d:Q75946963|Anna Cleather]]''
| 1811
| 1887
| [[Mannin]]
|-
| style='text-align:right'| 168
|
| ''[[:d:Q76142859|Fanny Edith Walters]]''
| 1887
| 1949
| [[Balley Chashtal]]
|-
| style='text-align:right'| 169
|
| ''[[:d:Q76245966|Laura, Lady Buchan]]''
| 1797
| 1888
| [[Doolish]]
|-
| style='text-align:right'| 170
|
| ''[[:d:Q78901420|Edward Ashton Cannell]]''
| 1927
| 1994
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 171
|
| [[Tommy Leece]]
| 1859
| 1956
| [[Skeerey Chairbre]]
|-
| style='text-align:right'| 172
|
| ''[[:d:Q94373906|John Kaighn]]''
| 1660
| 1724
| [[Mannin]]
|-
| style='text-align:right'| 173
| [[Coadan:Leonard McCombe, 1954, NY, Photograh taken by Jun Miki.jpg|center|128px]]
| ''[[:d:Q97066829|Leonard McCombe]]''
| 1923
| 2005
| [[Mannin]]
|-
| style='text-align:right'| 174
|
| [[Edmund Goodwin]]
| 1845
| 1925
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 175
|
| ''[[:d:Q97497011|Lewis Crellin]]''
| 1901
| 1990
| [[Forsdal]]
|-
| style='text-align:right'| 176
|
| ''[[:d:Q97597263|Leslie Quirk]]''
| 1914
| 2004
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 177
|
| ''[[:d:Q98763296|Norman Sayle]]''
| 1926
| 2007
| [[Doolish]]
|-
| style='text-align:right'| 178
|
| ''[[:d:Q101068189|John Quayle-Dickson]]''
| 1860
| 1945
| [[Balley Chashtal]]
|-
| style='text-align:right'| 179
|
| ''[[:d:Q102175647|David W. Lewis]]''
| 1944
| 2021
| [[Doolish]]
|-
| style='text-align:right'| 180
|
| ''[[:d:Q104286259|Ernest Feltus Adams]]''
| 1865
| 1957
| [[Mannin]]
|-
| style='text-align:right'| 181
| [[Coadan:Thomas Leigh-Goldie.jpg|center|128px]]
| ''[[:d:Q109559333|Thomas Leigh Goldie]]''
| 1807
| 1854
| [[Doolish]]
|-
| style='text-align:right'| 182
|
| ''[[:d:Q110806864|John Newlands Thomson]]''
| 1870
| 1948
| [[Purt le Moirrey]]
|-
| style='text-align:right'| 183
|
| ''[[:d:Q112394413|John David Williams]]''
| 1931
| 2005
| [[Doolish]]
|-
| style='text-align:right'| 184
|
| ''[[:d:Q112954595|Letitia Hannah Damer Sandys]]''
| 1840<br/>1833
| 1911
| [[Mannin]]
|-
| style='text-align:right'| 185
|
| ''[[:d:Q114578445|John Wordsworth]]''
| 1845
| 1920
| [[Rhumsaa]]
|-
| style='text-align:right'| 186
|
| ''[[:d:Q120900628|R. S. McCombe]]''
| 1902
| 1985
| [[Doolish]]
|-
| style='text-align:right'| 187
| [[Coadan:Robert Swan Stephen.png|center|128px]]
| ''[[:d:Q121875076|Robert Swan Stephen]]''
| 1843
| 1903
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 188
|
| [[John Quane]]
| 1757
| 1838
| [[Mannin]]
|-
| style='text-align:right'| 189
|
| [[Robert E. Christian]]
| 1817
| 1891
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 190
|
| ''[[:d:Q122381207|Voirrey Irving]]''
| 1918
| 2005
| [[Mannin]]
|-
| style='text-align:right'| 191
| [[Coadan:Charles Lionel Carson (1847–1901).png|center|128px]]
| ''[[:d:Q123558946|Charles Lionel Carson]]''
| 1847
| 1901
| [[Mannin]]
|-
| style='text-align:right'| 192
| [[Coadan:Margaret Jennifer Kewley Draskau in the video 'Lady Derby – The Great Whore of Babylon'.png|center|128px]]
| ''[[:d:Q130730092|Jennifer Kewley Draskau]]''
|
| 2024
| [[Mannin]]
|-
| style='text-align:right'| 193
|
| ''[[:d:Q134487555|Chris Garrett]]''
| 1984
| 2025
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 194
| [[Coadan:Max Walker - 2023 UCI Road World Championships (Men's under-23 road race).jpg|center|128px]]
| ''[[:d:Q107036155|Max Walker]]''
| 2001
|
| [[Doolish]]
|-
| style='text-align:right'| 195
|
| ''[[:d:Q108257419|Nola York]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 196
| [[Coadan:Becky Storrie - Présentation TCFIA 2025.jpg|center|128px]]
| ''[[:d:Q108878510|Becky Storrie]]''
| 1998
|
| [[Balley Sallagh]]
|-
| style='text-align:right'| 197
|
| ''[[:d:Q111254683|Jason Evans]]''
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 198
| [[Coadan:Yasmin Ingham at the Badminton Horse Trials 2025 - 20250510 135552(0).jpg|center|128px]]
| [[Yasmin Ingham]]
| 1997
|
| [[Mannin]]
|-
| style='text-align:right'| 199
|
| ''[[:d:Q114785217|William Henry Cooper]]''
| 1870
|
| [[Balley Chashtal]]
|-
| style='text-align:right'| 200
|
| ''[[:d:Q115910223|Michael Bott]]''
| 1954
|
| [[Doolish]]
|-
| style='text-align:right'| 201
|
| ''[[:d:Q117309494|Anna Branford]]''
| 1975
|
| [[Mannin]]
|-
| style='text-align:right'| 202
|
| ''[[:d:Q124685800|Tyler Hannay]]''
| 2003
|
| [[Mannin]]
|-
| style='text-align:right'| 203
|
| ''[[:d:Q130198574|Brian Christian]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 204
|
| ''[[:d:Q134973228|Catherine Perry]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 205
|
| ''[[:d:Q134973249|Rebecca Webster]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 206
|
| ''[[:d:Q134973255|Daniellle Murphy]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 207
|
| ''[[:d:Q134973282|Alanya Thorpe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 208
|
| ''[[:d:Q134973285|Andrea Littlejohns]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 209
|
| ''[[:d:Q134973288|Caitlin Henery]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 210
|
| ''[[:d:Q134973298|Clare Crowe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 211
|
| ''[[:d:Q134980247|Bliss Murtagh]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 212
|
| ''[[:d:Q134980251|Emma Miller]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 213
|
| ''[[:d:Q134980254|Rachel Overman]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 214
|
| ''[[:d:Q134980258|Sam Hassall]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 215
|
| ''[[:d:Q134980259|Finnola Martin]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 216
| [[Coadan:James franklin iom 2021 1.jpg|center|128px]]
| ''[[:d:Q135898155|James Franklin]]''
| 1980
|
| ''[[:d:Q26715141|Glen Mona]]''
|-
| style='text-align:right'| 217
|
| ''[[:d:Q135898269|Simon Maddrell]]''
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 218
|
| ''[[:d:Q138535546|Alexander Foster]]''
| 1999
|
| [[Doolish]]
|-
| style='text-align:right'| 219
|
| ''[[:d:Q140366855|William Arthur Gill]]''
| 1865
|
| [[Mannin]]
|-
| style='text-align:right'| 220
| [[Coadan:Jersey Town Criterium 2012 Greg Mansell.jpg|center|128px]]
| ''[[:d:Q126242|Greg Mansell]]''
| 1987
|
| [[Doolish]]
|-
| style='text-align:right'| 221
| [[Coadan:Mark Cavendish TDF2012 (cropped).jpg|center|128px]]
| [[Mark Cavendish]]
| 1985
|
| [[Doolish]]
|-
| style='text-align:right'| 222
| [[Coadan:Barry Gibb in 2017-Glasto17-197 (34744934874).jpg|center|128px]]
| ''[[:d:Q296872|Barry Gibb]]''
| 1946
|
| [[Doolish]]
|-
| style='text-align:right'| 223
|
| ''[[:d:Q373700|Richard Corkill]]''
| 1951
|
| [[Doolish]]
|-
| style='text-align:right'| 224
| [[Coadan:Leo Mansell 2010.jpg|center|128px]]
| ''[[:d:Q427791|Leo Mansell]]''
| 1985
|
| [[Mannin]]
|-
| style='text-align:right'| 225
| [[Coadan:Samantha Barks - Fendi.jpg|center|128px]]
| [[Samantha Barks]]
| 1990
|
| [[Laksaa]]
|-
| style='text-align:right'| 226
| [[Coadan:Andrew Roche - 2014 Commonwealth Games (Men's road time trial).jpg|center|128px]]
| ''[[:d:Q506928|Andrew Roche]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 227
| [[Coadan:Peter Kennaugh - Tour de Romandie 2010, Stage 3.jpg|center|128px]]
| ''[[:d:Q561361|Peter Kennaugh]]''
| 1989
|
| [[Doolish]]
|-
| style='text-align:right'| 228
| [[Coadan:Ss7 higgins.jpg|center|128px]]
| ''[[:d:Q570357|Mark Higgins]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 229
| [[Coadan:Saint-Ghislain - Grand Prix Pino Cerami, 22 juillet 2015, départ (B016).JPG|center|128px]]
| ''[[:d:Q594947|Mark Christian]]''
| 1990
|
| [[Doolish]]
|-
| style='text-align:right'| 230
|
| ''[[:d:Q935074|Donald Gelling]]''
| 1938
|
| [[Skeerey Stondane]]
|-
| style='text-align:right'| 231
| [[Coadan:Alan Bell 2007.jpg|center|128px]]
| [[Allan Bell]]
| 1947
|
| [[Mannin]]
|-
| style='text-align:right'| 232
|
| ''[[:d:Q1378254|James Anthony Brown]]''
| 1950
|
| [[Balley Chashtal]]
|-
| style='text-align:right'| 233
| [[Coadan:Jonathan Bellis.jpg|center|128px]]
| ''[[:d:Q1381074|Jonathan Bellis]]''
| 1988
|
| [[Doolish]]
|-
| style='text-align:right'| 234
| [[Coadan:Amy Jackson headshot (cropped).jpg|center|128px]]
| [[Amy Jackson]]
| 1992
|
| [[Doolish]]
|-
| style='text-align:right'| 235
| [[Coadan:David Knight WEC 2010.jpg|center|128px]]
| ''[[:d:Q2309170|David Knight]]''
| 1978
|
| [[Balley ny Loghey]]
|-
| style='text-align:right'| 236
| [[Coadan:Prof eva rieger.jpg|center|128px]]
| ''[[:d:Q2693484|Eva Rieger]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 237
|
| ''[[:d:Q2898341|Bernard Moffatt]]''
| 1946
|
| [[Mannin]]
|-
| style='text-align:right'| 238
|
| [[Clare Christian]]
| 1945
|
| [[Mannin]]
|-
| style='text-align:right'| 239
| [[Coadan:Harry Manx at Bluesfest 2008.jpg|center|128px]]
| ''[[:d:Q3127867|Harry Manx]]''
| 1955
|
| [[Mannin]]
|-
| style='text-align:right'| 240
| [[Coadan:Jamie Blackley.jpg|center|128px]]
| [[Jamie Blackley]]
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 241
|
| ''[[:d:Q3314091|Miles Walker]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 242
|
| ''[[:d:Q3337801|Neil Bennett]]''
| 1951
|
| [[Rhumsaa]]
|-
| style='text-align:right'| 243
| [[Coadan:Conor Cummins portrait.JPG|center|128px]]
| ''[[:d:Q3687112|Conor Cummins]]''
| 1986
|
| [[Doolish]]
|-
| style='text-align:right'| 244
|
| ''[[:d:Q3973323|Steve Colley]]''
| 1972
|
| [[Kione Droghad]]
|-
| style='text-align:right'| 245
|
| ''[[:d:Q4706420|Alan Corkish]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 246
|
| ''[[:d:Q4706451|Alan Crowe]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 247
| [[Coadan:AndyT Mugshot.jpg|center|128px]]
| ''[[:d:Q4761421|Andy Tudor]]''
| 1977
|
| [[Doolish]]
|-
| style='text-align:right'| 248
| [[Coadan:Prof Angela Little.jpg|center|128px]]
| ''[[:d:Q4762488|Angela Little]]''
| 1949
|
| [[Doolish]]
|-
| style='text-align:right'| 249
|
| [[Anne Craine]]
| 1954
|
| [[Doolish]]
|-
| style='text-align:right'| 250
| [[Coadan:Christine Collister.jpg|center|128px]]
| [[Christine Collister]]
| 1961
|
| [[Mannin]]
|-
| style='text-align:right'| 251
| [[Coadan:Sidecar Thurs Practice IMG 00257.jpg|center|128px]]
| ''[[:d:Q5229405|Dave Molyneux]]''
| 1963
|
| [[Doolish]]
|-
| style='text-align:right'| 252
|
| ''[[:d:Q5229413|Dave Moore]]''
| 1966
|
| [[Doolish]]
|-
| style='text-align:right'| 253
|
| ''[[:d:Q5230767|David Anderson]]''
| 1954
|
| [[Mannin]]
|-
| style='text-align:right'| 254
|
| ''[[:d:Q5232661|David Cretney]]''
| 1954
|
| [[Mannin]]
|-
| style='text-align:right'| 255
|
| ''[[:d:Q5236864|David Lyon]]''
| 1943
|
| [[Doolish]]
|-
| style='text-align:right'| 256
| [[Coadan:Davy-knowles.jpg|center|128px]]
| ''[[:d:Q5242207|Davy Knowles]]''
| 1987
|
| [[Purt le Moirrey]]
|-
| style='text-align:right'| 257
|
| ''[[:d:Q5336528|Eddie Teare]]''
| 1948
|
| [[Mannin]]
|-
| style='text-align:right'| 258
|
| ''[[:d:Q5337428|Edgar Quine]]''
| 1934
|
| [[Andreas, Mannin|Andreas]]
|-
| style='text-align:right'| 259
|
| ''[[:d:Q5522814|Gareth Davies]]''
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 260
|
| ''[[:d:Q5687920|Hazel Hannan]]''
| 2000
|
| [[Purt Soderick]]
|-
| style='text-align:right'| 261
| [[Coadan:Roskams jane.jpg|center|128px]]
| ''[[:d:Q6152688|Jane Roskams]]''
|
|
| [[Doolish]]
|-
| style='text-align:right'| 262
|
| ''[[:d:Q6239980|John Houghton]]''
| 2000
|
| [[Doolish]]
|-
| style='text-align:right'| 263
|
| [[Juan Turner]]
| 1974
|
| [[Mannin]]
|-
| style='text-align:right'| 264
| [[Coadan:2021-Watterson-Juan-portrait.jpg|center|128px]]
| ''[[:d:Q6301157|Juan Watterson]]''
| 1980
|
| [[Mannin]]
|-
| style='text-align:right'| 265
|
| ''[[:d:Q6397791|Kevin Woodford]]''
| 1950
|
| [[Doolish]]
|-
| style='text-align:right'| 266
| [[Coadan:Martin Bridson2.jpg|center|128px]]
| ''[[:d:Q6775057|Martin Bridson]]''
| 1964
|
| [[Doolish]]
|-
| style='text-align:right'| 267
|
| ''[[:d:Q7175096|Peter Karran]]''
| 1960
|
| [[Mannin]]
|-
| style='text-align:right'| 268
| [[Coadan:Phil Gawne (cropped).jpg|center|128px]]
| [[Phil Gawne]]
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 269
|
| ''[[:d:Q7612099|Steve Burke]]''
| 1974
|
| [[Mannin]]
|-
| style='text-align:right'| 270
|
| [[Tim Kennaugh]]
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 271
| [[Coadan:Stoneham Maltais Anthonioz.jpg|center|128px]]
| [[Zoe Gillings]]
| 1985
|
| [[Mannin]]
|-
| style='text-align:right'| 272
|
| [[Cristen Marritt]]
| 1989
|
| [[Doolish]]
|-
| style='text-align:right'| 273
|
| [[Kimberley Clague]]
| 1988
|
| [[Doolish]]
|-
| style='text-align:right'| 274
| [[Coadan:Robert Corteen Carswell.jpg|center|128px]]
| [[Bob Carswell]]
| 1950
|
| [[Mannin]]
|-
| style='text-align:right'| 275
|
| ''[[:d:Q16206261|Nick Crowe]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 276
|
| ''[[:d:Q16213489|Araminta de Clermont]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 277
| [[Coadan:Goshen-Routh 16.jpg|center|128px]]
| ''[[:d:Q16855481|Arthur Caley]]''
| 1824
|
| [[Mannin]]
|-
| style='text-align:right'| 278
| [[Coadan:Anna Christian - 2019 Women's Tour of Scotland (stage 3).jpg|center|128px]]
| [[Anna Christian]]
| 1995
|
| [[Doolish]]
|-
| style='text-align:right'| 279
| [[Coadan:FIL 2014 - Femmes Gaéliques - Ruth Keggin quartet - 1377.jpg|center|128px]]
| ''[[:d:Q19874790|Ruth Keggin]]''
| 1989
|
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 280
| [[Coadan:Kieran Tierney Scotland v Bolivia 6 June 2026-6.jpg|center|128px]]
| ''[[:d:Q19888012|Kieran Tierney]]''
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 281
|
| ''[[:d:Q19956065|Kate Costain]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 282
|
| ''[[:d:Q21289363|Kevin Atherton]]''
| 1950
|
| [[Doolish]]
|-
| style='text-align:right'| 283
|
| ''[[:d:Q21642675|Tim Kneale]]''
| 1982
|
| [[Doolish]]
|-
| style='text-align:right'| 284
| [[Coadan:Lillers - Grand Prix de Lillers-Souvenir Bruno Comini, 6 mars 2016 (B052).JPG|center|128px]]
| [[Jake Kelly (daawheeylleyder)|Jake Kelly]]
| 1995
|
| [[Doolish]]
|-
| style='text-align:right'| 285
| [[Coadan:Liam Doyle.JPG|center|128px]]
| ''[[:d:Q24005468|Liam Doyle]]''
| 1992
|
| [[Mannin]]
|-
| style='text-align:right'| 286
| [[Coadan:2021-Skelly-Laurence-portrait.jpg|center|128px]]
| [[Laurence Skelly]]
| 1961
|
| [[Doolish]]
|-
| style='text-align:right'| 287
|
| [[Isla Callister]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 288
|
| [[Paayl Rogers]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 289
|
| [[Daniel Quayle]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 290
| [[Coadan:Howard Quayle.jpg|center|128px]]
| [[Howard Quayle]]
| 1967
|
| [[Mannin]]
|-
| style='text-align:right'| 291
| [[Coadan:Laura Wasley - 2014 Commonwealth Games (Women's road time trial).jpg|center|128px]]
| ''[[:d:Q26845558|Laura Wasley]]''
| 1984
|
| [[Doolish]]
|-
| style='text-align:right'| 292
| [[Coadan:Matt Bostock - 2019 Tour Series, Aberdeen (Men's race - team win).jpg|center|128px]]
| [[Matthew Bostock]]
| 1997
|
| [[Mannin]]
|-
| style='text-align:right'| 293
| [[Coadan:Brianne West.jpg|center|128px]]
| ''[[:d:Q28033898|Brianne West]]''
| 1985
|
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 294
| [[Coadan:2024 Tour de France Femmes - 2e etappe Lizzie Holden 1.jpg|center|128px]]
| [[Lizzie Holden]]
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 295
|
| ''[[:d:Q28378513|Hugh Davidson]]''
| 1935
|
| [[Mannin]]
|-
| style='text-align:right'| 296
|
| ''[[:d:Q28792438|Nathan Draper]]''
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 297
| [[Coadan:Sam Brand, 2019 Milan-Sanremo.jpg|center|128px]]
| ''[[:d:Q36286044|Sam Brand]]''
| 1991
|
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 298
|
| [[Adam Long (bluckaneyr)|Adam Long]]
| 2000
|
| [[Doolish]]
|-
| style='text-align:right'| 299
|
| ''[[:d:Q44821053|Alfred Walter Adams]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 300
| [[Coadan:Dr Eleanor Scott.jpg|center|128px]]
| ''[[:d:Q46997927|Eleanor Scott]]''
| 1960
|
| [[Mannin]]
|-
| style='text-align:right'| 301
|
| [[Jessica Li]]
| 1998
|
| [[Doolish]]
|-
| style='text-align:right'| 302
| [[Coadan:Sophia Goulden anon died 1910.jpg|center|128px]]
| ''[[:d:Q50387964|Sophia Goulden]]''
| 1833
|
| [[Skeerey Lonan]]
|-
| style='text-align:right'| 303
|
| ''[[:d:Q50676544|Kerry Sharpe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 304
|
| [[Daryl Callister]]
| 1989
|
| [[Mannin]]
|-
| style='text-align:right'| 305
|
| ''[[:d:Q55409232|Leon Mazzone]]''
| 1996
|
| [[Rhumsaa]]
|-
| style='text-align:right'| 306
|
| ''[[:d:Q55900439|Gérard MacQuillan]]''
| 1949
|
| [[Doolish]]
|-
| style='text-align:right'| 307
|
| ''[[:d:Q59242725|Clare Faulds]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 308
|
| ''[[:d:Q63344804|Colin Callow]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 309
|
| ''[[:d:Q64006025|Gary R. Lewin]]''
| 1965
|
| [[Mannin]]
|-
| style='text-align:right'| 310
|
| ''[[:d:Q75401195|Margaret Rosamund Moore]]''
| 1871
|
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 311
|
| ''[[:d:Q75463040|Margaret Moore]]''
| 1735
|
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 312
|
| ''[[:d:Q75463064|George Quaile]]''
| 1801
|
| [[Mannin]]
|-
| style='text-align:right'| 313
|
| ''[[:d:Q75463140|Margaret Moore]]''
|
|
| [[Skeerey Malew]]
|-
| style='text-align:right'| 314
|
| ''[[:d:Q75467601|Margaret Moore]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 315
|
| ''[[:d:Q87063021|Tom Mazzone]]''
| 1993
|
| [[Doolish]]
|-
| style='text-align:right'| 316
| [[Coadan:Paul Quine.jpg|center|128px]]
| ''[[:d:Q98755074|Paul Quine]]''
| 1969
|
| [[Doolish]]
|-
| style='text-align:right'| 317
|
| ''[[:d:Q100740733|Jane Callister]]''
| 1963
|
| [[Doolish]]
|-
| style='text-align:right'| 318
| [[Coadan:Joe Locke en 2022.jpg|center|128px]]
| [[Joe Locke (aghteyr)|Joe Locke]]
| 2003
|
| [[Doolish]]
|-
| style='text-align:right'| 319
|
| ''[[:d:Q106808901|Julie Edge]]''
|
|
| [[Mannin]]
|}
== Misc ==
{| class='wikitable sortable'
! #
! XXX Add 'Image' in Manx here please! XXX
! XXX change to 'Name' in Manx! XXX
! XXX dob XXX
! XXX date of death XXX
! xxx Place of birth xxx
|-
| style='text-align:right'| 88
|
| ''[[:d:Q15840011|Peta]]''
| 1963
| 1980
| [[Mannin]]
|}
{{Wikidata list end}}
oc9fvjc8hh77txn8khshzhn8dmpuejj
Ronney:2020
14
20650
388025
299609
2026-08-06T00:24:47Z
MacTire02
219
clowan noa
388025
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Module:Wd/i18n
828
20742
387378
347254
2026-08-05T12:52:04Z
MacTire02
219
++
387378
Scribunto
text/plain
-- The values and functions in this submodule should be localized per wiki.
local p = {}
function p.init(aliasesP)
p = {
["errors"] = {
["unknown-data-type"] = "Unknown or unsupported datatype '$1'.",
["missing-required-parameter"] = "No required parameters defined, needing at least one",
["extra-required-parameter"] = "Parameter '$1' must be defined as optional",
["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message
["main-called-twice"] = 'The function "main" cannot be called twice',
["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message
["malformed-reference"] = "Marranys: Cha nel yn imraa taishbynit dy kiart. Jeeagh er y [[Module:wd/doc#References|docamadys]] son sonreeaghtyn."
},
["info"] = {
["edit-on-wikidata"] = "Reagh eh shoh er Wikidata"
},
["numeric"] = {
["decimal-mark"] = ".",
["delimiter"] = ","
},
["datetime"] = {
["prefixes"] = {
["decade-period"] = ""
},
["suffixes"] = {
["decade-period"] = "yn",
["millennium"] = " milley bleeaney",
["century"] = " eash",
["million-years"] = " millioon dy vleeantyn",
["billion-years"] = " billoon dy vleeantyn",
["year"] = " blein",
["years"] = " bleeantyn"
},
["julian-calendar"] = "feaillere Yool", -- linked page title
["julian"] = "Jool",
["BCE"] = "RC",
["CE"] = "BNJ",
["common-era"] = "Eash Chadjin" -- linked page title
},
["coord"] = {
["latitude-north"] = "N",
["latitude-south"] = "S",
["longitude-east"] = "E",
["longitude-west"] = "W",
["degrees"] = "°",
["minutes"] = "'",
["seconds"] = '"',
["separator"] = ", "
},
["values"] = {
["unknown"] = "gyn fys",
["none"] = "leagh erbee"
},
["cite"] = {
["output-types"] = {"web", "q"}, -- In this order, the output types will be tried
["param-mapping"] = {
["web"] = {
-- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "website",
[aliasesP.referenceURL] = "url",
[aliasesP.publicationDate] = "date",
[aliasesP.lastUpdate] = "date",
[aliasesP.retrieved] = "access-date",
[aliasesP.title] = "title",
[aliasesP.subjectNamedAs] = "title",
[aliasesP.archiveURL] = "archive-url",
[aliasesP.archiveDate] = "archive-date",
[aliasesP.language] = "language",
[aliasesP.author] = "author",
[aliasesP.authorNameString] = "author",
[aliasesP.publisher] = "publisher",
[aliasesP.quote] = "quote",
[aliasesP.pages] = "pages", -- extra option
[aliasesP.publishedIn] = "website",
[aliasesP.sectionVerseOrParagraph] = "at"
},
["q"] = {
-- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "1",
[aliasesP.pages] = "pages",
[aliasesP.column] = "at",
[aliasesP.chapter] = "chapter",
[aliasesP.sectionVerseOrParagraph] = "section",
["external-id"] = "id", -- used for any type of database property ID
[aliasesP.title] = "title",
[aliasesP.publicationDate] = "date",
[aliasesP.lastUpdate] = "date",
[aliasesP.retrieved] = "access-date"
}
},
["config"] = {
-- supported fields:
-- - template: name of the template used for output
-- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2)
-- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true)
-- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params)
-- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters;
-- properties not mentioned here have the lowest priority;
-- prioritization of properties handled through additionalProcessedProperties is unsupported;
-- no key of this table can be from numbered-params
-- Leaving out the "template" field causes the output type to be ignored.
["web"] = {
["template"] = "Cite web",
["numbered-params"] = {"author"},
["mandatory-params"] = {"url"},
["prioritization"] = {
["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate},
["title"] = {aliasesP.title, aliasesP.subjectNamedAs}
}
},
["q"] = {
["template"] = "Cite Q",
["raw-value-params"] = {"1"}, -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited
["mandatory-params"] = {"1"},
["prioritization"] = {
["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate}
}
}
}
}
}
p.getOrdinalSuffix = function(num)
if tostring(num):sub(-2,-2) == '1' then
return "th" -- 10th, 11th, 12th, 13th, ... 19th
end
num = tostring(num):sub(-1)
if num == '1' then
return "st"
elseif num == '2' then
return "nd"
elseif num == '3' then
return "rd"
else
return "th"
end
end
p.addDelimiters = function(n)
local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$")
if left and num and right then
return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right
else
return n
end
end
return p
end
return p
p09j22iumb5ra14gwtwomw0gp8cl8v9
387379
387378
2026-08-05T13:07:23Z
MacTire02
219
++
387379
Scribunto
text/plain
-- The values and functions in this submodule should be localized per wiki.
local p = {}
function p.init(aliasesP)
p = {
["version"] = "8", -- increment this each time the below parameters are changed to avoid reference conflict errors
["errors"] = {
["unknown-data-type"] = "Unknown or unsupported datatype '%s'.",
["missing-required-parameter"] = "No required parameters defined, needing at least one",
["extra-required-parameter"] = "Parameter '%s' must be defined as optional",
["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message
["main-called-twice"] = 'The function "main" cannot be called twice',
["no-such-function"] = 'The function "%s" does not exist', -- equal to the standard module error message
["no-such-reference-template"] = 'Error: template "%s", which is set in %s as the output template for the citation-output type "%s", does not exist',
-- Parts of the error message signalling a malformed reference.
["malformed-reference-header"] = "<span style=\"color:#dd3333\">\nError: Unable to display the reference from Wikidata properly. Technical details:\n",
["malformed-reference-footer"] = "See [[Module:wd/doc#References|the documentation]] for further details.\n</span>\n[[Category:Module:Wd reference errors]]",
["template-failure-reason"] = "* Reason for the failure of {{tl|%s}}: %s\n",
["missing-mandatory-param"] = 'The output template call would miss the mandatory parameter <code>%s</code>.',
["unknown-property-in-ref"] = 'The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.'
},
["info"] = {
["edit-on-wikidata"] = "Reagh eh shoh er Wikidata"
},
["numeric"] = {
["decimal-mark"] = ".",
["delimiter"] = ","
},
["datetime"] = {
["prefixes"] = {
["decade-period"] = ""
},
["suffixes"] = {
["decade-period"] = "yn",
["millennium"] = " milley bleeaney",
["century"] = " eash",
["million-years"] = " millioonyn dy vleeantyn",
["billion-years"] = " biloonyn dy vleeantyn",
["year"] = " blein",
["years"] = " bleintyn"
},
["julian-calendar"] = "feaillere Yool", -- linked page title
["julian"] = "Joolagh",
["BCE"] = "REC",
["CE"] = "EC",
["common-era"] = "Eash Chadjin" -- linked page title
},
["coord"] = {
["latitude-north"] = "N",
["latitude-south"] = "S",
["longitude-east"] = "E",
["longitude-west"] = "W",
["degrees"] = "°",
["minutes"] = "'",
["seconds"] = '"',
["separator"] = ", "
},
["values"] = {
["unknown"] = "gyn fys",
["none"] = "leagh erbee"
},
["cite"] = {
["output-types"] = {"web", "q"}, -- In this order, the output types will be tried
["param-mapping"] = {
["web"] = {
-- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "website",
[aliasesP.referenceURL] = "url",
[aliasesP.publicationDate] = "date",
[aliasesP.lastUpdate] = "date",
[aliasesP.retrieved] = "access-date",
[aliasesP.title] = "title",
[aliasesP.subjectNamedAs] = "title",
[aliasesP.archiveURL] = "archive-url",
[aliasesP.archiveDate] = "archive-date",
[aliasesP.language] = "language",
[aliasesP.author] = "author",
[aliasesP.authorNameString] = "author",
[aliasesP.publisher] = "publisher",
[aliasesP.quote] = "quote",
[aliasesP.pages] = "pages", -- extra option
[aliasesP.publishedIn] = "website",
[aliasesP.sectionVerseOrParagraph] = "at"
},
["q"] = {
-- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "1",
[aliasesP.pages] = "pages",
[aliasesP.column] = "at",
[aliasesP.chapter] = "chapter",
[aliasesP.sectionVerseOrParagraph] = "section",
["external-id"] = "id", -- used for any type of database property ID
[aliasesP.title] = "title",
[aliasesP.publicationDate] = "date",
[aliasesP.lastUpdate] = "date",
[aliasesP.retrieved] = "access-date"
}
},
["config"] = {
-- supported fields:
-- - template: name of the template used for output
-- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2)
-- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true)
-- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params)
-- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters;
-- properties not mentioned here have the lowest priority;
-- prioritization of properties handled through additionalProcessedProperties is unsupported;
-- no key of this table can be from numbered-params
-- Leaving out the "template" field causes the output type to be ignored.
["web"] = {
["template"] = "Cite web",
["numbered-params"] = {"author"},
["mandatory-params"] = {"url"},
["prioritization"] = {
["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate},
["title"] = {aliasesP.title, aliasesP.subjectNamedAs}
}
},
["q"] = {
["template"] = "Cite Q",
["raw-value-params"] = {"1"}, -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited
["mandatory-params"] = {"1"},
["prioritization"] = {
["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate}
}
}
}
}
}
p.getOrdinalSuffix = function(num)
if tostring(num):sub(-2,-2) == '1' then
return "oo" -- 10oo, 11oo, 12oo, 13oo, ... 19oo
end
num = tostring(num):sub(-1)
if num == '1' then
return "d"
elseif num == '2' then
return "h"
elseif num == '3' then
return "oo"
else
return "oo"
end
end
p.addDelimiters = function(n)
local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$")
if left and num and right then
return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right
else
return n
end
end
return p
end
return p
o85tkn1m1se0ivv02em1c0375qi7khf
Module:Wd
828
20744
387376
320892
2026-08-05T12:20:01Z
MacTire02
219
++
387376
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local module_arg = ...
local i18n
local i18nPath
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = module_arg
end
if not i18n then
i18nPath = title .. "/i18n"
i18n = require(i18nPath).init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date",
globalSiteId = "globalSiteId"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433",
lastUpdate = "P5017"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, ...)
local text = i18n["errors"][code]
if arg then text = mw.ustring.format(text, unpack(arg)) end
return text
end
local function throwError(errorMessage, ...)
error(errorText(errorMessage, unpack(arg)))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local function isValueInTable(searchedItem, inputTable)
for _, item in pairs(inputTable) do
if item == searchedItem then
return true
end
end
return false
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabel(id)
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local citeParamMapping = i18n['cite']['param-mapping']
local citeConfig = i18n['cite']['config']
local citeTypes = i18n['cite']['output-types']
-- will hold rendered properties of the reference which are not directly from statement.snaks,
-- Namely, is URL generated from an external ID.
local additionalProcessedProperties = {}
-- for each citation type, there will be an associative array that associates lists of rendered properties
-- to citation-template parameters
local candidateParams = {}
-- like above, but only associates one rendered property to each parameter; if the above variable
-- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1")
local citeParams = {}
local citeErrors = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local version = 12 -- increment this each time the below logic is changed to avoid conflict errors
if not statement.snaks then
return {}
end
-- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia)
if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then
return {}
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference
-- find the "Wikidata property" properties in the item from "stated in"
local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets.
-- the link is in wiki markup, so strip the square brackets and the display text
-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first
tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1")
additionalProcessedProperties[aliasesP.referenceURL] = {tempLink}
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- initialize candidateParams and citeParams
for _, citeType in ipairs(citeTypes) do
candidateParams[citeType] = {}
citeParams[citeType] = {}
end
-- fill candidateParams
for _, citeType in ipairs(citeTypes) do
-- This will contain value--priority pairs for each param name.
local candidateValuesAndPriorities = {}
-- fill candidateValuesAndPriorities
for refProperty in pairs(statement.snaks) do
if citeErrors[citeType] then
break
end
repeat -- just a simple wrapper to emulate "continue"
-- set mappingKey and prefix
local mappingKey
local prefix = ""
if statement.snaks[refProperty][1].datatype == 'external-id' then
mappingKey = "external-id"
prefix = self.conf:getLabel(refProperty)
if prefix ~= "" then
prefix = prefix .. " "
end
else
mappingKey = refProperty
end
local paramName = citeParamMapping[citeType][mappingKey]
-- skip properties with empty parameter name
if paramName == "" then
break -- skip this property for this value of citeType
end
-- handle unknown properties in the reference
if not paramName then
referenceEmpty = false
local error_message = errorText("unknown-property-in-ref", refProperty)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
break
end
-- set processedProperty
local processedProperty
local raw = false -- if the value is wanted raw
if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then
raw = true
end
if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
-- Multiple values may be given.
processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true
else
-- If multiple values are given, all but the first suitable one are discarted.
processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #processedProperty == 0 then
break
end
referenceEmpty = false
-- add an empty entry to candidateValuesAndPriorities, if there isn't one already
if not candidateValuesAndPriorities[paramName] then
candidateValuesAndPriorities[paramName] = {}
end
-- find the priority of refProperty
local thisPropertyPriority = -1
local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName]
if thisParamPrioritization then
for i_priority, i_property in ipairs(thisParamPrioritization) do
if i_property == refProperty then
thisPropertyPriority = i_priority
end
end
end
for _, propertyValue in pairs(processedProperty) do
table.insert(
candidateValuesAndPriorities[paramName],
{prefix .. propertyValue, thisPropertyPriority}
)
end
until true
end
-- fill candidateParams[citeType]
if not citeErrors[citeType] then
local compareValuePriorities = function(pair1, pair2)
if pair1[2] == -1 and pair2[2] ~= -1 then
return false
end
if pair1[2] ~= -1 and pair2[2] == -1 then
return true
end
return pair1[2] < pair2[2]
end
-- fill candidateParams[citeType][paramName] for each used param
for paramName, _ in pairs(candidateValuesAndPriorities) do
table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities)
candidateParams[citeType][paramName] = {}
for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do
table.insert(candidateParams[citeType][paramName], valuePriorityPair[1])
end
end
end
end
-- handle additional properties
for refProperty in pairs(additionalProcessedProperties) do
for _, citeType in ipairs(citeTypes) do
repeat
-- skip if there already have been errors
if citeErrors[citeType] then
break
end
local paramName = citeParamMapping[citeType][refProperty]
-- handle unknown properties in the reference
if not paramName then
-- Skip this additional property, but do not cause an error.
break
end
if paramName == "" then
break
end
referenceEmpty = false
if not candidateParams[citeType][paramName] then
candidateParams[citeType][paramName] = {}
end
for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do
table.insert(candidateParams[citeType][paramName], propertyValue)
end
until true
end
end
-- fill citeParams
for _, citeType in ipairs(citeTypes) do
for paramName, paramValues in pairs(candidateParams[citeType]) do
if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
citeParams[citeType][paramName] = paramValues[1]
else
-- There is more than one value for this parameter - the values will
-- go into separate numbered parameters (e.g. "author1", "author2")
for paramNum, paramValue in pairs(paramValues) do
citeParams[citeType][paramName .. paramNum] = paramValue
end
end
end
end
-- handle missing mandatory parameters for the templates
for _, citeType in ipairs(citeTypes) do
for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do
if not citeParams[citeType][requiredCiteParam] then -- The required param is not present.
if citeErrors[citeType] then -- Do not override the previous error, if it exists.
break
end
local error_message = errorText("missing-mandatory-param", requiredCiteParam)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
end
end
end
local citeTypeToUse = nil
-- choose the output template
for _, citeType in ipairs(citeTypes) do
if not citeErrors[citeType] then
citeTypeToUse = citeType
break
end
end
-- set refContent
local refContent = ""
if citeTypeToUse then
local templateToUse = citeConfig[citeTypeToUse]["template"]
local paramsToUse = citeParams[citeTypeToUse]
if not templateToUse or templateToUse == "" then
throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse)
end
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(paramsToUse) do
refContent = refContent .. "|" .. i .. "=" .. v
end
refContent = "{{" .. templateToUse .. refContent .. "}}"
else
xpcall(
function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end,
function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end
)
end
-- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error.
elseif not referenceEmpty then
refContent = errorText("malformed-reference-header")
for _, citeType in ipairs(citeTypes) do
refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType])
end
refContent = refContent .. errorText("malformed-reference-footer")
end
-- wrap refContent
local ref = {}
if refContent ~= "" then
ref = {refContent}
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version)
end
return {ref}
else
return {}
end
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId])
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
j5a6l03tjwodgrvfnv3lb4x5up93wlv
387380
387376
2026-08-05T13:11:43Z
MacTire02
219
prowal
387380
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local module_arg = ...
local i18n
local i18nPath
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = module_arg
end
if not i18n then
i18nPath = title .. "/i18n"
i18n = require(i18nPath).init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date",
globalSiteId = "globalSiteId"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433",
lastUpdate = "P5017"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, ...)
local text = i18n["errors"][code]
if not text then
return "Missing i18n error key: " .. tostring(code)
end
if arg then text = mw.ustring.format(text, unpack(arg)) end
return text
end
local function throwError(errorMessage, ...)
error(errorText(errorMessage, unpack(arg)))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local function isValueInTable(searchedItem, inputTable)
for _, item in pairs(inputTable) do
if item == searchedItem then
return true
end
end
return false
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabel(id)
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local citeParamMapping = i18n['cite']['param-mapping']
local citeConfig = i18n['cite']['config']
local citeTypes = i18n['cite']['output-types']
-- will hold rendered properties of the reference which are not directly from statement.snaks,
-- Namely, is URL generated from an external ID.
local additionalProcessedProperties = {}
-- for each citation type, there will be an associative array that associates lists of rendered properties
-- to citation-template parameters
local candidateParams = {}
-- like above, but only associates one rendered property to each parameter; if the above variable
-- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1")
local citeParams = {}
local citeErrors = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local version = 12 -- increment this each time the below logic is changed to avoid conflict errors
if not statement.snaks then
return {}
end
-- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia)
if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then
return {}
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference
-- find the "Wikidata property" properties in the item from "stated in"
local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets.
-- the link is in wiki markup, so strip the square brackets and the display text
-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first
tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1")
additionalProcessedProperties[aliasesP.referenceURL] = {tempLink}
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- initialize candidateParams and citeParams
for _, citeType in ipairs(citeTypes) do
candidateParams[citeType] = {}
citeParams[citeType] = {}
end
-- fill candidateParams
for _, citeType in ipairs(citeTypes) do
-- This will contain value--priority pairs for each param name.
local candidateValuesAndPriorities = {}
-- fill candidateValuesAndPriorities
for refProperty in pairs(statement.snaks) do
if citeErrors[citeType] then
break
end
repeat -- just a simple wrapper to emulate "continue"
-- set mappingKey and prefix
local mappingKey
local prefix = ""
if statement.snaks[refProperty][1].datatype == 'external-id' then
mappingKey = "external-id"
prefix = self.conf:getLabel(refProperty)
if prefix ~= "" then
prefix = prefix .. " "
end
else
mappingKey = refProperty
end
local paramName = citeParamMapping[citeType][mappingKey]
-- skip properties with empty parameter name
if paramName == "" then
break -- skip this property for this value of citeType
end
-- handle unknown properties in the reference
if not paramName then
referenceEmpty = false
local error_message = errorText("unknown-property-in-ref", refProperty)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
break
end
-- set processedProperty
local processedProperty
local raw = false -- if the value is wanted raw
if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then
raw = true
end
if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
-- Multiple values may be given.
processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true
else
-- If multiple values are given, all but the first suitable one are discarted.
processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #processedProperty == 0 then
break
end
referenceEmpty = false
-- add an empty entry to candidateValuesAndPriorities, if there isn't one already
if not candidateValuesAndPriorities[paramName] then
candidateValuesAndPriorities[paramName] = {}
end
-- find the priority of refProperty
local thisPropertyPriority = -1
local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName]
if thisParamPrioritization then
for i_priority, i_property in ipairs(thisParamPrioritization) do
if i_property == refProperty then
thisPropertyPriority = i_priority
end
end
end
for _, propertyValue in pairs(processedProperty) do
table.insert(
candidateValuesAndPriorities[paramName],
{prefix .. propertyValue, thisPropertyPriority}
)
end
until true
end
-- fill candidateParams[citeType]
if not citeErrors[citeType] then
local compareValuePriorities = function(pair1, pair2)
if pair1[2] == -1 and pair2[2] ~= -1 then
return false
end
if pair1[2] ~= -1 and pair2[2] == -1 then
return true
end
return pair1[2] < pair2[2]
end
-- fill candidateParams[citeType][paramName] for each used param
for paramName, _ in pairs(candidateValuesAndPriorities) do
table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities)
candidateParams[citeType][paramName] = {}
for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do
table.insert(candidateParams[citeType][paramName], valuePriorityPair[1])
end
end
end
end
-- handle additional properties
for refProperty in pairs(additionalProcessedProperties) do
for _, citeType in ipairs(citeTypes) do
repeat
-- skip if there already have been errors
if citeErrors[citeType] then
break
end
local paramName = citeParamMapping[citeType][refProperty]
-- handle unknown properties in the reference
if not paramName then
-- Skip this additional property, but do not cause an error.
break
end
if paramName == "" then
break
end
referenceEmpty = false
if not candidateParams[citeType][paramName] then
candidateParams[citeType][paramName] = {}
end
for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do
table.insert(candidateParams[citeType][paramName], propertyValue)
end
until true
end
end
-- fill citeParams
for _, citeType in ipairs(citeTypes) do
for paramName, paramValues in pairs(candidateParams[citeType]) do
if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
citeParams[citeType][paramName] = paramValues[1]
else
-- There is more than one value for this parameter - the values will
-- go into separate numbered parameters (e.g. "author1", "author2")
for paramNum, paramValue in pairs(paramValues) do
citeParams[citeType][paramName .. paramNum] = paramValue
end
end
end
end
-- handle missing mandatory parameters for the templates
for _, citeType in ipairs(citeTypes) do
for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do
if not citeParams[citeType][requiredCiteParam] then -- The required param is not present.
if citeErrors[citeType] then -- Do not override the previous error, if it exists.
break
end
local error_message = errorText("missing-mandatory-param", requiredCiteParam)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
end
end
end
local citeTypeToUse = nil
-- choose the output template
for _, citeType in ipairs(citeTypes) do
if not citeErrors[citeType] then
citeTypeToUse = citeType
break
end
end
-- set refContent
local refContent = ""
if citeTypeToUse then
local templateToUse = citeConfig[citeTypeToUse]["template"]
local paramsToUse = citeParams[citeTypeToUse]
if not templateToUse or templateToUse == "" then
throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse)
end
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(paramsToUse) do
refContent = refContent .. "|" .. i .. "=" .. v
end
refContent = "{{" .. templateToUse .. refContent .. "}}"
else
xpcall(
function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end,
function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end
)
end
-- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error.
elseif not referenceEmpty then
refContent = errorText("malformed-reference-header")
for _, citeType in ipairs(citeTypes) do
refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType])
end
refContent = refContent .. errorText("malformed-reference-footer")
end
-- wrap refContent
local ref = {}
if refContent ~= "" then
ref = {refContent}
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version)
end
return {ref}
else
return {}
end
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId])
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
86v5vd8k9hdsfg0oblodvjmwgldk4ib
387381
387380
2026-08-05T13:19:02Z
MacTire02
219
++
387381
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local module_arg = ...
local i18n
local i18nPath
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = module_arg
end
if not i18n then
i18nPath = title .. "/i18n"
i18n = require(i18nPath).init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date",
globalSiteId = "globalSiteId"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433",
lastUpdate = "P5017"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, ...)
local text = i18n["errors"][code]
if not text then
return "Missing i18n error key: " .. tostring(code)
end
if arg then text = mw.ustring.format(text, unpack(arg)) end
return text
end
local function throwError(errorMessage, ...)
error(errorText(errorMessage, unpack(arg)))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local function isValueInTable(searchedItem, inputTable)
for _, item in pairs(inputTable) do
if item == searchedItem then
return true
end
end
return false
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabel(id)
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local citeParamMapping = i18n['cite']['param-mapping']
local citeConfig = i18n['cite']['config']
local citeTypes = i18n['cite']['output-types']
-- will hold rendered properties of the reference which are not directly from statement.snaks,
-- Namely, is URL generated from an external ID.
local additionalProcessedProperties = {}
-- for each citation type, there will be an associative array that associates lists of rendered properties
-- to citation-template parameters
local candidateParams = {}
-- like above, but only associates one rendered property to each parameter; if the above variable
-- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1")
local citeParams = {}
local citeErrors = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local version = 12 -- increment this each time the below logic is changed to avoid conflict errors
if not statement.snaks then
return {}
end
-- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia)
if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then
return {}
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference
-- find the "Wikidata property" properties in the item from "stated in"
local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets.
-- the link is in wiki markup, so strip the square brackets and the display text
-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first
tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1")
additionalProcessedProperties[aliasesP.referenceURL] = {tempLink}
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- initialize candidateParams and citeParams
for _, citeType in ipairs(citeTypes) do
candidateParams[citeType] = {}
citeParams[citeType] = {}
end
-- fill candidateParams
for _, citeType in ipairs(citeTypes) do
-- This will contain value--priority pairs for each param name.
local candidateValuesAndPriorities = {}
-- fill candidateValuesAndPriorities
for refProperty in pairs(statement.snaks) do
if citeErrors[citeType] then
break
end
repeat -- just a simple wrapper to emulate "continue"
-- set mappingKey and prefix
local mappingKey
local prefix = ""
if statement.snaks[refProperty][1].datatype == 'external-id' then
mappingKey = "external-id"
prefix = self.conf:getLabel(refProperty)
if prefix ~= "" then
prefix = prefix .. " "
end
else
mappingKey = refProperty
end
local paramName = citeParamMapping[citeType][mappingKey]
-- skip properties with empty parameter name
if paramName == "" then
break -- skip this property for this value of citeType
end
-- handle unknown properties in the reference
if not paramName then
referenceEmpty = false
local error_message = errorText("unknown-property-in-ref", refProperty)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
break
end
-- set processedProperty
local processedProperty
local raw = false -- if the value is wanted raw
if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then
raw = true
end
if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
-- Multiple values may be given.
processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true
else
-- If multiple values are given, all but the first suitable one are discarted.
processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #processedProperty == 0 then
break
end
referenceEmpty = false
-- add an empty entry to candidateValuesAndPriorities, if there isn't one already
if not candidateValuesAndPriorities[paramName] then
candidateValuesAndPriorities[paramName] = {}
end
-- find the priority of refProperty
local thisPropertyPriority = -1
local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName]
if thisParamPrioritization then
for i_priority, i_property in ipairs(thisParamPrioritization) do
if i_property == refProperty then
thisPropertyPriority = i_priority
end
end
end
for _, propertyValue in pairs(processedProperty) do
table.insert(
candidateValuesAndPriorities[paramName],
{prefix .. propertyValue, thisPropertyPriority}
)
end
until true
end
-- fill candidateParams[citeType]
if not citeErrors[citeType] then
local compareValuePriorities = function(pair1, pair2)
if pair1[2] == -1 and pair2[2] ~= -1 then
return false
end
if pair1[2] ~= -1 and pair2[2] == -1 then
return true
end
return pair1[2] < pair2[2]
end
-- fill candidateParams[citeType][paramName] for each used param
for paramName, _ in pairs(candidateValuesAndPriorities) do
table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities)
candidateParams[citeType][paramName] = {}
for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do
table.insert(candidateParams[citeType][paramName], valuePriorityPair[1])
end
end
end
end
-- handle additional properties
for refProperty in pairs(additionalProcessedProperties) do
for _, citeType in ipairs(citeTypes) do
repeat
-- skip if there already have been errors
if citeErrors[citeType] then
break
end
local paramName = citeParamMapping[citeType][refProperty]
-- handle unknown properties in the reference
if not paramName then
-- Skip this additional property, but do not cause an error.
break
end
if paramName == "" then
break
end
referenceEmpty = false
if not candidateParams[citeType][paramName] then
candidateParams[citeType][paramName] = {}
end
for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do
table.insert(candidateParams[citeType][paramName], propertyValue)
end
until true
end
end
-- fill citeParams
for _, citeType in ipairs(citeTypes) do
for paramName, paramValues in pairs(candidateParams[citeType]) do
if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then
citeParams[citeType][paramName] = paramValues[1]
else
-- There is more than one value for this parameter - the values will
-- go into separate numbered parameters (e.g. "author1", "author2")
for paramNum, paramValue in pairs(paramValues) do
citeParams[citeType][paramName .. paramNum] = paramValue
end
end
end
end
-- fallback: use "stated in" (P248) as title if "title" (P1476) is missing
for _, citeType in ipairs(citeTypes) do
local titleParam = citeParamMapping[citeType][aliasesP.title]
if titleParam and not citeParams[citeType][titleParam]
and statement.snaks[aliasesP.statedIn] then
local fallbackTitle = self:getReferenceDetail(
statement.snaks,
aliasesP.statedIn,
false,
false
)
if fallbackTitle and fallbackTitle ~= "" then
citeParams[citeType][titleParam] = fallbackTitle
end
end
end
-- handle missing mandatory parameters for the templates
for _, citeType in ipairs(citeTypes) do
for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do
if not citeParams[citeType][requiredCiteParam] then -- The required param is not present.
if citeErrors[citeType] then -- Do not override the previous error, if it exists.
break
end
local error_message = errorText("missing-mandatory-param", requiredCiteParam)
assert(error_message) -- Should not be nil
citeErrors[citeType] = error_message
end
end
end
local citeTypeToUse = nil
-- choose the output template
for _, citeType in ipairs(citeTypes) do
if not citeErrors[citeType] then
citeTypeToUse = citeType
break
end
end
-- set refContent
local refContent = ""
if citeTypeToUse then
local templateToUse = citeConfig[citeTypeToUse]["template"]
local paramsToUse = citeParams[citeTypeToUse]
if not templateToUse or templateToUse == "" then
throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse)
end
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(paramsToUse) do
refContent = refContent .. "|" .. i .. "=" .. v
end
refContent = "{{" .. templateToUse .. refContent .. "}}"
else
xpcall(
function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end,
function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end
)
end
-- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error.
elseif not referenceEmpty then
refContent = errorText("malformed-reference-header")
for _, citeType in ipairs(citeTypes) do
refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType])
end
refContent = refContent .. errorText("malformed-reference-footer")
end
-- wrap refContent
local ref = {}
if refContent ~= "" then
ref = {refContent}
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version)
end
return {ref}
else
return {}
end
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId])
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
r28ziiyuyh8zt9ja8qn1pi1vr42mpct
Ronney:2021
14
20867
388024
300957
2026-08-06T00:24:38Z
MacTire02
219
clowan noa
388024
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2022
14
20868
388023
300958
2026-08-06T00:24:29Z
MacTire02
219
clowan noa
388023
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2015
14
20870
388030
300961
2026-08-06T00:26:02Z
MacTire02
219
clowan noa
388030
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2016
14
20871
388029
300962
2026-08-06T00:25:53Z
MacTire02
219
clowan noa
388029
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2017
14
20872
388028
300963
2026-08-06T00:25:43Z
MacTire02
219
clowan noa
388028
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2018
14
20873
388027
300964
2026-08-06T00:25:34Z
MacTire02
219
clowan noa
388027
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2019
14
20874
388026
300965
2026-08-06T00:25:24Z
MacTire02
219
clowan noa
388026
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1866
14
20998
387674
301529
2026-08-05T23:09:47Z
MacTire02
219
clowan noa
387674
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1876
14
21011
387664
301556
2026-08-05T23:06:31Z
MacTire02
219
clowan noa
387664
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1698
14
21015
387835
301573
2026-08-05T23:43:21Z
MacTire02
219
clowan noa
387835
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1842
14
21026
387698
320768
2026-08-05T23:13:59Z
MacTire02
219
clowan noa
387698
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1764
14
21063
387776
319742
2026-08-05T23:34:01Z
MacTire02
219
clowan noa
387776
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1823
14
21071
387717
301688
2026-08-05T23:22:45Z
MacTire02
219
clowan noa
387717
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1867
14
21079
387673
301746
2026-08-05T23:09:39Z
MacTire02
219
clowan noa
387673
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1864
14
21080
387676
301747
2026-08-05T23:10:05Z
MacTire02
219
clowan noa
387676
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1844
14
21084
387696
301755
2026-08-05T23:13:41Z
MacTire02
219
clowan noa
387696
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1847
14
21085
387693
301754
2026-08-05T23:13:14Z
MacTire02
219
clowan noa
387693
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1280
14
21098
387423
386986
2026-08-05T17:31:05Z
MacTire02
219
clowan noa
387423
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1238
14
21099
387413
386976
2026-08-05T16:30:22Z
MacTire02
219
clowan noa
387413
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1707
14
21110
387829
301802
2026-08-05T23:42:27Z
MacTire02
219
clowan noa
387829
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1778
14
21114
387762
301806
2026-08-05T23:31:32Z
MacTire02
219
clowan noa
387762
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1691
14
21139
387842
301887
2026-08-05T23:44:29Z
MacTire02
219
clowan noa
387842
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1642
14
21140
387880
301888
2026-08-05T23:57:20Z
MacTire02
219
clowan noa
387880
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1633
14
21141
387885
301889
2026-08-05T23:58:08Z
MacTire02
219
clowan noa
387885
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1556
14
21142
387943
301890
2026-08-06T00:09:26Z
MacTire02
219
clowan noa
387943
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1464
14
21143
388012
301891
2026-08-06T00:22:33Z
MacTire02
219
clowan noa
388012
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1153
14
21144
387511
301892
2026-08-05T17:55:20Z
MacTire02
219
clowan noa
387511
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1777
14
21161
387763
301909
2026-08-05T23:31:40Z
MacTire02
219
clowan noa
387763
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1727
14
21162
387811
301910
2026-08-05T23:39:31Z
MacTire02
219
clowan noa
387811
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:700
14
21164
387472
321224
2026-08-05T17:43:15Z
MacTire02
219
clowan noa
387472
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1888
14
21184
387652
301938
2026-08-05T23:03:56Z
MacTire02
219
clowan noa
387652
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:632
14
21187
387468
321223
2026-08-05T17:42:13Z
MacTire02
219
clowan noa
387468
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:770
14
21188
387480
321226
2026-08-05T17:44:53Z
MacTire02
219
clowan noa
387480
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:712
14
21212
387473
321225
2026-08-05T17:43:33Z
MacTire02
219
clowan noa
387473
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1878
14
21213
387662
350108
2026-08-05T23:06:06Z
MacTire02
219
clowan noa
387662
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1854
14
21214
387686
301968
2026-08-05T23:11:50Z
MacTire02
219
clowan noa
387686
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1816
14
21215
387724
301969
2026-08-05T23:23:52Z
MacTire02
219
clowan noa
387724
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1780
14
21216
387760
301970
2026-08-05T23:31:14Z
MacTire02
219
clowan noa
387760
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1774
14
21217
387766
301971
2026-08-05T23:32:11Z
MacTire02
219
clowan noa
387766
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1749
14
21218
387791
301972
2026-08-05T23:36:27Z
MacTire02
219
clowan noa
387791
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1692
14
21219
387841
301973
2026-08-05T23:44:20Z
MacTire02
219
clowan noa
387841
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1680
14
21220
387848
301974
2026-08-05T23:45:23Z
MacTire02
219
clowan noa
387848
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1643
14
21221
387879
301975
2026-08-05T23:57:12Z
MacTire02
219
clowan noa
387879
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1627
14
21222
387890
301976
2026-08-05T23:58:56Z
MacTire02
219
clowan noa
387890
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1575
14
21223
387929
301977
2026-08-06T00:06:13Z
MacTire02
219
clowan noa
387929
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1483
14
21224
388001
386951
2026-08-06T00:20:33Z
MacTire02
219
clowan noa
388001
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1194
14
21225
387518
301979
2026-08-05T17:56:33Z
MacTire02
219
clowan noa
387518
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1084
14
21226
387503
301980
2026-08-05T17:53:48Z
MacTire02
219
clowan noa
387503
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1512
14
24616
387978
309761
2026-08-06T00:16:13Z
MacTire02
219
clowan noa
387978
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1599
14
25855
387914
314620
2026-08-06T00:02:52Z
MacTire02
219
clowan noa
387914
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1660
14
25857
387863
314622
2026-08-05T23:48:07Z
MacTire02
219
clowan noa
387863
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1734
14
26131
387805
330543
2026-08-05T23:38:31Z
MacTire02
219
clowan noa
387805
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1640
14
26180
387882
315897
2026-08-05T23:57:40Z
MacTire02
219
clowan noa
387882
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1506
14
26205
387983
315957
2026-08-06T00:17:08Z
MacTire02
219
clowan noa
387983
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1371
14
26210
387450
386993
2026-08-05T17:37:24Z
MacTire02
219
clowan noa
387450
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1851
14
26268
387689
316061
2026-08-05T23:12:17Z
MacTire02
219
clowan noa
387689
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1620
14
26346
387895
316193
2026-08-05T23:59:48Z
MacTire02
219
clowan noa
387895
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1705
14
26348
387830
316195
2026-08-05T23:42:36Z
MacTire02
219
clowan noa
387830
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1612
14
26376
387902
316266
2026-08-06T00:00:54Z
MacTire02
219
clowan noa
387902
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1671
14
26380
387856
316270
2026-08-05T23:46:47Z
MacTire02
219
clowan noa
387856
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1555
14
26394
387944
316303
2026-08-06T00:09:36Z
MacTire02
219
clowan noa
387944
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1619
14
26397
387896
321566
2026-08-05T23:59:57Z
MacTire02
219
clowan noa
387896
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1694
14
26642
387839
316672
2026-08-05T23:44:01Z
MacTire02
219
clowan noa
387839
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1625
14
26649
387892
316680
2026-08-05T23:59:20Z
MacTire02
219
clowan noa
387892
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1654
14
26651
387869
330605
2026-08-05T23:51:21Z
MacTire02
219
clowan noa
387869
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1746
14
27128
387794
317590
2026-08-05T23:36:53Z
MacTire02
219
clowan noa
387794
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1828
14
27130
387712
317592
2026-08-05T23:22:01Z
MacTire02
219
clowan noa
387712
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1595
14
27162
387917
325889
2026-08-06T00:03:27Z
MacTire02
219
clowan noa
387917
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1722
14
27168
387816
317642
2026-08-05T23:40:29Z
MacTire02
219
clowan noa
387816
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1794
14
27170
387746
317644
2026-08-05T23:28:17Z
MacTire02
219
clowan noa
387746
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1645
14
27193
387877
317676
2026-08-05T23:56:53Z
MacTire02
219
clowan noa
387877
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1703
14
27195
387832
317678
2026-08-05T23:42:54Z
MacTire02
219
clowan noa
387832
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1786
14
27322
387754
317911
2026-08-05T23:30:05Z
MacTire02
219
clowan noa
387754
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1650
14
27345
387873
317963
2026-08-05T23:56:10Z
MacTire02
219
clowan noa
387873
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1716
14
27347
387821
317965
2026-08-05T23:41:12Z
MacTire02
219
clowan noa
387821
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2023
14
27358
388022
325853
2026-08-06T00:24:20Z
MacTire02
219
clowan noa
388022
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1788
14
27539
387752
318507
2026-08-05T23:29:45Z
MacTire02
219
clowan noa
387752
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1586
14
27663
387922
318718
2026-08-06T00:04:58Z
MacTire02
219
clowan noa
387922
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1630
14
27665
387887
318720
2026-08-05T23:58:28Z
MacTire02
219
clowan noa
387887
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1655
14
27667
387868
318722
2026-08-05T23:49:09Z
MacTire02
219
clowan noa
387868
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1704
14
27669
387831
318726
2026-08-05T23:42:45Z
MacTire02
219
clowan noa
387831
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1693
14
27747
387840
318905
2026-08-05T23:44:11Z
MacTire02
219
clowan noa
387840
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1766
14
27749
387774
318907
2026-08-05T23:33:42Z
MacTire02
219
clowan noa
387774
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1582
14
27767
387925
318941
2026-08-06T00:05:29Z
MacTire02
219
clowan noa
387925
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1647
14
27769
387875
318943
2026-08-05T23:56:30Z
MacTire02
219
clowan noa
387875
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1835
14
27829
387705
319069
2026-08-05T23:20:58Z
MacTire02
219
clowan noa
387705
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1657
14
27890
387866
319225
2026-08-05T23:48:50Z
MacTire02
219
clowan noa
387866
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1548
14
28058
387949
319686
2026-08-06T00:10:39Z
MacTire02
219
clowan noa
387949
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1514
14
28075
387977
319710
2026-08-06T00:16:02Z
MacTire02
219
clowan noa
387977
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1574
14
28078
387930
319713
2026-08-06T00:06:22Z
MacTire02
219
clowan noa
387930
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1673
14
28090
387854
319725
2026-08-05T23:46:28Z
MacTire02
219
clowan noa
387854
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1754
14
28092
387786
319729
2026-08-05T23:35:37Z
MacTire02
219
clowan noa
387786
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1762
14
28099
387778
319743
2026-08-05T23:34:18Z
MacTire02
219
clowan noa
387778
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1768
14
28410
387772
320491
2026-08-05T23:33:24Z
MacTire02
219
clowan noa
387772
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1760
14
28432
387780
320529
2026-08-05T23:34:36Z
MacTire02
219
clowan noa
387780
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1567
14
28448
387934
320559
2026-08-06T00:07:09Z
MacTire02
219
clowan noa
387934
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1607
14
28451
387907
320562
2026-08-06T00:01:42Z
MacTire02
219
clowan noa
387907
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1498
14
28454
387989
386955
2026-08-06T00:18:08Z
MacTire02
219
clowan noa
387989
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1501
14
28502
387986
320663
2026-08-06T00:17:38Z
MacTire02
219
clowan noa
387986
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1566
14
28504
387935
320666
2026-08-06T00:07:20Z
MacTire02
219
clowan noa
387935
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1534
14
28506
387962
320668
2026-08-06T00:12:44Z
MacTire02
219
clowan noa
387962
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1718
14
28514
387819
320681
2026-08-05T23:40:55Z
MacTire02
219
clowan noa
387819
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1430
14
28554
387459
320760
2026-08-05T17:39:26Z
MacTire02
219
clowan noa
387459
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1798
14
28560
387742
320769
2026-08-05T23:27:40Z
MacTire02
219
cl
387742
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1431
14
28589
387460
320846
2026-08-05T17:39:37Z
MacTire02
219
clowan noa
387460
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1412
14
28591
387455
320848
2026-08-05T17:38:36Z
MacTire02
219
clowan noa
387455
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1597
14
28618
387915
320897
2026-08-06T00:03:03Z
MacTire02
219
clowan noa
387915
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1527
14
28621
387968
320902
2026-08-06T00:13:44Z
MacTire02
219
clowan noa
387968
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1469
14
28624
388010
320905
2026-08-06T00:22:05Z
MacTire02
219
clowan noa
388010
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1792
14
28628
387748
320910
2026-08-05T23:29:08Z
MacTire02
219
clowan noa
387748
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1433
14
28633
387461
320918
2026-08-05T17:39:48Z
MacTire02
219
clowan noa
387461
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1497
14
28636
387990
386956
2026-08-06T00:18:18Z
MacTire02
219
clowan noa
387990
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1616
14
28638
387898
320924
2026-08-06T00:00:18Z
MacTire02
219
clowan noa
387898
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1609
14
28640
387905
320948
2026-08-06T00:01:23Z
MacTire02
219
clowan noa
387905
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1610
14
28697
387904
321116
2026-08-06T00:01:11Z
MacTire02
219
clowan noa
387904
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1664
14
28699
387860
321118
2026-08-05T23:47:40Z
MacTire02
219
clowan noa
387860
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:79
14
28710
387558
321145
2026-08-05T19:05:57Z
MacTire02
219
clowan noa
387558
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1541
14
28713
387955
321148
2026-08-06T00:11:34Z
MacTire02
219
clowan noa
387955
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1730
14
28739
387808
321220
2026-08-05T23:38:58Z
MacTire02
219
clowan noa
387808
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:362
14
28741
387560
321227
2026-08-05T19:06:37Z
MacTire02
219
clowan noa
387560
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1683
14
28775
387847
321275
2026-08-05T23:45:14Z
MacTire02
219
clowan noa
387847
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1208
14
28777
387405
386974
2026-08-05T16:14:33Z
MacTire02
219
ronney elley
387405
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1200}}
[[Ronney:13oo eash rere blein|08]]
[[Ronney:1200yn| 8]]
dx2hrebfhsrew5k3ahj1t39law11f51
387419
387405
2026-08-05T16:45:32Z
MacTire02
219
clowan noa
387419
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1168
14
28779
387512
321281
2026-08-05T17:55:35Z
MacTire02
219
clowan noa
387512
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1687
14
28793
387844
321311
2026-08-05T23:44:47Z
MacTire02
219
clowan noa
387844
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1614
14
28794
387900
321312
2026-08-06T00:00:36Z
MacTire02
219
clowan noa
387900
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1580
14
28797
387927
321318
2026-08-06T00:05:52Z
MacTire02
219
clowan noa
387927
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1714
14
28802
387823
321325
2026-08-05T23:41:30Z
MacTire02
219
clowan noa
387823
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1787
14
28808
387753
321336
2026-08-05T23:29:55Z
MacTire02
219
clowan noa
387753
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1418
14
28811
387457
321341
2026-08-05T17:38:55Z
MacTire02
219
clowan noa
387457
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1606
14
28815
387908
321347
2026-08-06T00:01:53Z
MacTire02
219
clowan noa
387908
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1457
14
28817
388015
321350
2026-08-06T00:23:03Z
MacTire02
219
clowan noa
388015
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1659
14
28820
387864
321355
2026-08-05T23:48:16Z
MacTire02
219
clowan noa
387864
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1492
14
28869
387992
386959
2026-08-06T00:18:46Z
MacTire02
219
clowan noa
387992
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1696
14
28871
387837
321441
2026-08-05T23:43:38Z
MacTire02
219
clowan noa
387837
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1601
14
28879
387912
321452
2026-08-06T00:02:29Z
MacTire02
219
clowan noa
387912
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1529
14
28881
387966
321454
2026-08-06T00:13:23Z
MacTire02
219
clowan noa
387966
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1740
14
28917
387800
321562
2026-08-05T23:37:47Z
MacTire02
219
clowan noa
387800
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1611
14
28921
387903
321567
2026-08-06T00:01:03Z
MacTire02
219
clowan noa
387903
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1752
14
28957
387788
321656
2026-08-05T23:35:57Z
MacTire02
219
clowan noa
387788
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1776
14
28988
387764
321735
2026-08-05T23:31:51Z
MacTire02
219
clowan noa
387764
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1839
14
29028
387701
321836
2026-08-05T23:14:27Z
MacTire02
219
clowan noa
387701
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1834
14
29029
387706
321837
2026-08-05T23:21:06Z
MacTire02
219
clowan noa
387706
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1830
14
29030
387710
321838
2026-08-05T23:21:43Z
MacTire02
219
clowan noa
387710
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1821
14
29051
387719
321872
2026-08-05T23:23:06Z
MacTire02
219
clowan noa
387719
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1871
14
29058
387669
321893
2026-08-05T23:07:22Z
MacTire02
219
clowan noa
387669
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1519
14
29094
387974
321961
2026-08-06T00:15:17Z
MacTire02
219
clowan noa
387974
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1617
14
29102
387897
321978
2026-08-06T00:00:08Z
MacTire02
219
clowan noa
387897
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1554
14
29105
387945
321983
2026-08-06T00:09:48Z
MacTire02
219
clowan noa
387945
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1626
14
29108
387891
321986
2026-08-05T23:59:08Z
MacTire02
219
clowan noa
387891
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1713
14
29208
387824
322168
2026-08-05T23:41:41Z
MacTire02
219
clowan noa
387824
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1227
14
29241
387406
386975
2026-08-05T16:15:00Z
MacTire02
219
ronney elley
387406
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1220}}
[[Ronney:13oo eash rere blein|27]]
[[Ronney:1220yn| 7]]
polcky97be42izz6c0t9pmkt1r1c9uc
387414
387406
2026-08-05T16:30:42Z
MacTire02
219
clowan noa
387414
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1274
14
29256
387425
386984
2026-08-05T17:31:24Z
MacTire02
219
clowan noa
387425
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1348
14
29262
387448
386991
2026-08-05T17:37:01Z
MacTire02
219
clowan noa
387448
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1459
14
29287
388014
322696
2026-08-06T00:22:53Z
MacTire02
219
clowan noa
388014
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1507
14
29289
387982
322698
2026-08-06T00:16:53Z
MacTire02
219
clowan noa
387982
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1684
14
29292
387846
322701
2026-08-05T23:45:05Z
MacTire02
219
clowan noa
387846
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1560
14
29328
387940
322929
2026-08-06T00:08:36Z
MacTire02
219
clowan noa
387940
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1669
14
29334
387857
322937
2026-08-05T23:46:58Z
MacTire02
219
clowan noa
387857
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1672
14
29351
387855
322966
2026-08-05T23:46:38Z
MacTire02
219
clowan noa
387855
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1742
14
29353
387798
322968
2026-08-05T23:37:29Z
MacTire02
219
clowan noa
387798
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1628
14
29373
387889
323025
2026-08-05T23:58:47Z
MacTire02
219
clowan noa
387889
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1629
14
29393
387888
323067
2026-08-05T23:58:37Z
MacTire02
219
clowan noa
387888
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1581
14
29463
387926
323400
2026-08-06T00:05:41Z
MacTire02
219
clowan noa
387926
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1641
14
29465
387881
323403
2026-08-05T23:57:30Z
MacTire02
219
clowan noa
387881
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1522
14
29470
387971
323409
2026-08-06T00:14:50Z
MacTire02
219
clowan noa
387971
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1565
14
29472
387936
323411
2026-08-06T00:07:53Z
MacTire02
219
clowan noa
387936
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1455
14
29498
388016
323453
2026-08-06T00:23:13Z
MacTire02
219
clowan noa
388016
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1579
14
29851
387928
324493
2026-08-06T00:06:03Z
MacTire02
219
clowan noa
387928
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1755
14
29921
387785
324678
2026-08-05T23:35:29Z
MacTire02
219
clowan noa
387785
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:845
14
29929
387483
324689
2026-08-05T17:45:44Z
MacTire02
219
clowan noa
387483
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1761
14
29937
387779
324726
2026-08-05T23:34:27Z
MacTire02
219
clowan noa
387779
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1763
14
29938
387777
324727
2026-08-05T23:34:10Z
MacTire02
219
clowan noa
387777
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1769
14
29939
387771
324728
2026-08-05T23:33:16Z
MacTire02
219
clowan noa
387771
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1725
14
30011
387813
324872
2026-08-05T23:39:50Z
MacTire02
219
clowan noa
387813
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1779
14
30033
387761
324919
2026-08-05T23:31:23Z
MacTire02
219
clowan noa
387761
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1793
14
30037
387747
324927
2026-08-05T23:28:27Z
MacTire02
219
clowan noa
387747
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1796
14
30039
387744
324931
2026-08-05T23:27:59Z
MacTire02
219
clowan noa
387744
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1781
14
30043
387759
324937
2026-08-05T23:31:05Z
MacTire02
219
clowan noa
387759
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1783
14
30045
387757
324940
2026-08-05T23:30:46Z
MacTire02
219
clowan noa
387757
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1785
14
30046
387755
324941
2026-08-05T23:30:26Z
MacTire02
219
clowan noa
387755
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1739
14
30059
387801
325039
2026-08-05T23:37:56Z
MacTire02
219
clowan noa
387801
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1520
14
30066
387973
325052
2026-08-06T00:15:08Z
MacTire02
219
clowan noa
387973
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1500
14
30077
387987
325110
2026-08-06T00:17:48Z
MacTire02
219
clowan noa
387987
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1771
14
30094
387769
325146
2026-08-05T23:32:58Z
MacTire02
219
clowan noa
387769
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1543
14
30098
387953
325152
2026-08-06T00:11:15Z
MacTire02
219
clowan noa
387953
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:106 RC
14
30105
387567
325170
2026-08-05T19:08:44Z
MacTire02
219
clowan noa
387567
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:43 RC
14
30108
387562
325177
2026-08-05T19:07:37Z
MacTire02
219
clowan noa
387562
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:100 RC
14
30126
387566
325220
2026-08-05T19:08:35Z
MacTire02
219
clowan noa
387566
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1546
14
30156
387951
325261
2026-08-06T00:10:57Z
MacTire02
219
clowan noa
387951
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1745
14
30191
387795
325349
2026-08-05T23:37:02Z
MacTire02
219
clowan noa
387795
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1747
14
30192
387793
325350
2026-08-05T23:36:45Z
MacTire02
219
clowan noa
387793
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1748
14
30193
387792
325351
2026-08-05T23:36:36Z
MacTire02
219
clowan noa
387792
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1656
14
30209
387867
325388
2026-08-05T23:49:00Z
MacTire02
219
clowan noa
387867
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1720
14
30276
387818
325581
2026-08-05T23:40:46Z
MacTire02
219
clowan noa
387818
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1729
14
30279
387809
325584
2026-08-05T23:39:07Z
MacTire02
219
clowan noa
387809
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1667
14
30323
387858
325649
2026-08-05T23:47:21Z
MacTire02
219
clowan noa
387858
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1481
14
30420
388002
386969
2026-08-06T00:20:43Z
MacTire02
219
clowan noa
388002
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:2024
14
30451
388021
325854
2026-08-06T00:24:11Z
MacTire02
219
clowan noa
388021
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1596
14
30459
387916
325890
2026-08-06T00:03:17Z
MacTire02
219
clowan noa
387916
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1547
14
30512
387950
326000
2026-08-06T00:10:48Z
MacTire02
219
clowan noa
387950
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:49 RC
14
30580
387564
326108
2026-08-05T19:08:10Z
MacTire02
219
clowan noa
387564
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1569
14
30612
387932
326168
2026-08-06T00:06:46Z
MacTire02
219
clowan noa
387932
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1738
14
30625
387802
326213
2026-08-05T23:38:06Z
MacTire02
219
clowan noa
387802
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1244
14
30634
387422
386978
2026-08-05T17:30:49Z
MacTire02
219
clowan noa
387422
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1240
14
30659
387421
386977
2026-08-05T17:30:35Z
MacTire02
219
clowan noa
387421
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1653
14
30665
387870
326301
2026-08-05T23:51:38Z
MacTire02
219
clowan noa
387870
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1561
14
30714
387939
326401
2026-08-06T00:08:23Z
MacTire02
219
clowan noa
387939
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1461
14
30780
388013
326533
2026-08-06T00:22:43Z
MacTire02
219
clowan noa
388013
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1551
14
30795
387947
326553
2026-08-06T00:10:12Z
MacTire02
219
clowan noa
387947
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1536
14
30797
387960
326555
2026-08-06T00:12:25Z
MacTire02
219
clowan noa
387960
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1537
14
30809
387959
326576
2026-08-06T00:12:12Z
MacTire02
219
clowan noa
387959
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1398
14
30882
387452
386995
2026-08-05T17:37:56Z
MacTire02
219
clowan noa
387452
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:733
14
30887
387474
326811
2026-08-05T17:43:49Z
MacTire02
219
clowan noa
387474
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:797
14
30890
387481
326814
2026-08-05T17:45:07Z
MacTire02
219
clowan noa
387481
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1594
14
30893
387918
326818
2026-08-06T00:03:44Z
MacTire02
219
clowan noa
387918
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1731
14
30897
387807
326824
2026-08-05T23:38:49Z
MacTire02
219
clowan noa
387807
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1677
14
30899
387851
326826
2026-08-05T23:45:53Z
MacTire02
219
clowan noa
387851
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1736
14
30901
387803
326828
2026-08-05T23:38:14Z
MacTire02
219
clowan noa
387803
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1468
14
30903
388011
326830
2026-08-06T00:22:18Z
MacTire02
219
clowan noa
388011
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1530
14
30912
387965
326840
2026-08-06T00:13:12Z
MacTire02
219
clowan noa
387965
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1724
14
30916
387814
326847
2026-08-05T23:39:59Z
MacTire02
219
clowan noa
387814
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1445
14
30948
387464
326897
2026-08-05T17:40:31Z
MacTire02
219
clowan noa
387464
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1137
14
31040
387510
327903
2026-08-05T17:55:05Z
MacTire02
219
clowan noa
387510
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1193
14
31042
387517
327905
2026-08-05T17:56:23Z
MacTire02
219
clowan noa
387517
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1453
14
31045
388017
327912
2026-08-06T00:23:24Z
MacTire02
219
clowan noa
388017
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1169
14
31143
387513
328254
2026-08-05T17:55:44Z
MacTire02
219
clowan noa
387513
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1187
14
31145
387515
328262
2026-08-05T17:56:06Z
MacTire02
219
clowan noa
387515
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1203
14
31147
387402
386971
2026-08-05T16:13:58Z
MacTire02
219
ronney elley
387402
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1200}}
[[Ronney:13oo eash rere blein|03]]
[[Ronney:1200yn| 3]]
5usy4gstlnd9cnkocpgzfmrfg65aqa7
387416
387402
2026-08-05T16:31:24Z
MacTire02
219
clowan noa
387416
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1133
14
31149
387508
328266
2026-08-05T17:54:46Z
MacTire02
219
clowan noa
387508
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1189
14
31151
387516
328268
2026-08-05T17:56:15Z
MacTire02
219
clowan noa
387516
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:851
14
31153
387485
328271
2026-08-05T17:46:04Z
MacTire02
219
clowan noa
387485
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1710
14
31436
387827
328768
2026-08-05T23:42:07Z
MacTire02
219
clowan noa
387827
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash rere blein
14
31526
388063
380660
2026-08-06T00:58:37Z
MacTire02
219
ronney elley
388063
wikitext
text/x-wiki
{{category series navigation}}
{{DEFAULTSORT:Reeriaght Unnaneysit}}
[[Ronney:20oo eash 'sy Reeriaght Unnaneysit| Blein]]
[[Ronney:Yn Reeriaght Unnaneysit rere blein| 20]]
[[Ronney:20oo eash rere çheer as blein]]
[[Ronney:Yn Oarpey 'sy 20oo eash rere blein]]
arv7n08rr3gcr9lsgcnmlbef2yikscz
Ronney:747
14
31536
387476
329136
2026-08-05T17:44:07Z
MacTire02
219
clowan noa
387476
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:814
14
31539
387482
328999
2026-08-05T17:45:24Z
MacTire02
219
clowan noa
387482
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1588
14
31583
387921
329068
2026-08-06T00:04:47Z
MacTire02
219
clowan noa
387921
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1613
14
31606
387901
329113
2026-08-06T00:00:45Z
MacTire02
219
clowan noa
387901
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1661
14
31608
387862
329116
2026-08-05T23:47:58Z
MacTire02
219
clowan noa
387862
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1510
14
31612
387980
329120
2026-08-06T00:16:32Z
MacTire02
219
clowan noa
387980
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1524
14
31615
387970
329129
2026-08-06T00:14:30Z
MacTire02
219
clowan noa
387970
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:738
14
31618
387475
329135
2026-08-05T17:43:56Z
MacTire02
219
clowan noa
387475
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1260
14
31623
387429
386980
2026-08-05T17:32:21Z
MacTire02
219
clowan noa
387429
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1568
14
31665
387933
329208
2026-08-06T00:06:57Z
MacTire02
219
clowan noa
387933
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1622
14
31682
387893
329228
2026-08-05T23:59:30Z
MacTire02
219
clowan noa
387893
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1604
14
31683
387910
329229
2026-08-06T00:02:11Z
MacTire02
219
clowan noa
387910
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1563
14
31686
387938
329233
2026-08-06T00:08:13Z
MacTire02
219
clowan noa
387938
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1715
14
31849
387822
329593
2026-08-05T23:41:21Z
MacTire02
219
clowan noa
387822
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1679
14
31851
387849
329595
2026-08-05T23:45:32Z
MacTire02
219
clowan noa
387849
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1539
14
31854
387957
329600
2026-08-06T00:11:54Z
MacTire02
219
clowan noa
387957
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1509
14
31857
387981
329603
2026-08-06T00:16:42Z
MacTire02
219
clowan noa
387981
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1402
14
31881
387454
329654
2026-08-05T17:38:17Z
MacTire02
219
clowan noa
387454
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1472
14
31883
388007
329657
2026-08-06T00:21:35Z
MacTire02
219
clowan noa
388007
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1688
14
31885
387843
329659
2026-08-05T23:44:39Z
MacTire02
219
clowan noa
387843
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:959
14
31981
387489
329904
2026-08-05T17:47:14Z
MacTire02
219
clowan noa
387489
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:941
14
31985
387488
329909
2026-08-05T17:46:58Z
MacTire02
219
clowan noa
387488
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1646
14
32058
387876
330100
2026-08-05T23:56:40Z
MacTire02
219
clowan noa
387876
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1712
14
32070
387825
330115
2026-08-05T23:41:49Z
MacTire02
219
clowan noa
387825
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1635
14
32072
387884
330117
2026-08-05T23:57:59Z
MacTire02
219
clowan noa
387884
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1615
14
32122
387899
330245
2026-08-06T00:00:27Z
MacTire02
219
clowan noa
387899
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1493
14
32249
387991
386958
2026-08-06T00:18:30Z
MacTire02
219
clowan noa
387991
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1470
14
32252
388009
330535
2026-08-06T00:21:56Z
MacTire02
219
clowan noa
388009
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1700
14
32256
387834
330544
2026-08-05T23:43:12Z
MacTire02
219
clowan noa
387834
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1443
14
32258
387463
330547
2026-08-05T17:40:20Z
MacTire02
219
clowan noa
387463
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1592
14
32261
387920
330550
2026-08-06T00:04:36Z
MacTire02
219
clowan noa
387920
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1651
14
32264
387872
330553
2026-08-05T23:56:00Z
MacTire02
219
clowan noa
387872
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1034
14
32267
387498
330556
2026-08-05T17:52:59Z
MacTire02
219
clowan noa
387498
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1572
14
32269
387931
330558
2026-08-06T00:06:33Z
MacTire02
219
clowan noa
387931
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1644
14
32272
387878
330561
2026-08-05T23:57:02Z
MacTire02
219
clowan noa
387878
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1553
14
32274
387946
330563
2026-08-06T00:10:00Z
MacTire02
219
clowan noa
387946
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1070
14
32277
387501
330567
2026-08-05T17:53:29Z
MacTire02
219
clowan noa
387501
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1136
14
32279
387509
330570
2026-08-05T17:54:57Z
MacTire02
219
clowan noa
387509
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1649
14
32282
387874
330574
2026-08-05T23:56:20Z
MacTire02
219
clowan noa
387874
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1421
14
32284
387458
330576
2026-08-05T17:39:04Z
MacTire02
219
clowan noa
387458
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1558
14
32287
387941
330581
2026-08-06T00:08:49Z
MacTire02
219
clowan noa
387941
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1532
14
32289
387964
330583
2026-08-06T00:13:03Z
MacTire02
219
clowan noa
387964
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:995
14
32292
387491
330586
2026-08-05T17:47:40Z
MacTire02
219
clowan noa
387491
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1035
14
32296
387499
330590
2026-08-05T17:53:08Z
MacTire02
219
clowan noa
387499
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1728
14
32298
387810
330593
2026-08-05T23:39:20Z
MacTire02
219
clowan noa
387810
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1535
14
32303
387961
330599
2026-08-06T00:12:35Z
MacTire02
219
clowan noa
387961
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1414
14
32305
387456
330601
2026-08-05T17:38:47Z
MacTire02
219
clowan noa
387456
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1544
14
32307
387952
330603
2026-08-06T00:11:06Z
MacTire02
219
clowan noa
387952
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1658
14
32309
387865
330606
2026-08-05T23:48:27Z
MacTire02
219
clowan noa
387865
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1585
14
32313
387923
330611
2026-08-06T00:05:08Z
MacTire02
219
clowan noa
387923
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1474
14
32316
388005
330614
2026-08-06T00:21:13Z
MacTire02
219
clowan noa
388005
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1605
14
32318
387909
330617
2026-08-06T00:02:02Z
MacTire02
219
clowan noa
387909
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1515
14
32320
387976
330619
2026-08-06T00:15:54Z
MacTire02
219
clowan noa
387976
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1499
14
32322
387988
386954
2026-08-06T00:17:58Z
MacTire02
219
clowan noa
387988
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:865
14
32324
387486
330623
2026-08-05T17:46:19Z
MacTire02
219
clowan noa
387486
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:65 RC
14
32327
387565
330626
2026-08-05T19:08:25Z
MacTire02
219
clowan noa
387565
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:8 RC
14
32329
387561
330629
2026-08-05T19:07:27Z
MacTire02
219
clowan noa
387561
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1721
14
32613
387817
332694
2026-08-05T23:40:38Z
MacTire02
219
clowan noa
387817
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:571
14
32680
387466
333345
2026-08-05T17:41:30Z
MacTire02
219
clowan noa
387466
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:570
14
32682
387465
333347
2026-08-05T17:41:19Z
MacTire02
219
clowan noa
387465
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:866
14
32745
387487
333475
2026-08-05T17:46:28Z
MacTire02
219
clowan noa
387487
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Mannin 'sy 20oo eash rere blein
14
32973
387389
380721
2026-08-05T13:56:21Z
MacTire02
219
ronnaghyn elley
387389
wikitext
text/x-wiki
{{category series navigation}}
Bleeantyn y [[20oo eash]] ayns [[Mannin]].
[[Ronney:Mannin 'sy 20oo eash| Blein]]
[[Ronney:Mannin rere blein| 20]]
[[Ronney:Yn Oarpey 'sy 20oo eash rere blein]]
[[Ronney:Yn Impiraght Ghoaldagh 'sy 20oo eash rere blein]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash rere blein]]
ggrhmforqha2jy00dncni4c6x6u16nc
Ronney:Mannin 'sy 19oo eash rere blein
14
33001
388061
380719
2026-08-06T00:56:54Z
MacTire02
219
ronney noa
388061
wikitext
text/x-wiki
Bleeantyn y [[19oo eash]] ayns [[Mannin]].
{{category series navigation}}
[[Ronney:Mannin 'sy 19oo eash| ]]
[[Ronney:Mannin rere blein| 19]]
[[Ronney:Yn Oarpey 'sy 19oo eash rere blein|Mannin]]
[[Ronney:19oo eash rere çheer as blein]]
[[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash rere blein|Mannin]]
lfwvhl6686mykfgdpvnxrvevrmuvw8v
Ronney:Mannin 'sy 20oo eash
14
33003
388110
380607
2026-08-06T01:29:44Z
MacTire02
219
ronney elley
388110
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:20oo eash rere çheer]]
[[Ronney:Mannin rere eash|20]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash]]
[[Ronney:Yn Oarpey 'sy 20oo eash]]
i5kamqmpfjv9hnbq8a0addcq2gen7g3
Ronney:Mannin rere eash
14
33004
388115
350656
2026-08-06T01:36:14Z
MacTire02
219
ronney elley
388115
wikitext
text/x-wiki
[[Ronney:Shennaghys Vannin rere earish| 3]]
[[Ronney:Yn Oarpey rere eash]]
[[Ronney:Croghaneyn-crooin rere eash]]
tn4txelmj5povqdy2itigib20o6cg9a
Ronney:Mannin ayns ny 1910yn
14
33009
388116
380595
2026-08-06T01:38:38Z
MacTire02
219
ronney elley
388116
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1910yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1910yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1910yn]]
q12wzma18wij793y5w6vvj6hjtp3tu0
Ronney:Mannin ayns ny 1920yn
14
33010
388117
381406
2026-08-06T01:38:52Z
MacTire02
219
ronney elley
388117
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1920yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1920yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1920yn]]
goxkymjlpg55mv2arkmch6q1vrqgf45
Ronney:Mannin ayns ny 1940yn
14
33011
388118
380722
2026-08-06T01:39:05Z
MacTire02
219
ronney elley
388118
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1940yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1940yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1940yn]]
j7zqam4n7qti0bb95jcvk5n1urmqqze
Ronney:Mannin ayns ny 1950yn
14
33012
388119
380739
2026-08-06T01:39:24Z
MacTire02
219
ronney elley
388119
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1950yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1950yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1950yn]]
ehrvyg72n7man6lsgtvnbipir36xtv8
Ronney:Mannin ayns ny 1960yn
14
33013
388120
380728
2026-08-06T01:39:50Z
MacTire02
219
ronney elley
388120
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1960yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1960yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1960yn]]
n8b6l25v2azigfqpd0qdgujtjv4bdt3
Ronney:Mannin ayns ny 1970yn
14
33014
388121
380654
2026-08-06T01:40:08Z
MacTire02
219
ronney elley
388121
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1970yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1970yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1970yn]]
087lofzgzv31zsykpptd1wtvab04c5s
Ronney:Mannin ayns ny 1980yn
14
33015
388111
380643
2026-08-06T01:30:22Z
MacTire02
219
ronney elley
388111
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1980yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1980yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1980yn]]
f8mvp5zev2sk2dl8k1lnvtmuuuu27m6
Ronney:Mannin ayns ny 1990yn
14
33016
388122
387298
2026-08-06T01:42:15Z
MacTire02
219
ronney elley
388122
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1990yn rere çheer]]
[[Ronney:Mannin 'sy 20oo eash| ]]
[[Ronney:Yn Oarpey ayns ny 1990yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 1990yn]]
coranm40vuokbg55r1btqp2elzkfd2m
Ronney:Mannin ayns ny 2000yn
14
33017
388123
387297
2026-08-06T01:42:37Z
MacTire02
219
ronney elley
388123
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2000yn rere çheer]]
[[Ronney:Mannin 'sy 21d eash| ]]
[[Ronney:Yn Oarpey ayns ny 2000yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 2000yn]]
d7z8ne0z52xijyhcfymdp2dui95si58
Ronney:Mannin ayns ny 2010yn
14
33018
388124
387280
2026-08-06T01:42:51Z
MacTire02
219
ronney elley
388124
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2010yn rere çheer]]
[[Ronney:Mannin 'sy 21d eash| ]]
[[Ronney:Yn Oarpey ayns ny 2010yn]]
[[Ronney:Mannin rere jeihaght| ]]
[[Ronney:Croghaneyn-crooin ayns ny 2010yn]]
mbr4b7gmw7qvugzsi4objnm57blyuug
Ronney:Mannin ayns ny 2020yn
14
33019
388125
387271
2026-08-06T01:43:12Z
MacTire02
219
ronney elley
388125
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2020yn rere çheer]]
[[Ronney:Mannin 'sy 21d eash| ]]
[[Ronney:Yn Oarpey ayns ny 2020yn]]
[[Ronney:Mannin rere jeihaght| 2020]]
[[Ronney:Croghaneyn-crooin ayns ny 2020yn]]
srg0bytf5hw44byudcotn6nz9mqeuvv
Ronney:Mannin 'sy 21d eash rere blein
14
33025
388066
380720
2026-08-06T01:00:53Z
MacTire02
219
ronney elley
388066
wikitext
text/x-wiki
{{category series navigation}}
Bleeantyn y [[21d eash]] ayns [[Mannin]].
[[Ronney:Mannin 'sy 21d eash| Blein]]
[[Ronney:Mannin rere blein| 21]]
[[Ronney:Yn Oarpey 'sy 21d eash rere blein]]
[[Ronney:21d eash rere çheer as blein]]
[[Ronney:Ny Croghaneyn-crooin 'sy 21d eash rere blein]]
dcwyymx33at7sq7eff56wwvm80h90hc
388067
388066
2026-08-06T01:01:16Z
MacTire02
219
ronney elley
388067
wikitext
text/x-wiki
{{category series navigation}}
Bleeantyn y [[21d eash]] ayns [[Mannin]].
[[Ronney:Mannin 'sy 21d eash| Blein]]
[[Ronney:Mannin rere blein| 21]]
[[Ronney:Yn Oarpey 'sy 21d eash rere blein]]
[[Ronney:21d eash rere çheer as blein]]
[[Ronney:Croghaneyn-crooin 'sy 21d eash rere blein]]
dqeqj4xiowcn4qzf3h9u2r93vxfcatu
Ronney:Yn Ookraan 'sy 21d eash rere blein
14
33026
388068
387294
2026-08-06T01:02:45Z
MacTire02
219
ronney elley
388068
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Yn Ookraan 'sy 21d eash| Blein]]
[[Ronney:Yn Ookraan rere blein|21]]
[[Ronney:Yn Oarpey 'sy 21d eash rere blein|Ookraan]]
[[Ronney:21d eash rere çheer as blein|Ookraan]]
dhuddqyx638vl1eq80tuclihvsa3iu3
Ronney:1709
14
33033
387828
334340
2026-08-05T23:42:15Z
MacTire02
219
clowan noa
387828
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1726
14
33087
387812
334434
2026-08-05T23:39:40Z
MacTire02
219
clowan noa
387812
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1477
14
33101
388003
334449
2026-08-06T00:20:53Z
MacTire02
219
clowan noa
388003
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1518
14
33103
387975
334453
2026-08-06T00:15:30Z
MacTire02
219
clowan noa
387975
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1503
14
33105
387985
334455
2026-08-06T00:17:28Z
MacTire02
219
clowan noa
387985
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:44 RC
14
33112
387563
334478
2026-08-05T19:07:47Z
MacTire02
219
clowan noa
387563
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:356 RC
14
33114
387568
334480
2026-08-05T19:09:00Z
MacTire02
219
clowan noa
387568
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1549
14
33116
387948
334482
2026-08-06T00:10:23Z
MacTire02
219
clowan noa
387948
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1717
14
33241
387820
334763
2026-08-05T23:41:03Z
MacTire02
219
clowan noa
387820
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Clowan:Kishtey fys ellyneyr kiaullee
10
33988
387383
369181
2026-08-05T13:46:16Z
MacTire02
219
++
387383
wikitext
text/x-wiki
{{Infobox
| child = {{lc:{{{embed|}}}}}
| bodyclass = vcard plainlist
| bodystyle = width:{{#if:{{{box_width|}}} |{{{box_width}}} |22em}}; font-size:95%; text-align:left;
| headerstyle = color: #202122;background-color: {{Kishtey fys ellyneyr kiaullee/daah}}
| autoheaders = y
| labelstyle = padding:0.2em 1.0em 0.2em 0.2em; background:transparent; line-height:1.3em; text-align:left; font-size:90%;
| datastyle = padding:0.2em; line-height:1.3em; vertical-align:middle; font-size:90%;
| title = {{#ifeq:{{lc:{{{embed|}}}}}|yes|'''Coorse kiaullee'''}}
| decat = yes <!-- remove from template:infobox tracking categories -->
| aboveclass = fn
| abovestyle = color: #202122;background-color: {{Kishtey fys ellyneyr kiaullee/daah}}; font-size: 125%; text-align:center; font-size:125%;
| above = {{#ifeq:{{lc:{{{embed|}}}}}|yes||{{#if:{{{name|{{PAGENAMEBASE}}}}}|{{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 78%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="{{Kishtey fys ellyneyr kiaullee/hCard class|{{{background|}}}}}">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{ennym_dooghyssagh|}}}|{{#if:{{{çhengey_ennym_dooghyssagh|}}}|<div class="nickname" lang="{{{çhengey_ennym_dooghyssagh|}}}">}}{{{ennym_dooghyssagh|}}}{{#if:{{{çhengey_ennym_dooghyssagh|}}}|</div>}}}}{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 78%; font-weight: normal;">{{{honorific_suffix|}}}</div>}} |{{BASEPAGENAME}}}}}}
|image = {{#invoke:InfoboxImage |InfoboxImage |image={{#invoke:Wikidata |claim |property=P18 |value={{{jalloo|}}} |list=false}} |size=300x300px<!--
-->|alt={{{alt|}}} }}
|imageclass = {{image class|{{{jalloo}}}}}
|imagestyle = padding:4pt; line-height:1.25em; text-align:center; font-size:8pt;
| caption = <div style="padding-top:2pt;">{{{kione-heidyl|{{{fo-heidyl|}}}}}}</div>
| header1 = {{#if:{{{image|}}}|Fysseree haghydys}}
| class3 = nickname
| label3 = {{Nowrap|Ennym ruggyree}}
| data3 = {{{ennym_ruggyr|}}}
| class4 = nickname
| label4 = {{Nowrap|Enmyn elley}}
| data4 = {{{enmyn_elley|}}}
| label5 = Ruggit
| data5 = {{br separated entries|{{{date_ruggyr|}}}|{{{boayl_ruggyr|}}}}}
| label6 = Bunneydys
| data6 = {{{bunneydys|}}}
| label7 = Hooar baase
| data7 = {{br separated entries|{{{date_baaish|}}}|{{{boayl_baaish|}}}}}
| label8 = Shaanraghyn
| data8 = {{#invoke:Wikidata | claim | property=P136|formatting = internallink|separator={{·}}|conjunction={{·}}}}
| class9 = role
| label9 = {{#if:{{{keirdyn|}}}|Keirdyn|Keird(yn)}}
| data9 = {{if empty|{{{keirdyn|}}}|{{{keird|}}}}}
| class10 = note
| label10 = {{#if:{{{greieyn|}}}|Greieyn|Greie(yn)}}
| data10 = {{{greieyn|{{{greie|}}}}}}
| label11 = Rolley jyskyn
| data11 = {{{rolley_jyskyn|}}}
| label12 = {{Nowrap|Bleeantyn_obbree}}
| data12 = {{{bleeantyn_obbree|}}}
| label13 = Lipaidyn
| data13 = {{#invoke:Wikidata | claim | property=P264|formatting = internallink|separator={{·}}|value={{{lipaid|}}}|conjunction={{·}}}}
| label14 = Oltey lesh
| data14 = {{{olteynys_roie|}}}
| label15 = Eear-oltey lesh
| data15 = {{{aa-olteynys|{{{eear-olteynys|}}}}}}
| label16 = Shagh-phossanyn
| data16 = {{{shagh-phossanyn|}}}
| label17 = Shagh-phossan lesh
| data17 = {{{shagh-phossan_lesh|}}}
| label18 = <span class="nowrap">Sheshey/sheshaghyn</span>
| data18 = {{#ifeq:{{#Property:P26}}|gyn mooad|Gyn poosey|{{#invoke:Wikidata | claim | property=P26|qualifier=P580|qualifier2=P582|formatting = table|df=dmy|rowformat = $0 $1 $2|rowsubformat1=<small> ($1 –|rowsubformat2= $2)</small>|tablesort=1|colformat0=internallink}}}}
| label19 = <span class="nowrap">Leggad(yn)</span>
| data19 = {{#invoke:Wikidata | claim | property=P451|formatting = internallink|separator=<br />|conjunction=<br />}}
| header20 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label21 = Olteynyn
| data21 = {{{olteynyn_roie|}}}
| header22 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label23 = {{Nowrap|Eear-olteynyn}}
| data23 = {{{aa-olteynyn|{{{eear-olteynyn|}}}}}}
| header30 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label31 = Ynnyd-eggey
| data31 = {{#invoke:Wikidata | claim | property=P856|formatting = weblink|value={{{ynnyd-eggey|}}}}}
| label40 = <nowiki />
| data41 = {{{module|}}}
| data42 = {{{module2|}}}
| data43 = {{{module3|}}}
}}<!--
Documentation:
--><noinclude>{{Documentation}}</noinclude>
d5cexace17vcys89v14mzcqe3uq6wbw
Ronney:1272
14
34977
387426
386983
2026-08-05T17:31:33Z
MacTire02
219
clowan noa
387426
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1207
14
34979
387404
386973
2026-08-05T16:14:20Z
MacTire02
219
ronney elley
387404
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1200}}
[[Ronney:13oo eash rere blein|07]]
[[Ronney:1200yn| 7]]
s8a341aa1ulk7ct4fbogzj0eeyt7hff
387418
387404
2026-08-05T16:44:54Z
MacTire02
219
clowan noa
387418
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Clowan:Kishtey fys slieau
10
35310
387382
374165
2026-08-05T13:26:48Z
MacTire02
219
prowal
387382
wikitext
text/x-wiki
{{Infobox
| bodyclass = vcard
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| above = {{#if:{{{ennym|}}}|{{{ennym}}}|<includeonly>{{PAGENAMEBASE}}</includeonly>}}
| aboveclass = fn org
| autoheaders = y
| abovestyle = background-color: #E7DCC3;
| headerstyle = background-color: #E7DCC3;
| imagestyle = padding:0.3em 0.2em 0.2em 0.2em; text-align:center;
| captionstyle = padding: 0.2em 0em;
| bodystyle = width:24.5em; line-height:1.5em;
| labelstyle = padding:0.2em 1.0em 0.2em 0.2em; background:transparent; line-height:1.3em; text-align:left; font-size:85%;
| datastyle = padding:0.2em; line-height:1.3em; vertical-align:middle; font-size:85%;
| subheaderclass= nickname
| subheaderstyle= background-color: #E7DCC3; text-align: center;
| subheader = {{{ennym_elley|}}}
| image = {{#invoke:InfoboxImage |InfoboxImage |image={{#invoke:Wikidata |claim |property=P18 |value={{{jalloo|}}} |list=false}} |size=300x300px |alt={{{alt|}}} }}
| caption = <div style="padding-top:2pt; font-size:85%;">{{{fo-heidyl<includeonly>|</includeonly>}}}</div>
| {{#if:{{#invoke:WikidataIB|getValue|1=P18|2={{{foto|}}}|name=photo|qid={{{qid|}}}|rank=best|suppressfields={{{suppressfields|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|onlysourced={{{onlysourced|false}}}|maxvals=1|noicon=true}}|data26|data1}} = {{#if:{{{caslys-çheerey|}}}
| <div style="padding:0.2em 0.2em {{#if:{{{fo-heidyl_caslys-çheerey|}}}{{{soiaghey|}}}|0.5em|0.2em}} 0.2em;">{{location map|{{{caslys-çheerey}}}
| border = infobox | float = center
| alt = {{{alt_caslys-çheerey|}}}
| default_width = 272
| max_width = 288
| width = {{if empty|{{{lheead_caslys-çheerey|}}}|{{{mooadys_caslys-çheerey|}}} }}
| caption = {{#switch:{{{fo-heidyl_caslys-çheerey|}}}|none=|#default={{if empty|{{{fo-heidyl_caslys-çheerey|}}}|{{{soiaghey|}}} }} }}
| mark = Red triangle with thick white border.svg
| marksize = 16
| relief = {{#ifeq:{{{releef_caslys-çheerey|{{{releef|}}}}}}|0||1}}
| label = {{if empty|{{{lipaid|}}}|{{{ennym|}}}}}
| position ={{{soiaghey_lipaid|}}}
| coordinates = {{if empty|{{{coordnaidyn_reayn|}}}|{{{coordnaidyn|}}}|{{{coordyn|}}}}} }}
</div>
| {{#if:{{{jalloo_caslys-çheerey|{{{jalloo_caslys-çheerey|}}}}}}
|<div style="padding:0.2em 0.2em {{#if:{{{fo-heidyl_caslys-çheerey|}}}{{{soiaghey|}}}|0.5em|0.2em}} 0.2em;">{{#invoke:InfoboxImage|InfoboxImage|image={{{jalloo_caslys-çheerey|{{{jalloo_caslys-çheerey|}}}}}}|size={{if empty|{{{mooadys_caslys-çheerey|}}}|{{{mooadyscaslysçheerey|}}}|{{{lheead_caslys-çheerey|}}}}}|upright={{{caslys-çheerey_jeeragh|}}}|sizedefault=272px|maxsize=288px|alt={{{alt_caslys-çheerey|}}}}}{{#switch:{{{fo-heidyl_caslys-çheerey|}}}|none|=|#default=<div>{{{fo-heidyl_caslys-çheerey}}}</div>}}
</div>}}
}}
| header2 = Boayl s'yrjey
| label3 = Beinn
| data3 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P2044|2={{{syrjey|}}}|name=highest|qid={{{qid|}}}|qual=P2561|qualsonly=Y|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|noicon=false}}|{{If last display both|, |{{#invoke:WikidataIB|getValue|1=P2044|2={{{boayl_syrjey|}}}|name=highest_location|qid={{{qid|}}}|qual=P276|qualsonly=Y|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|noicon=false}}}}}}
| label4 = [[Mullagh|Yrjid]]
| data4 = {{If empty|{{{yrjid|}}}|{{#if:{{{yrjid_m|}}}{{{yrjid_ft|}}}|{{Convinfobox|{{{yrjid_m|}}}|m|{{{yrjid_ft|}}}|ft}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2044|2=|name=elevation|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2044}}}}}}}}{{#if:{{{imraa_yrjid|{{{note_yrjid|}}}}}}|{{{imraa_yrjid|{{{note_yrjid|}}}}}}}}{{If last display both|<br/>|{{#invoke:WikidataIB|getValue|1=P2044|2={{{corys_yrjid|}}}|name=elevation_system|qid={{{qid|}}}|qual=P459|qualsonly=Y|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|maxvals=1|noicon=false}}}}
| label5 = [[Yrjid chonastagh]]
| data5 = {{If empty|{{{yrjid_chonastagh|}}}|{{#if:{{{yrjid_chonastagh_m|}}}{{{yrjid_chonastagh_ft|}}}|{{Convinfobox|{{{yrjid_chonastagh_m|}}}|m|{{{yrjid_chonastagh_ft|}}}|ft}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2660|2=|name=prominence|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2660}}}}}}}}{{#if:{{{imraa_yrjid_chonastagh|}}}|{{{imraa_yrjid_chonastagh|}}}}}
| label6 = [[Yrjid_chonastagh#Moir-yrjid chonastagh|Moir-veinn]]
| data6 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P3137|2={{{moir-veinn|}}}|name=parent_peak|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|shortname=true|maxvals=1|noicon=false|replacetext={{#ifeq:{{{fetchwikidata|}}}|ALL||[[Ronney:Leagh Wikidata as feme er scrutaghey ry-hoi Kishtey fys slieau]]}}}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P3137}}}}}}
| label7 = [[Unraghey boayl-oaylleeaght|Unraghey]]
| data7 = {{If empty|{{{unraghey|}}}|{{#if:{{{unraghey_km|}}}{{{unraghey_mi|}}}|{{Convinfobox|{{{unraghey_km|}}}|km|{{{unraghey_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2659|2=|name=isolation|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2659}}}}}}}}{{If last display both|<br/>to |{{#invoke:WikidataIB|getValue|1=P2659|2={{{moir-unraghey|}}}|name=isolation_parent|qid={{{qid|}}}|qual=P2210|qualsonly=Y|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|maxvals=1|noicon=false}}}}{{#if:{{{imraa_unraghey|}}}|{{{imraa_unraghey|}}}}}
| class8 = category
| label8 = [[Rollaghyn sleityn|Rolley]]
| data8 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P361|2={{{rolley|}}}|name=listing|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|sorted=true|noicon=false|list=ubl|replacetext={{#ifeq:{{{fetchwikidata|}}}|ALL||[[Ronney:Leagh Wikidata as feme er scrutaghey ry-hoi Kishtey fys slieau]]}}}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P3137}}}}}}
| label9 = [[Corys co-ordnaidyn çheer-oaylleeagh|Co-ordnaidyn]]
| data9 = {{#if:{{{coordnaidyn|}}}{{{coordyn|}}}|{{#invoke:Coordinates|coordinsert|{{if empty|{{{coordnaidyn|}}}|{{{coordyn|}}}}}|type:mountain|{{#if:{{{coordnaidyn_reayn|}}}||{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}{{{lheead_km|}}}{{{lheead_mi|}}}{{{eaghtyr_mi2|}}}{{{eaghtyr_km2|}}}|dim:{{Infobox dim|length_km={{{lhiurid_km|}}}|length_mi={{{lhiurid_mi|}}}|width_km={{{lheead_km|}}}|width_mi={{{lheead_mi|}}}|area_mi2={{{eaghtyr_mi2|}}}|area_km2={{{eaghtyr_km2|}}}}}}}}}}}<!--
-->{{if empty|{{{note_coordnaidyn|}}}|{{{imraa_coordnaidyn|}}}|{{{imraa_coordyn|}}} }} }}
| header10 = Towshanyn
| label11 = Lhiurid
| data11 = {{If first display both|{{If empty|{{{lhiurid|}}}|{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}|{{Convinfobox|{{{lhiurid_km|}}}|km|{{{lhiurid_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2043|2=|name=length|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2043}}}}}}}}|{{If last display both| |{{If empty|{{{troa_lhiurid|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2043|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q36477|nomatch=}}|Q36477|(NS)|}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2043|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q34027|nomatch=}}|Q34027|(EW)|}}}}}}{{If last display both||{{{imraa_lhiurid|{{{note_lhiurid|}}}}}}}}}}
| label12 = Lheead
| data12 = {{If first display both|{{If empty|{{{lheead|}}}|{{#if:{{{lheead_km|}}}{{{lheead_mi|}}}|{{Convinfobox|{{{lheead_km|}}}|km|{{{lheead_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2049|2=|name=width|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2049}}}}}}}}|{{If last display both| |{{If empty|{{{troa_lheead|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2049|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q36477|nomatch=}}|Q36477|(NS)|}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2049|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q34027|nomatch=}}|Q34027|(EW)|}}}}}}{{If last display both||{{{imraa_lheead|{{{note_lheead|}}}}}}}}}}
| label13 = Eaghtyr
| data13 = {{If first display both|{{If empty|{{{eaghtyr|}}}|{{#if:{{{eaghtyr_km2|}}}{{{eaghtyr_mi2|}}}|{{Convinfobox|{{{eaghtyr_km2|}}}|km2|{{{eaghtyr_mi2|}}}|mi2}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2046|2=|name=area|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2046}}}}}}}}|{{If last display both||{{{imraa_eaghtyr|{{{note_eaghtyr|}}}}}}}}}}
| label14 = Towse-lhieenee
| data14 = {{If first display both|{{If empty|{{{towse-lhieenee|}}}|{{#if:{{{towse-lhieenee_km3|}}}{{{towse-lhieenee_mi3|}}}|{{Convinfobox|{{{towse-lhieenee_km3|}}}|km3|{{{towse-lhieenee_mi3|}}}|mi3}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2234|2=|name=volume|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2234}}}}}}}}|{{If last display both||{{{imraa_towse-lhieenee|{{{note_towse-lhieenee|}}}}}}}}}}
| header15 = Enmys
| label16 = [[Bun-ocklaght]]
| data16 = {{{bun-ocklaght|}}}
| class17 = nickname
| label17 = [[Far-ennym]]
| data17 = {{{far-ennym|}}}
| class18 = nickname
| label18 = Ennym dooghyssagh
| data18 = {{{ennym_dooghyssagh|}}}
| label19 = Çhyndaays Gaelg
| data19 = {{{çhyndaays|}}}
| label20 = Çhengey yn ennym
| data20 = {{#if:{{{ennym_dooghyssagh|}}}||<!--
-->{{#if:{{{çhengey|}}}|{{{çhengey}}}|<!--
-->{{#if:{{{çhengey_ennym_dooghyssagh|}}}|{{Ennym ISO 639|{{{çhengey_ennym_dooghyssagh|}}}|link=yes}}}}}}}}
| label21 = Fockley magh
| data21 = {{{fockley_magh|}}}
| label22 = Eaghtyrys meenaghey
| data22 = {{{eaghtyrys|}}}
| header25 = Çheer-oaylleeaght
<!-- data26 reserved for map when photo is present -->
| class27 = label
| label27 = Soiaghey
| data27 = {{#if:{{{fo-heidyl_caslys-çheerey|}}}|{{{soiaghey|}}}|{{#if:{{{foto|}}}|{{#if:{{{caslys-çheerey|}}}||{{{soiaghey|}}} }}|{{{soiaghey|}}} }} }}
| class28 = label
| label28 = {{If empty|{{{sorçh_çheer|}}}|{{#if:{{{çheer1|}}}|Çheeraghyn}}|Çheer}}
| data28 = {{enum|1={{{çheer|}}}|2={{{çheer1|}}}|3={{{çheer2|}}}|4={{{çheer3|}}}|5={{{çheer4|}}}|6={{{çheer5|}}}|7={{{çheer6|}}}|8={{{çheer7|}}}|9={{{çheer8|}}}|10={{{çheer9|}}}|11={{{çheer10|}}}|12={{{çheer11|}}}|13={{{çheer12|}}}|14={{{çheer13|}}}|15={{{çheer14|}}}|16={{{çheer15|}}}|17={{{çheer16|}}}|18={{{çheer17|}}}|19={{{çheer18|}}}}}
| class29 = label
| label29 = {{If empty|{{{sorçh_aarheynn1|}}}|{{{sorçh_steat|}}}|{{#if:{{{steat1|}}}|Steatyn}}|Steat}}
| data29 = {{if empty|{{{aarheynn1|}}}|{{enum|1={{{steat|}}}|2={{{steat1|}}}|3={{{steat2|}}}|4={{{steat3|}}}|5={{{steat4|}}}|6={{{steat5|}}}|7={{{steat6|}}}|8={{{steat7|}}}|9={{{steat8|}}}|10={{{steat9|}}}|11={{{steat10|}}}|12={{{steat11|}}}|13={{{steat12|}}}|14={{{steat13|}}}|15={{{steat14|}}}|16={{{steat15|}}}|17={{{steat16|}}}|18={{{steat17|}}}|19={{{steat18|}}}}}}}
| class30 = label
| label30 = {{If empty|{{{sorçh_aarheynn2|}}}|{{{sorçh_ard|}}}|{{#if:{{{ard1|}}}|Ardjyn}}|Ard}}
| data30 = {{if empty|{{{aarheynn2|}}}|{{enum|1={{{ard|}}}|2={{{ard1|}}}|3={{{ard2|}}}|4={{{ard3|}}}|5={{{ard4|}}}|6={{{ard5|}}}|7={{{ard6|}}}|8={{{ard7|}}}|9={{{ard8|}}}|10={{{ard9|}}}|11={{{ard10|}}}|12={{{ard11|}}}|13={{{ard12|}}}|14={{{ard13|}}}|15={{{ard14|}}}|16={{{ard15|}}}|17={{{ard16|}}}|18={{{ard17|}}}|19={{{ard18|}}}|20={{{ard19|}}}|21={{{ard20|}}}|22={{{ard21|}}}|23={{{ard22|}}}|24={{{ard23|}}}}}}}
| class31 = label
| label31 = {{If empty|{{{sorçh_aarheynn3|}}}|{{{sorçh_slyst|}}}|{{#if:{{{slyst1|}}}|Slystyn}}|Slyst}}
| data31 = {{if empty|{{{aarheynn3|}}}|{{enum|1={{{slyst|}}}|2={{{slyst1|}}}|3={{{slyst2|}}}|4={{{slyst3|}}}|5={{{slyst4|}}}|6={{{slyst5|}}}|7={{{slyst6|}}}|8={{{slyst7|}}}|9={{{slyst8|}}}|10={{{slyst9|}}}|11={{{slyst10|}}}|12={{{slyst11|}}}|13={{{slyst12|}}}|14={{{slyst13|}}}|15={{{slyst14|}}}|16={{{slyst15|}}}|17={{{slyst16|}}}|18={{{slyst17|}}}|19={{{slyst18|}}}}}}}
| label32 = {{If empty|{{{sorçh_aarheynn4|}}}|{{{sorçh_ayrn|}}}|{{#if:{{{ayrn1|}}}|Aarheynnyn}}|Aarheynn}}
| data32 = {{if empty|{{{aarheynn4|}}}|{{enum|1={{{ayrn|}}}|2={{{ayrn1|}}}|3={{{ayrn2|}}}|4={{{ayrn3|}}}|5={{{ayrn4|}}}|6={{{ayrn5|}}}|7={{{ayrn6|}}}|8={{{ayrn7|}}}|9={{{ayrn8|}}}|10={{{ayrn9|}}}|11={{{ayrn10|}}}|12={{{ayrn11|}}}|13={{{ayrn12|}}}|14={{{ayrn13|}}}|15={{{ayrn14|}}}|16={{{ayrn15|}}}|17={{{ayrn16|}}}|18={{{ayrn17|}}}|19={{{ayrn18|}}}|20={{{ayrn19|}}}}}}}
| label33 = {{If empty|{{{sorçh_balley|}}}|{{#if:{{{balley1|}}}|Baljyn}}|Balley}}
| data33 = {{enum|1={{{balley|}}}|2={{{balley1|}}}|3={{{balley2|}}}|4={{{balley3|}}}|5={{{balley4|}}}|6={{{balley5|}}}|7={{{balley6|}}}|8={{{balley7|}}}|9={{{balley8|}}}|10={{{balley9|}}}|11={{{balley10|}}}|12={{{balley11|}}}|13={{{balley12|}}}|14={{{balley13|}}}|15={{{balley14|}}}|16={{{balley15|}}}|17={{{balley16|}}}|18={{{balley17|}}}|19={{{balley18|}}} }}
| label34 = [[Corys co-ordnaidyn çheer-oaylleeagh|Co-ordnaidyn y reayn]]
| data34 = {{#if:{{{coordnaidyn_reayn|}}}{{{coordyn_reayn|}}}|{{#invoke:Coordinates|coordinsert|{{if empty|{{{coordnaidyn_reayn|}}}|{{{coordyn_reayn|}}}}}|type:mountain|{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}{{{lheead_km|}}}{{{lheead_mi|}}}{{{eaghtyr_mi2|}}}{{{eaghtyr_km2|}}}|dim:{{Infobox dim|length_km={{{lhiurid_km|}}}|length_mi={{{lhiurid_mi|}}}|width_km={{{lheead_km|}}}|width_mi={{{lheead_mi|}}}|area_mi2={{{eaghtyr_mi2|}}}|area_km2={{{eaghtyr_km2|}}}}}}}}}}}{{#if:{{{imraa_coordnaidyn_reayn|{{{note_coordnaidyn_reayn|}}}}}}|{{{imraa_coordnaidyn_reayn|{{{note+coordnaidyn_reayn|}}}}}}}}
| class35 = category
| label35 = [[Slieau-reayn|{{nowrap|Moir-reayn}}]]
| data35 = {{{moir|{{{reayn|}}}}}}
| label36 = Çhemmal rish
| data36 = {{if empty|{{{çhemmal_rish|}}}|{{enum|1={{{çhemmal|}}}|2={{{çhemmal1|}}}|3={{{çhemmal2|}}}|4={{{çhemmal3|}}}|5={{{çhemmal4|}}}|6={{{çhemmal5|}}}|7={{{çhemmal6|}}}|8={{{çhemmal7|}}}|9={{{çhemmal8|}}}}}}}
| label37 = [[Ordnance Survey National Grid|Ingagh OS]]
| data37 = {{#if:{{{ingagh_ogheragh_RU|}}}|{{gbm4ibx|{{{ingagh_ogheragh_RU|}}}|name={{{name|{{PAGENAMEBASE}}}}} }}{{{imraa_ingagh_ogheragh_RU|{{{note_ingagh_ogheragh_RU|}}}}}}}}
| label38 = [[Corys ingagh ogheragh Nerin|Ingagh OSI/OSNI]]
| data38 = {{#if:{{{ingagh_ogheragh_Nerin|}}}|{{iem4ibx|{{{ingagh_ogheragh_Nerin|}}}|name={{{name|{{PAGENAMEBASE}}}}} }}{{{imraa_ingagh_ogheragh_Nerin|{{{note_ingagh_ogheragh_Nerin|}}}}}}}}
| label39 = [[Caslys-çheerey boayl-oaylleeagh]]
| data39 = {{#if:{{{topo_maker|}}}|{{{topo_maker}}} }}{{if empty|{{{topo|}}}|{{{topo_map|}}} }}
| label40 = [[Bea-oam]]
| data40 = {{{bea-oam|}}}
| header42 = Creg-oaylleeaght
| label43 = [[Crooaght sleityn|Crooit liorish]]
| data43 = {{{crooit_liorish|}}}
| label44 = [[Orogiennaghtyn]]
| data44 = {{{orogiennaghtyn|}}}
| label45 = [[Scaailley-traa creg-oaylleeagh|Eash ny creggyn]]
| data45 = {{if empty|{{{eash|}}}|{{enum|{{{earish|}}}|{{{earish1|}}}|{{{earish2|}}}|{{{earish3|}}}|{{{earish4|}}}|{{{earish5|}}}}}}}
| label46 = [[Rolley sorçhyn slieau|Sorçh slieau]]
| data46 = {{{sorçh_slieau|{{{sorçh|}}}}}}
| label47 = [[Rolley sorçhyn creggey|Sorçh creggey]]
| data47 = {{enum|{{{creg-oaylleeaght|}}}|{{{creg-oaylleeaght1|}}}|{{{creg-oaylleeaght2|}}}|{{{creg-oaylleeaght3|}}}|{{{creg-oaylleeaght4|}}}|{{{creg-oaylleeaght5|}}}|{{{creg|}}}}}
| label48 = {{#if:{{{vard_volcaanagh|}}}|Ard volcaanagh
| {{#if:{{{arc_volcaanagh|}}}|[[Arc volcaanagh]]
| {{#if:{{{cryss_volcaanagh|}}}|[[Cryss volcaanagh]]
| {{#if:{{{magher_volcaanagh|}}}|[[Magher volcaanagh]]
| {{#if:{{{arc/cryss_volcaanagh|}}}|[[Arc volcaanagh|Arc]]/[[cryss volcaanagh]]}}}}}}}}}}
| data48 = {{If empty|{{{ard_volcaanagh|}}}|{{{ard_volcaanagh|}}}|{{{cryss_volcaanagh|}}}|{{{magher_volcaanagh|}}}|{{{arc/cryss_volcaanagh|}}}}}
| label49 = [[Sorçhyn dy vruightaghyn volcaanagh|Bruightey jerrinagh]]
| data49 = {{{bruightey_jerrinagh|}}}
| header50 = Drappal
| label51 = [[Kied drappal]]
| data51 = {{{kied_drappal|}}}
| label52 = [[Bollagh cadjin|{{nowrap|Bollagh s'assey}}]]
| data52 = {{{bollagh_sassey|}}}
| label53 = [[Bollagh cadjin]]
| data53 = {{{bollagh_cadjin|}}}
| label54 = Roshtynys
| data54 = {{{roshtynys|}}}
| data56 = {{{embedded|}}}
| data57 = {{{embedded1|}}}
| data58 = {{{module|}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox mountain with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox mountain]] with unknown parameter "_VALUE_"|ignoreblank=y| roshtynys | eash | eaghtyr | eaghtyr_km2 | eaghtyr_mi2 | note_eaghtyr | imraa_eaghtyr | eaghtyrys | bea-oam | çhemmal | çhemmal1 | çhemmal2 | çhemmal3 | çhemmal4 | çhemmal5 | çhemmal6 | çhemmal7 | çhemmal8 | çhemmal_rish | child | balley | sorçh_balley | balley1 | balley10 | balley11 | balley12 | balley13 | balley14 | balley15 | balley16 | balley17 | balley18 | balley2 | balley3 | balley4 | balley5 | balley6 | balley7 | balley8 | balley9 | embedded1 | coordnaidyn | note_coordnaidyn | imraa_coordnaidyn | coordyn | imraa_coordyn | çheer | sorçh_çheer | çheer1 | çheer10 | çheer11 | çheer12 | çheer13 | çheer14 | çheer15 | çheer16 | çheer17 | çheer18 | çheer2 | çheer3 | çheer4 | çheer5 | çheer6 | çheer7 | çheer8 | çheer9 | slyst | sorçh_slyst | slyst1 | slyst10 | slyst11 | slyst12 | slyst13 | slyst14 | slyst15 | slyst16 | slyst17 | slyst18 | slyst2 | slyst3 | slyst4 | slyst5 | slyst6 | slyst7 | slyst8 | slyst9 | bollagh_sassey | yrjid | yrjid_ft | yrjid_m | note_yrjid | imraa_yrjid | corys_yrjid | embedded | bun-ocklaght | fetchwikidata | kied_drappal | crooit_liorish | creg-oaylleeaght | creg-oaylleeaght1 | creg-oaylleeaght2 | creg-oaylleeaght3 | creg-oaylleeaght4 | creg-oaylleeaght5 | ingagh_ogheragh_Nerin | note_ingagh_ogheragh_Nerin | imraa_ingagh_ogheragh_Nerin | ingagh_ogheragh_RU | note_ingagh_ogheragh_RU | imraa_ingagh_ogheragh_RU | syrjey | boayl_syrjey | jalloo_caslys-çheerey | unraghey | unraghey_km | unraghey_mi | moir-unraghey | imraa_unraghey | lipaid | soiaghey_lipaid | çhengey | bruightey_jerrinagh | lhiurid | lhiurid_km | lhiurid_mi | note_lhiurid | troa_lhiurid | imraa_lhiurid | jalloo | fo-heidyl | rolley | soiaghey | caslys-çheerey | alt_caslys-çheerey | fo-heidyl_caslys-çheerey | jalloo_caslys-çheerey | releef_caslys-çheerey | mooadys_caslys-çheerey | caslys-çheerey_jeeragh | lheead_caslys-çheerey | mooadyscaslysçheerey | module | sorçh_slieau | ennym | ennym_dooghyssagh | çhengey_ennym_dooghyssagh | far-ennym | nocat_wdimage | bollagh_cadjin | orogiennaghtyn | ennym_elley | moir | moir-veinn | ayrn | sorçh_ayrn | ayrn1 | ayrn10 | ayrn11 | ayrn12 | ayrn13 | ayrn14 | ayrn15 | ayrn16 | ayrn17 | ayrn18 | ayrn19 | ayrn2 | ayrn3 | ayrn4 | ayrn5 | ayrn6 | ayrn7 | ayrn8 | ayrn9 | earish | earish1 | earish2 | earish3 | earish4 | earish5 | foto | alt_foto | fo-heidyl_foto | mooadys_foto | foto_jeeragh | lheead_foto | yrjid_chonastagh | yrjid_chonastagh_ft | yrjid_chonastagh_m | imraa_yrjid_chonastagh | fockley_magh | qid | reayn | coordnaidyn_reayn | note_coordnaidyn_reayn | imraa_coordnaidyn_reayn | coordyn_reayn | ard | sorçh_ard | ard1 | ard10 | ard11 | ard12 | ard13 | ard14 | ard15 | ard16 | ard17 | ard18 | ard19 | ard2 | ard20 | ard21 | ard22 | ard23 | ard3 | ard4 | ard5 | ard6 | ard7 | ard8 | ard9 | releef | creg | sourcedonly | steat | sorçh_steat | steat1 | steat10 | steat11 | steat12 | steat13 | steat14 | steat15 | steat16 | steat17 | steat18 | steat2 | steat3 | steat4 | steat5 | steat6 | steat7 | steat8 | steat9 | aarheynn1 | sorçh_aarheynn1 | aarheynn2 | sorçh_aarheynn2 | aarheynn3 | sorçh_aarheynn3 | aarheynn4 | sorçh_aarheynn4 | suppressfields | topo | topo_maker | topo_map | çhyndaays | sorçh | arc_volcaanagh | arc/cryss_volcaanagh | cryss_volcaanagh | magher_volcaanagh | ard_volcaanagh | towse_lhieenee | towse_lhieenee_km3 | towse_lhieenee_mi3 | note_towse_lhieenee | imraa_towse_lhieenee | lheead | lheead_km | lheead_mi | note_lheead | troa_lheead| imraa_lheead
}}{{main other|{{#if:{{{ard|}}}|{{#ifeq:{{#invoke:string|replace|{{{ard}}}|^[A-Z0-9/\-]*$|MATCH|plain=false}}|MATCH|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadaryn gyn enney|ρ]]
}}}}
}}{{Wikidata image |1={{{foto|}}} |2={{{nocat_wdimage|{{#ifeq:ALL|{{uc:{{{fetchwikidata|}}}}}|1|}}}}}
}}{{main other|
{{#if:{{{çhengey|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadar çhengey|{{#invoke:string|replace|{{{çhengey}}}|[^A-Za-z0-9]||plain=false}} ]]}}
}}{{#if:{{#invoke:string|match|{{{sorçh_çheer|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{çheer|}}}| and |ignore_errors=true}}||{{#if:{{{çheer|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|A]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|A]]}}}}|
}}{{#if:{{#invoke:string|match|{{{sorçh_balley|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{balley|}}}| and |ignore_errors=true}}||{{#if:{{{balley|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|B]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|B]]}}}}|
}}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn1|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn1|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn1|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|C]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|C]]}}}}|
}}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn2|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn2|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn2|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|D]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|D]]}}}}|
}}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn3|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn3|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn3|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|E]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|E]]}}}}|
}}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn4|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn4|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn4|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|F]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|F]]}}}}|
}}{{#invoke:Check for unknown parameters|check|unknown=[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadaryn currit noi|_VALUE_{{PAGENAME}}]]|preview=Duillag gymmydey [[Clowan:Kishtey fys slieau]] lesh y pharameadar "_VALUE_" ta currit noi|ignoreblank=y| roshtynys | eash | eaghtyr | eaghtyr_km2 | eaghtyr_mi2 | imraa_eaghtyr | eaghtyrys | bea-oam | çhemmal | çhemmal_rish | child | embedded1 | coordnaidyn | imraa_coordnaidyn | coordyn | imraa_coordyn | çheer | sorçh_çheer | slyst | sorçh_slyst | bollagh_sassey | yrjid | yrjid_ft | yrjid_m | imraa_yrjid | corys_yrjid | embedded | bun-ocklaght | fetchwikidata | kied_drappal | crooit_liorish | creg-oaylleeaght | ingagh_ogheragh_Nerin | imraa_ingagh_ogheragh_Nerin | ingagh_ogheragh_RU | imraa_ingagh_ogheragh_UK | syrjey | boayl_syrjey | unraghey | unraghey_km | unraghey_mi | moir-unraghey | imraa_unraghey | lipaid | soiaghey_lipaid | çhengey | bruightey_jerrinagh | lhiurid | lhiurid_km | lhiurid_mi | troa_lhiurid | imraa_lhiurid | jalloo| fo-heidyl | rolley | soiaghey | caslys-çheerey | alt_caslys-çheerey | fo-heidyl_caslys-çheerey | jalloo_caslys-çheerey | releef_caslys-çheerey | mooadys_caslys-çheerey | caslys-çheerey_jeeragh | lheead_caslys-çheerey | mooadyscaslysçheerey | module | sorçh_slieau | ennym | ennym_dooghyssagh | çhengey_ennym_dooghyssagh | far-ennym | nocat_wdimage | bollagh_cadjin | orogiennaghtyn | ennym_elley | moir | moir-veinn | ayrn | sorçh_ayrn | earish | foto | alt_foto | fo-heidyl_foto | mooadys_foto | foto_jeeragh | yrjid_chonastagh | yrjid_chonastagh_ft | yrjid_chonastagh_m | imraa_yrjid_chonastagh | fockley_magh | qid | reayn | coordnaidyn_reayn | imraa_coordnaidyn_reayn | coordyn_reayn | ard | sorçh_ard | releef | creg | balley | sorçh_balley | sourcedonly | steat | sorçh_steat | aarheynn1 | sorçh_aarheynn1 | aarheynn2 | sorçh_aarheynn2 | aarheynn3 | sorçh_aarheynn3 | aarheynn4 | sorçh_aarheynn4 | suppressfields | topo | topo_maker | topo_map | çhyndaays | sorçh | arc_volcaanagh | arc/cryss_volcaanagh | cryss_volcaanagh | magher_volcaanagh | ard_volcaanagh | towse_lhieenee | towse_lhieenee_km3 | towse_lhieenee_mi3 | imraa_towse_lhieenee | lheead | lheead_km | lheead_mi | troa_lheead | imraa_lheead
}}<noinclude>
{{Documentation}}
</noinclude>
af9uoyuku76bds4q2gttj160wp5rggr
Ronney:1511
14
35512
387979
342414
2026-08-06T00:16:23Z
MacTire02
219
clowan noa
387979
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:675
14
35681
387471
342915
2026-08-05T17:42:55Z
MacTire02
219
clowan noa
387471
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1996
14
35702
387385
371765
2026-08-05T13:51:28Z
MacTire02
219
++
387385
wikitext
text/x-wiki
{{Category series navigation}}
[[Ronney:Bunneeaghtyn 'sy vlein 1996 rere çheer|Mannin]]
[[Ronney:Bunneeaghtyn ayns Mannin ayns ny 1990yn| 6]]
[[Ronney:Bunneeaghtyn ayns Mannin rere blein|1996]]
[[Ronney:Mannin 'sy vlein 1996]]
[[Ronney:Bunneeaghtyn ayns croghaneyn y Reeriaght Unnaneysit 'sy vlein 1996|Mannin]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1996|Mannin]]
i9rynu3f1l3o023473dk9s89xjdcxie
Ronney:Mannin 'sy vlein 1996
14
35708
387387
371777
2026-08-05T13:53:45Z
MacTire02
219
ronney elley
387387
wikitext
text/x-wiki
{{Category series navigation}}
[[Ronney:1996 rere çheer|Mannin]]
[[Ronney:Mannin 'sy 20oo eash rere blein|96]]
[[Ronney:Mannin ayns ny 1990yn| 6]]
[[Ronney:Yn Oarpey 'sy vlein 1996|Mannin]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit 'sy vlein 1996|Mannin]]
n8xap4jkcuwss0so2or7j9i6joydegk
Ronney:21d eash rere çheer as blein
14
37646
388065
380573
2026-08-06T01:00:17Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 21d eash rere çheer]] to [[Ronney:21d eash rere çheer as blein]] without leaving a redirect
380573
wikitext
text/x-wiki
{{moir-ronney}}
{{category series navigation}}
{{Commons category|21st century by country by year|Bleeantyn y 21d eash rere çheer}}
{{CategoryTOC}}
[[Ronney:Bleeantyn rere çheer|21]]
[[Ronney:21d eash rere çheer| Bleeantyn]]
[[Ronney:21d eash rere blein| Cheer]]
n33nompzmdoqn9xyhusgua99osmz5kv
Ronney:Jeihaghtyn rere çheer
14
37648
388143
349938
2026-08-06T02:08:30Z
MacTire02
219
catsort
388143
wikitext
text/x-wiki
{{moir-ronney}}
{{Commons category|Decades by country|Jeihaghtyn rere çheer}}
{{see also|Ronney:Bleeantyn rere çheer|Ronney:Eashyn rere çheer}}
{{CategoryTOC}}
[[Ronney:Shennaghys rere çheer as earish| 2]]
[[Ronney:Jeihaghtyn| Cheer]]
[[Ronney:Jeihaghtyn rere mooar-rheynn|.Cheer]]
k00ig3mpzsoaw5shz6piwh58dl5tna7
Ronney:2000yn rere çheer
14
37676
388082
380568
2026-08-06T01:17:36Z
MacTire02
219
ronney elley
388082
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2000s by country|2000yn rere çheer}}
[[Ronney:2000yn| Cheer]]
[[Ronney:21d eash rere çheer as jeihaght]]
[[Ronney:Shennaghys co-emshiragh rere çheer]]
c1xdlemb6j9pxn518mwc83mgxhqskpx
388085
388082
2026-08-06T01:19:42Z
MacTire02
219
++
388085
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2000s by country|2000yn rere çheer}}
[[Ronney:2000yn| Cheer]]
[[Ronney:21d eash rere çheer as jeihaght| 00]]
[[Ronney:Shennaghys co-emshiragh rere çheer]]
lgt9gwzo5rjysxj4y0rohoappm0qkz3
Ronney:19oo eash rere çheer as blein
14
37708
388057
382555
2026-08-06T00:52:40Z
MacTire02
219
ronney elley
388057
wikitext
text/x-wiki
{{category series navigation}}
{{CategoryTOC}}
[[Ronney:Bleeantyn rere çheer|19]]
[[Ronney:19oo eash rere çheer|/Bleeantyn]]
[[Ronney:19oo eash rere blein| Cheer]]
ovhf4fnw4tul6205ejck0b3avbpapua
388059
388057
2026-08-06T00:55:44Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash rere çheer]] to [[Ronney:19oo eash rere çheer as blein]] without leaving a redirect
388057
wikitext
text/x-wiki
{{category series navigation}}
{{CategoryTOC}}
[[Ronney:Bleeantyn rere çheer|19]]
[[Ronney:19oo eash rere çheer|/Bleeantyn]]
[[Ronney:19oo eash rere blein| Cheer]]
ovhf4fnw4tul6205ejck0b3avbpapua
Ronney:19oo eash rere blein
14
37709
388056
381418
2026-08-06T00:52:18Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash]] to [[Ronney:19oo eash rere blein]] without leaving a redirect: aght
381418
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|19]]
[[Ronney:19oo eash]]
56uor0wytky2igp4hj3y9hyzo3z08ed
Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash rere blein
14
37716
388069
380703
2026-08-06T01:03:09Z
MacTire02
219
ronney elley
388069
wikitext
text/x-wiki
{{category series navigation}}
{{DEFAULTSORT:Reeriaght Unnaneysit}}
[[Ronney:21d eash 'sy Reeriaght Unnaneysit| Blein]]
[[Ronney:Yn Reeriaght Unnaneysit rere blein| 21]]
[[Ronney:21d eash rere çheer as blein]]
[[Ronney:Yn Oarpey 'sy 21d eash rere blein]]
snsv9fno17x9k201gz43sx0h6di83jt
388070
388069
2026-08-06T01:03:52Z
MacTire02
219
ronney elley
388070
wikitext
text/x-wiki
{{category series navigation}}
{{DEFAULTSORT:Reeriaght Unnaneysit}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| Blein]]
[[Ronney:Yn Reeriaght Unnaneysit rere blein| 21]]
[[Ronney:21d eash rere çheer as blein]]
[[Ronney:Yn Oarpey 'sy 21d eash rere blein]]
lhwigasb930wru2p7ei83faqekw354i
Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein
14
37717
388062
380664
2026-08-06T00:57:55Z
MacTire02
219
ronney elley
388062
wikitext
text/x-wiki
{{category series navigation}}
{{DEFAULTSORT:Reeriaght Unnaneysit}}
[[Ronney:19oo eash 'sy Reeriaght Unnaneysit| Blein]]
[[Ronney:Yn Reeriaght Unnaneysit rere blein| 19]]
[[Ronney:19oo eash rere çheer as blein]]
[[Ronney:Yn Oarpey 'sy 19oo eash rere blein]]
cebb3a1203wadhdzsc6eah8yvrcn6l3
Ronney:20oo eash rere çheer as blein
14
37729
387536
380484
2026-08-05T18:58:48Z
MacTire02
219
ronney elley
387536
wikitext
text/x-wiki
{{category series navigation}}
{{CategoryTOC}}
[[Ronney:Bleeantyn rere çheer|20]]
[[Ronney:20oo eash rere çheer| Blein]]
[[Ronney:20oo eash rere blein|-]]
c4nazqejhhisr0ml9uzpgdi7cdpqiyy
388064
387536
2026-08-06T00:59:09Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 20oo eash rere çheer]] to [[Ronney:20oo eash rere çheer as blein]] without leaving a redirect
387536
wikitext
text/x-wiki
{{category series navigation}}
{{CategoryTOC}}
[[Ronney:Bleeantyn rere çheer|20]]
[[Ronney:20oo eash rere çheer| Blein]]
[[Ronney:20oo eash rere blein|-]]
c4nazqejhhisr0ml9uzpgdi7cdpqiyy
Ronney:20oo eash rere blein
14
37730
387519
381419
2026-08-05T18:54:30Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 20oo eash]] to [[Ronney:20oo eash rere blein]] without leaving a redirect: aght
381419
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|20]]
[[Ronney:20oo eash]]
ert9sewe4afcu2ay044aln5igp7qznc
Ronney:1940yn rere çheer
14
37732
388092
380493
2026-08-06T01:21:58Z
MacTire02
219
ronney elley
388092
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1940s by country|1940yn rere çheer}}
[[Ronney:1940yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 40]]
ks2autdc1gk9527c3bnrxyt3g10pa3w
Ronney:20oo eash rere çheer as jeihaght
14
37733
388077
380439
2026-08-06T01:15:24Z
MacTire02
219
ronnaghyn elley
388077
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:21d eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 21]]
3p5dcrtcqxwoxjly52pbladjcvr6voi
388078
388077
2026-08-06T01:15:48Z
MacTire02
219
catsort
388078
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:20oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 20]]
m4uco9x8pyh9ml2qvdnbc8ogllcu2x1
388090
388078
2026-08-06T01:21:21Z
MacTire02
219
MacTire02 moved page [[Ronney:Jeihaghtyn y 20oo eash rere çheer]] to [[Ronney:20oo eash rere çheer as jeihaght]] without leaving a redirect
388078
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:20oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 20]]
m4uco9x8pyh9ml2qvdnbc8ogllcu2x1
Ronney:1990yn rere çheer
14
37858
388095
380609
2026-08-06T01:22:47Z
MacTire02
219
ronney elley
388095
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1990s by country|{{PAGENAME}}}}
[[Ronney:1990yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 90]]
buapeqv17yegfth4inplc21gh4rqoga
Ronney:1980yn rere çheer
14
37859
388096
380646
2026-08-06T01:23:00Z
MacTire02
219
ronney elley
388096
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1980s by country|1980yn rere çheer}}
[[Ronney:1980yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 80]]
lb1ks7ugtdou19s45rt5g92t0dwjlxl
Ronney:1970yn rere çheer
14
37860
388097
380653
2026-08-06T01:23:17Z
MacTire02
219
ronney elley
388097
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1970s by country|1970yn rere çheer}}
[[Ronney:1970yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 70]]
8b3vvzxg32wezldqcldpc6q7rqh1kkf
Ronney:1960yn rere çheer
14
37861
388098
380729
2026-08-06T01:23:30Z
MacTire02
219
ronney elley
388098
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1960s by country|1960yn rere çheer}}
[[Ronney:1960yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 60]]
jr85ta2woi13y3dhq71zvxnn5cl2kmy
Ronney:1950yn rere çheer
14
37862
388091
380742
2026-08-06T01:21:47Z
MacTire02
219
ronney elley
388091
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1950s by country|1950yn rere çheer}}
[[Ronney:1950yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 50]]
cdks792ompvucha3dz74850qve4xwoi
Ronney:849
14
38042
387484
350639
2026-08-05T17:45:54Z
MacTire02
219
clowan noa
387484
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1542
14
38158
387954
350849
2026-08-06T00:11:25Z
MacTire02
219
clowan noa
387954
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1525
14
38318
387969
351246
2026-08-06T00:13:58Z
MacTire02
219
clowan noa
387969
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1870yn rere çheer
14
38380
388103
381500
2026-08-06T01:25:51Z
MacTire02
219
ronney elley
388103
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1870s by country|1870yn rere çheer}}
[[Ronney:1870yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 70]]
43sk5ut10x0uq24be5db6ta6k9166fh
Ronney:19oo eash rere çheer as jeihaght
14
38381
388079
380678
2026-08-06T01:16:05Z
MacTire02
219
ronnaghyn elley
388079
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:19oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 19]]
9buohxof6hxegcr3aibx5bj81jg449o
388099
388079
2026-08-06T01:24:16Z
MacTire02
219
MacTire02 moved page [[Ronney:Jeihaghtyn y 19oo eash rere çheer]] to [[Ronney:19oo eash rere çheer as jeihaght]] without leaving a redirect
388079
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:19oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 19]]
9buohxof6hxegcr3aibx5bj81jg449o
Ronney:1930yn rere çheer
14
38400
388093
380735
2026-08-06T01:22:17Z
MacTire02
219
ronney elley
388093
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1930s by country|1930yn rere çheer}}
[[Ronney:1930yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 30]]
e7jx8k8dkqouuqu78840ulr8fg17smb
Ronney:1920yn rere çheer
14
38401
388094
351373
2026-08-06T01:22:34Z
MacTire02
219
ronney elley
388094
wikitext
text/x-wiki
{{Commons category|1920s by country|1920yn rere çheer}}
[[Ronney:1920yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 20]]
acni1yxc12cni3ogsrq2yz2h17n58b6
Ronney:1910yn rere çheer
14
38402
388088
380471
2026-08-06T01:20:45Z
MacTire02
219
ronney elley
388088
wikitext
text/x-wiki
{{Navseasoncats}}
{{Commons category|1910s by country|1910yn rere çheer}}
[[Ronney:1910yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 10]]
eut8bg3bca5vj12zqwllh1fs4720qsr
Ronney:1900yn rere çheer
14
38403
388089
380438
2026-08-06T01:21:01Z
MacTire02
219
ronney elley
388089
wikitext
text/x-wiki
{{Commons category|1900s by country|1900yn rere çheer}}
{{category series navigation}}
[[Ronney:1900yn|.Cheer]]
[[Ronney:20oo eash rere çheer as jeihaght| 00]]
erz7souquvy3eh98seu2m7xtfk2mgkh
Ronney:1890yn rere çheer
14
38404
388105
380677
2026-08-06T01:26:14Z
MacTire02
219
ronney elley
388105
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1890s by country|1890yn rere çheer}}
[[Ronney:1890yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 90]]
3dkz0j1lbs9gem1nyh8nfovp8yn216q
Ronney:1880yn rere çheer
14
38405
388104
380679
2026-08-06T01:26:02Z
MacTire02
219
ronney elley
388104
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1880s by country|1880yn rere çheer}}
[[Ronney:1880yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 80]]
6n4j7pz6z3ugg9blcpgbsvz8sxe8bjy
Ronney:1810yn rere çheer
14
38774
388101
380886
2026-08-06T01:25:26Z
MacTire02
219
ronney elley
388101
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1810s by country|1810yn rere çheer}}
[[Ronney:1810yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 10]]
i4os9zdggyvmtswf7qzlnwtpg95iek2
Ronney:1800yn rere çheer
14
38780
388100
380885
2026-08-06T01:25:13Z
MacTire02
219
ronney elley
388100
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1800s by country|1800yn rere çheer}}
[[Ronney:1800yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 00]]
0sz0qodjt8z7sb0z144l4ivv6kng8yp
Ronney:2025
14
40518
388020
358237
2026-08-06T00:24:01Z
MacTire02
219
clowan noa
388020
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:751
14
40568
387477
358391
2026-08-05T17:44:16Z
MacTire02
219
clowan noa
387477
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1278
14
40611
387424
386985
2026-08-05T17:31:14Z
MacTire02
219
clowan noa
387424
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1204
14
41066
387403
386972
2026-08-05T16:14:08Z
MacTire02
219
ronney elley
387403
wikitext
text/x-wiki
{{catmore}}
{{Commonscat}}
{{StiuragRonneyBleeantyn | jeihaght = 1200}}
[[Ronney:13oo eash rere blein|04]]
[[Ronney:1200yn| 4]]
a2q4518q2yun46j1fdbjyldfrbheaw9
387417
387403
2026-08-05T16:31:42Z
MacTire02
219
clowan noa
387417
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Clowan:Ronney blein rere çheer
10
41118
388058
367480
2026-08-06T00:54:32Z
MacTire02
219
ronney elley
388058
wikitext
text/x-wiki
<noinclude>{{Distinguish|Clowan:Year in country category}}</noinclude><includeonly><!--
# Link to Wikimedia Commons category of the same name
-->{{commonscat|{{Title year}} by country|{{Title year}} rere çheer}}<!--
# The first step is to check whether this is a category page
-->{{Category other<!--
-->|<!-- ############### It is a category ###############################
# So check that it matches the required format: "YYYY rere çheer"
-->{{#ifeq: {{#invoke:String|match|s={{PAGENAME}}|pattern=^%d+ rere çheer$|start=1|match=1|plain=false|nomatch=%%nomatch%%}}|%%nomatch%%<!--
-->|<!-- # Doesn't match
-->{{Error|Lhisagh [[Clowan:Ronney blein rere çheer]] ve ymmydit er duillagyn ronney raad ta enmys y ronney 'sy chummey "Çheer 'sy vlein YYYY", raad she blein 4 earrooyn eh YYYY}}<!--
-->[[Ronney:Marranyssyn er ny ve soilshit lesh clowanyn kione ronney elley]]<!--
-->|<!-- ############### We have a valid category ###############################
#OUTDENT#
##########################################################
#### BEGIN SECTION WHICH ACTUALLY BUILDS THE CATEGORY ####
-->{{Category explanation|yn vlein '''[[{{Title year}}]]''' rere çheer}}
{{Category series navigation|skip-gaps=yes}}
{{Category see also if exists|{{Title year}} rere mooar-rheynn}}
[[Ronney:{{Title year}}| Cheer]]
[[Ronney:{{DECADE|{{Title year}}}} rere çheer|{{Title year}}]]
[[Ronney:{{Century name from title year}} rere çheer as blein| {{Title year}}]]
<!--
#### END SECTION WHICH ACTUALLY BUILDS THE CATEGORY ####
##########################################################
#RESTORE INDENT#
-->}}<!--
-->|<!-- ############### Not a category ###############################
-->{{Error|Lhisagh [[Clowan:Ronney blein rere çheer]] ve ymmydit ynrican er duillagyn ronney raad ta'n enmys 'sy chummey "Çheer 'sy vlein YYYY", raad she blein kiare earroo eh YYYY}}<!--
-->[[Ronney:Marranyssyn er ny ve soilshit lesh clowanyn kione ronney elley]]<!--
-->}}</includeonly>{{Automatic category TOC}}<noinclude>
{{Documentation}}<!--
Add categories and interwikis to the /doc subpage, please, not here!
--></noinclude>
491d1vhtkn8r7pjxlx6c9rg3hhshpfy
Ronney:2026
14
45454
388019
370450
2026-08-06T00:23:51Z
MacTire02
219
clowan noa
388019
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Yn Oarpey 'sy 21d eash rere blein
14
50625
388049
387295
2026-08-06T00:39:20Z
MacTire02
219
ronney elley
388049
wikitext
text/x-wiki
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 21d eash| Bleeantyn]]
[[Ronney:Yn Oarpey rere blein|21]]
[[Ronney:21d eash rere mooar-rheynn rere blein|Oarpey]]
0y8k9oz20cakwhpcf3moqi1l4i3o7eu
388051
388049
2026-08-06T00:40:33Z
MacTire02
219
ronney elley
388051
wikitext
text/x-wiki
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 21d eash| Bleeantyn]]
[[Ronney:Yn Oarpey rere blein|21]]
[[Ronney:21d eash rere mooar-rheynn as blein|Oarpey]]
b1f1krkwpsj0syfz8amjhbfc5gfy8cr
Ronney:754
14
52273
387478
384695
2026-08-05T17:44:26Z
MacTire02
219
clowan noa
387478
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:756
14
52274
387479
384696
2026-08-05T17:44:36Z
MacTire02
219
clowan noa
387479
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:1440
14
53716
387462
386943
2026-08-05T17:40:07Z
MacTire02
219
clowan noa
387462
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:Yn Oarpey 'sy 15oo eash rere blein
14
53719
388048
386947
2026-08-06T00:38:43Z
MacTire02
219
ronney elley
388048
wikitext
text/x-wiki
{{category explanation|artyn bentyn rish yn [[yn Oarpey|Oarpey]] 'sy [[15oo eash]] rere blein.}}
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 15oo eash| Blein]]
[[Ronney:Yn Oarpey rere blein|.15]]
[[Ronney:15oo eash rere mooar-rheynn as blein|Oarpey]]
t9h2c5lmh606b69bcm5ofg32j818lt0
Ronney:15oo eash rere mooar-rheynn as blein
14
53720
388050
386948
2026-08-06T00:39:53Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 15oo eash rere mooar-rheynn]] to [[Ronney:15oo eash rere mooar-rheynn as blein]] without leaving a redirect
386948
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|15]]
[[Ronney:15oo eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:Bleeantyn y 15oo eash| Mooar-rheynn]]
s0doqjwx84t2kunxdeza0n0p4k9io5s
388055
388050
2026-08-06T00:51:47Z
MacTire02
219
ronney elley
388055
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|15]]
[[Ronney:15oo eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:15oo eash rere blein| Mooar-rheynn]]
nqc3ze0heacph991777n3igiys4zb0d
Ronney:15oo eash rere blein
14
53722
388054
386950
2026-08-06T00:51:13Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 15oo eash]] to [[Ronney:15oo eash rere blein]] without leaving a redirect
386950
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|15]]
[[Ronney:15oo eash]]
pghg961h0kf418x4jah95saqkwsg8mf
Ronney:1440yn rere çheer
14
53743
388107
387022
2026-08-06T01:27:29Z
MacTire02
219
ronney elley
388107
wikitext
text/x-wiki
{{Commons category|1440s by country|1440yn rere çheer}}
[[Ronney:1440yn| Cheer]]
[[Ronney:15oo eash rere çheer as jeihaght| 40]]
lkeiycbwaoa4yrakmo2fwkn2i5asbnp
Ronney:15oo eash rere çheer as jeihaght
14
53744
388080
387023
2026-08-06T01:16:20Z
MacTire02
219
ronnaghyn elley
388080
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:15oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 15]]
9xl86fnyo7j7tx1oegnh2g86u4orylw
388106
388080
2026-08-06T01:26:58Z
MacTire02
219
MacTire02 moved page [[Ronney:Jeihaghtyn y 15oo eash rere çheer]] to [[Ronney:15oo eash rere çheer as jeihaght]] without leaving a redirect
388080
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:15oo eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 15]]
9xl86fnyo7j7tx1oegnh2g86u4orylw
Ronney:2020yn rere çheer
14
53896
388084
387285
2026-08-06T01:18:28Z
MacTire02
219
ronney elley
388084
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2020s by country|2020yn rere çheer}}
[[Ronney:21d eash rere çheer as jeihaght|2020]]
[[Ronney:Shennaghys co-emshiragh rere çheer| 2020]]
[[Ronney:2020yn|.Cheer]]
emjx875zpco2411p9v5a9lzsv6sfoop
388087
388084
2026-08-06T01:20:11Z
MacTire02
219
catsort
388087
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2020s by country|2020yn rere çheer}}
[[Ronney:21d eash rere çheer as jeihaght| 20]]
[[Ronney:Shennaghys co-emshiragh rere çheer| 2020]]
[[Ronney:2020yn|.Cheer]]
eommgx63ef5yfmdzey5066yojli0rym
Ronney:21d eash rere çheer as jeihaght
14
53897
388075
387278
2026-08-06T01:14:01Z
MacTire02
219
catsort
388075
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:21d eash rere çheer]]
[[Ronney:Jeihaghtyn rere çheer| 21]]
c2ftckv2vgrwhhm2i6hha103pb3gfe4
388076
388075
2026-08-06T01:15:11Z
MacTire02
219
ronnaghyn elley
388076
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:21d eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 21]]
3p5dcrtcqxwoxjly52pbladjcvr6voi
388081
388076
2026-08-06T01:17:07Z
MacTire02
219
MacTire02 moved page [[Ronney:Jeihaghtyn y 21d eash rere çheer]] to [[Ronney:21d eash rere çheer as jeihaght]] without leaving a redirect
388076
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
{{CatAutoTOC}}
[[Ronney:21d eash rere çheer| Jeihaght]]
[[Ronney:Jeihaghtyn rere çheer| 21]]
3p5dcrtcqxwoxjly52pbladjcvr6voi
Ronney:2010yn rere çheer
14
53900
388083
387284
2026-08-06T01:18:13Z
MacTire02
219
ronney elley
388083
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2010s by country|2010yn rere çheer}}
[[Ronney:21d eash rere çheer as jeihaght|2010]]
[[Ronney:Shennaghys co-emshiragh rere çheer| 2010]]
[[Ronney:2010yn|.Cheer]]
7j0fxukf434taxjdyvbtbmw0p0uah98
388086
388083
2026-08-06T01:19:57Z
MacTire02
219
catsort
388086
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2010s by country|2010yn rere çheer}}
[[Ronney:21d eash rere çheer as jeihaght| 10]]
[[Ronney:Shennaghys co-emshiragh rere çheer| 2010]]
[[Ronney:2010yn|.Cheer]]
qn715xhv3lvuc3xla1wvbttch5vc534
Ronney:Croghaneyn-crooin ayns ny 1980yn
14
53907
388108
387301
2026-08-06T01:28:26Z
MacTire02
219
MacTire02 moved page [[Ronney:Ny Croghaneyn-crooin ayns ny 1980yn]] to [[Ronney:Croghaneyn-crooin ayns ny 1980yn]] without leaving a redirect: aght
387301
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1980yn rere çheer|Croghaneyn-crooin]]
[[Ronney:Ny Croghaneyn-crooin 'sy 20oo eash| 1980]]
[[Ronney:Ny Croghaneyn-crooin rere jeihaght|1980]]
[[Ronney:Yn Oarpey ayns ny 1980yn|Croghaneyn-crooin]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]]
71q69ibfmhikpn90fjwx9gwocw5cuyo
388109
388108
2026-08-06T01:28:58Z
MacTire02
219
++
388109
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1980yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1980]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1980]]
[[Ronney:Yn Oarpey ayns ny 1980yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]]
g7qy9ed4zjcz5kgvy4k5ru6ooal35ge
Ronney:Croghaneyn-crooin rere eash
14
53912
388114
387309
2026-08-06T01:35:58Z
MacTire02
219
MacTire02 moved page [[Ronney:Ny Croghaneyn-crooin rere eash]] to [[Ronney:Croghaneyn-crooin rere eash]] without leaving a redirect
387309
wikitext
text/x-wiki
[[Ronney:Croghaneyn y Reeriaght Unnaneysit rere eash| Crooin]]
[[Ronney:Yn Oarpey rere eash|Croghaneyn-crooin]]
[[Ronney:Croghaneyn-crooin|*]]
79uq98110q1ohkr8wgnt55hrot4pjgl
Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994
14
53948
387386
2026-08-05T13:51:59Z
MacTire02
219
ronney noa
387386
wikitext
text/x-wiki
{{Category series navigation}}
[[Ronney:Bunneeaghtyn 'sy vlein 1994 rere çheer|Mannin]]
[[Ronney:Bunneeaghtyn ayns Mannin ayns ny 1990yn| 4]]
[[Ronney:Bunneeaghtyn ayns Mannin rere blein|1994]]
[[Ronney:Mannin 'sy vlein 1994]]
[[Ronney:Bunneeaghtyn ayns croghaneyn y Reeriaght Unnaneysit 'sy vlein 1994|Mannin]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1994|Mannin]]
f4oqssuq8qc82qiwhespr1dcgqmujee
Ronney:Mannin 'sy vlein 1994
14
53949
387388
2026-08-05T13:54:23Z
MacTire02
219
ronney noa
387388
wikitext
text/x-wiki
{{Category series navigation}}
[[Ronney:1994 rere çheer|Mannin]]
[[Ronney:Mannin 'sy 20oo eash rere blein|94]]
[[Ronney:Mannin ayns ny 1990yn| 4]]
[[Ronney:Yn Oarpey 'sy vlein 1994|Mannin]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit 'sy vlein 1994|Mannin]]
brj7zkjdanmsi8m3n7cyzhjk5el4fcd
Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash rere blein
14
53950
387391
2026-08-05T15:56:41Z
MacTire02
219
ronnaghyn elley
387391
wikitext
text/x-wiki
{{Navseasoncats}}
[[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash| Blein]]
[[Ronney:Yn Impiraght Ghoaldagh rere blein|19]]
[[Ronney:Bleeantyn y 19oo eash rere çheer|Ghoaldagh, Impiraght]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein| Impiraght]]
46o5tlk4sblkxl4zjqhoemlxzubci1c
388060
387391
2026-08-06T00:56:37Z
MacTire02
219
ronney elley
388060
wikitext
text/x-wiki
{{Navseasoncats}}
[[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash| Blein]]
[[Ronney:Yn Impiraght Ghoaldagh rere blein|19]]
[[Ronney:19oo eash rere çheer as blein|Ghoaldagh, Impiraght]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein| Impiraght]]
6ewj55psy21sm7l8b8opt6jnldnq6zb
Ronney:Yn Impiraght Ghoaldagh rere blein
14
53951
387392
2026-08-05T15:58:05Z
MacTire02
219
ronney noa
387392
wikitext
text/x-wiki
[[Ronney:Shennaghys yn Impiraght Ghoaldagh rere earish|Blein]]
[[Ronney:Bleeantyn rere impiraght|Ghoaldagh]]
[[ROnney:Yn Reeriaght Unnaneysit rere blein| Impiraght]]
6vc46xl5ijds7zgcmw6vec7sy8sco8g
Ronney:Bleeantyn rere impiraght
14
53952
387393
2026-08-05T15:59:21Z
MacTire02
219
ronney noa
387393
wikitext
text/x-wiki
{{moir-ronney}}
{{Category see also|Jeihaghtyn rere impiraght|Eashyn rere impiraght|Milley bleeantyn rere impiraght}}
[[Ronney:Shennaghys rere impiraght|.Blein]]
[[Ronney:Bleeantyn rere çheer| Impiraght]]
56k5dhjqsne1yv2qw3b5hxxo8jnrcqp
Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash
14
53953
387394
2026-08-05T16:00:51Z
MacTire02
219
ronney noa
387394
wikitext
text/x-wiki
{{Navseasoncats}}
[[Ronney:Yn Impiraght Ghoaldagh rere eash|19]]
[[Ronney:19oo eash rere çheer|Ghoaldagh, Impiraght]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash| Impiraght]]
2l1enfxv3b7ox9jyi4lc19nc5ugm9du
387395
387394
2026-08-05T16:01:41Z
MacTire02
219
++
387395
wikitext
text/x-wiki
{{Navseasoncats}}
{{Category pair|Yn Impiraght Ghoaldagh 'sy 18oo eash|Croghaneyn y Reeriaght Unnaneysit 'sy 20oo eash}}
[[Ronney:Yn Impiraght Ghoaldagh rere eash|19]]
[[Ronney:19oo eash rere çheer|Ghoaldagh, Impiraght]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash| Impiraght]]
tuf11pj1zkuu7zo6vimna0sihphjdgj
Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash
14
53954
387396
2026-08-05T16:06:54Z
MacTire02
219
ronney noa
387396
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}}
*'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh).
::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit rere eash|19]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]]
[[Ronney:19oo rere eash|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]]
l4alays8xdxisanggv0fvtil7jtl0ag
387397
387396
2026-08-05T16:07:13Z
MacTire02
219
ronney elley
387397
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}}
*'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh).
::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit rere eash|19]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]]
[[Ronney:19oo rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]]
jau6fn1rttfrpjyqbld61h20bbs0lnm
387398
387397
2026-08-05T16:07:26Z
MacTire02
219
ronney elley
387398
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}}
*'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh).
::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit rere eash|19]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]]
[[Ronney:19oo eash rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]]
iwu95o4d08tykkdy83o3t4f9dcmjpwv
388150
387398
2026-08-06T02:19:10Z
MacTire02
219
catsort
388150
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}}
*'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh).
::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit rere eash|19]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 19]]
[[Ronney:19oo eash rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]]
bzxb6xg720ybc6j7brptkr6veqgxfyo
Ronney:Yn Oarpey 'sy 19oo eash rere blein
14
53955
387399
2026-08-05T16:09:29Z
MacTire02
219
ronney noa
387399
wikitext
text/x-wiki
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 19oo eash| Blein]]
[[Ronney:Yn Oarpey rere blein|19]]
[[Ronney:Bleeantyn y 19oo eash rere mooar-rheynn|Oarpey]]
f8e0la2xmm4fljl6imtzhpigqe2ui2m
388046
387399
2026-08-06T00:38:04Z
MacTire02
219
ronney elley
388046
wikitext
text/x-wiki
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 19oo eash| Blein]]
[[Ronney:Yn Oarpey rere blein|19]]
[[Ronney:19oo eash rere mooar-rheynn rere blein|Oarpey]]
pqzo7macdhgzng0ag10ad7e1laqic83
388047
388046
2026-08-06T00:38:15Z
MacTire02
219
ronney elley
388047
wikitext
text/x-wiki
{{navseasoncats}}
[[Ronney:Yn Oarpey 'sy 19oo eash| Blein]]
[[Ronney:Yn Oarpey rere blein|19]]
[[Ronney:19oo eash rere mooar-rheynn as blein|Oarpey]]
sx6ul210wk81wgmugjgoha7hb7w4azy
Ronney:19oo eash rere mooar-rheynn as blein
14
53956
387400
2026-08-05T16:10:45Z
MacTire02
219
ronney noa
387400
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|19]]
[[Ronney:19oo eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:19oo eash rere blein| Mooar-rheynn]]
hgmyblvcfjko4orxz9yp9y0yc57bttv
388045
387400
2026-08-06T00:37:27Z
MacTire02
219
MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash rere mooar-rheynn]] to [[Ronney:19oo eash rere mooar-rheynn as blein]] without leaving a redirect
387400
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|19]]
[[Ronney:19oo eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:19oo eash rere blein| Mooar-rheynn]]
hgmyblvcfjko4orxz9yp9y0yc57bttv
Clowan:StiuragRonnaghynBleeantyn
10
53957
387407
2026-08-05T16:24:00Z
MacTire02
219
clowan noa
387407
wikitext
text/x-wiki
<includeonly>
{{#invoke:StiuragRonnaghynBleeantyn|main}}
</includeonly>
<noinclude>
Ta'n cowan shoh croo ronnaghyn bleeaney, eash, as jeihaght.
</noinclude>
0s6tllk7iljniw67wcdo4pbr7w4tj2u
387411
387407
2026-08-05T16:29:25Z
MacTire02
219
++
387411
wikitext
text/x-wiki
<includeonly>
{{catmore}}
{{Commonscat}}
{{category series navigation}}
{{#invoke:StiuragRonnaghynBleeantyn|main}}
</includeonly>
<noinclude>
Ta'n cowan shoh croo ronnaghyn bleeaney, eash, as jeihaght.
</noinclude>
02jlapb8ztafs3hprfaotg9or8oqj8f
Module:StiuragRonnaghynBleeantyn
828
53958
387408
2026-08-05T16:25:36Z
MacTire02
219
moddyl noa
387408
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century
if bc then
-- BC centuries count backwards:
-- 1 BC = 1st century BC
-- 100 BC = 1st century BC
-- 101 BC = 2nd century BC
century = math.floor((year - 1) / 100) + 1
else
-- AD:
-- 1-100 = 1st
-- 101-200 = 2nd
century = math.floor((year - 1) / 100) + 1
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade
if bc then
decade = math.floor(year / 10) * 10
else
decade = math.floor(year / 10) * 10
end
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
local output = {}
table.insert(output, "{{catmore}}")
table.insert(output, "{{Commonscat}}")
table.insert(output, "{{category series navigation}}")
if bc then
table.insert(
output,
string.format(
"[[Ronney:%dme eash rere blein RC|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC|%d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%doo eash rere blein|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn|%d]]",
decade,
lastDigit
)
)
end
return table.concat(output,"\n")
end
return p
sx8jsyifclcnz0ak4su46to0csdkyzf
387409
387408
2026-08-05T16:26:48Z
MacTire02
219
++
387409
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century
if bc then
-- BC centuries count backwards:
-- 1 BC = 1st century BC
-- 100 BC = 1st century BC
-- 101 BC = 2nd century BC
century = math.floor((year - 1) / 100) + 1
else
-- AD:
-- 1-100 = 1st
-- 101-200 = 2nd
century = math.floor((year - 1) / 100) + 1
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade
if bc then
decade = math.floor(year / 10) * 10
else
decade = math.floor(year / 10) * 10
end
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
if bc then
table.insert(
output,
string.format(
"[[Ronney:%dme eash rere blein RC|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC|%d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%doo eash rere blein|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn|%d]]",
decade,
lastDigit
)
)
end
return table.concat(output,"\n")
end
return p
jg4i8o5whsvy2af1cvn6env6x23a386
387410
387409
2026-08-05T16:27:04Z
MacTire02
219
Undid revision [[Special:Diff/387409|387409]] by [[Special:Contributions/MacTire02|MacTire02]] ([[User talk:MacTire02|talk]])
387410
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century
if bc then
-- BC centuries count backwards:
-- 1 BC = 1st century BC
-- 100 BC = 1st century BC
-- 101 BC = 2nd century BC
century = math.floor((year - 1) / 100) + 1
else
-- AD:
-- 1-100 = 1st
-- 101-200 = 2nd
century = math.floor((year - 1) / 100) + 1
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade
if bc then
decade = math.floor(year / 10) * 10
else
decade = math.floor(year / 10) * 10
end
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
local output = {}
table.insert(output, "{{catmore}}")
table.insert(output, "{{Commonscat}}")
table.insert(output, "{{category series navigation}}")
if bc then
table.insert(
output,
string.format(
"[[Ronney:%dme eash rere blein RC|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC|%d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%doo eash rere blein|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn|%d]]",
decade,
lastDigit
)
)
end
return table.concat(output,"\n")
end
return p
sx8jsyifclcnz0ak4su46to0csdkyzf
387412
387410
2026-08-05T16:29:56Z
MacTire02
219
++
387412
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century
if bc then
-- BC centuries count backwards:
-- 1 BC = 1st century BC
-- 100 BC = 1st century BC
-- 101 BC = 2nd century BC
century = math.floor((year - 1) / 100) + 1
else
-- AD:
-- 1-100 = 1st
-- 101-200 = 2nd
century = math.floor((year - 1) / 100) + 1
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade
if bc then
decade = math.floor(year / 10) * 10
else
decade = math.floor(year / 10) * 10
end
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
local output = {}
if bc then
table.insert(
output,
string.format(
"[[Ronney:%dme eash rere blein RC|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC|%d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%doo eash rere blein|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn|%d]]",
decade,
lastDigit
)
)
end
return table.concat(output,"\n")
end
return p
mcocl7jok3o20a7z86ixqi2okd57e30
387420
387412
2026-08-05T16:46:23Z
MacTire02
219
catsort
387420
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century
if bc then
-- BC centuries count backwards:
-- 1 BC = 1st century BC
-- 100 BC = 1st century BC
-- 101 BC = 2nd century BC
century = math.floor((year - 1) / 100) + 1
else
-- AD:
-- 1-100 = 1st
-- 101-200 = 2nd
century = math.floor((year - 1) / 100) + 1
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade
if bc then
decade = math.floor(year / 10) * 10
else
decade = math.floor(year / 10) * 10
end
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
local output = {}
if bc then
table.insert(
output,
string.format(
"[[Ronney:%dme eash rere blein RC|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC| %d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%doo eash rere blein|%02d]]",
century,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn| %d]]",
decade,
lastDigit
)
)
end
return table.concat(output,"\n")
end
return p
gcgo4zf71sfw7azk6yfk9srojvjwxj7
387494
387420
2026-08-05T17:51:54Z
MacTire02
219
oo > d/h
387494
Scribunto
text/plain
local p = {}
function p.main(frame)
local title = mw.title.getCurrentTitle()
local name = title.text
-- Remove namespace
name = name:gsub("^Ronney:", "")
local year
local bc = false
-- Detect BC
if name:match("RC") then
bc = true
year = tonumber(name:match("(%d+)"))
else
year = tonumber(name:match("(%d+)"))
end
if not year then
return ""
end
--------------------------------------------------
-- Calculate century
--------------------------------------------------
local century = math.floor((year - 1) / 100) + 1
--------------------------------------------------
-- Century suffix
--------------------------------------------------
local centurySuffix
local lastCenturyDigit = century % 10
if lastCenturyDigit == 1 then
centurySuffix = "d"
elseif lastCenturyDigit == 2 then
centurySuffix = "h"
else
centurySuffix = "oo"
end
--------------------------------------------------
-- Century sort key
--------------------------------------------------
local centurySort = year % 100
if centurySort == 0 then
centurySort = 100
end
--------------------------------------------------
-- Decade
--------------------------------------------------
local decade = math.floor(year / 10) * 10
--------------------------------------------------
-- Last digit sort
--------------------------------------------------
local lastDigit = year % 10
--------------------------------------------------
-- Build output
--------------------------------------------------
local output = {}
if bc then
table.insert(
output,
string.format(
"[[Ronney:%d%s eash rere blein RC|%02d]]",
century,
centurySuffix,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn RC| %d]]",
decade,
lastDigit
)
)
else
table.insert(
output,
string.format(
"[[Ronney:%d%s eash rere blein|%02d]]",
century,
centurySuffix,
centurySort
)
)
table.insert(
output,
string.format(
"[[Ronney:%dyn| %d]]",
decade,
lastDigit
)
)
end
return table.concat(output, "\n")
end
return p
dgcgx0topqbnr1qrxn7jeh0hse1xl23
Ronney:1772
14
53959
387768
2026-08-05T23:32:31Z
MacTire02
219
ronney noa
387768
wikitext
text/x-wiki
{{StiuragRonnaghynBleeantyn}}
4f1flr0salewservci5rwxkecdn1dod
Ronney:20oo eash rere mooar-rheynn as blein
14
53960
388052
2026-08-06T00:43:10Z
MacTire02
219
ronney noa
388052
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|20]]
[[Ronney:20oo eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:20oo eash rere blein| Mooar-rheynn]]
ggdpa99cgk5nh8c8c8eccercxeo4fbx
Ronney:21d eash rere mooar-rheynn as blein
14
53961
388053
2026-08-06T00:50:17Z
MacTire02
219
ronney noa
388053
wikitext
text/x-wiki
{{moir-ronney}}
{{Navseasoncats}}
[[Ronney:Bleeantyn rere eash as mooar-rheynn|21]]
[[Ronney:21d eash rere mooar-rheynn| Bleeantyn]]
[[Ronney:21d eash rere blein| Mooar-rheynn]]
5baoo5h3mgwzp6s49gxzhbmfkn0tg3x
Ronney:Yn Ookraan 'sy 21d eash
14
53962
388071
2026-08-06T01:06:05Z
MacTire02
219
ronney noa
388071
wikitext
text/x-wiki
{{Commons category|Ukraine in the 21st century|Yn Ookraan 'sy 21d eash}}
{{Navseasoncats}}
[[Ronney:Yn Ookraan rere eash|21]]
[[Ronney:Yn Oarpey 'sy 21d eash|Ookraan]]
[[Ronney:21d eash rere çheer|Ookraan]]
[[Ronney:Yn Ookraan 'sy 3oo milley bleeaney|21]]
[[Ronney:Shennaghys noa-emshiragh yn Ookraan| 21]]
ih1sx3v8ml68ktplakqx89gwlx2zs9y
Ronney:Yn Ookraan rere eash
14
53963
388072
2026-08-06T01:08:17Z
MacTire02
219
ronney noa
388072
wikitext
text/x-wiki
{{moir-ronney}}
{{Commons category|Ukraine by century|Yn Ookraan rere eash}}
[[Ronney:Eashyn rere çheer|Ookraan]]
[[Ronney:Shennaghys yn Ookraan rere earish|Eash]]
[[Ronney:Yn Oarpey rere eash|Ookraan]]
f5qqd2ja39prt407c6r6ty2qpwome79
Ronney:21d eash rere blein
14
53964
388073
2026-08-06T01:10:31Z
MacTire02
219
ronney noa
388073
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|21]]
[[Ronney:21d eash]]
lz2gg4bppg642p7p6ovhf7vr0ymjquw
Ronney:1860yn rere çheer
14
53965
388074
2026-08-06T01:12:17Z
MacTire02
219
ronney noa
388074
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1860s by country|1860yn rere çheer}}
[[Ronney:1860yn|.Cheer]]
[[Ronney:Jeihaghtyn y 19oo eash rere çheer| 60]]
38aj8bb6e52djwpmbaozgj0onltpi63
388102
388074
2026-08-06T01:25:39Z
MacTire02
219
ronney elley
388102
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|1860s by country|1860yn rere çheer}}
[[Ronney:1860yn|.Cheer]]
[[Ronney:19oo eash rere çheer as jeihaght| 60]]
5fkgdlm43c5a0icmv3gv9ne828d5og5
Ronney:Croghaneyn-crooin 'sy 20oo eash
14
53966
388112
2026-08-06T01:34:00Z
MacTire02
219
ronney noa
388112
wikitext
text/x-wiki
{{Navseasoncats}}
{{Category see also if exists|Thallooyn Harrish Mooir Goaldagh 'sy 20oo eash|Yn Impiraght Ghoaldagh 'sy 20oo eash}}
[[Ronney:Croghaneyn-crooin rere eash|20]]
[[Ronney:Yn Oarpey 'sy 20oo eash]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash|-Croghaneyn]]
ckedl81haxtemjq2rx0lpzax902gmjr
Ronney:Croghaneyn-crooin ayns ny 1990yn
14
53968
388126
2026-08-06T01:43:56Z
MacTire02
219
ronney noa
388126
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1990yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1990]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1990]]
[[Ronney:Yn Oarpey ayns ny 1990yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1990yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1990yn|-Croghaneyn-crooin]]
mfvwhnc97ckh8p1cjxj4kcrh4ps6pua
Ronney:Croghaneyn-crooin ayns ny 2000yn
14
53969
388127
2026-08-06T01:44:59Z
MacTire02
219
ronney noa
388127
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2000yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 21d eash| 2000]]
[[Ronney:Croghaneyn-crooin rere jeihaght|2000]]
[[Ronney:Yn Oarpey ayns ny 2000yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2000yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 2000yn|-Croghaneyn-crooin]]
5nkx1nnbhxxjfvuahjdxll72kvx1e4x
Ronney:Croghaneyn-crooin ayns ny 2010yn
14
53970
388128
2026-08-06T01:47:20Z
MacTire02
219
ronney noa
388128
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2010yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 21d eash| 2010]]
[[Ronney:Croghaneyn-crooin rere jeihaght|2010]]
[[Ronney:Yn Oarpey ayns ny 2010yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2010yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 2010yn|-Croghaneyn-crooin]]
3m3eglfc3igrlt6fvzoo0wb683xpblp
Ronney:Croghaneyn-crooin ayns ny 1970yn
14
53971
388129
2026-08-06T01:48:42Z
MacTire02
219
ronney noa
388129
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1970yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1970]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1970]]
[[Ronney:Yn Oarpey ayns ny 1970yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]]
toekj1n32wyduh4nkag2ldb2pq7o34p
388160
388129
2026-08-06T02:27:23Z
MacTire02
219
-ronney
388160
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1970yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1970]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1970]]
[[Ronney:Yn Oarpey ayns ny 1970yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]]
mkutv7ircppymqy441s8ng0sjus1a4o
Ronney:Croghaneyn-crooin ayns ny 1960yn
14
53972
388130
2026-08-06T01:49:33Z
MacTire02
219
ronney noa
388130
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1960yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1960]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1960]]
[[Ronney:Yn Oarpey ayns ny 1960yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]]
24q7ecqjbpgds9fyuhwsq7yk0qcaj71
388159
388130
2026-08-06T02:27:02Z
MacTire02
219
ronney elley
388159
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1960yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1960]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1960]]
[[Ronney:Yn Oarpey ayns ny 1960yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]]
2iyvwajj5uoq85l9xm099evoy8chi2o
Ronney:Croghaneyn-crooin ayns ny 1950yn
14
53973
388131
2026-08-06T01:50:39Z
MacTire02
219
ronney noa
388131
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1950yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1950]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1950]]
[[Ronney:Yn Oarpey ayns ny 1950yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]]
j5fs10j8qufhsnw9snuonl7yp7c1nbh
388158
388131
2026-08-06T02:26:41Z
MacTire02
219
-ronney
388158
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1950yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1950]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1950]]
[[Ronney:Yn Oarpey ayns ny 1950yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]]
kvrxazh1yagp1kitvwhohn8zpmnim7q
Ronney:Croghaneyn-crooin ayns ny 1940yn
14
53974
388132
2026-08-06T01:51:20Z
MacTire02
219
ronney noa
388132
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1940yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1940]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1940]]
[[Ronney:Yn Oarpey ayns ny 1940yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]]
e5qo6if760ogdzfcz5kt2fatduj3oia
388157
388132
2026-08-06T02:26:11Z
MacTire02
219
ronney elley
388157
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1940yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1940]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1940]]
[[Ronney:Yn Oarpey ayns ny 1940yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]]
js6lhfen16nx2wva1hljusscfsrpbaz
Ronney:Croghaneyn-crooin ayns ny 1920yn
14
53975
388133
2026-08-06T01:52:03Z
MacTire02
219
ronney noa
388133
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1920yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1920]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1920]]
[[Ronney:Yn Oarpey ayns ny 1920yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]]
8j2c1pmeaaq8ttizb3230xu7d4v7vo2
388155
388133
2026-08-06T02:25:03Z
MacTire02
219
-ronney
388155
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1920yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1920]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1920]]
[[Ronney:Yn Oarpey ayns ny 1920yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]]
2gvt0w4ad2iamxot4csz9lfq6uvhfkk
Ronney:Croghaneyn-crooin ayns ny 2020yn
14
53976
388134
2026-08-06T01:54:43Z
MacTire02
219
ronney noa
388134
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:20200yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 21d eash| 2020]]
[[Ronney:Croghaneyn-crooin rere jeihaght|2020]]
[[Ronney:Yn Oarpey ayns ny 2020yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]]
1rhayuikyurfy0705zblq6q24osqcbx
388135
388134
2026-08-06T01:54:55Z
MacTire02
219
ronney elley
388135
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:2020yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 21d eash| 2020]]
[[Ronney:Croghaneyn-crooin rere jeihaght|2020]]
[[Ronney:Yn Oarpey ayns ny 2020yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]]
2wf6h5ge1vfbat81apdab13gbz3q2no
Ronney:Croghaneyn-crooin rere jeihaght
14
53977
388136
2026-08-06T01:57:18Z
MacTire02
219
ronney noa
388136
wikitext
text/x-wiki
[[Ronney:Croghaneyn-crooin|*]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit rere jeihaght| Croghane-crooin]]
[[Ronney:Yn Oarpey rere jeihaght]]
28dak4urlio6zn91adxy5z85hl8vcgn
Ronney:Croghaneyn-crooin 'sy 21d eash
14
53978
388137
2026-08-06T01:59:54Z
MacTire02
219
ronney noa
388137
wikitext
text/x-wiki
{{Navseasoncats}}
{{Category see also if exists|Thallooyn Harrish Mooir Goaldagh 'sy 21d eash}}
[[Ronney:Croghaneyn-crooin rere eash|21]]
[[Ronney:Yn Oarpey 'sy 20oo eash]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash|-Croghaneyn-crooin]]
8lwqf8a0hgn1xdqm4g439eiia6qry1n
Ronney:Yn Reeriaght Unnaneysit ayns ny 2000yn
14
53979
388138
2026-08-06T02:02:37Z
MacTire02
219
ronney noa
388138
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 2000s|Yn Reeriaght Unnaneysit ayns ny 2000yn}}
{{Navseasoncats}}
[[Ronney:2000yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|2000]]
[[Ronney:Yn Oarpey rere 2000yn|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| 2000]]
8rccpgbkyr7m1tv8e2my0elnfiruum5
388139
388138
2026-08-06T02:02:48Z
MacTire02
219
ronney elley
388139
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 2000s|Yn Reeriaght Unnaneysit ayns ny 2000yn}}
{{Navseasoncats}}
[[Ronney:2000yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|2000]]
[[Ronney:Yn Oarpey ayns ny 2000yn|Reeriaght Unnaneysit]]
[[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| 2000]]
qiugf2s467vqloxi5yn99pot9n9pspm
Ronney:Yn Oarpey ayns ny 2000yn
14
53980
388140
2026-08-06T02:04:43Z
MacTire02
219
ronney noa
388140
wikitext
text/x-wiki
{{Navseasoncats}}
{{Commons category|Europe in the 2000s|Yn Oarpey ayns ny 2000yn}}
{{CatAutoTOC}}
[[Ronney:2000yn rere mooar-rheynn|Oarpey]]
[[Ronney:Yn Oarpey rere jeihaght|2000]]
[[Ronney:Yn Oarpey 'sy 21d eash| 2000]]
9l93te6zvm1bt77rbuvpjsw7v4vg0pp
Ronney:2000yn rere mooar-rheynn
14
53981
388141
2026-08-06T02:07:29Z
MacTire02
219
ronney noa
388141
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2000s by continent|2000yn rere mooar-rheynn}}
[[Ronney:2000yn| Mooar-rheynn]]
[[Ronney:Jeihaghtyn rere mooar-rheynn|2000]]
[[Ronney:21d eash rere mooar-rheynn| 2000]]
[[Ronney:Shennaghys co-emshiragh rere mooar-rheynn]]
jdg500pe8bvrklumnhjifw8i9xdqkvm
388142
388141
2026-08-06T02:07:46Z
MacTire02
219
ronney elley
388142
wikitext
text/x-wiki
{{category series navigation}}
{{Commons category|2000s by continent|2000yn rere mooar-rheynn}}
[[Ronney:2000yn| Mooar-rheynn]]
[[Ronney:Jeihaghtyn rere mooar-rheynn|2000]]
[[Ronney:21d eash rere mooar-rheynn|2000]]
[[Ronney:Shennaghys co-emshiragh rere mooar-rheynn]]
0sczds9gxrtgiol94sv4a7fspjwn7a4
Ronney:Yn Reeriaght Unnaneysit ayns ny 1990yn
14
53982
388144
2026-08-06T02:13:11Z
MacTire02
219
ronney noa
388144
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1990s|Yn Reeriaght Unnaneysit ayns ny 1990yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1990]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1990]]
[[Ronney:1990yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1990yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit|1990yn]]
ikoxerxku1l7a9jhkg5nc1ip8zol8xa
388145
388144
2026-08-06T02:13:24Z
MacTire02
219
catsort
388145
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1990s|Yn Reeriaght Unnaneysit ayns ny 1990yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1990]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1990]]
[[Ronney:1990yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1990yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1990yn]]
nra6y8lifv51e2tnsq21drd8u5rcno2
Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn
14
53983
388146
2026-08-06T02:14:38Z
MacTire02
219
ronney noa
388146
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1960s|Yn Reeriaght Unnaneysit ayns ny 1960yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1960]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1960]]
[[Ronney:1960yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1960yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1960]]
qpvfknp1zhpwwijpfgn1vjxlvzxuf69
Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn
14
53984
388147
2026-08-06T02:15:35Z
MacTire02
219
ronney noa
388147
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1970s|Yn Reeriaght Unnaneysit ayns ny 1970yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1970]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1970]]
[[Ronney:1970yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1970yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1970]]
h3ojypi2rlmejpphtegwnmmn3bhd34v
Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn
14
53985
388148
2026-08-06T02:16:36Z
MacTire02
219
ronney noa
388148
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1940s|Yn Reeriaght Unnaneysit ayns ny 1940yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1940]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1940]]
[[Ronney:1940yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1940yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1940]]
468450nkohbho8mljd47lpl7tamkhbn
388149
388148
2026-08-06T02:18:11Z
MacTire02
219
+ronney
388149
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1940s|Yn Reeriaght Unnaneysit ayns ny 1940yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1940]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1940]]
[[Ronney:1940yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1940yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1940]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1940]]
aq3czt6bpztcjjvuou3ninj6fh7i58t
Ronney:Croghaneyn-crooin ayns ny 1910yn
14
53986
388151
2026-08-06T02:20:05Z
MacTire02
219
ronney noa
388151
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1910yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1910]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1910]]
[[Ronney:Yn Oarpey ayns ny 1910yn]]
[[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]]
gvyikyep8sy09cl8i2ikymlnvv3oumu
388153
388151
2026-08-06T02:22:47Z
MacTire02
219
-ronney
388153
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:1910yn rere çheer]]
[[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1910]]
[[Ronney:Croghaneyn-crooin rere jeihaght|1910]]
[[Ronney:Yn Oarpey ayns ny 1910yn]]
[[Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]]
g0bnairingoeuisf5k30yr8bl4y6cwc
Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn
14
53988
388154
2026-08-06T02:23:58Z
MacTire02
219
ronney noa
388154
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1910s|Yn Reeriaght Unnaneysit ayns ny 1910yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1910]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1910]]
[[Ronney:1910yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1910yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1910]]
2y77lkzdyw62aq09tvet0g1rl2hwv7c
Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn
14
53989
388156
2026-08-06T02:25:32Z
MacTire02
219
ronney noa
388156
wikitext
text/x-wiki
{{Commons category|United Kingdom in the 1920s|Yn Reeriaght Unnaneysit ayns ny 1920yn}}
{{Navseasoncats}}
[[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1920]]
[[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1920]]
[[Ronney:1920yn rere çheer|Reeriaght Unnaneysit]]
[[Ronney:Yn Oarpey ayns ny 1920yn|Reeriaght Unnaneysit]]
[[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1920]]
nttfcjfdym9rlkjl9ncb71r0uvhen7b
Ronney:18oo eash rere blein
14
53990
388161
2026-08-06T02:28:12Z
MacTire02
219
ronney noa
388161
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|18]]
[[Ronney:18oo eash]]
b8dqw90779p8yp0ooy6yum82ukyoqom
Ronney:17oo eash rere blein
14
53991
388162
2026-08-06T02:29:43Z
MacTire02
219
ronney noa
388162
wikitext
text/x-wiki
{{category series navigation}}
[[Ronney:Bleeantyn rere eash|17]]
[[Ronney:17oo eash]]
6l2kj5lq96f9cv13u0hueh64gb890ij