diff options
| author | Open-IOV <dev@open-iov.org> | 2026-09-23 05:44:08 -0400 |
|---|---|---|
| committer | Open-IOV <dev@open-iov.org> | 2026-09-23 05:46:43 -0400 |
| commit | 2302fc09080bad51c73f293294e19fd4db464eb0 (patch) | |
| tree | c722d186347fdef5a34131e9e143b1549b1daf8e /wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector | |
| download | open-iov-2302fc09080bad51c73f293294e19fd4db464eb0.tar.gz open-iov-2302fc09080bad51c73f293294e19fd4db464eb0.zip | |
Open-IOV: initial public release
Open-IOV virtualizes NVIDIA GPUs so that unmodified guest drivers run with
real GPU functionality - CUDA first, 3D and video to follow - on unmodified
hosts, without a proprietary vGPU license and without patching any driver,
firmware or hypervisor.
Core principle: emulate the interface, pass through the work.
kernel/ open-iov-vfio.ko - host VFIO mdev driver: virtual GPU device
(PCI config space, BAR shadows, MSI-X), GSP boot emulation,
GSP-RM message-queue/RPC emulation, memory model (GPU-VA to
guest-PA discovery) and the semaphore-completion service that
advances guest UVM progress.
userspace/ libiov.so management API and examples.
tools/ guest diagnostics, firmware analysis wrappers, RM probes.
scripts/ stack manager, VM harness, build/load/test automation.
config/ hardware/version profiles (the portability surface).
docs/ documentation tree - start at docs/README.md.
wiki/ long-form firmware and protocol deep dives.
Status: initialization works end to end for a stock 570.144 Linux guest on
Turing (TU104): driver probe, nvidia-smi, the full GSP-RM control battery,
object creation and the early CUDA/UVM start-up path. GPU work forwarding -
the step that makes CUDA kernels execute on real hardware - is the active
work item; see docs/04-implementation/01-known-knowns-and-unknowns.md.
License: BSD-3-Clause for the project; GPL-2.0 for kernel modules that link
GPL-only kernel interfaces. See LICENSE and docs/09-reference/legal-and-licensing.md.
Diffstat (limited to 'wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector')
| -rw-r--r-- | wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector b/wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector new file mode 100644 index 0000000..c66167e --- /dev/null +++ b/wiki/open-iov.org/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector @@ -0,0 +1,37 @@ +function isCompatible(ua){return!!((function(){'use strict';return!this&&Function.prototype.bind&&window.JSON;}())&&'querySelector'in document&&'localStorage'in window&&'addEventListener'in window&&!ua.match(/MSIE 10|NetFront|Opera Mini|S40OviBrowser|MeeGo|Android.+Glass|^Mozilla\/5\.0 .+ Gecko\/$|googleweblight|PLAYSTATION|PlayStation/));}if(!isCompatible(navigator.userAgent)){document.documentElement.className=document.documentElement.className.replace(/(^|\s)client-js(\s|$)/,'$1client-nojs$2');while(window.NORLQ&&NORLQ[0]){NORLQ.shift()();}NORLQ={push:function(fn){fn();}};RLQ={push:function(){}};}else{if(window.performance&&performance.mark){performance.mark('mwStartup');}(function(){'use strict';var mw,log,con=window.console;function logError(topic,data){var msg,e=data.exception;if(con.log){msg=(e?'Exception':'Error')+' in '+data.source+(data.module?' in module '+data.module:'')+(e?':':'.');con.log(msg);if(e&&con.warn){con.warn(e);}}}function Map(){this.values=Object.create(null);} +Map.prototype={constructor:Map,get:function(selection,fallback){var results,i;fallback=arguments.length>1?fallback:null;if(Array.isArray(selection)){results={};for(i=0;i<selection.length;i++){if(typeof selection[i]==='string'){results[selection[i]]=selection[i]in this.values?this.values[selection[i]]:fallback;}}return results;}if(typeof selection==='string'){return selection in this.values?this.values[selection]:fallback;}if(selection===undefined){results={};for(i in this.values){results[i]=this.values[i];}return results;}return fallback;},set:function(selection,value){if(arguments.length>1){if(typeof selection==='string'){this.values[selection]=value;return!0;}}else if(typeof selection==='object'){for(var s in selection){this.values[s]=selection[s];}return!0;}return!1;},exists:function(selection){return typeof selection==='string'&&selection in this.values;}};log=function(){};log.warn=con.warn?Function.prototype.bind.call(con.warn,con):function(){};mw={now:function(){var perf= +window.performance,navStart=perf&&perf.timing&&perf.timing.navigationStart;mw.now=navStart&&perf.now?function(){return navStart+perf.now();}:Date.now;return mw.now();},trackQueue:[],track:function(topic,data){mw.trackQueue.push({topic:topic,data:data});},trackError:function(topic,data){mw.track(topic,data);logError(topic,data);},Map:Map,config:new Map(),messages:new Map(),templates:new Map(),log:log};window.mw=window.mediaWiki=mw;}());(function(){'use strict';var StringSet,store,loader,hasOwn=Object.hasOwnProperty;function defineFallbacks(){StringSet=window.Set||function(){var set=Object.create(null);return{add:function(value){set[value]=!0;},has:function(value){return value in set;}};};}defineFallbacks();function fnv132(str){var hash=0x811C9DC5,i=0;for(;i<str.length;i++){hash+=(hash<<1)+(hash<<4)+(hash<<7)+(hash<<8)+(hash<<24);hash^=str.charCodeAt(i);}hash=(hash>>>0).toString(36).slice(0,5);while(hash.length<5){hash='0'+hash;}return hash;}var isES6Supported=typeof Promise=== +'function'&&Promise.prototype.finally&&/./g.flags==='g'&&(function(){try{new Function('var \ud800\udec0;');return!0;}catch(e){return!1;}}());var registry=Object.create(null),sources=Object.create(null),handlingPendingRequests=!1,pendingRequests=[],queue=[],jobs=[],willPropagate=!1,errorModules=[],baseModules=["jquery","mediawiki.base"],marker=document.querySelector('meta[name="ResourceLoaderDynamicStyles"]'),lastCssBuffer,rAF=window.requestAnimationFrame||setTimeout;function newStyleTag(text,nextNode){var el=document.createElement('style');el.appendChild(document.createTextNode(text));if(nextNode&&nextNode.parentNode){nextNode.parentNode.insertBefore(el,nextNode);}else{document.head.appendChild(el);}return el;}function flushCssBuffer(cssBuffer){if(cssBuffer===lastCssBuffer){lastCssBuffer=null;}newStyleTag(cssBuffer.cssText,marker);for(var i=0;i<cssBuffer.callbacks.length;i++){cssBuffer.callbacks[i]();}}function addEmbeddedCSS(cssText,callback){if(!lastCssBuffer||cssText. +slice(0,7)==='@import'){lastCssBuffer={cssText:'',callbacks:[]};rAF(flushCssBuffer.bind(null,lastCssBuffer));}lastCssBuffer.cssText+='\n'+cssText;lastCssBuffer.callbacks.push(callback);}function getCombinedVersion(modules){var hashes=modules.reduce(function(result,module){return result+registry[module].version;},'');return fnv132(hashes);}function allReady(modules){for(var i=0;i<modules.length;i++){if(loader.getState(modules[i])!=='ready'){return!1;}}return!0;}function allWithImplicitReady(module){return allReady(registry[module].dependencies)&&(baseModules.indexOf(module)!==-1||allReady(baseModules));}function anyFailed(modules){for(var i=0;i<modules.length;i++){var state=loader.getState(modules[i]);if(state==='error'||state==='missing'){return modules[i];}}return!1;}function doPropagation(){var module,i,job,didPropagate=!0;while(didPropagate){didPropagate=!1;while(errorModules.length){var errorModule=errorModules.shift(),baseModuleError=baseModules.indexOf(errorModule) +!==-1;for(module in registry){if(registry[module].state!=='error'&®istry[module].state!=='missing'){if(baseModuleError&&baseModules.indexOf(module)===-1){registry[module].state='error';didPropagate=!0;}else if(registry[module].dependencies.indexOf(errorModule)!==-1){registry[module].state='error';errorModules.push(module);didPropagate=!0;}}}}for(module in registry){if(registry[module].state==='loaded'&&allWithImplicitReady(module)){execute(module);didPropagate=!0;}}for(i=0;i<jobs.length;i++){job=jobs[i];var failed=anyFailed(job.dependencies);if(failed!==!1||allReady(job.dependencies)){jobs.splice(i,1);i-=1;try{if(failed!==!1&&job.error){job.error(new Error('Failed dependency: '+failed),job.dependencies);}else if(failed===!1&&job.ready){job.ready();}}catch(e){mw.trackError('resourceloader.exception',{exception:e,source:'load-callback'});}didPropagate=!0;}}}willPropagate=!1;}function setAndPropagate(module,state){registry[module].state=state;if(state==='ready'){ +store.add(module);}else if(state==='error'||state==='missing'){errorModules.push(module);}else if(state!=='loaded'){return;}if(willPropagate){return;}willPropagate=!0;mw.requestIdleCallback(doPropagation,{timeout:1});}function sortDependencies(module,resolved,unresolved){var e;if(!(module in registry)){e=new Error('Unknown module: '+module);e.name='DependencyError';throw e;}if(!isES6Supported&®istry[module].requiresES6){e=new Error('Module requires ES6 but ES6 is not supported: '+module);e.name='ES6Error';throw e;}if(typeof registry[module].skip==='string'){var skip=(new Function(registry[module].skip)());registry[module].skip=!!skip;if(skip){registry[module].dependencies=[];setAndPropagate(module,'ready');return;}}if(!unresolved){unresolved=new StringSet();}var deps=registry[module].dependencies;unresolved.add(module);for(var i=0;i<deps.length;i++){if(resolved.indexOf(deps[i])===-1){if(unresolved.has(deps[i])){e=new Error('Circular reference detected: '+module+' -> '+deps[i]);e. +name='DependencyError';throw e;}sortDependencies(deps[i],resolved,unresolved);}}resolved.push(module);}function resolve(modules){var resolved=baseModules.slice(),i=0;for(;i<modules.length;i++){sortDependencies(modules[i],resolved);}return resolved;}function resolveStubbornly(modules){var saved,resolved=baseModules.slice(),i=0;for(;i<modules.length;i++){saved=resolved.slice();try{sortDependencies(modules[i],resolved);}catch(err){resolved=saved;if(err.name==='ES6Error'){mw.log.warn('Skipped ES6-only module '+modules[i]);}else{mw.log.warn('Skipped unresolvable module '+modules[i]);if(modules[i]in registry){mw.trackError('resourceloader.exception',{exception:err,source:'resolve'});}}}}return resolved;}function resolveRelativePath(relativePath,basePath){var relParts=relativePath.match(/^((?:\.\.?\/)+)(.*)$/);if(!relParts){return null;}var baseDirParts=basePath.split('/');baseDirParts.pop();var prefixes=relParts[1].split('/');prefixes.pop();var prefix;while((prefix=prefixes.pop())!== +undefined){if(prefix==='..'){baseDirParts.pop();}}return(baseDirParts.length?baseDirParts.join('/')+'/':'')+relParts[2];}function makeRequireFunction(moduleObj,basePath){return function require(moduleName){var fileName=resolveRelativePath(moduleName,basePath);if(fileName===null){return loader.require(moduleName);}if(hasOwn.call(moduleObj.packageExports,fileName)){return moduleObj.packageExports[fileName];}var scriptFiles=moduleObj.script.files;if(!hasOwn.call(scriptFiles,fileName)){throw new Error('Cannot require undefined file '+fileName);}var result,fileContent=scriptFiles[fileName];if(typeof fileContent==='function'){var moduleParam={exports:{}};fileContent(makeRequireFunction(moduleObj,fileName),moduleParam);result=moduleParam.exports;}else{result=fileContent;}moduleObj.packageExports[fileName]=result;return result;};}function addScript(src,callback){var script=document.createElement('script');script.src=src;script.onload=script.onerror=function(){if(script.parentNode){script. +parentNode.removeChild(script);}if(callback){callback();callback=null;}};document.head.appendChild(script);}function queueModuleScript(src,moduleName,callback){pendingRequests.push(function(){if(moduleName!=='jquery'){window.require=loader.require;window.module=registry[moduleName].module;}addScript(src,function(){delete window.module;callback();if(pendingRequests[0]){pendingRequests.shift()();}else{handlingPendingRequests=!1;}});});if(!handlingPendingRequests&&pendingRequests[0]){handlingPendingRequests=!0;pendingRequests.shift()();}}function addLink(url,media,nextNode){var el=document.createElement('link');el.rel='stylesheet';if(media){el.media=media;}el.href=url;if(nextNode&&nextNode.parentNode){nextNode.parentNode.insertBefore(el,nextNode);}else{document.head.appendChild(el);}}function domEval(code){var script=document.createElement('script');if(mw.config.get('wgCSPNonce')!==!1){script.nonce=mw.config.get('wgCSPNonce');}script.text=code;document.head.appendChild(script); +script.parentNode.removeChild(script);}function enqueue(dependencies,ready,error){if(allReady(dependencies)){if(ready){ready();}return;}var failed=anyFailed(dependencies);if(failed!==!1){if(error){error(new Error('Dependency '+failed+' failed to load'),dependencies);}return;}if(ready||error){jobs.push({dependencies:dependencies.filter(function(module){var state=registry[module].state;return state==='registered'||state==='loaded'||state==='loading'||state==='executing';}),ready:ready,error:error});}dependencies.forEach(function(module){if(registry[module].state==='registered'&&queue.indexOf(module)===-1){queue.push(module);}});loader.work();}function execute(module){var key,value,media,i,siteDeps,siteDepErr,cssPending=0;if(registry[module].state!=='loaded'){throw new Error('Module in state "'+registry[module].state+'" may not execute: '+module);}registry[module].state='executing';var runScript=function(){var script=registry[module].script;var markModuleReady=function(){ +setAndPropagate(module,'ready');};var nestedAddScript=function(arr,j){if(j>=arr.length){markModuleReady();return;}queueModuleScript(arr[j],module,function(){nestedAddScript(arr,j+1);});};try{if(Array.isArray(script)){nestedAddScript(script,0);}else if(typeof script==='function'){if(module==='jquery'){script();}else{script(window.$,window.$,loader.require,registry[module].module);}markModuleReady();}else if(typeof script==='object'&&script!==null){var mainScript=script.files[script.main];if(typeof mainScript!=='function'){throw new Error('Main file in module '+module+' must be a function');}mainScript(makeRequireFunction(registry[module],script.main),registry[module].module);markModuleReady();}else if(typeof script==='string'){domEval(script);markModuleReady();}else{markModuleReady();}}catch(e){setAndPropagate(module,'error');mw.trackError('resourceloader.exception',{exception:e,module:module,source:'module-execute'});}};if(registry[module].messages){mw.messages.set(registry[module]. +messages);}if(registry[module].templates){mw.templates.set(module,registry[module].templates);}var cssHandle=function(){cssPending++;return function(){cssPending--;if(cssPending===0){var runScriptCopy=runScript;runScript=undefined;runScriptCopy();}};};if(registry[module].style){for(key in registry[module].style){value=registry[module].style[key];media=undefined;if(key!=='url'&&key!=='css'){if(typeof value==='string'){addEmbeddedCSS(value,cssHandle());}else{media=key;key='bc-url';}}if(Array.isArray(value)){for(i=0;i<value.length;i++){if(key==='bc-url'){addLink(value[i],media,marker);}else if(key==='css'){addEmbeddedCSS(value[i],cssHandle());}}}else if(typeof value==='object'){for(media in value){var urls=value[media];for(i=0;i<urls.length;i++){addLink(urls[i],media,marker);}}}}}if(module==='user'){try{siteDeps=resolve(['site']);}catch(e){siteDepErr=e;runScript();}if(!siteDepErr){enqueue(siteDeps,runScript,runScript);}}else if(cssPending===0){runScript();}}function sortQuery(o){var key, +sorted={},a=[];for(key in o){a.push(key);}a.sort();for(key=0;key<a.length;key++){sorted[a[key]]=o[a[key]];}return sorted;}function buildModulesString(moduleMap){var p,prefix,str=[],list=[];function restore(suffix){return p+suffix;}for(prefix in moduleMap){p=prefix===''?'':prefix+'.';str.push(p+moduleMap[prefix].join(','));list.push.apply(list,moduleMap[prefix].map(restore));}return{str:str.join('|'),list:list};}function makeQueryString(params){return Object.keys(params).map(function(key){return encodeURIComponent(key)+'='+encodeURIComponent(params[key]);}).join('&');}function batchRequest(batch){if(!batch.length){return;}var b,group,i,sourceLoadScript,currReqBase,moduleMap,l;function doRequest(){var query=Object.create(currReqBase),packed=buildModulesString(moduleMap);query.modules=packed.str;query.version=getCombinedVersion(packed.list);query=sortQuery(query);addScript(sourceLoadScript+'?'+makeQueryString(query));}batch.sort();var reqBase={"lang":"en","skin":"vector"};var splits= +Object.create(null);for(b=0;b<batch.length;b++){var bSource=registry[batch[b]].source,bGroup=registry[batch[b]].group;if(!splits[bSource]){splits[bSource]=Object.create(null);}if(!splits[bSource][bGroup]){splits[bSource][bGroup]=[];}splits[bSource][bGroup].push(batch[b]);}for(var source in splits){sourceLoadScript=sources[source];for(group in splits[source]){var modules=splits[source][group];currReqBase=Object.create(reqBase);if(group===0&&mw.config.get('wgUserName')!==null){currReqBase.user=mw.config.get('wgUserName');}var currReqBaseLength=makeQueryString(currReqBase).length+23;l=currReqBaseLength;moduleMap=Object.create(null);var currReqModules=[];for(i=0;i<modules.length;i++){var lastDotIndex=modules[i].lastIndexOf('.'),prefix=modules[i].substr(0,lastDotIndex),suffix=modules[i].slice(lastDotIndex+1),bytesAdded=moduleMap[prefix]?suffix.length+3:modules[i].length+3;if(currReqModules.length&&l+bytesAdded>loader.maxQueryLength){doRequest();l=currReqBaseLength;moduleMap=Object.create( +null);currReqModules=[];}if(!moduleMap[prefix]){moduleMap[prefix]=[];}l+=bytesAdded;moduleMap[prefix].push(suffix);currReqModules.push(modules[i]);}if(currReqModules.length){doRequest();}}}}function asyncEval(implementations,cb){if(!implementations.length){return;}mw.requestIdleCallback(function(){try{domEval(implementations.join(';'));}catch(err){cb(err);}});}function getModuleKey(module){return module in registry?(module+'@'+registry[module].version):null;}function splitModuleKey(key){var index=key.indexOf('@');if(index===-1){return{name:key,version:''};}return{name:key.slice(0,index),version:key.slice(index+1)};}function registerOne(module,version,dependencies,group,source,skip){if(module in registry){throw new Error('module already registered: '+module);}version=String(version||'');var requiresES6=version.slice(-1)==='!';if(requiresES6){version=version.slice(0,-1);}registry[module]={module:{exports:{}},packageExports:{},version:version,requiresES6:requiresES6,dependencies: +dependencies||[],group:typeof group==='undefined'?null:group,source:typeof source==='string'?source:'local',state:'registered',skip:typeof skip==='string'?skip:null};}mw.loader=loader={moduleRegistry:registry,maxQueryLength:2000,addStyleTag:newStyleTag,enqueue:enqueue,resolve:resolve,work:function(){store.init();var q=queue.length,storedImplementations=[],storedNames=[],requestNames=[],batch=new StringSet();while(q--){var module=queue[q];if(loader.getState(module)==='registered'&&!batch.has(module)){registry[module].state='loading';batch.add(module);var implementation=store.get(module);if(implementation){storedImplementations.push(implementation);storedNames.push(module);}else{requestNames.push(module);}}}queue=[];asyncEval(storedImplementations,function(err){store.stats.failed++;store.clear();mw.trackError('resourceloader.exception',{exception:err,source:'store-eval'});var failed=storedNames.filter(function(name){return registry[name].state==='loading';});batchRequest(failed);}); +batchRequest(requestNames);},addSource:function(ids){for(var id in ids){if(id in sources){throw new Error('source already registered: '+id);}sources[id]=ids[id];}},register:function(modules){if(typeof modules!=='object'){registerOne.apply(null,arguments);return;}function resolveIndex(dep){return typeof dep==='number'?modules[dep][0]:dep;}var i,j,deps;for(i=0;i<modules.length;i++){deps=modules[i][2];if(deps){for(j=0;j<deps.length;j++){deps[j]=resolveIndex(deps[j]);}}registerOne.apply(null,modules[i]);}},implement:function(module,script,style,messages,templates){var split=splitModuleKey(module),name=split.name,version=split.version;if(!(name in registry)){loader.register(name);}if(registry[name].script!==undefined){throw new Error('module already implemented: '+name);}if(version){registry[name].version=version;}registry[name].script=script||null;registry[name].style=style||null;registry[name].messages=messages||null;registry[name].templates=templates||null;if(registry[name].state!== +'error'&®istry[name].state!=='missing'){setAndPropagate(name,'loaded');}},load:function(modules,type){if(typeof modules==='string'&&/^(https?:)?\/?\//.test(modules)){if(type==='text/css'){addLink(modules);}else if(type==='text/javascript'||type===undefined){addScript(modules);}else{throw new Error('Invalid type '+type);}}else{modules=typeof modules==='string'?[modules]:modules;enqueue(resolveStubbornly(modules));}},state:function(states){for(var module in states){if(!(module in registry)){loader.register(module);}setAndPropagate(module,states[module]);}},getState:function(module){return module in registry?registry[module].state:null;},getModuleNames:function(){return Object.keys(registry);},require:function(moduleName){if(loader.getState(moduleName)!=='ready'){throw new Error('Module "'+moduleName+'" is not loaded');}return registry[moduleName].module.exports;}};var hasPendingWrites=!1;function flushWrites(){store.prune();while(store.queue.length){store.set(store.queue.shift());} +try{localStorage.removeItem(store.key);var data=JSON.stringify(store);localStorage.setItem(store.key,data);}catch(e){mw.trackError('resourceloader.exception',{exception:e,source:'store-localstorage-update'});}hasPendingWrites=!1;}loader.store=store={enabled:null,items:{},queue:[],stats:{hits:0,misses:0,expired:0,failed:0},toJSON:function(){return{items:store.items,vary:store.vary,asOf:Math.ceil(Date.now()/1e7)};},key:"MediaWikiModuleStore:my_wiki",vary:"vector:1:en",init:function(){if(this.enabled===null){this.enabled=!1;if(!1||/Firefox/.test(navigator.userAgent)){this.clear();}else{this.load();}}},load:function(){try{var raw=localStorage.getItem(this.key);this.enabled=!0;var data=JSON.parse(raw);if(data&&data.vary===this.vary&&data.items&&Date.now()<(data.asOf*1e7)+259e7){this.items=data.items;}}catch(e){}},get:function(module){if(this.enabled){var key=getModuleKey(module);if(key in this.items){this.stats.hits++;return this.items[key];}this.stats.misses++;}return!1;},add +:function(module){if(this.enabled){this.queue.push(module);this.requestUpdate();}},set:function(module){var args,encodedScript,descriptor=registry[module],key=getModuleKey(module);if(key in this.items||!descriptor||descriptor.state!=='ready'||!descriptor.version||descriptor.group===1||descriptor.group===0||[descriptor.script,descriptor.style,descriptor.messages,descriptor.templates].indexOf(undefined)!==-1){return;}try{if(typeof descriptor.script==='function'){encodedScript=String(descriptor.script);}else if(typeof descriptor.script==='object'&&descriptor.script&&!Array.isArray(descriptor.script)){encodedScript='{'+'main:'+JSON.stringify(descriptor.script.main)+','+'files:{'+Object.keys(descriptor.script.files).map(function(file){var value=descriptor.script.files[file];return JSON.stringify(file)+':'+(typeof value==='function'?value:JSON.stringify(value));}).join(',')+'}}';}else{encodedScript=JSON.stringify(descriptor.script);}args=[JSON.stringify(key),encodedScript,JSON.stringify( +descriptor.style),JSON.stringify(descriptor.messages),JSON.stringify(descriptor.templates)];}catch(e){mw.trackError('resourceloader.exception',{exception:e,source:'store-localstorage-json'});return;}var src='mw.loader.implement('+args.join(',')+');';if(src.length>1e5){return;}this.items[key]=src;},prune:function(){for(var key in this.items){if(getModuleKey(key.slice(0,key.indexOf('@')))!==key){this.stats.expired++;delete this.items[key];}}},clear:function(){this.items={};try{localStorage.removeItem(this.key);}catch(e){}},requestUpdate:function(){if(!hasPendingWrites){hasPendingWrites=!0;setTimeout(function(){mw.requestIdleCallback(flushWrites);},2000);}}};}());mw.requestIdleCallbackInternal=function(callback){setTimeout(function(){var start=mw.now();callback({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(mw.now()-start));}});},1);};mw.requestIdleCallback=window.requestIdleCallback?window.requestIdleCallback.bind(window):mw.requestIdleCallbackInternal;(function(){var +queue;mw.loader.addSource({"local":"/load.php"});mw.loader.register([["site","1iwgg",[1]],["site.styles","mc0ao",[],2],["noscript","r22l1",[],3],["filepage","1yjvh"],["user","k1cuu",[],0],["user.styles","8fimp",[],0],["user.defaults","10yqz"],["user.options","1hzgi",[6],1],["mediawiki.skinning.elements","3uifr"],["mediawiki.skinning.content","jhcq6"],["mediawiki.skinning.interface","17ags"],["jquery.makeCollapsible.styles","dm1ye"],["mediawiki.skinning.content.parsoid","x8i9i"],["mediawiki.skinning.content.externallinks","1hwh0"],["jquery","4dvbv"],["es6-polyfills","150sy",[],null,null,"return Array.prototype.find\u0026\u0026Array.prototype.findIndex\u0026\u0026Array.prototype.includes\u0026\u0026typeof Promise==='function'\u0026\u0026Promise.prototype.finally;"],["fetch-polyfill","5vxes",[15],null,null,"return typeof fetch==='function';"],["mediawiki.base","4z81x",[14]],["jquery.chosen","1l80o"],["jquery.client","fn93f"],["jquery.color","dcjsx"],["jquery.confirmable","11aay",[115]],[ +"jquery.cookie","1smd3"],["jquery.form","1wtf2"],["jquery.fullscreen","1xq4o"],["jquery.highlightText","1tsxs",[88]],["jquery.hoverIntent","1aklr"],["jquery.i18n","29w1w",[114]],["jquery.lengthLimit","1llrz",[71]],["jquery.makeCollapsible","astbu",[11]],["jquery.mw-jump","r425l"],["jquery.spinner","16kkr",[32]],["jquery.spinner.styles","o62ui"],["jquery.jStorage","1ccp7"],["jquery.suggestions","9e98z",[25]],["jquery.tablesorter","qji78",[36,116,88]],["jquery.tablesorter.styles","nu5sg"],["jquery.textSelection","152er",[19]],["jquery.throttle-debounce","xl0tk"],["jquery.tipsy","4mf5h"],["jquery.ui","o21b4"],["moment","d6rz2",[112,88]],["vue","1y3pm"],["vuex","c4upc",[15,42]],["wvui","bm4ga",[42]],["wvui-search","1n0td",[42]],["mediawiki.template","xae8l"],["mediawiki.template.mustache","nyt38",[46]],["mediawiki.apipretty","o6hd1"],["mediawiki.api","1gaiy",[76,115]],["mediawiki.content.json","1f0f4"],["mediawiki.confirmCloseWindow","86m8t"],["mediawiki.debug","zii9r",[204]],[ +"mediawiki.diff","136q8"],["mediawiki.diff.styles","1yb3i"],["mediawiki.feedback","1mkju",[307,212]],["mediawiki.feedlink","szobh"],["mediawiki.filewarning","1oumg",[204,216]],["mediawiki.ForeignApi","191mv",[59]],["mediawiki.ForeignApi.core","bd8b3",[85,49,200]],["mediawiki.helplink","1xyfo"],["mediawiki.hlist","7nynt"],["mediawiki.htmlform","1xh7h",[28,88]],["mediawiki.htmlform.ooui","14rir",[204]],["mediawiki.htmlform.styles","n60o9"],["mediawiki.htmlform.ooui.styles","kkxv5"],["mediawiki.icon","j5ayk"],["mediawiki.inspect","obqgk",[71,88]],["mediawiki.notification","18mju",[88,95]],["mediawiki.notification.convertmessagebox","3la3s",[68]],["mediawiki.notification.convertmessagebox.styles","wj24b"],["mediawiki.String","1rrm1"],["mediawiki.pager.tablePager","1qsqm"],["mediawiki.pulsatingdot","qol8q"],["mediawiki.searchSuggest","1lq7b",[34,49]],["mediawiki.storage","187em"],["mediawiki.Title","f4bbu",[71,88]],["mediawiki.Upload","1sdt0",[49]],["mediawiki.ForeignUpload","u99il",[58,77] +],["mediawiki.ForeignStructuredUpload","mi56z",[78]],["mediawiki.Upload.Dialog","issxg",[81]],["mediawiki.Upload.BookletLayout","p8fwi",[77,86,197,41,207,212,217,218]],["mediawiki.ForeignStructuredUpload.BookletLayout","cpmmk",[79,81,119,182,176]],["mediawiki.toc","ckf9m",[92]],["mediawiki.toc.styles","1d0u5"],["mediawiki.Uri","sqmr8",[88]],["mediawiki.user","burcp",[49,92]],["mediawiki.userSuggest","18k7y",[34,49]],["mediawiki.util","1g8n3",[19]],["mediawiki.viewport","1vq57"],["mediawiki.checkboxtoggle","2yuhf"],["mediawiki.checkboxtoggle.styles","15kl9"],["mediawiki.cookie","1iril",[22]],["mediawiki.experiments","1ogti"],["mediawiki.editfont.styles","1cz1l"],["mediawiki.visibleTimeout","aconv"],["mediawiki.action.delete","1dgz0",[28,204]],["mediawiki.action.edit","1nmzj",[37,98,49,94,178]],["mediawiki.action.edit.styles","1o85j"],["mediawiki.action.edit.collapsibleFooter","mu8ur",[29,66,75]],["mediawiki.action.edit.preview","1bt15",[29,31,37,54,86,204]],["mediawiki.action.history", +"vgbiv",[29]],["mediawiki.action.history.styles","1ji9u"],["mediawiki.action.protect","l4iij",[28,204]],["mediawiki.action.view.metadata","1h3zt",[110]],["mediawiki.action.view.categoryPage.styles","1054m"],["mediawiki.action.view.postEdit","10be4",[115,68]],["mediawiki.action.view.redirect","19xk3",[19]],["mediawiki.action.view.redirectPage","sqol7"],["mediawiki.action.edit.editWarning","1gdkg",[37,51,115]],["mediawiki.action.view.filepage","1f23z"],["mediawiki.action.styles","64lwx"],["mediawiki.language","1l08f",[113]],["mediawiki.cldr","erqtv",[114]],["mediawiki.libs.pluralruleparser","pvwvv"],["mediawiki.jqueryMsg","1d99y",[71,112,88,7]],["mediawiki.language.months","1mcng",[112]],["mediawiki.language.names","1bhbd",[112]],["mediawiki.language.specialCharacters","tqbmd",[112]],["mediawiki.libs.jpegmeta","c4xwo"],["mediawiki.page.gallery","18lwp",[38,121]],["mediawiki.page.gallery.styles","13e1k"],["mediawiki.page.gallery.slideshow","164d3",[49,207,226,228]],["mediawiki.page.ready" +,"12ezf",[49]],["mediawiki.page.watch.ajax","6qhk0",[49]],["mediawiki.page.image.pagination","1hhs1",[31,88]],["mediawiki.rcfilters.filters.base.styles","uslqu"],["mediawiki.rcfilters.highlightCircles.seenunseen.styles","etog4"],["mediawiki.rcfilters.filters.dm","18c4y",[85,86,200]],["mediawiki.rcfilters.filters.ui","ds4qy",[29,128,173,213,220,222,223,224,226,227]],["mediawiki.interface.helpers.styles","1m6am"],["mediawiki.special","v70qz"],["mediawiki.special.apisandbox","jvv5z",[29,85,193,179,203,218,223]],["mediawiki.special.block","pg3o5",[62,176,192,183,193,190,218,220]],["mediawiki.misc-authed-ooui","hbxyk",[63,173,178]],["mediawiki.misc-authed-pref","r18bc",[7]],["mediawiki.misc-authed-curate","18ydi",[21,31,49]],["mediawiki.special.changeslist","195oo"],["mediawiki.special.changeslist.watchlistexpiry","1jn93",[131]],["mediawiki.special.changeslist.enhanced","19caq"],["mediawiki.special.changeslist.legend","5o2l3"],["mediawiki.special.changeslist.legend.js","ntrpi",[29,92]],[ +"mediawiki.special.contributions","wcllz",[29,115,176,203]],["mediawiki.special.edittags","1x1ih",[18,28]],["mediawiki.special.import","k6r2i",[173]],["mediawiki.special.import.styles.ooui","q5fmb"],["mediawiki.special.preferences.ooui","178ed",[51,94,69,75,183,178]],["mediawiki.special.preferences.styles.ooui","otadd"],["mediawiki.special.recentchanges","13ytr",[173]],["mediawiki.special.revisionDelete","1a7mj",[28]],["mediawiki.special.search","1cmha",[195]],["mediawiki.special.search.commonsInterwikiWidget","1s9x8",[85,49]],["mediawiki.special.search.interwikiwidget.styles","14p79"],["mediawiki.special.search.styles","1vcge"],["mediawiki.special.unwatchedPages","urar8",[49]],["mediawiki.special.upload","eziaa",[31,49,51,119,131,46]],["mediawiki.special.userlogin.common.styles","no33f"],["mediawiki.special.userlogin.login.styles","12gb8"],["mediawiki.special.createaccount","l1b8g",[49]],["mediawiki.special.userlogin.signup.styles","1lcwk"],["mediawiki.special.userrights","15936",[28, +69]],["mediawiki.special.watchlist","qba1s",[49,204,223]],["mediawiki.special.version","1qu9b"],["mediawiki.legacy.config","1vyf0"],["mediawiki.legacy.commonPrint","132iv"],["mediawiki.legacy.shared","188f6"],["mediawiki.ui","ex344"],["mediawiki.ui.checkbox","1rjmw"],["mediawiki.ui.radio","13bcd"],["mediawiki.ui.anchor","w5in5"],["mediawiki.ui.button","ks7r4"],["mediawiki.ui.input","cj4cj"],["mediawiki.ui.icon","12nv3"],["mediawiki.widgets","1s7ga",[49,174,207,217]],["mediawiki.widgets.styles","rqacs"],["mediawiki.widgets.AbandonEditDialog","1abjz",[212]],["mediawiki.widgets.DateInputWidget","19nc2",[177,41,207,228]],["mediawiki.widgets.DateInputWidget.styles","17emz"],["mediawiki.widgets.visibleLengthLimit","1wyjs",[28,204]],["mediawiki.widgets.datetime","14e24",[88,204,227,228]],["mediawiki.widgets.expiry","19dtp",[179,41,207]],["mediawiki.widgets.CheckMatrixWidget","ohle3",[204]],["mediawiki.widgets.CategoryMultiselectWidget","slkpi",[58,207]],[ +"mediawiki.widgets.SelectWithInputWidget","oe83m",[184,207]],["mediawiki.widgets.SelectWithInputWidget.styles","1fufa"],["mediawiki.widgets.SizeFilterWidget","sawvf",[186,207]],["mediawiki.widgets.SizeFilterWidget.styles","15b9u"],["mediawiki.widgets.MediaSearch","serev",[58,207]],["mediawiki.widgets.Table","yxx6f",[207]],["mediawiki.widgets.TagMultiselectWidget","syz4w",[207]],["mediawiki.widgets.UserInputWidget","1oqp3",[49,207]],["mediawiki.widgets.UsersMultiselectWidget","1iec8",[49,207]],["mediawiki.widgets.NamespacesMultiselectWidget","1nuht",[207]],["mediawiki.widgets.TitlesMultiselectWidget","2tq85",[173]],["mediawiki.widgets.TagMultiselectWidget.styles","1vzh9"],["mediawiki.widgets.SearchInputWidget","1ri9j",[74,173,223]],["mediawiki.widgets.SearchInputWidget.styles","68its"],["mediawiki.widgets.StashedFileWidget","r177c",[49,204]],["mediawiki.watchstar.widgets","xg53g",[203]],["mediawiki.deflate","gu4pi"],["oojs","1ws4u"],["mediawiki.router","1f8qs",[202]],["oojs-router", +"1lb9j",[200]],["oojs-ui","yfxca",[210,207,212]],["oojs-ui-core","12tlw",[112,200,206,205,214]],["oojs-ui-core.styles","nxfa9"],["oojs-ui-core.icons","6a9cl"],["oojs-ui-widgets","1yd29",[204,209]],["oojs-ui-widgets.styles","mxy1b"],["oojs-ui-widgets.icons","29g2j"],["oojs-ui-toolbars","17pnb",[204,211]],["oojs-ui-toolbars.icons","1jzwl"],["oojs-ui-windows","l1bv1",[204,213]],["oojs-ui-windows.icons","sx5ov"],["oojs-ui.styles.indicators","1ctw9"],["oojs-ui.styles.icons-accessibility","1tybe"],["oojs-ui.styles.icons-alerts","4zo11"],["oojs-ui.styles.icons-content","oiwkz"],["oojs-ui.styles.icons-editing-advanced","1t57w"],["oojs-ui.styles.icons-editing-citation","1lbvz"],["oojs-ui.styles.icons-editing-core","1ef89"],["oojs-ui.styles.icons-editing-list","1guo9"],["oojs-ui.styles.icons-editing-styling","1cegm"],["oojs-ui.styles.icons-interactions","1nb1t"],["oojs-ui.styles.icons-layout","1whyv"],["oojs-ui.styles.icons-location","2gupd"],["oojs-ui.styles.icons-media","1997w"],[ +"oojs-ui.styles.icons-moderation","cbcp7"],["oojs-ui.styles.icons-movement","1x4b8"],["oojs-ui.styles.icons-user","1lh7w"],["oojs-ui.styles.icons-wikimedia","17yna"],["skins.monobook.styles","itq32"],["skins.monobook.scripts","1ntj3",[88,216]],["skins.timeless","1a9g1"],["skins.timeless.js","tvvtt"],["skins.vector.search","1l4sq",[85,45]],["skins.vector.styles.legacy","dnpn7"],["skins.vector.styles","pldcl"],["skins.vector.icons","1c7vs"],["skins.vector.js","1vz96",[123]],["skins.vector.legacy.js","1ynhz",[123]],["socket.io","is39l"],["dompurify","1q6qs"],["color-picker","1qvmf"],["unicodejs","v19tp"],["papaparse","17t4y"],["rangefix","f32vh"],["spark-md5","11tzz"],["ext.visualEditor.supportCheck","13m8w",[],4],["ext.visualEditor.sanitize","13ex9",[242,265],4],["ext.visualEditor.progressBarWidget","1kvty",[],4],["ext.visualEditor.tempWikitextEditorWidget","1dpuw",[94,86],4],["ext.visualEditor.desktopArticleTarget.init","b34dy",[250,248,251,262,37,85,123,75],4],[ +"ext.visualEditor.desktopArticleTarget.noscript","11b6q"],["ext.visualEditor.targetLoader","1hgg8",[264,262,37,85,75,86],4],["ext.visualEditor.desktopTarget","1stbc",[],4],["ext.visualEditor.desktopArticleTarget","j1mvc",[268,273,255,278],4],["ext.visualEditor.collabTarget","kvj48",[266,272,94,173,223,224],4],["ext.visualEditor.collabTarget.desktop","1xz3z",[257,273,255,278],4],["ext.visualEditor.collabTarget.init","1z06m",[248,173,203],4],["ext.visualEditor.collabTarget.init.styles","xc7ez"],["ext.visualEditor.ve","dkzcj",[],4],["ext.visualEditor.track","1gi8o",[261],4],["ext.visualEditor.core.utils","dp9wo",[262,203],4],["ext.visualEditor.core.utils.parsing","l3da8",[261],4],["ext.visualEditor.base","2eo05",[263,264,244],4],["ext.visualEditor.mediawiki","757jd",[265,254,35,306],4],["ext.visualEditor.mwsave","9uzbv",[276,28,31,54,223],4],["ext.visualEditor.articleTarget","1g8o6",[277,267,175],4],["ext.visualEditor.data","1qrh4",[266]],["ext.visualEditor.core","1a53b",[249,248,19,245, +246,247],4],["ext.visualEditor.commentAnnotation","158gv",[270],4],["ext.visualEditor.rebase","2c1dk",[243,287,271,229,241],4],["ext.visualEditor.core.desktop","17atj",[270],4],["ext.visualEditor.welcome","dkuyg",[203],4],["ext.visualEditor.switching","96zyx",[49,203,215,218,220],4],["ext.visualEditor.mwcore","1a2tj",[288,266,275,274,130,73,12,173],4],["ext.visualEditor.mwextensions","yfxca",[269,299,292,294,279,296,281,293,282,284],4],["ext.visualEditor.mwextensions.desktop","yfxca",[277,283,82],4],["ext.visualEditor.mwformatting","pqk1y",[276],4],["ext.visualEditor.mwimage.core","tlvwo",[276],4],["ext.visualEditor.mwimage","i8od2",[280,187,41,226,230],4],["ext.visualEditor.mwlink","tybh7",[276],4],["ext.visualEditor.mwmeta","qbzjo",[282,108],4],["ext.visualEditor.mwtransclusion","1abvs",[276,190],4],["treeDiffer","1c337"],["diffMatchPatch","clg0b"],["ext.visualEditor.checkList","1d0dh",[270],4],["ext.visualEditor.diffing","18p3j",[286,270,285],4],[ +"ext.visualEditor.diffPage.init.styles","z3r1s"],["ext.visualEditor.diffLoader","1w40j",[254],4],["ext.visualEditor.diffPage.init","x0f9t",[290,203,215,218],4],["ext.visualEditor.language","1dmyu",[270,306,117],4],["ext.visualEditor.mwlanguage","1g87s",[270],4],["ext.visualEditor.mwalienextension","1e5q0",[276],4],["ext.visualEditor.mwwikitext","jlmde",[282,94],4],["ext.visualEditor.mwgallery","1iqd2",[276,121,187,226],4],["ext.visualEditor.mwsignature","jam5r",[284],4],["ext.visualEditor.experimental","yfxca",[],4],["ext.visualEditor.icons","yfxca",[300,301,216,217,218,220,221,222,223,224,227,228,229,214],4],["ext.visualEditor.moduleIcons","3rrg2"],["ext.visualEditor.moduleIndicators","1fdxy"],["ext.wikiEditor","ldxi3",[34,37,38,40,118,86,207,217,218,219,220,221,222,226,46],5],["ext.wikiEditor.styles","14wda",[],5],["ext.nuke.confirm","qvw09",[115]],["ext.spamBlacklist.visualEditor","v2zpq"],["jquery.uls.data","14rdf"],["mediawiki.messagePoster","1wtgm",[58]]]);mw.config.set(window. +RLCONF||{});mw.loader.state(window.RLSTATE||{});mw.loader.load(window.RLPAGEMODULES||[]);queue=window.RLQ||[];RLQ=[];RLQ.push=function(fn){if(typeof fn==='function'){fn();}else{RLQ[RLQ.length]=fn;}};while(queue[0]){RLQ.push(queue.shift());}NORLQ={push:function(){}};}());} |
