var Up=(()=>{var A=import.meta.url;return async function(g={}){var e,I=g,i,t,C=new Promise((n,F)=>{i=n,t=F}),o=Object.assign({},I),s="./this.program",B="",Q,a;typeof document<"u"&&document.currentScript&&(B=document.currentScript.src),A&&(B=A),B.startsWith("blob:")?B="":B=B.substr(0,B.replace(/[?#].*/,"").lastIndexOf("/")+1),Q=async n=>{var F=await fetch(n,{credentials:"same-origin"});if(F.ok)return F.arrayBuffer();throw new Error(F.status+" : "+F.url)};var r=I.print||console.log.bind(console),d=I.printErr||console.error.bind(console);Object.assign(I,o),o=null,I.arguments&&I.arguments,I.thisProgram&&(s=I.thisProgram);for(var c=I.wasmBinary,f,k=!1,u,D,G,h,y,M,m="data:application/octet-stream;base64,",_=n=>n.startsWith(m),x=new Uint8Array(123),b=25;b>=0;--b)x[48+b]=52+b,x[65+b]=b,x[97+b]=26+b;x[43]=62,x[47]=63;function X(n){for(var F,K,W=0,iA=0,QA=n.length,uA=new Uint8Array((QA*3>>2)-(n[QA-2]=="=")-(n[QA-1]=="="));W>4,uA[iA+1]=F<<4|K>>2,uA[iA+2]=K<<6|x[n.charCodeAt(W+3)];return uA}function Z(n){if(_(n))return X(n.slice(m.length))}function T(){var n=f.buffer;I.HEAP8=u=new Int8Array(n),I.HEAP16=G=new Int16Array(n),I.HEAPU8=D=new Uint8Array(n),I.HEAPU16=new Uint16Array(n),I.HEAP32=h=new Int32Array(n),I.HEAPU32=y=new Uint32Array(n),I.HEAPF32=new Float32Array(n),I.HEAPF64=new Float64Array(n),I.HEAP64=M=new BigInt64Array(n),I.HEAPU64=new BigUint64Array(n)}var CA=[],eA=[],tA=[];function BA(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)dA(I.preRun.shift());bA(CA)}function sA(){!I.noFSInit&&!J.initialized&&J.init(),J.ignorePermissions=!1,bA(eA)}function cA(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)U(I.postRun.shift());bA(tA)}function dA(n){CA.unshift(n)}function P(n){eA.unshift(n)}function U(n){tA.unshift(n)}var z=0,v=null;function nA(n){z++,I.monitorRunDependencies?.(z)}function YA(n){if(z--,I.monitorRunDependencies?.(z),z==0&&v){var F=v;v=null,F()}}function _A(n){I.onAbort?.(n),n="Aborted("+n+")",d(n),k=!0,n+=". Build with -sASSERTIONS for more info.";var F=new WebAssembly.RuntimeError(n);throw t(F),F}var PA="data:application/octet-stream;base64,AGFzbQEAAAABvARIYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAN/f38AYAR/f39/AGAGf39/f39/AX9gBX9/f39/AGAFf39/f38Bf2AEf39/fwF/YAN/f38BfWAIf39/f39/f38Bf2AGf39/f39/AGAAAGAHf39/f39/fwF/YAV/fn5+fgBgAAF/YAN/fn8BfmAHf39/f39/fwBgBX9/f31/AGAFf399f38Bf2AFf39+f38AYAV/f39/fgF/YAN/fn8Bf2AEf35+fwBgCH9/f39/f39/AGAFf39/f3wBf2ABfAF8YAJ/fwF9YAF/AX5gAnx/AXxgCn9/f39/f39/f38Bf2ACfHwBfGABfQF9YAx/f39/f39/f39/f38Bf2APf39/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAHf39/f39+fgF/YAZ/f39/fn4Bf2ADf398AX9gAn5/AGAEf35/fwF/YAp/f39/f398f39/AGAGf39/f398AGAHf39/f39/fABgAn9+AGACf3wAYAR+fn5+AX9gBH9/f34BfmACfn8Bf2ALf39/f39/f39/fH8AYAN8fH8BfGAGfH9/f398AXxgAn99AX9gAX8BfWACfn4BfGAFf39/f30AYAN/f38BfGAGf3x/f39/AX9gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2AAAX5gAn19AX1gAX4Bf2ACfH8Bf2AGf39/fX9/AAJnEQFhAWEABgFhAWIABQFhAWMABAFhAWQAAAFhAWUACgFhAWYABAFhAWcACgFhAWgADgFhAWkAGAFhAWoAAAFhAWsAKwFhAWwABgFhAW0AEQFhAW4AAwFhAW8AAwFhAXAACgFhAXEALAO0BrIGAQAOAAMAAAECBAYBBAUODgACAgMDERAABQQGAAMtAgAAAgQABRAOCQYIGQIuBAMFEAYEAgQFBAACAAAeAgUvAgoFBQMwAAEBCQkKADEBBQwMBwcCAgMCBgABAAICAAYADgADBQMCBQQyGQAfBQYIBAICBSAgMzQBAgMCAgEAAAMAIQM1BQYAGgkCBQMFCgACAgAFNiE3BQYIAAgBCAgRAgIABgAAAhMEEw8IDwoDAgMDAAAAAAA4AwADAAADAgAEAAIDHCI5BAIGCAIGBgAFAhQUFBQHAQ0GBQADAwMCBAUABAEFAwMIAAIEIwgEIwgFBgAABDoQAgIBAgABAAEAAQEBABgAAQ0DDQUCBgYCAgQFBg0CAgYBBggHBgMDBA4FAjsTAAEAAgYAAQYaBQUFAwIBAAICBQAGBQUAARUAAAkMDAkMDAAJDAABAgMAAQIABQQEJCUEJCUECAImAgUCJgkCAg0ICA0NCA0NAAQTBBMHAgQGPAsnCgcKJwoFCgEDAAkDAj0FAAkfAwQ+P0AGEBAZQUIDAwEAAwMBBQUDAAQAAAMOAQAFAgAAAgEAAwAFAQAABgIWBAEAHgYEGAACAwMEQyIcAERFDhxGCAIGAwYABAgFAAYFBQUBBgYGAgUBBgUCAgEFBQYCAgYCBRoFBggDBQUDCAMFAgIFBQUGBQYAAAEACAgDAQAAAAENDQ0ICAgGAwYGBA4BAQABAAEDAQABAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACAgICAgIAAAEBCAcACQAICQwMAQkJAQQKBAMEAwEJBAAKBAMEAwoKCgQBAQ0NBygHKA8PDw8PDwwHBwcHBwQMBwcHBwcJKRsXCRcJCQkBKRsXCRcCCQkHBwcHBwcHBwcHCAcHBwcHBwAHBwQGCQQDBgkdBAQCAAMEAgMAAAMCAwQCAwABAAIBEgABAQABAAEAAAYBAgAGFgQDAQMAARYDAwAEAAAEAQEBAAAEAAQBAAQqBBIOAAYNCBQCRwIAAQAJCQADAgALAQkJCgQqAREBAAMCAAABAQYBAAACAAAACwAAAAMCABUVCAAIAQAAAQAVFQgIAREEBwFwAZkEmQQFBwEBggKAgAIGCAF/AUGAnAcLB2wWAXICAAFzAK8CAXQAwgYBdQCjBgF2AQABdwD+BQF4AIsFAXkA2AQBegCoBgFBAKcGAUIApgYBQwClBgFEAJsGAUUAmgYBRgCZBgFHAJgGAUgAlwYBSQCWBgFKAJUGAUsAlAYBTACKBgFNABwJvgcBAEEBC5gEtgJKkwa0AkqsBqoGqQagBqEGtgaiBp4Ge3LxBecF3gV7ctYFShxKHNEFygUcShzDBcIFiAEcvwW8BbUFgwa7Aa4FoQXFAZsF7QTjBNwE1wQ0zQLNAq8GswSvBHtyrQSsBKsEHKkEpAQcHJwElwQcShyWBJUEShytAntylASTBJIEkQTBBsAGvwaqAb4GvQYcrAJ7crwGuwa6BrkGuAa3BrUGqgG0BrMGShyyBrEGiAEchQSwBq4Gcq0GqwYcnwZ75QOdBpwGHJIGkQaIARyFBJAGjwaOBo0GjAaLBhyCBoAG/wX9BfwFzgOOAfsFzgHHA8YDxAM0NPoFwwP5Bc0B+AXNAcwBkgLCA8EDywGRAr0DvAPGAZAC9wX1BfYF9AWPAvMFzgHHA8YDxAM0NPIFwwPwBc0B7wXNAcwBkgLCA8EDywGRAr0DvAONAuAF6wXfBe4F7QXsBcQB6gXhBeUF5AXjBeIF6QXoBeYFyQPIA8kDyAPDAYwC3QXcBdsF2gWLArUD2QXYBVbXBTTVBdQFqwPTBdIF0AXPBasDzgWoA80FzAWnA8sFyQXIBccFpwPGBagDxQXEBcEFlQOUA8AFEYgB2gLLBMkExwTFBMMEwQS/BL0EuwS5BLcEtQSyBLAE3QL4BPcE2QLqBOkE6ATnBOYE0QPlBOQE4gTgAuAE3wTeBN0E2wQ02gTZBM8C1gTUBNME0gTQBM4EzgLVBHvlA9EEzwTNBEocHPYE9QT0BPME8gTxBPAE7wTRA+4E7ATrBBzYAtgCmQGqAaoB4QSqARzVAtQCmQE0NNMCsgEc1QLUApkBNDTTArIBHNIC0QKZATQ00AKyARzSAtECmQE0NNACsgFKHL4FvQW7BUocugW5BbgFHLcFtgW0BbMFiQOJA7IFsQWwBa8FrQUcrAWrBaoFqQWBA4EDqAWnBaYFpQWkBRyjBaIFoAWfBZ4FnQWcBZoFHJkFmAWXBZYFlQWUBZMFkgVKHPwCkQWQBY8FjgWNBYwFzATIBMQEuAS0BMAEvARKHPwCigWJBYgFhwWGBYUFygTGBMIEtgSxBL4EugTxAcwChAXxAcwCgwUctQG1AVBQUPMCNG1tHLUBtQFQUFDzAjRtbRy0AbQBUFBQ8gI0bW0ctAG0AVBQUPICNG1tHIIFgQUcgAX/BBz+BP0EHPwE+wQc4gL6BM4BHOIC+QTOAa4EN6oEN0ociAGIAacEnQSgBKYEHJ4EoQSlBByfBKIEowQcmgQcmQQcmwTmAXKYBHLmAeYBDAK3AQr/1R6yBv0LAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0H47QIoAgBJDQEgACAEaiEAAkACQAJAQfztAigCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQejtAkHo7QIoAgBBfiAEQQN2d3E2AgAMBQsgAygCGCEHIAEgA0cEQCADKAIIIgIgATYCDCABIAI2AggMBAsgAygCFCICBH8gA0EUagUgAygCECICRQ0DIANBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNB8O0CIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdEGY8AJqIgIoAgAgA0YEQCACIAE2AgAgAQ0BQeztAkHs7QIoAgBBfiAEd3E2AgAMAgsCQCADIAcoAhBGBEAgByABNgIQDAELIAcgATYCFAsgAUUNAQsgASAHNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIAVPDQAgBSgCBCIEQQFxRQ0AAkACQAJAAkAgBEECcUUEQEGA7gIoAgAgBUYEQEGA7gIgAzYCAEH07QJB9O0CKAIAIABqIgA2AgAgAyAAQQFyNgIEIANB/O0CKAIARw0GQfDtAkEANgIAQfztAkEANgIADwtB/O0CKAIAIgcgBUYEQEH87QIgAzYCAEHw7QJB8O0CKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIARBeHEgAGohACAFKAIMIQEgBEH/AU0EQCAFKAIIIgIgAUYEQEHo7QJB6O0CKAIAQX4gBEEDdndxNgIADAULIAIgATYCDCABIAI2AggMBAsgBSgCGCEIIAEgBUcEQCAFKAIIIgIgATYCDCABIAI2AggMAwsgBSgCFCICBH8gBUEUagUgBSgCECICRQ0CIAVBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAgsgBSAEQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgAMAwtBACEBCyAIRQ0AAkAgBSgCHCIEQQJ0QZjwAmoiAigCACAFRgRAIAIgATYCACABDQFB7O0CQeztAigCAEF+IAR3cTYCAAwCCwJAIAUgCCgCEEYEQCAIIAE2AhAMAQsgCCABNgIUCyABRQ0BCyABIAg2AhggBSgCECICBEAgASACNgIQIAIgATYCGAsgBSgCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgAEEBcjYCBCAAIANqIAA2AgAgAyAHRw0AQfDtAiAANgIADwsgAEH/AU0EQCAAQXhxQZDuAmohAgJ/QejtAigCACIEQQEgAEEDdnQiAHFFBEBB6O0CIAAgBHI2AgAgAgwBCyACKAIICyEAIAIgAzYCCCAAIAM2AgwgAyACNgIMIAMgADYCCA8LQR8hASAAQf///wdNBEAgAEEmIABBCHZnIgJrdkEBcSACQQF0a0E+aiEBCyADIAE2AhwgA0IANwIQIAFBAnRBmPACaiEEAn8CQAJ/QeztAigCACIGQQEgAXQiAnFFBEBB7O0CIAIgBnI2AgAgBCADNgIAQRghAUEIDAELIABBGSABQQF2a0EAIAFBH0cbdCEBIAQoAgAhBANAIAQiAigCBEF4cSAARg0CIAFBHXYhBCABQQF0IQEgAiAEQQRxaiIGKAIQIgQNAAsgBiADNgIQQRghASACIQRBCAshACADIgIMAQsgAigCCCIEIAM2AgwgAiADNgIIQRghAEEIIQFBAAshBiABIANqIAQ2AgAgAyACNgIMIAAgA2ogBjYCAEGI7gJBiO4CKAIAQQFrIgBBfyAAGzYCAAsLOwECf0EBIAAgAEEBTRshAQNAAkAgARAWIgANAEH4mwMoAgAiAkUNACACEQ4ADAELCyAARQRAEDcLIAALCQBBixMQ8AMACx4AIAAtAAtBB3YEQCAAKAIIGiAAKAIAQQEQZAsgAAsnACAAKAIAIgAgARAoIgEQ3AJFBEAQIAALIAAoAgggAUECdGooAgAL4SgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQejtAigCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUGQ7gJqIgAgAUGY7gJqKAIAIgEoAggiBUYEQEHo7QIgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkHw7QIoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEGQ7gJqIgIgAEGY7gJqKAIAIgAoAggiBUYEQEHo7QIgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQZDuAmohAUH87QIoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEHo7QIgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBB/O0CIAc2AgBB8O0CIAU2AgAMCwtB7O0CKAIAIgtFDQEgC2hBAnRBmPACaigCACICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQeztAigCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdEGY8AJqKAIAIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0QZjwAmooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANB8O0CKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkHw7QIoAgAiBU0EQEH87QIoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQfDtAiABNgIAQfztAiACNgIAIABBCGohAAwJCyAGQfTtAigCACICSQRAQfTtAiACIAZrIgE2AgBBgO4CQYDuAigCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QcDxAigCAARAQcjxAigCAAwBC0HM8QJCfzcCAEHE8QJCgKCAgICABDcCAEHA8QIgCkEMakFwcUHYqtWqBXM2AgBB1PECQQA2AgBBpPECQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBoPECKAIAIgUEQEGY8QIoAgAiCCABaiIJIAhNDQkgBSAJSQ0JCwJAQaTxAi0AAEEEcUUEQAJAAkACQAJAQYDuAigCACIFBEBBqPECIQADQCAAKAIAIgggBU0EQCAFIAggACgCBGpJDQMLIAAoAggiAA0ACwtBABCRASICQX9GDQMgASEEQcTxAigCACIAQQFrIgUgAnEEQCABIAJrIAIgBWpBACAAa3FqIQQLIAQgBk0NA0Gg8QIoAgAiAARAQZjxAigCACIFIARqIgcgBU0NBCAAIAdJDQQLIAQQkQEiACACRw0BDAULIAQgAmsgB3EiBBCRASICIAAoAgAgACgCBGpGDQEgAiEACyAAQX9GDQEgBkEwaiAETQRAIAAhAgwEC0HI8QIoAgAiAiADIARrakEAIAJrcSICEJEBQX9GDQEgAiAEaiEEIAAhAgwDCyACQX9HDQILQaTxAkGk8QIoAgBBBHI2AgALIAEQkQEhAkEAEJEBIQAgAkF/Rg0FIABBf0YNBSAAIAJNDQUgACACayIEIAZBKGpNDQULQZjxAkGY8QIoAgAgBGoiADYCAEGc8QIoAgAgAEkEQEGc8QIgADYCAAsCQEGA7gIoAgAiAwRAQajxAiEAA0AgAiAAKAIAIgEgACgCBCIFakYNAiAAKAIIIgANAAsMBAtB+O0CKAIAIgBBACAAIAJNG0UEQEH47QIgAjYCAAtBACEAQazxAiAENgIAQajxAiACNgIAQYjuAkF/NgIAQYzuAkHA8QIoAgA2AgBBtPECQQA2AgADQCAAQQN0IgFBmO4CaiABQZDuAmoiBTYCACABQZzuAmogBTYCACAAQQFqIgBBIEcNAAtB9O0CIARBKGsiAEF4IAJrQQdxIgFrIgU2AgBBgO4CIAEgAmoiATYCACABIAVBAXI2AgQgACACakEoNgIEQYTuAkHQ8QIoAgA2AgAMBAsgAiADTQ0CIAEgA0sNAiAAKAIMQQhxDQIgACAEIAVqNgIEQYDuAiADQXggA2tBB3EiAGoiATYCAEH07QJB9O0CKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQYTuAkHQ8QIoAgA2AgAMAwtBACEADAYLQQAhAAwEC0H47QIoAgAgAksEQEH47QIgAjYCAAsgAiAEaiEFQajxAiEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBqPECIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQfTtAiAEQShrIgBBeCACa0EHcSIBayIHNgIAQYDuAiABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGE7gJB0PECKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQbDxAikCADcCECABQajxAikCADcCCEGw8QIgAUEIajYCAEGs8QIgBDYCAEGo8QIgAjYCAEG08QJBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBkO4CaiEAAn9B6O0CKAIAIgFBASACQQN2dCICcUUEQEHo7QIgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QZjwAmohAQJAAkBB7O0CKAIAIgVBASAAdCIEcUUEQEHs7QIgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQfTtAigCACIAIAZNDQBB9O0CIAAgBmsiATYCAEGA7gJBgO4CKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0Hk7QJBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBgO4CKAIAIARGBEBBgO4CIAM2AgBB9O0CQfTtAigCACAHaiIANgIAIAMgAEEBcjYCBAwBC0H87QIoAgAgBEYEQEH87QIgAzYCAEHw7QJB8O0CKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEHo7QJB6O0CKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdEGY8AJqIgEoAgAgBEYEQCABIAI2AgAgAg0BQeztAkHs7QIoAgBBfiAAd3E2AgAMAgsCQCAEIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAQoAhAiAARAIAIgADYCECAAIAI2AhgLIAQoAhQiAEUNACACIAA2AhQgACACNgIYCyAHIAlqIQcgBCAJaiIEKAIEIQALIAQgAEF+cTYCBCADIAdBAXI2AgQgAyAHaiAHNgIAIAdB/wFNBEAgB0F4cUGQ7gJqIQACf0Ho7QIoAgAiAUEBIAdBA3Z0IgJxRQRAQejtAiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyECIAdB////B00EQCAHQSYgB0EIdmciAGt2QQFxIABBAXRrQT5qIQILIAMgAjYCHCADQgA3AhAgAkECdEGY8AJqIQACQAJAQeztAigCACIBQQEgAnQiBXFFBEBB7O0CIAEgBXI2AgAgACADNgIADAELIAdBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAQNAIAEiACgCBEF4cSAHRg0CIAJBHXYhASACQQF0IQIgACABQQRxaiIFKAIQIgENAAsgBSADNgIQCyADIAA2AhggAyADNgIMIAMgAzYCCAwBCyAAKAIIIgEgAzYCDCAAIAM2AgggA0EANgIYIAMgADYCDCADIAE2AggLIAhBCGohAAwCCwJAIAhFDQACQCAFKAIcIgFBAnRBmPACaiICKAIAIAVGBEAgAiAANgIAIAANAUHs7QIgB0F+IAF3cSIHNgIADAILAkAgBSAIKAIQRgRAIAggADYCEAwBCyAIIAA2AhQLIABFDQELIAAgCDYCGCAFKAIQIgEEQCAAIAE2AhAgASAANgIYCyAFKAIUIgFFDQAgACABNgIUIAEgADYCGAsCQCADQQ9NBEAgBSADIAZqIgBBA3I2AgQgACAFaiIAIAAoAgRBAXI2AgQMAQsgBSAGQQNyNgIEIAUgBmoiBCADQQFyNgIEIAMgBGogAzYCACADQf8BTQRAIANBeHFBkO4CaiEAAn9B6O0CKAIAIgFBASADQQN2dCICcUUEQEHo7QIgASACcjYCACAADAELIAAoAggLIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAEIAA2AhwgBEIANwIQIABBAnRBmPACaiEBAkACQCAHQQEgAHQiAnFFBEBB7O0CIAIgB3I2AgAgASAENgIAIAQgATYCGAwBCyADQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQEDQCABIgIoAgRBeHEgA0YNAiAAQR12IQEgAEEBdCEAIAIgAUEEcWoiBygCECIBDQALIAcgBDYCECAEIAI2AhgLIAQgBDYCDCAEIAQ2AggMAQsgAigCCCIAIAQ2AgwgAiAENgIIIARBADYCGCAEIAI2AgwgBCAANgIICyAFQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIBQQJ0QZjwAmoiBSgCACACRgRAIAUgADYCACAADQFB7O0CIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQZDuAmohAEH87QIoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEHo7QIgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0H87QIgBTYCAEHw7QIgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsOACAAQdAAahAWQdAAags3AQF/IAAoAgAiAEGsjgNHBEAgACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsLC4ICAQN/AkACfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiAiABSQRAIwBBEGsiBCQAIAEgAmsiAgRAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgFrSwRAIAAgAyACIANrIAFqIAEgARD3AQsgAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgNqIAJBABC/AiAAIAEgAmoiABBsIARBADoADyAAIANqIAQtAA86AAALIARBEGokAAwBCyAAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsgARDKAgsLwQQBCn8jAEEQayIHJAACQCAHQQRqIAAQZiILLQAAQQFHDQAgASACaiIJIAEgACAAKAIAQQxrKAIAaiICKAIEQbABcUEgRhshCCACKAIYIQMCQCACLQBQQQFGBEAgAigATCEFDAELIAdBDGoiBiACKAIcIgQ2AgAgBEGsjgNHBEAgBCAEKAIEQQFqNgIECyAGQeSPAxAVIgRBICAEKAIAKAIcEQMAIQUgBhAYIAIgBTYATCACQQE6AFALAn8gASEEIAIhBiAFwCEMQQAhAiMAQRBrIgUkAAJAAkAgAyIBRQ0AIAYoAgwhAyAIIARrIgpBAEoEQCABIAQgCiABKAIAKAIwEQQAIApHDQELIAMgCSAEayIEa0EAIAMgBEobIgNBAEoEQCADQfj///8HTw0CAkAgA0ELTwRAIANBB3IiAkEBahASIQQgBSACQf////8HazYCDCAFIAQ2AgQgBSADNgIIDAELIAUgAzoADyAFQQRqIQQLIAMEQCAEIAwgA/wLAAtBACECIAMgBGpBADoAACABIAUoAgQgBUEEaiAFLAAPQQBIGyADIAEoAgAoAjARBAAhBCAFLAAPQQBIBEAgBSgCDBogBSgCBBARCyADIARHDQELAkAgCSAIayIDQQBMDQAgASAIIAMgASgCACgCMBEEACADRg0ADAELIAZBADYCDCABIQILIAVBEGokACACDAELEHEACw0AIAAgACgCAEEMaygCAGoiASABKAIQQQVyEKABCyALEF4gB0EQaiQAIAALlwEBAX8CQCAAKAIIIAAoAgRsIAFHBEAgACgCACIEBEAgBEEEaygCABARCyAAIAFBAEwEf0EABSABQYCAgIACTw0CIAFBA3RBEGoQFiIBRQ0CIAFBcHEiBCABNgIMIARBEGoLNgIACyAAIAM2AgggACACNgIEDwtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALBgAgABARC4EBAQJ/AkACQCACQQRPBEAgACABckEDcQ0BA0AgACgCACABKAIARw0CIAFBBGohASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCwNAIAAtAAAiAyABLQAAIgRGBEAgAUEBaiEBIABBAWohACACQQFrIgINAQwCCwsgAyAEaw8LQQALigEBAX8CQCAAKAIEIAFHBEAgACgCACIDBEAgA0EEaygCABARCyAAIAFBAEwEf0EABSABQYCAgIACTw0CIAFBA3RBEGoQFiIBRQ0CIAFBcHEiAyABNgIMIANBEGoLNgIACyAAIAI2AgQPC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAsuAQF/QQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQfTgAjYCACAAQcjhAkECEAEACwYAEIEGAAvUAQIDfwJ+AkAgACkDcCIEQgBSIAQgACkDeCAAKAIEIgEgACgCLCICa6x8IgVXcUUEQCAAEMIBIgNBAE4NASAAKAIsIQIgACgCBCEBCyAAQn83A3AgACABNgJoIAAgBSACIAFrrHw3A3hBfw8LIAVCAXwhBSAAKAIEIQEgACgCCCECAkAgACkDcCIEUA0AIAQgBX0iBCACIAFrrFkNACABIASnaiECCyAAIAI2AmggACAFIAAoAiwiACABa6x8NwN4IAAgAU8EQCABQQFrIAM6AAALIAML6gEBA38CQCABEMMCIQIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEBCyEDAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIQQgAiADTQRAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAshAwJAIAJFDQAgAkECdCIERQ0AIAMgASAE/AoAAAsjAEEQayIBJAACfyAALQALQQd2BEAgACgCBAwBCyAALQALCxogACACEGwgAUEANgIMIAMgAkECdGogASgCDDYCACABQRBqJAAMAQsgACADIAIgA2sgBEEAIAQgAiABELwCCwumAQEDfwJAIAEQSyECIAAtAAtBB3YEfyAAKAIIQf////8HcUEBawVBCgshAwJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyEEIAIgA00EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQMCQCACRSIEDQAgBA0AIAMgASAC/AoAAAsgACADIAIQygIMAQsgACADIAIgA2sgBEEAIAQgAiABEJgBCwsQACAAELEDIAEQsQNzQQFzCxAAIAAQsgMgARCyA3NBAXMLygIBBH9BqI4DLQAABEBBpI4DKAIADwsjAEEgayIBJAACQAJAA0AgAUEIaiICIABBAnRqIABBoytBmswAQQEgAHRB/////wdxGxCaAyIDNgIAIANBf0YNASAAQQFqIgBBBkcNAAtBuPkBIQAgAkG4+QFBGBAdRQ0BQdD5ASEAIAJB0PkBQRgQHUUNAUEAIQBBtIwDLQAARQRAA0AgAEECdEGEjANqIABBmswAEJoDNgIAIABBAWoiAEEGRw0AC0G0jANBAToAAEGcjANBhIwDKAIANgIAC0GEjAMhACABQQhqIgJBhIwDQRgQHUUNAUGcjAMhACACQZyMA0EYEB1FDQFBGBAWIgBFDQAgACABKQIINwIAIAAgASkCGDcCECAAIAEpAhA3AggMAQtBACEACyABQSBqJABBqI4DQQE6AABBpI4DIAA2AgAgAAu7CgIFfw9+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4RCACEBUARAQoCAgICAgOD//wAhCgwDCyAKQoCAgICAgMD//wCEIQoMAgsgASALhFAEQEIAIQEMAgsgAiADhFAEQEIAIQEMAgsgC0L///////8/WARAIAVB0ABqIAEgDSABIA0gDVAiBht5IAZBBnStfKciBkEPaxA7QRAgBmshBiAFKQNYIg1CIIghDiAFKQNQIQELIAJC////////P1YNACAFQUBrIAMgDCADIAwgDFAiCBt5IAhBBnStfKciCEEPaxA7IAYgCGtBEGohBiAFKQNIIQwgBSkDQCEDCyADQg+GIgtCgID+/w+DIgIgAUIgiCIEfiIQIAtCIIgiEyABQv////8PgyIBfnwiD0IghiIRIAEgAn58IgsgEVStIAIgDUL/////D4MiDX4iFSAEIBN+fCIRIAxCD4YiEiADQjGIhEL/////D4MiAyABfnwiFCAPIBBUrUIghiAPQiCIhHwiDyACIA5CgIAEhCIMfiIWIA0gE358Ig4gEkIgiEKAgICACIQiAiABfnwiECADIAR+fCISQiCGfCIXfCEBIAcgCWogBmpB//8AayEGAkAgAiAEfiIYIAwgE358IgQgGFStIAQgBCADIA1+fCIEVq18IAIgDH58IAQgBCARIBVUrSARIBRWrXx8IgRWrXwgAyAMfiIDIAIgDX58IgIgA1StQiCGIAJCIIiEfCAEIAJCIIZ8IgIgBFStfCACIAIgECASVq0gDiAWVK0gDiAQVq18fEIghiASQiCIhHwiAlatfCACIAIgDyAUVK0gDyAXVq18fCICVq18IgRCgICAgICAwACDQgBSBEAgBkEBaiEGDAELIAtCP4ggBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAUIBhoQhAQsgBkH//wFOBEAgCkKAgICAgIDA//8AhCEKQgAhAQwBCwJ+IAZBAEwEQEEBIAZrIgdB/wBNBEAgBUEwaiALIAEgBkH/AGoiBhA7IAVBIGogAiAEIAYQOyAFQRBqIAsgASAHEHogBSACIAQgBxB6IAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv///////z+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhEIAUgRAIAIhAQwBCyAKIAIgAkIBg3wiASACVK18IQoLIAAgATcDACAAIAo3AwggBUHgAGokAAuBAQEEfyMAQRBrIgEkACABIAA2AgwjAEEQayICJAAgACgCAEF/RwRAIAJBDGoiAyABQQxqNgIAIAJBCGoiBCADNgIAA0AgACgCACIDQQFGDQALIANFBEAgAEEBNgIAIAQQ2gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrC98HAQl/IwBBEGsiByQAIAEgASgCBEEBajYCBCMAQRBrIgMkACADIAE2AgwgByADKAIMNgIMIANBEGokACACIABBCGoiACgCBCAAKAIAIgNrQQJ1TwRAAkAgAkEBaiIBIAAoAgQiBCADa0ECdSIDSwRAIwBBIGsiCiQAAkAgASADayIGIAAoAgggBGtBAnVNBEAgACAGEN8CDAELIABBDGohCCAKQQxqIQECfyAGIAAoAgQgACgCAGtBAnVqIQUjAEEQayIDJAAgAyAFNgIMIAUgABDHAiIETQRAIAAoAgggACgCAGtBAnUiBSAEQQF2SQRAIAMgBUEBdDYCCCMAQRBrIgQkACADQQhqIgUoAgAgA0EMaiIJKAIASSELIARBEGokACAJIAUgCxsoAgAhBAsgA0EQaiQAIAQMAQsQNwALIQUgACgCBCAAKAIAa0ECdSEJQQAhBCMAQRBrIgMkACADQQA2AgwgAUEANgIMIAEgCDYCECAFBH8gA0EEaiABKAIQIAUQxgIgAygCBCEEIAMoAggFQQALIQUgASAENgIAIAEgBCAJQQJ0aiIINgIIIAEgCDYCBCABIAQgBUECdGo2AgwgA0EQaiQAIwBBEGsiAyQAIAEoAgghBCADIAFBCGo2AgwgAyAENgIEIAMgBCAGQQJ0ajYCCCADKAIEIQQDQCADKAIIIARHBEAgASgCEBogAygCBEEANgIAIAMgAygCBEEEaiIENgIEDAELCyADKAIMIAMoAgQ2AgAgA0EQaiQAIAEoAgQgACgCACIDIAAoAgQiBmtqIQQgBiADayIGBEAgBCADIAb8CgAACyABIAQ2AgQgACAAKAIANgIEIAAoAgAhAyAAIAEoAgQ2AgAgASADNgIEIAAoAgQhAyAAIAEoAgg2AgQgASADNgIIIAAoAgghAyAAIAEoAgw2AgggASADNgIMIAEgASgCBDYCACAAKAIEGiAAKAIAGiABKAIEIQMDQCABKAIIIgQgA0cEQCABKAIQGiABIARBBGs2AggMAQsLIAEoAgAiAwRAIAFBDGooAgAaIAEoAhAgAxDEAgsLIApBIGokAAwBCyABIANJBEAgACgCBBogACAAKAIAIAFBAnRqEMUCCwsLIAAoAgAgAkECdGooAgAiAQRAIAEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALCyAHKAIMIQEgB0EANgIMIAAoAgAgAkECdGogATYCACAHKAIMIQAgB0EANgIMIAAEQCAAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACwsgB0EQaiQACzQBAX8jAEEQayIDJAAgAyABNgIMIAAgAygCDDYCACAAQQRqIAIoAgA2AgAgA0EQaiQAIAAL0wIBA38gACgCCCIEIAAoAgAiBWtBAnUgA08EQCADIAAoAgQiBCAFayIGQQJ1SwRAIAQgBUcEQCAGBEAgBSABIAb8CgAACyAAKAIEIQQLIAIgASAGaiIDayEBAkAgAiADRg0AIAFFDQAgBCADIAH8CgAACyAAIAEgBGo2AgQPCyACIAFrIQMCQCABIAJGDQAgA0UNACAFIAEgA/wKAAALIAAgAyAFajYCBA8LIAUEQCAAIAU2AgQgBRARIABBADYCCCAAQgA3AgBBACEECwJAIANBgICAgARPDQBB/////wMgBEEBdSIFIAMgAyAFSRsgBEH8////B08bIgNBgICAgARPDQAgACADQQJ0IgQQEiIDNgIEIAAgAzYCACAAIAMgBGo2AgggAiABayEEAkAgASACRg0AIARFDQAgAyABIAT8CgAACyAAIAMgBGo2AgQPCxATAAseACAALQALQQd2BEAgACgCCBogACgCAEEEEGQLIAALIAAgAEGI4QI2AgAgAEGM4gI2AgAgAEEEaiABEMECIAAL6w4DCHsCfBd/IwBBEGsiJSQAIAMiJkEASgRAIAQgByAHQX9GGyEdIAQgCCAIQX9GGyEbIARBeHEiA0EBaiEnIAZEAAAAAAAAAACiIRMgBCIIIANrIgRBA3EhGSAFIhogBUEEbUECdCIYa0EDcSEeIARBAXEhKCAIIANBf3NqIRwgAiAJQQN0aiEfIAIgCUEFdGohKSABIQkgACgCBCEVIAAoAgAhICAYIAVrQXxLISoDQCAYQQBKBEAgICAXQQN0aiEWIAkgFyAdbEEDdGohBEEAIRQDQCApIBQgG2xBA3RqIQUgBCEA/QwAAAAAAAAAAAAAAAAAAAAAIQpBACEC/QwAAAAAAAAAAAAAAAAAAAAAIQv9DAAAAAAAAAAAAAAAAAAAAAAhDP0MAAAAAAAAAAAAAAAAAAAAACENIANBAEoEQANAIAsgAP0KAwgiDiAF/QADMP3yAf3wASAA/QoDGCIPIAX9AANw/fIB/fABIAD9CgMoIhAgBf0AA7AB/fIB/fABIAD9CgM4IhEgBf0AA/AB/fIB/fABIQsgCiAOIAX9AAMg/fIB/fABIA8gBf0AA2D98gH98AEgECAF/QADoAH98gH98AEgESAF/QAD4AH98gH98AEhCiANIAD9CgMAIg4gBf0AAxD98gH98AEgAP0KAxAiDyAF/QADUP3yAf3wASAA/QoDICIQIAX9AAOQAf3yAf3wASAA/QoDMCIRIAX9AAPQAf3yAf3wASENIAwgDiAF/QADAP3yAf3wASAPIAX9AANA/fIB/fABIBAgBf0AA4AB/fIB/fABIBEgBf0AA8AB/fIB/fABIQwgBUGAAmohBSAAQUBrIQAgAkEIaiICIANIDQALIAsgDf3wASELIAogDP3wASEKCyAUIBVsQQN0IBZqISEgFSAUQQNybEEDdCAWaiEiIBUgFEECcmxBA3QgFmohIyAVIBRBAXJsQQN0IBZqISQCQCADIAhODQACfyAoRQRAIAMhASAAIQcgBQwBCyAAQQhqIQcgCyAA/QoDACIMIAX9AAMQ/fIB/fABIQsgCiAMIAX9AAMA/fIB/fABIQogJyEBIAVBIGoLIQIgHEUNAANAIAsgB/0KAwAiDCAC/QADEP3yAf3wASAH/QoDCCINIAL9AAMw/fIB/fABIQsgCiAMIAL9AAMA/fIB/fABIA0gAv0AAyD98gH98AEhCiAHQRBqIQcgAkFAayECIAFBAmoiASAIRw0ACwsgJCsDACESICEgBiAK/SEAoiAhKwMAoDkDACAkIBIgBiAK/SEBoqA5AwAgIisDACESICMgBiAL/SEAoiAjKwMAoDkDACAiIBIgBiAL/SEBoqA5AwAgFEEEaiIUIBhIDQALCwJAIBggGk4NACAgIBdBA3RqIRQgCSAXIB1sQQN0aiEEIBghASADQQBKBEADQCABIBVsIQcgHyABIBtsQQN0aiEFRAAAAAAAAAAAIRJBACECIAQhAANAIBIgACsDACAFKwMAoqAgAP0AAwggBf0AAwj98gEiCv0hAKAgCv0hAaAgAP0AAxggBf0AAxj98gEiCv0hAKAgCv0hAaAgAP0AAyggBf0AAyj98gEiCv0hAKAgCv0hAaAgACsDOCAFKwM4oqAhEiAAQUBrIQAgBUFAayEFIAJBCGoiAiADSA0ACyAUIAdBA3RqIRYCQCADIAhODQBBACEHIAMhAiAZBEADQCACQQFqIQIgEiAAKwMAIAUrAwCioCESIAVBCGohBSAAQQhqIQAgB0EBaiIHIBlHDQALCyAcQQNJDQADQCASIAArAwAgBSsDAKKgIAArAwggBSsDCKKgIAArAxAgBSsDEKKgIAArAxggBSsDGKKgIRIgAEEgaiEAIAVBIGohBSACQQRqIgIgCEcNAAsLIBYgBiASoiAWKwMAoDkDACABQQFqIgEgGkcNAAwCCwALAkAgAyAITgRAQQAhACABIQUgHgRAA0AgFCAFIBVsQQN0aiIBIBMgASsDAKA5AwAgBUEBaiEFIABBAWoiACAeRw0ACwsgKkUNAQwCCwNAIB8gASAbbEEDdGohBUEAIQdEAAAAAAAAAAAhEiADIQIgBCEAIBkEQANAIAJBAWohAiASIAArAwAgBSsDAKKgIRIgBUEIaiEFIABBCGohACAHQQFqIgcgGUcNAAsLIBxBA08EQANAIBIgACsDACAFKwMAoqAgACsDCCAFKwMIoqAgACsDECAFKwMQoqAgACsDGCAFKwMYoqAhEiAAQSBqIQAgBUEgaiEFIAJBBGoiAiAIRw0ACwsgFCABIBVsQQN0aiIAIAYgEqIgACsDAKA5AwAgGiABQQFqIgFHDQALDAELA0AgFCAFIBVsQQN0aiIAIBMgACsDAKA5AwAgFCAVIAVBAWpsQQN0aiIAIBMgACsDAKA5AwAgFCAVIAVBAmpsQQN0aiIAIBMgACsDAKA5AwAgFCAVIAVBA2psQQN0aiIAIBMgACsDAKA5AwAgBUEEaiIFIBpHDQALCyAXQQFqIhcgJkcNAAsLICVBEGokAAuDAgEHfyABIAAoAggiAyAAKAIEIgJrQQJ1TQRAIAAgAQR/IAFBAnQiAARAIAJBACAA/AsACyAAIAJqBSACCzYCBA8LAkAgAiAAKAIAIgJrIgZBAnUiBSABaiIEQYCAgIAESQRAQf////8DIAMgAmsiA0EBdSIIIAQgBCAISRsgA0H8////B08bIgQEQCAEQYCAgIAETw0CIARBAnQQEiEHCyAGIAdqIQMgAUECdCIBBEAgA0EAIAH8CwALIAMgBUECdGshBSAGBEAgBSACIAb8CgAACyAAIAcgBEECdGo2AgggACABIANqNgIEIAAgBTYCACACBEAgAhARCw8LEBMACxAfAAsNACAAKAIAELkDGiAACw0AIAAoAgAQvwMaIAALwwEBAn8gASgCBCECAkACQAJAAn8gASgCACIBIAAoAgRGBEAgASEDIAIgACgCCCACRg0BGgsgASACckEASA0BAkAgAUUNACACRQ0AIAFB/////wcgAm1KDQMLIAAgASACbCABIAIQGyAAKAIEIQMgACgCCAsgASADRw0CIAJHDQIPC0GRwgBB/iBBlQJB3yQQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC0HGD0HXHEH9BUGhJhAAAAvTAQEFfyMAQRBrIgUkAAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRrTQRAIAJFIgMNAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgYgBGohBwJAIAMNACADDQAgByABIAL8CgAACyAAIAIgBGoiARBsIAVBADoADyABIAZqIAUtAA86AAAMAQsgACADIAIgA2sgBGogBCAEQQAgAiABEJgBCyAFQRBqJAAgAAsEAEEACxgAIAAtAABBIHFFBEAgASACIAAQ0AEaCwt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALBQAQIAALaAEBfyMAQRBrIgUkACAFIAI2AgwgBSAENgIIIAVBBGogBUEMahBUIAAgASADIAUoAggQvQEhASgCACIABEBBoIMDKAIAGiAABEBBoIMDQfjxAiAAIABBf0YbNgIACwsgBUEQaiQAIAEL7QEBAn8CfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQshBAJAIAIgAWtBBUgNACAERQ0AIAEgAhC2ASACQQRrIQQCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsCfyAALQALQQd2BEAgACgCAAwBCyAACyICaiEFAkADQAJAIAIsAAAhACABIARPDQACQCAAQQBMDQAgAEH/AE4NACAAIAEoAgBHDQMLIAFBBGohASACIAUgAmtBAUpqIQIMAQsLIABBAEwNASAAQf8ATg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtrAQF/IwBBgAJrIgUkAAJAIAIgA0wNACAEQYDABHENACAFIAEgAiADayIDQYACIANBgAJJIgEbEKMBIAFFBEADQCAAIAVBgAIQNSADQYACayIDQf8B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NgIEQQEhBEF/QQFBgX9BACACKgIAIgUgBlwbIAUgBl4bIAUgBl0bIgBFBEAgAigCBCIAIANKIAAgA0hrIQALIABBgX9GDQEgAEEATg0BIAEgBTgCACACIAY4AgAgASACKAIENgIEIAIgAzYCBAtBAiEECyAECzYBA38gACgCBCAALAALIgIgAkEASCICGyIEIAEQS0YEfyAAKAIAIAAgAhsgASAEEB0FQQELRQtyAQJ/IwBBEGsiAyQAIANBCGogABBmGiADLQAIIQQCQCACRQ0AIARFDQAgACAAKAIAQQxrKAIAaigCGCIEIAEgAiAEKAIAKAIwEQQAIAJGDQAgACAAKAIAQQxrKAIAakEBEGcLIANBCGoQXiADQRBqJAALyAkCBH8EfiMAQfAAayIGJAAgBEL///////////8AgyEJAkACQCABUCIFIAJC////////////AIMiCkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAKUBtFBEAgA0IAUiAJQoCAgICAgMD//wB9IgtCgICAgICAwICAf1YgC0KAgICAgIDAgIB/URsNAQsgBSAKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCUKAgICAgIDA//8AVCAJQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAKQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBRshBEIAIAEgBRshAwwCCyADIAlCgICAgICAwP//AIWEUA0BIAEgCoRQBEAgAyAJhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAJhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgCSAKViAJIApRGyIIGyEKIAQgAiAIGyIMQv///////z+DIQkgAiAEIAgbIgtCMIinQf//AXEhByAMQjCIp0H//wFxIgVFBEAgBkHgAGogCiAJIAogCSAJUCIFG3kgBUEGdK18pyIFQQ9rEDsgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3kgB0EGdK18pyIHQQ9rEDtBECAHayEHIAYpA1Ah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AwRAIARB/wEgA/wLAAsgAEEANgIwIABCADcCKCAAIAI2AiQgACABNgIgIAAgBDYCHCAAIAc2AhQgACADEBIiBDYCKCAAIAMgBGoiATYCMCAEIQICQCAFQQFrQf////8DcSIDQQNPBEAgAiADQQFqIgVB/P///wdxIgNBAnRqIQIDQCAEIAZBAnRq/Qz//39///9/f///f3///39//QsCACAGQQRqIgYgA0cNAAsgAyAFRg0BCwNAIAJD//9/fzgCACACQQRqIgIgAUcNAAsLIAAgATYCLAsgAEIANwI4IAAgBDYCNCAAQUBr/QwAAAAAAAAAAAAAAAAAAAAA/QsCACAADwsQEwALGQEBfyABEMsCIQIgACABNgIEIAAgAjYCAAubAgEEfyMAQRBrIgUkACABEMMCIQIjAEEQayIDJAACQCACQff///8DTQRAAkAgAkECSQRAIAAgAC0AC0GAAXEgAkH/AHFyOgALIAAgAC0AC0H/AHE6AAsgACEEDAELIANBCGogAkECTwR/IAJBAmpBfnEiBCAEQQFrIgQgBEECRhsFQQELQQFqEIEBIAMoAgwaIAAgAygCCCIENgIAIAAgACgCCEGAgICAeHEgAygCDEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACACNgIECwJAIAJFDQAgAkECdCIARQ0AIAQgASAA/AoAAAsgA0EANgIEIAQgAkECdGogAygCBDYCACADQRBqJAAMAQsQNwALIAVBEGokAAvkAQEGfyMAQRBrIgUkACAAKAIEIQMCfyACKAIAIAAoAgBrIgRB/////wdJBEAgBEEBdAwBC0F/CyIEQQQgBBshBCABKAIAIQcgACgCACEIIANB+AFGBH9BAAUgACgCAAsgBBDTASIGBEAgA0H4AUcEQCAAKAIAGiAAQQA2AgALIAVB9wE2AgQgACAFQQhqIAYgBUEEahAqIgMQ7QIgAygCACEGIANBADYCACAGBEAgBiADKAIEEQEACyABIAAoAgAgByAIa2o2AgAgAiAAKAIAIARBfHFqNgIAIAVBEGokAA8LECAAC4sDAQJ/IwBBEGsiCiQAIAogADYCDAJAAkACQCADKAIAIgsgAkcNACAJKAJgIABGBH9BKwUgACAJKAJkRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCwJAAn8gBi0AC0EHdgRAIAYoAgQMAQsgBi0AC0H/AHELRQ0AIAAgBUcNAEEAIQAgCCgCACIBIAdrQZ8BSg0CIAQoAgAhACAIIAFBBGo2AgAgASAANgIADAELQX8hACAJIAlB6ABqIApBDGoQ+gEgCWtBAnUiBUEXSg0BAkACQAJAIAFBCGsOAwACAAELIAEgBUoNAQwDCyABQRBHDQAgBUEWSA0AIAMoAgAiASACRg0CIAEgAmtBAkoNAiABQQFrLQAAQTBHDQJBACEAIARBADYCACADIAFBAWo2AgAgASAFQaChAmotAAA6AAAMAgsgAyADKAIAIgBBAWo2AgAgACAFQaChAmotAAA6AAAgBCAEKAIAQQFqNgIAQQAhAAwBC0EAIQAgBEEANgIACyAKQRBqJAAgAAuNAwEDfyMAQRBrIgokACAKIAA6AA8CQAJAAkAgAygCACILIAJHDQAgAEH/AXEiDCAJLQAYRgR/QSsFIAwgCS0AGUcNAUEtCyEAIAMgC0EBajYCACALIAA6AAAMAQsCQAJ/IAYtAAtBB3YEQCAGKAIEDAELIAYtAAtB/wBxC0UNACAAIAVHDQBBACEAIAgoAgAiASAHa0GfAUoNAiAEKAIAIQAgCCABQQRqNgIAIAEgADYCAAwBC0F/IQAgCSAJQRpqIApBD2oQ/QEgCWsiBUEXSg0BAkACQAJAIAFBCGsOAwACAAELIAEgBUoNAQwDCyABQRBHDQAgBUEWSA0AIAMoAgAiASACRg0CIAEgAmtBAkoNAiABQQFrLQAAQTBHDQJBACEAIARBADYCACADIAFBAWo2AgAgASAFQaChAmotAAA6AAAMAgsgAyADKAIAIgBBAWo2AgAgACAFQaChAmotAAA6AAAgBCAEKAIAQQFqNgIAQQAhAAwBC0EAIQAgBEEANgIACyAKQRBqJAAgAAupBAIHfwR+IwBBEGsiCCQAAkACQAJAIAJBJEwEQCAALQAAIgYNASAAIQQMAgtB5O0CQRw2AgBCACEDDAILIAAhBAJAA0AgBsAiBUEgRiAFQQlrQQVJckUNASAELQABIQYgBEEBaiEEIAYNAAsMAQsCQCAGQf8BcSIFQStrDgMAAQABC0F/QQAgBUEtRhshByAEQQFqIQQLAn8CQCACQRByQRBHDQAgBC0AAEEwRw0AQQEhCSAELQABQd8BcUHYAEYEQCAEQQJqIQRBEAwCCyAEQQFqIQQgAkEIIAIbDAELIAJBCiACGwsiCq0hDEEAIQIDQAJAAkAgBC0AACIFQTBrIgZB/wFxQQpJDQAgBUHhAGtB/wFxQRlNBEAgBUHXAGshBgwBCyAFQcEAa0H/AXFBGUsNASAFQTdrIQYLIAogBkH/AXFMDQAgCCAMQgAgC0IAEDZBASEFAkAgCCkDCEIAUg0AIAsgDH4iDSAGrUL/AYMiDkJ/hVYNACANIA58IQtBASEJIAIhBQsgBEEBaiEEIAUhAgwBCwsgAQRAIAEgBCAAIAkbNgIACwJAAkAgAgRAQeTtAkHEADYCACAHQQAgA0IBgyIMUBshByADIQsMAQsgAyALVg0BIANCAYMhDAsCQCAMpw0AIAcNAEHk7QJBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEHk7QJBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuAAQIBfgN/AkAgAEKAgICAEFQEQCAAIQIMAQsDQCABQQFrIgEgACAAQgqAIgJCCn59p0EwcjoAACAAQv////+fAVYgAiEADQALCyACQgBSBEAgAqchAwNAIAFBAWsiASADIANBCm4iBEEKbGtBMHI6AAAgA0EJSyAEIQMNAAsLIAELAgALZgIBfwF+IwBBEGsiAiQAIAACfiABRQRAQgAMAQsgAiABrUIAQfAAIAFnIgFBH3NrEDsgAikDCEKAgICAgIDAAIVBnoABIAFrrUIwhnwhAyACKQMACzcDACAAIAM3AwggAkEQaiQAC3sBA39BfyEDAkAgAEF/Rg0AIAEoAkxBAEghBAJAAkAgASgCBCICRQRAIAEQogEaIAEoAgQiAkUNAQsgAiABKAIsQQhrSw0BCyAEDQFBfw8LIAEgAkEBayICNgIEIAIgADoAACABIAEoAgBBb3E2AgAgAEH/AXEhAwsgAwsbAQF/IAFBARCzAyECIAAgATYCBCAAIAI2AgALJAEBfwJAIAAoAgAiAkUNACACIAEQvgNBf0cNACAAQQA2AgALC3kBAn8jAEEQayIBJAAgACAAKAIAQQxrKAIAaigCGARAIAFBCGogABBmGgJAIAEtAAhFDQAgACAAKAIAQQxrKAIAaigCGCICIAIoAgAoAhgRAABBf0cNACAAIAAoAgBBDGsoAgBqQQEQZwsgAUEIahBeCyABQRBqJAALFAAgAEH46QE2AgAgAEEEahAYIAAL6QEBA38gAEUEQEGA5gIoAgAiAARAIAAQjwEhAQtBmOcCKAIAIgAEQCAAEI8BIAFyIQELQZTyAigCACIABEADQCAAKAJMGiAAKAIUIAAoAhxHBEAgABCPASABciEBCyAAKAI4IgANAAsLIAEPCyAAKAJMQQBIIQICQAJAIAAoAhQgACgCHEYNACAAQQBBACAAKAIkEQQAGiAAKAIUDQBBfyEBDAELIAAoAgQiASAAKAIIIgNHBEAgACABIANrrEEBIAAoAigREgAaC0EAIQEgAEEANgIcIABCADcDECAAQgA3AgQgAg0ACyABCxoAIAAgARDQAyIAQQAgAC0AACABQf8BcUYbC1IBAn9B2OMCKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAEAkNAQtB5O0CQTA2AgBBfw8LQdjjAiAANgIAIAELjwwDBnwDfgd/IwBBEGsiDiQAAkACQCABvSIJQjSIpyINQf8PcSIPQb4IayIQQf9+SyAAvSIIQjSIpyILQf8Pa0GCcE9xDQAgCUIBhiIKQoCAgICAgIAQfEKBgICAgICAEFQEQEQAAAAAAADwPyECIAhCgICAgICAgPg/UQ0CIApQDQIgCkKBgICAgICAcFQgCEIBhiIIQoCAgICAgIBwWHFFBEAgACABoCECDAMLIAhCgICAgICAgPD/AFENAkQAAAAAAAAAACABIAGiIAlCAFMgCEKAgICAgICA8P8AVHMbIQIMAgsgCEIBhkKAgICAgICAEHxCgYCAgICAgBBUBEAgACAAoiECIAhCAFMEQCACmiACIAkQ2ANBAUYbIQILIAlCAFkNAiMAQRBrIgtEAAAAAAAA8D8gAqM5AwggCysDCCECDAILIAhCAFMEQCAJENgDIgxFBEAgACAAoSIAIACjIQIMAwsgC0H/D3EhCyAMQQFGQRJ0IQwgAL1C////////////AIMhCAsgEEH/fk0EQEQAAAAAAADwPyECIAhCgICAgICAgPg/UQ0CIA9BvQdNBEAgASABmiAIQoCAgICAgID4P1YbRAAAAAAAAPA/oCECDAMLIA1B/w9LIAhCgICAgICAgPg/VkcEQCMAQRBrIgtEAAAAAAAAAHA5AwggCysDCEQAAAAAAAAAcKIhAgwDCyMAQRBrIgtEAAAAAAAAABA5AwggCysDCEQAAAAAAAAAEKIhAgwCCyALDQAgAEQAAAAAAAAwQ6K9Qv///////////wCDQoCAgICAgICgA30hCAsCfCAJQoCAgECDvyIFIA4gCEKAgICA0Kql8z99IglCNIentyIDQcDDASsDAKIgCUItiKdB/wBxQQV0IgtBmMQBaisDAKAgCCAJQoCAgICAgIB4g30iCEKAgICACHxCgICAgHCDvyIAIAtBgMQBaisDACIEokQAAAAAAADwv6AiAiAIvyAAoSAEoiIEoCIAIANBuMMBKwMAoiALQZDEAWorAwCgIgMgACADoCIDoaCgIAQgAEHIwwErAwAiBKIiBiACIASiIgSgoqAgAiAEoiICIAMgAyACoCICoaCgIAAgACAGoiIDoiADIAMgAEH4wwErAwCiQfDDASsDAKCiIABB6MMBKwMAokHgwwErAwCgoKIgAEHYwwErAwCiQdDDASsDAKCgoqAiACACIAIgAKAiAqGgOQMIIAK9QoCAgECDvyIDoiEAIAEgBaEgA6IgASAOKwMIIAIgA6GgoqACQCAAvUI0iKdB/w9xIgtByQdrQT9JDQAgC0HJB0kEQCAARAAAAAAAAPA/oCIAmiAAIAwbDAILIAtBiQhJQQAhCw0AIAC9QgBTBEAjAEEQayILRAAAAAAAAACQRAAAAAAAAAAQIAwbOQMIIAsrAwhEAAAAAAAAABCiDAILIwBBEGsiC0QAAAAAAAAA8EQAAAAAAAAAcCAMGzkDCCALKwMIRAAAAAAAAABwogwBCyAAQeD9ACsDAKJB6P0AKwMAIgGgIgIgAaEiAUH4/QArAwCiIAFB8P0AKwMAoiAAoKCgIgAgAKIiASABoiAAQZj+ACsDAKJBkP4AKwMAoKIgASAAQYj+ACsDAKJBgP4AKwMAoKIgAr0iCadBBHRB8A9xIg1B0P4AaisDACAAoKCgIQAgDUHY/gBqKQMAIAkgDK18Qi2GfCEIIAtFBEACfCAJQoCAgIAIg1AEQCAIQoCAgICAgICIP32/IgEgAKIgAaBEAAAAAAAAAH+iDAELIAhCgICAgICAgPA/fCIIvyIBIACiIgMgAaAiAJlEAAAAAAAA8D9jBHwjAEEQayILIAtEAAAAAAAAEAA5AwggCysDCEQAAAAAAAAQAKI5AwggCEKAgICAgICAgIB/g78gAEQAAAAAAADwv0QAAAAAAADwPyAARAAAAAAAAAAAYxsiAqAiBSADIAEgAKGgIAAgAiAFoaCgoCACoSIAIABEAAAAAAAAAABhGwUgAAtEAAAAAAAAEACiCwwBCyAIvyIBIACiIAGgCyECCyAOQRBqJAAgAgvNAgEEfyAAIAEpAgA3AgAgACABKAIINgIIIABBADYCFCAAQgA3AgwCQAJAAkAgASgCECICIAEoAgwiBEcEQCACIARrIgJBAEgNASAAIAIQEiIDNgIQIAAgAzYCDCAAIAIgA2oiBTYCFCACBEAgAyAEIAL8CgAACyAAIAU2AhALIABBADYCICAAQgA3AhggASgCHCICIAEoAhgiBEcEQCACIARrIgJBAEgNAiAAIAIQEiIDNgIcIAAgAzYCGCAAIAIgA2oiBTYCICACBEAgAyAEIAL8CgAACyAAIAU2AhwLIABBADYCLCAAQgA3AiQgASgCKCICIAEoAiQiA0cEQCACIANrIgFBAEgNAyAAIAEQEiICNgIoIAAgAjYCJCAAIAEgAmoiBDYCLCABBEAgAiADIAH8CgAACyAAIAQ2AigLIAAPCxATAAsQEwALEBMAC6YHARV/IwBBEGsiCyEMIAskAAJAAkACQCAKKAIIIhEgACAAIBFKGyIYIAooAhAiEmwiFkGAgICAAkkEQCAKKAIMIQ4CQCAKKAIAIg1FBEAgFkEDdCENAkAgFkGAgAFNBEAgCyANQR5qQXBxayIQIgskAAwBCyANQRBqEBYiDUUNAiANQXBxIhAgDTYCDCAQQRBqIRALIBAhDQsgDiABIAEgDkoiDxsiGSASbCIXQYCAgIACSQRAIAooAgQiDkUEQCAXQQN0IQoCQCAXQYCAAU0EQCALIApBHmpBcHFrIhMkAAwBCyAKQRBqEBYiCkUNByAKQXBxIgsgCjYCDCALQRBqIRMLIBMhDgsgAEEATA0EIAJBAEwNBEEAIQogAUEATA0DIAIgEkcgACARTHIgD3IhHANAIAAgCiAYaiIRIAAgEUgbIAprIRQgByAKQQN0IgtqIRogAyALaiEbQQAhCwJAIBwgCkVyRQRAA0AgDCAENgIIIAwgGyAEIAtsQQN0ajYCBEEAIQogDSAMQQRqIAIgCyASaiIPIAIgD0gbIAtrIhUgFBBCA0AgDCAINgIIIAwgGiAIIApsQQN0ajYCBCAMQQRqIA0gDiAUIBUgASAKIBlqIgsgASALSBsgCmsgCUF/QX9BABAuIAsiCiABSA0ACyAPIgsgAkgNAAwCCwALA0AgDCAENgIIIAwgGyAEIAtsQQN0ajYCBEEAIQogDSAMQQRqIAIgCyASaiIPIAIgD0gbIAtrIhUgFBBCIAUgC0EDdGohHQNAIAwgBjYCCCAMIB0gBiAKbEEDdGo2AgQgDiAMQQRqIh4gFSABIAogGWoiCyABIAtIGyAKayIfEH4gDCAINgIIIAwgGiAIIApsQQN0ajYCBCAeIA0gDiAUIBUgHyAJQX9Bf0EAEC4gCyIKIAFIDQALIA8iCyACSA0ACwsgESIKIABIDQALDAQLDAQLDAMLDAILA0AgACAKIBhqIgUgACAFSBsgCmshByADIApBA3RqIQhBACEBA0AgDCAENgIIIAwgCCABIARsQQN0ajYCBCANIAxBBGogAiABIBJqIgYgAiAGSBsgAWsgBxBCIAYiASACSA0ACyAFIgogAEgNAAsLAkAgF0GBgAFJDQAgE0UNACATQQRrKAIAEBELAkAgFkGBgAFJDQAgEEUNACAQQQRrKAIAEBELIAxBEGokAA8LQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC/YDAQp/An9BzOcCLQAAQQFxBEBByOcCKAIAIQlBxOcCKAIAIQpBwOcCKAIADAELQYCAICEJQcjnAkGAgCA2AgBBwOcCQoCAgYCAgIAENwIAQcznAkEBOgAAQYCAICEKQYCAAQshBwJAIAAoAgAiBSABKAIAIgQgAigCACIDIAMgBEgbIgMgAyAFSBtBMEgNACAFIgNBASAHQSBrIgtBoAFtQXhxIgYgBkEBTBsiBkoEQCAAIAMgBiIDIAUgA24iAGxrIgQEQCADIAMgBEF/c2ogAEEDdEEIam1BA3RrIQMLIAM2AgAgASgCACEECyACKAIAIggCfyALIAMgBGxBA3RrIgAgA0EFdE4EQCAAIANBA3RuDAELQYCAoAIgBkEFdG4LIgBBgIDgACADQQR0biIGIAAgBkgbQXxxIgBKBEAgAiAIIAggAG0iASAAbGsiAgR/IAAgACACayABQQJ0QQRqbUECdGsFIAALNgIADwsgAyAFRw0AIAQhAiAFIAhsQQN0IgBBgQhOBEAgCkGAgOAAIAlBAEcgAEGBgAJJcSIAGyEHQcAEIAQgBEHABE4bIAQgABshAgsgAiAHIAVBGGxuIgAgACACShsiAEUNACABIAQgBCAAbSIBIABsayICBH8gACAAIAJrIAFBAWptawUgAAs2AgALC54RAwt/AnwBeyMAQbABayIEJAAgAisDACEPAkACQAJAAkACQAJAAkACQAJAAkAgACgCBCIGQQFGBEAgACgCCCINQQBIDQdEAAAAAAAA8D8gD6EhDyAAKAIAIQggACgCDCgCBCEGQQAhAAJAAkAgDQ4CAwEACyAGQQFHDQAgDUH+////B3EhACAP/RQhEUEAIQMDQCAIIANBA3RqIgEgESAB/QADAP3yAf0LAwAgA0ECaiIDIABHDQALIAAgDUYNAgsgDSAAIgNrQQNxIgIEQANAIAggAyAGbEEDdGoiASAPIAErAwCiOQMAIANBAWohAyAFQQFqIgUgAkcNAAsLIAAgDWtBfEsNAQNAIAggAyAGbEEDdGoiACAPIAArAwCiOQMAIAggA0EBaiAGbEEDdGoiACAPIAArAwCiOQMAIAggA0ECaiAGbEEDdGoiACAPIAArAwCiOQMAIAggA0EDaiAGbEEDdGoiACAPIAArAwCiOQMAIANBBGoiAyANRw0ACwwBCyAPRAAAAAAAAAAAYQ0AIAQgACgCCCIONgKYASAEIAM2ApABIA5BAEgNASAAKAIAIQUgBCAGQQFrIg02AmAgBCAFQQhqNgJcIAQgDjYCZCANIA5yQQBIQQAgBRsNCSAEIAAoAhg2AoABIAQgACkCEDcCeCAEIAD9AAIA/QsCaCAEQgE3AoQBIAQgBCgCdCgCBDYCjAEgBkEATA0CIAEoAhghBiABKAIAIQUgASgCBCEIIAH9AAIIIREgBCAE/QACbP0LAjQgBCAE/QACfP0LAkQgBCAEKAKMATYCVCAEIAY2AiAgBCAR/QsCECAEIAg2AgwgBCAFNgIIIAQgBP0AAlz9CwIkIAggDUcNAyAEKAIsIA5HDQQgBEEkaiEFAkAgDkUNACAOQQN0IgZFDQAgA0EAIAb8CwALIARCgICAgICAgPg/NwOgASAEQaABaiEDIwBB8ABrIgskAAJAAkACQAJAIAUoAghBAUYEQCADKwMAIQ8gBCgCCCIHQQAgBCgCDCIGQQBIGw0OIAUoAgAiCUEAIAUoAgQiA0EASBsNDiADIAZHDQICQCAGRQ0AIAZBAEwNBCAHKwMAIAkrAwCiIRBBASEMIAZBAUYNACAGQQFrIgNBA3EhCCAGQQJrQQNPBEAgA0F8cSEFQQAhBgNAIBAgByAMQQN0IgpqKwMAIAkgCmorAwCioCAHIApBCGoiA2orAwAgAyAJaisDAKKgIAcgCkEQaiIDaisDACADIAlqKwMAoqAgByAKQRhqIgNqKwMAIAMgCWorAwCioCEQIAxBBGohDCAGQQRqIgYgBUcNAAsLIAhFDQBBACEFA0AgECAHIAxBA3QiA2orAwAgAyAJaisDAKKgIRAgDEEBaiEMIAVBAWoiBSAIRw0ACwsgBCgCkAEiAyAPIBCiIAMrAwCgOQMADAELIAsgBCgCIDYCICALIAQpAhg3AxggCyAE/QACCP0LAwggCyAFKAIwNgJYIAsgBf0AAiD9CwNIIAsgBf0AAhD9CwM4IAsgBf0AAgD9CwMoIAsgBCgCmAE2AmggCyAEKQKQATcDYCALQShqIAtBCGogC0HgAGogAxDxAwsgC0HwAGokAAwCC0HEOkHQG0HSAEGIDBAAAAtB+jpBshpBmwNBmQkQAAALIAAoAgAiCUEAIAAoAggiB0EASBsNCSAAKAIEQQBMDQcgBCgCmAEgB0cNCAJAIAdBAEwNACAAKAIMKAIEIQogBCgCkAEhDEEAIQMCQCAHQQhJDQAgCkEBRw0AIAkgB0EDdCIFaiAMSyAJIAUgDGpJcQ0AIAdB/v///wdxIQNBACEIA0AgDCAIQQN0IgZqIgUgBiAJav0AAwAgBf0AAwD98AH9CwMAIAhBAmoiCCADRw0ACyADIAdGDQELIANBAXIhBSAHQQFxBEAgDCADQQN0aiIGIAkgAyAKbEEDdGorAwAgBisDAKA5AwAgBSEDCyAFIAdGDQADQCAMIANBA3RqIgUgCSADIApsQQN0aisDACAFKwMAoDkDACAMIANBAWoiBkEDdGoiBSAJIAYgCmxBA3RqKwMAIAUrAwCgOQMAIANBAmoiAyAHRw0ACwsgB0EASA0GIAAoAgRBAEwNByAHIAQoApgBRw0IAkAgB0EATA0AIAIrAwAhDyAEKAKQASEKIAAoAgwoAgQhCEEAIQMCQCAHQQhJDQAgCEEBRw0AIAogB0EDdCIAaiAJSyAKIAAgCWpJcQ0AIAdB/v///wdxIQMgD/0UIRFBACEAA0AgCSAAQQN0IgZqIgUgBf0AAwAgESAGIApq/QADAP3yAf3xAf0LAwAgAEECaiIAIANHDQALIAMgB0YNAQsgA0EBciEAIAdBAXEEQCAJIAMgCGxBA3RqIgUgBSsDACAPIAogA0EDdGorAwCioTkDACAAIQMLIAAgB0YNAANAIAkgAyAIbEEDdGoiACAAKwMAIA8gCiADQQN0aisDAKKhOQMAIAkgA0EBaiIFIAhsQQN0aiIAIAArAwAgDyAKIAVBA3RqKwMAoqE5AwAgA0ECaiIDIAdHDQALCyABKAIEIgNBAEgNBiACKwMAIQ8gBCABKAIYNgI4IAQgASkCEDcDMCAB/QACACERIAQgBCgCmAEiADYCSCAEIBH9CwMgIAQgDzkDGCAEIAM2AhAgBCAEKQKQATcDQCANIAQoAiRHDQUgACAORw0FIARB3ABqIARBCGogBEFAaxChAgsgBEGwAWokAA8LQYwvQeQhQaYBQaklEAAAC0H1D0GCIEGTAUHKGRAAAAtBvjtB9xtB4gBBkA0QAAALQfPFAEGPIkGGAkHfJBAAAAtBqjlBohxBsAFBhRYQAAALQbEyQfYdQcoAQc0VEAAAC0HSNUGCIEH6AEHKGRAAAAtBqjlB1xxB8gVBoSYQAAALQag0QeQhQbIBQaklEAAAC+kEAQZ/IAAoAgAiBgRAIwBBEGsiBCQAIAZBDGoiAygCACEBIwBBEGsiAiQAIAIgATYCDCACKAIMIQEgAkEQaiQAIAQgATYCDCAGKAIQIQEjAEEQayICJAAgAiABNgIMIAIoAgwhASACQRBqJAAgBCABNgIIA0AgBCgCDCAEKAIIRgRAAkAgBigCACEBIwBBEGsiAiQAIAIgATYCDCACKAIMIQEgAkEQaiQAIAQgATYCDCAGKAIEIQEjAEEQayICJAAgAiABNgIMIAIoAgwhASACQRBqJAAgBCABNgIIA0AgBCgCDCIBIAQoAghGDQEgASgCACEBIwBBEGsiAiQAIAJBAToADCACIAFBDGo2AgggASABKAJUQQRyNgJUIAItAAxBAUYEQCACKAIIGgsgAkEQaiQAIAQoAgwoAgAiAiACKAIEQQFrIgE2AgQgAUF/RgRAIAIgAigCACgCCBEBAAsgBCAEKAIMQQRqNgIMDAALAAsFIAQoAgwiASgCABogASgCBBogBCABQQhqNgIMDAELCyMAQRBrIgUkACAFIAM2AgwgBSgCDCICKAIABEAgAigCACEBIAIoAgQhAwNAIAEgA0cEQCADQQhrIQMMAQsLIAIgATYCBCAFKAIMIgMoAgAgAygCCBogAygCABoQEQsgBUEQaiQAIwBBEGsiBSQAIAUgBjYCDCAFKAIMIgIoAgAEQCACKAIAIQEgAigCBCEDA0AgASADRwRAIANBBGshAwwBCwsgAiABNgIEIAUoAgwiAygCACADKAIIGiADKAIAGhARCyAFQRBqJAAgBEEQaiQACyAGEBEgAAu6AwEFfyMAQRBrIggkACABQX9zQff///8HaiACTwRAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAshCiAIQQRqIgkgAUHz////A0kEfyAIIAFBAXQ2AgwgCCABIAJqNgIEIwBBEGsiAiQAIAkoAgAgCEEMaiILKAIASSEMIAJBEGokACALIAkgDBsoAgAiAkELTwR/IAJBCGpBeHEiAiACQQFrIgIgAkELRhsFQQoLQQFqBUH3////BwsQiwEgCCgCBCECIAgoAggaIAQEQAJAIARFIgkNACAJDQAgAiAKIAT8CgAACwsgBgRAIAIgBGohCQJAIAZFIgsNACALDQAgCSAHIAb8CgAACwsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmohAyAEIApqIAVqIQUCQCAHRSIJDQAgCQ0AIAMgBSAH/AoAAAsLIAFBCkcEQCAKQQEQZAsgACACNgIAIAAgACgCCEGAgICAeHEgCCgCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgCEEAOgAMIAAgAmogCC0ADDoAACAIQRBqJAAPCxA3AAsLACAEIAI2AgBBAwu5AQECfyMAQRBrIgIkACAALQALQQd2BEAgACgCCBogACgCAEEEEGQLAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0ACwsaIAEtAAtBB3YhAyAAIAEoAgg2AgggACABKQIANwIAIAEgAS0AC0GAAXE6AAsgASABLQALQf8AcToACyACQQA2AgwgASACKAIMNgIAAkAgACABRiIBDQAgAw0ACyAALQALQQd2IQACQCABDQAgAA0ACyACQRBqJAALaQECfyMAQRBrIgMkACADQQxqIgQgASgCHCIBNgIAIAFBrI4DRwRAIAEgASgCBEEBajYCBAsgAiAEQaSQAxAVIgEgASgCACgCEBEAADYCACAAIAEgASgCACgCFBECACAEEBggA0EQaiQAC2IBAn8jAEEQayICJAAgAkEMaiIDIAAoAhwiADYCACAAQayOA0cEQCAAIAAoAgRBAWo2AgQLIANB3I8DEBUiAEGgoQJBuqECIAEgACgCACgCMBEKABogAxAYIAJBEGokACABC2kBAn8jAEEQayIDJAAgA0EMaiIEIAEoAhwiATYCACABQayOA0cEQCABIAEoAgRBAWo2AgQLIAIgBEGckAMQFSIBIAEoAgAoAhARAAA6AAAgACABIAEoAgAoAhQRAgAgBBAYIANBEGokAAu+AgEEfyADQcSDAyADGyIFKAIAIQMCQAJ/AkAgAUUEQCADDQFBAA8LQX4gAkUNARoCQCADBEAgAiEEDAELIAEtAAAiA8AiBEEATgRAIAAEQCAAIAM2AgALIARBAEcPC0GggwMoAgAoAgBFBEBBASAARQ0DGiAAIARB/78DcTYCAEEBDwsgA0HCAWsiA0EySw0BIANBAnRB8PkBaigCACEDIAJBAWsiBEUNAyABQQFqIQELIAEtAAAiBkEDdiIHQRBrIANBGnUgB2pyQQdLDQADQCAEQQFrIQQgBkH/AXFBgAFrIANBBnRyIgNBAE4EQCAFQQA2AgAgAARAIAAgAzYCAAsgAiAEaw8LIARFDQMgAUEBaiIBLAAAIgZBQEgNAAsLIAVBADYCAEHk7QJBGTYCAEF/Cw8LIAUgAzYCAEF+C6IBAQF/An8CQCAAKAJMIgFBAE4EQCABRQ0BQdiCAygCACABQf////8DcUcNAQsgACgCBCIBIAAoAghHBEAgACABQQFqNgIEIAEtAAAMAgsgABDCAQwBCyAAIAAoAkwiAUH/////AyABGzYCTAJ/IAAoAgQiASAAKAIIRwRAIAAgAUEBajYCBCABLQAADAELIAAQwgELIAAoAkwaIABBADYCTAsLIAAgACABIAAoAhhFciIBNgIQIAAoAhQgAXEEQBAgAAsLkwIBBH8jAEEQayIFJAAgARBLIQIjAEEQayIDJAACQCACQff///8HTQRAAkAgAkELSQRAIAAgAC0AC0GAAXEgAkH/AHFyOgALIAAgAC0AC0H/AHE6AAsgACEEDAELIANBCGogAkELTwR/IAJBCGpBeHEiBCAEQQFrIgQgBEELRhsFQQoLQQFqEIsBIAMoAgwaIAAgAygCCCIENgIAIAAgACgCCEGAgICAeHEgAygCDEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACACNgIECwJAIAJFIgANACAADQAgBCABIAL8CgAACyADQQA6AAcgAiAEaiADLQAHOgAAIANBEGokAAwBCxA3AAsgBUEQaiQAC3wBAn8gACAAKAJIIgFBAWsgAXI2AkggACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRBAAaCyAAQQA2AhwgAEIANwMQIAAoAgAiAUEEcQRAIAAgAUEgcjYCAEF/DwsgACAAKAIsIAAoAjBqIgI2AgggACACNgIEIAFBG3RBH3UL8AICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgA2AgAgAyACIARrQXxxIgJqIgFBBGsgADYCACACQQlJDQAgAyAANgIIIAMgADYCBCABQQhrIAA2AgAgAUEMayAANgIAIAJBGUkNACADIAA2AhggAyAANgIUIAMgADYCECADIAA2AgwgAUEQayAANgIAIAFBFGsgADYCACABQRhrIAA2AgAgAUEcayAANgIAIAIgA0EEcUEYciIBayICQSBJDQAgAK1CgYCAgBB+IQUgASADaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgACADoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC+wBAgJ8Bn8CQAJAIAMoAggiCEEATARARAAAAAAAAPA/IQYMAQsgAigCACEJIAQoAgAhCiACKAIEIQIgBCgCBCELIAEoAgAhDCABKAIEIQ0gAygCACEDRAAAAAAAAPA/IQZBACEEAkADQAJAIAMgBEECdGooAgAiAUEASA0AIAEgDU4NACABIAtODQQgASACTg0CIAwgAUEDdCIBaisDACIHIAEgCmorAwAgAKGjIAcgACAFIAEgCWorAwCgoKOiIAagIQYgCCAEQQFqIgRHDQEMAwsLDAILDAELIAYPC0HbOkGxIUG1AUGUOhAAAAuKAQEBfwJAIAAoAgQgAUcEQCAAKAIAIgMEQCADQQRrKAIAEBELIAAgAUEATAR/QQAFIAFBgICAgARPDQIgAUECdEEQahAWIgFFDQIgAUFwcSIDIAE2AgwgA0EQags2AgALIAAgAjYCBA8LQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC8cJAgt/AnwjAEHgAGsiBSQAAkACQAJAAkAgACgCBCIEIAJyIgZBAEhBACAAKAIAIggbRQRAIAZBAEgNAyAAKAIIIAJIDQMgBSAENgIYIAVCADcCECAFIAA2AgwgBSACNgIIIAUgBDYCBCAFIAg2AgAgBSABNgIcIAQgASgCBEcNASADKAIEIQQgBSADKAIAIgY2AjggBSACNgI8IAJBAEgiCEEAIAYbDQQgBSAENgJQIAUgAzYCRCAFQQA2AkggCA0DIAIgBEoNAwJAIAJFDQAgAkEDdCIERQ0AIAZBACAE/AsACyAFQoCAgICAgID4PzcDWCAFQThqIQwjAEEgayIIJAACQAJAAkACQCAFKAIIQQFGBEAgBSsDWCEQIAUoAgAiBkEAIAUoAgQiBEEASBsNCSABKAIAIgdBACABKAIEIglBAEgbDQkgBCAJRw0CAkAgBEUNACAEQQBMDQQgBisDACAHKwMAoiEPQQEhCSAEQQFGDQAgBEEBayIKQQNxIQ0gBEECa0EDTwRAIApBfHEhDkEAIQoDQCAPIAYgCUEDdCIEaisDACAEIAdqKwMAoqAgBiAEQQhqIgtqKwMAIAcgC2orAwCioCAGIARBEGoiC2orAwAgByALaisDAKKgIAYgBEEYaiIEaisDACAEIAdqKwMAoqAhDyAJQQRqIQkgCkEEaiIKIA5HDQALCyANRQ0AQQAhBANAIA8gBiAJQQN0IgpqKwMAIAcgCmorAwCioCEPIAlBAWohCSAEQQFqIgQgDUcNAAsLIAwoAgAiBCAQIA+iIAQrAwCgOQMADAELIAggBSgCGDYCGCAIIAUpAhA3AxAgCCAF/QACAP0LAwAjAEEQayIHJAACQCABKAIEIglBgICAgAJJBEACQCAFKwNYIQ8gCCgCDCENIAgoAgggCCgCBCAIKAIAIQtBACEGIAEoAgAiBEUEQCAJQQN0IQQCQCAJQYCAAU0EQCAHIARBHmpBcHFrIgYkAAwBCyAEQRBqEBYiBEUNAiAEQXBxIgYgBDYCDCAGQRBqIQYLIAYhBAsgByANKAIENgIMIAcgCzYCCCAHQQE2AgQgByAENgIAIAwoAgAiBARAIAwoAgRBAEgNDAsgB0EIaiAHIARBASAPEE8CQCAJQYGAAUkNACAGRQ0AIAZBBGsoAgAQEQsgB0EQaiQADAILC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAsLIAhBIGokAAwCC0HEOkHQG0HSAEGIDBAAAAtB+jpBshpBmwNBmQkQAAALIAAoAgQiBCACciIGQQBIQQAgACgCACIIGw0EIAZBAEgNAyAAKAIIIAJIDQMgAygCBCIGIAJIDQMgAygCACEHIAUgBjYCNCAFQQA2AiwgBSADNgIoIAUgAjYCICAFIAc2AhwgBSAENgIYIAVCADcCECAFIAA2AgwgBSACNgIIIAUgBDYCBCAFIAg2AgAgASgCBCAERw0CIAVCgICAgICAgPi/fzcDOCABIAUgBUEcaiAMEJwCIAVB4ABqJAAPCwwDC0G+O0H3G0HiAEGQDRAAAAtBqjlBohxBsAFBhRYQAAALQfUPQYIgQZMBQcoZEAAAC0GoNEHkIUGyAUGpJRAAAAvVBAIGfwJ9IwBBEGsiByQAAkAgACgCBCIFQQBMBEAMAQsgBUEDcSEJIAAoAhAgACgCDCABbEECdGohBgJAIAVBBEkEQCACIQUMAQsgBUH8////B3EhCiACIQUDQCAGKgIMIAUqAgyTIgwgDJQgBioCCCAFKgIIkyIMIAyUIAYqAgQgBSoCBJMiDCAMlCAGKgIAIAUqAgCTIgwgDJQgC5KSkpIhCyAFQRBqIQUgBkEQaiEGIAhBBGoiCCAKRw0ACwsgCUUNAEEAIQgDQCAGKgIAIAUqAgCTIgwgDJQgC5IhCyAGQQRqIQYgBUEEaiEFIAhBAWoiCCAJRw0ACwsgACgCHCABQQR0aiEBAkAgC5EiCyADKgIAX0UNACAHIAEoAgQ2AgggByALOAIEIAQtAAQhBSAEQQhqIAdBBGogB0EIahCIBAJAIAVFBEAgBCgCACAEKAIMIAQoAghrQQN1Rw0BIARBAToABAwBCyAEKAIIIgUgBCgCDCIGIAYgBWtBA3UQUiAEIAQoAgxBCGs2AgwLIAQtAARBAUcNACADIAQoAggqAgA4AgALAkACQCABKgIAIgwgC14EQAJAIAEoAggiBUUNACALIAMqAgCTIAxfRQ0AIAAgBSACIAMgBBCpAQsgASgCDCIFRQ0CIAEqAgAgCyADKgIAkl8NAQwCCwJAIAEoAgwiBUUNACALIAMqAgCSIAxgRQ0AIAAgBSACIAMgBBCpAQsgASgCCCIFRQ0BIAEqAgAgCyADKgIAk2BFDQELIAAgBSACIAMgBBCpAQsgB0EQaiQACwQAQQEL3QQCBn8CfSMAQRBrIgckACAAKAIEIgVBAEwEfUMAAAAABSAFQQNxIQkgACgCECAAKAIMIAFsQQJ0aiEGAkAgBUEESQRAIAIhBQwBCyAFQfz///8HcSEKIAIhBQNAIAYqAgwgBSoCDJMiDCAMlCAGKgIIIAUqAgiTIgwgDJQgBioCBCAFKgIEkyIMIAyUIAYqAgAgBSoCAJMiDCAMlCALkpKSkiELIAVBEGohBSAGQRBqIQYgCEEEaiIIIApHDQALCyAJBEBBACEIA0AgBioCACAFKgIAkyIMIAyUIAuSIQsgBkEEaiEGIAVBBGohBSAIQQFqIgggCUcNAAsLIAtDAAAAP5QLIQsgACgCHCABQQR0aiEBAkAgCyADKgIAX0UNACAHIAEoAgQ2AgggByALOAIEIAQtAAQhBSAEQQhqIAdBBGogB0EIahCIBAJAIAVFBEAgBCgCACAEKAIMIAQoAghrQQN1Rw0BIARBAToABAwBCyAEKAIIIgUgBCgCDCIGIAYgBWtBA3UQUiAEIAQoAgxBCGs2AgwLIAQtAARBAUcNACADIAQoAggqAgA4AgALAkACQCABKgIAIgwgC14EQAJAIAEoAggiBUUNACALIAMqAgCTIAxfRQ0AIAAgBSACIAMgBBCrAQsgASgCDCIFRQ0CIAEqAgAgCyADKgIAkl8NAQwCCwJAIAEoAgwiBUUNACALIAMqAgCSIAxgRQ0AIAAgBSACIAMgBBCrAQsgASgCCCIFRQ0BIAEqAgAgCyADKgIAk2BFDQELIAAgBSACIAMgBBCrAQsgB0EQaiQAC4IHAQd/IwBBoAFrIgEkAAJAIAAtABBBAUcNACAAIAAoAgRBAWoiAjYCBCAAKAIAIAJHBEAgAiAAKAIMbw0BCyABQQA2AmggAUHU9AE2AkwgAUHA9AE2AhQgAUHk9AEoAgAiBDYCDCABQQxqIgUiAiAEQQxrKAIAakHo9AEoAgA2AgAgAUEANgIQIAIgASgCDEEMaygCAGoiAiABQRhqIgQQigIgAkEAOgBQIAJBADYCSCABQez0ASgCACICNgIUIAFBFGoiBiACQQxrKAIAakHw9AEoAgA2AgAgAUHg9AEoAgAiAjYCDCAFIAJBDGsoAgBqQfT0ASgCADYCACABQdT0ATYCTCABQaz0ATYCDCABQcD0ATYCFCAEEM8BIgdBkO0BNgIAIAH9DAAAAAAAAAAAAAAAAAAAAAD9CwI4IAFBGDYCSCAGIAAoAhQgAEEUaiAALAAfIgRBAEgiAhsgACgCGCAEIAIbEBpBlypBARAaGiAAKAIIIgIgACgCBGwgACgCAG0hBCACQQBKBEADQCAGQc4tQckrQfrLACADIARGGyADIARIG0EBEBoaIANBAWoiAyAAKAIISA0ACwsgBkHsywBBAhAaIAAoAgRB5ABsIAAoAgBtEHNB/MsAQQMQGhoCQAJ/IAEoAkgiAkEQcQRAIAEoAkQiAyABKAIwIgJJBEAgASACNgJEIAIhAwsgAUEsagwBCyACQQhxRQRAQQAhAyABQQA6AAsgASECDAILIAEoAighAyABQSBqCyECAkAgAyACKAIAIgVrIgNB+P///wdJBEAgA0ELTwRAIANBB3IiBEEBahASIQIgASAEQf////8HazYCCCABIAI2AgAgASADNgIEDAILIAEgAzoACyABIQIgAw0BQQAhAwwCCxBxAAsgA0UNACACIAUgA/wKAAALIAIgA2pBADoAAEGAhQMgASgCACABIAEsAAsiA0EASCICGyABKAIEIAMgAhsQGhCNASABLAALQQBIBEAgASgCCBogASgCABARCyAAKAIEIAAoAgBGBEBBgIUDQYTMAEEBEBoaCyABQdz0ASgCACIANgIMIABBDGsoAgAgAUEMampB/PQBKAIANgIAIAFBgPUBKAIANgIUIAdBkO0BNgIAIAEsAENBAEgEQCABKAJAGiABKAI4EBELIAcQjgEaIAFBzABqEFYaCyABQaABaiQAC6j+AwVRfw98BHsDfgV9IwBBsAFrIh8kACAEKAJoIQUgBCgCWCEHIAEgASgCACgCABEAACEGIB9CADcCkAEgH0EANgKYASAfIAcgBkEBayIJQQAgBiAJTxsgBiAHShs2ApwBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYEQCAGQdaq1aoBTw0BIB8gBkEMbCIJEBIiBzYCkAEgHyAHIAlqNgKYASAJQQxrIgkgCUEMcGtBDGoiCQRAIAdBACAJ/AsACyAfIAcgCWo2ApQBCyAfIAE2AqABIB8gH0GQAWoiATYCqAEgHyABNgKAASAfIB9BnAFqNgKkASAfIB8pA6ABNwN4IAUhASAfQfgAaiEJIwBBQGoiByQAAkAgBkUNAAJAIAFBAk4EQEEBIQUgBkEBRw0BCyAJQQAgBhCEBAwBCwJ/IAEgBk4EQCAGIQFBAAwBCyAGIAYgAW4iBSABbGsLIQMgB0EANgI8IAdCADcCNAJAIAFBgICAgARJBEAgByABQQJ0IgAQEiICNgI0IAcgACACaiIENgI8IAAEQCACQQAgAPwLAAsgByAENgI4IAdBADYCMCAHQQA2AiwgB0IANwIkIAdBJGogARDgASAHQQA2AiAgBygCKCAHIAUgA0EASmo2AhwgByAJNgIQIAcoAiwgByAHQTRqNgIUSQRAQQQQEhBpIQFBGBASIgAgATYCACAAIAcpAxA3AgQgACAHKAIgNgIMIAAgBygCMDYCECAAIAcoAhw2AhQMAgsCQCAHKAIoIAcoAiQiAWtBAnVBAWoiAEGAgICABEkEQEH/////AyAHKAIsIAFrIgFBAXUiAiAAIAAgAkkbIAFB/P///wdPGyIABEAgAEGAgICABE8NByAAQQJ0EBIaC0EEEBIQaSEBQRgQEiIAIAE2AgAgACAHKQIQNwIEIAAgBygCIDYCDCAAIAcoAjA2AhAgACAHKAIcNgIUDAELDAQLECAACwwCCxAgAAsgB0FAayQAIB8oApABIQEgH0EANgKQASAfIAE2AoQBIB8pApQBIWkgH0IANwKUASAfIGk3AogBIB9BCGoiLCAEQfAA/AoAACMAQcAUayIjJAAgI0HvpIzUAzYCYCAjICwrAwC2Imw4AlggIyAsKwMItjgCXCAjICwoAmgiBDYCZCAfQYQBaiIBKAIAIQUgHygCiAEhBiAjIGyO/AAiBzYCbCAjIGwgB7KTOAJoICMgI0HoAGo2AnggIyABNgJwICMgI0HYAGo2AnwgIyAjQewAajYCdCAjICP9AANw/QsDACAEIQEjAEFAaiIHJAACQCAGIAVrQQxtIgVFDQACQCABQQJOBEBBASEGIAVBAUcNAQsgI0EAIAUQgwQMAQsCfyABIAVPBEAgBSEBQQAMAQsgBSAFIAFuIgYgAWxrCyEDIAdBADYCPCAHQgA3AjQCQCABQYCAgIAESQRAIAcgAUECdCIAEBIiAjYCNCAHIAAgAmoiBDYCPCAABEAgAkEAIAD8CwALIAcgBDYCOCAHQQA2AjAgB0EANgIsIAdCADcCJCAHQSRqIAEQ4AEgB0EANgIgIAcoAiggByAGIANBAEpqNgIcIAcgIzYCECAHKAIsIAcgB0E0ajYCFEkEQEEEEBIQaSEBQRgQEiIAIAE2AgAgACAHKQMQNwIEIAAgBygCIDYCDCAAIAcoAjA2AhAgACAHKAIcNgIUDAILAkAgBygCKCAHKAIkIgFrQQJ1QQFqIgBBgICAgARJBEBB/////wMgBygCLCABayIBQQF1IgIgACAAIAJJGyABQfz///8HTxsiAARAIABBgICAgARPDQcgAEECdBASGgtBBBASEGkhAUEYEBIiACABNgIAIAAgBykCEDcCBCAAIAcoAiA2AgwgACAHKAIwNgIQIAAgBygCHDYCFAwBCwwECxAgAAsMAgsQIAALIAdBQGskACAsKwMQtiFtIwBBIGsiASQAIB8oAoQBIQogHygCiAEhCSABQQA2AhwgAUIANwIUIAkgCmtBDG0hBQJAIAkgCkYNACAFQYCAgIAESQRAIAEgBUECdCIFEBIiGzYCFCABIAUgG2oiBzYCHEEAIQYgBUUiCUUEQCAbQQAgBfwLAAsgASAHNgIYIAUQEiEIIAlFBEAgCEEAIAX8CwALA0AgCiAGQQxsIglqIgcoAgAiBSAHKAIEIgcgAUEIakE+IAcgBWtBA3VnQQF0a0EAIAUgB0cbQQEQqQIgCCAGQQJ0aiAfKAKEASIKIAlqIgUoAgQgBSgCAGtBA3U2AgAgBkEBaiIGIB8oAogBIgkgCmtBDG1JDQALDAELDAELAkAgCSAKRg0AQwAAgD8gbZMhcANAIAogEUEMbGoiBSgCACIXIAUoAgQiFEcEQAJAA0ACQCAfKAKEASAXKAIAIgdBDGxqIQUCQAJAIBsgB0ECdCIJaiIKKAIAIgYgCCAJaiIcKAIATw0AIAUoAgAhDANAIBEgDCAGQQN0aiIJKAIAIg1KBEAgCiAGQQFqIgY2AgAgBiAcKAIASQ0BDAILCyANIBFHDQAgByARTA0BIBcqAgQibiAJKgIEIm+UIWwCQCBtQwAAgD9bBEAgbiBvkiBskyFsDAELIG1DAAAAAFsNACBtIG4gb5IgbJOUIHAgbJSSIWwLIBcgbDgCBCAJIGw4AgQMAQsgbUMAAIA/WwRAIAUoAgQiBiAFKAIIIgpJBEAgBiARNgIAIAYgFyoCBDgCBCAFIAZBCGo2AgQMAgsgBiAFKAIAIgZrIgdBA3UiHEEBaiIJQYCAgIACTw0CIAdB/////wEgCiAGayIKQQJ1IgwgCSAJIAxJGyAKQfj///8HTxsiCQR/IAlBgICAgAJPDQogCUEDdBASBUEACyIMaiIKIBE2AgAgCiAXKgIEOAIEIAogHEEDdGshHCAHBEAgHCAGIAf8CgAACyAFIAwgCUEDdGo2AgggBSAKQQhqIgc2AgQgBSAcNgIAIAYEQCAGEBELIAUgBzYCBAwBCyBtQwAAAABbBEAgF0EANgIEDAELIBcgbSAXKgIElCJsOAIEAkAgBSgCBCIGIAUoAggiCkkEQCAGIGw4AgQgBiARNgIAIAZBCGohBgwBCyAGIAUoAgAiB2siCUEDdSIMQQFqIgZBgICAgAJPDQICQEH/////ASAKIAdrIgpBAnUiHCAGIAYgHEkbIApB+P///wdPGyIKRQRAQQAhBgwBCyAKQYCAgIACTw0KIApBA3QQEiEGIBcqAgQhbAsgBiAJaiIcIGw4AgQgHCARNgIAIBwgDEEDdGshDCAJBEAgDCAHIAn8CgAACyAFIAYgCkEDdGo2AgggBSAcQQhqIgY2AgQgBSAMNgIAIAdFDQAgBxARCyAFIAY2AgQLIBQgF0EIaiIXRw0BDAILCwwECyAfKAKEASEKIB8oAogBIQkLIBFBAWoiESAJIAprQQxtSQ0ACwJAIG1DAAAAAFwNACAJIApGDQADQEEAIREgAUEANgIQIAFCADcCCCAKKAIEIhcgCigCACIGRwRAIBcgBmsiBUEASA0EIAEgBRASIhE2AgwgASARNgIIIAEgBSARajYCECAKKAIEIRcgCigCACEGCyAGIBdHBEADQCAGKgIEQwAAAABcBEACQCABKAIQIhwgEUsEQCARIAYpAgA3AgAgEUEIaiERDAELIBEgASgCCCIFayIHQQN1IgxBAWoiG0GAgICAAk8NByAHQf////8BIBwgBWsiEUECdSIcIBsgGyAcSRsgEUH4////B08bIhsEfyAbQYCAgIACTw0JIBtBA3QQEgVBAAsiFGoiESAGKQIANwIAIBEgDEEDdGshHCAHBEAgHCAFIAf8CgAACyABIBQgG0EDdGo2AhAgASARQQhqIhE2AgwgASAcNgIIIAVFDQAgBRARCyABIBE2AgwLIBcgBkEIaiIGRw0ACyABKAIIIREgCigCACEGCyAKIBE2AgAgASAGNgIIIAogASgCDDYCBCAKKAIIIQUgCiABKAIQNgIIIAEgBTYCECAGBEAgASAGNgIMIAYQEQsgCkEMaiIKIAlHDQALIB8oAogBIQkgHygChAEhCgsgCSAKRg0AA0AgCigCACIFIAooAgQiBiABQQhqQT4gBiAFa0EDdWdBAXRrQQAgBSAGRxtBARCpAiAKQQxqIgogCUcNAAsLIAgEQCAIEBELIAEoAhQiBQRAIAEoAhwaIAUQEQsgAUEgaiQAAkAgLC0AQCI9QQFNBEACQAJ/IwBBIGsiCSQAIB8oAogBIgEgHygChAEiBmsiB0EMbSEFAkAgASAGRgR/QQAFIAlBBBASIgg2AhQgCSAIQQRqIgE2AhwgCEEANgIAIAlBADYCECAJQgA3AgggB0EASA0BIAUQEiEcIAUEQCAcQQAgBfwLAAsgHEEBOgAAIAEhBUEBIRcDQCAFQQRrIgUoAgAhBiAJIAU2AhggHygChAEgBkEMbGoiBigCACIRIAYoAgQiFEcEQCAJKAIYIQcgCSgCHCEbIAkoAhQhBgJAAkADQAJAIBwgESgCACIKai0AAEUEQAJAIAEgBUsEQCAFIAo2AgAgBUEEaiEHDAELIAUgCGsiBUECdSINQQFqIgxBgICAgARPDQICQEH/////AyABIAhrIgFBAXUiEyAMIAwgE0kbIAFB/P///wdPGyIBRQRAQQAhGwwBCyABQYCAgIAETw0FIAFBAnQQEiEbIBEoAgAhCgsgBSAbaiIHIAo2AgAgByANQQJ0ayEGIAUEQCAGIAggBfwKAAALIAdBBGohByAbIAFBAnRqIRsgCARAIAgQEQsgBiEIIBshAQsgHCARKAIAakEBOgAAIBdBAWohFyAHIQULIBQgEUEIaiIRRw0BDAMLCyAJIBs2AhwgCSAGNgIUIAkgBzYCGAwKCyAJIBs2AhwgCSAGNgIUIAkgBzYCGAwKCyAJIBs2AhwgCSAGNgIUIAkgBzYCGAsgBSAIRw0ACyAfKAKEASEBIB8oAogBIBwQESAIBEAgCBARCyABa0EMbSAXRwsgCUEgaiQADAELDAQLRQRAAn8gAyEbIAQhAUEAIQgjAEGQAmsiFiQAIB8oAoQBIQQgHygCiAEhBSAWQQA2AoQCIBZCADcC/AEgBSAEayI+QQxtITACQAJAAkACfyAEIAVHBEAgMEGAgICAAk8NCiAWIDBBA3QiBBASIg42AvwBIBYgBCAOaiIFNgKEAiAEBEAgDkEAIAT8CwALIBYgBTYCgAILIDBBAnRBBGoiBBASIgpBADYCACAEIApqIQwgCkEEaiERID5BAEoEQEEBIDAgMEEBTRshF0EAIQQDQCAIIB8oAoQBIARBDGxqIgYoAgQgBigCAGtBA3VqQQFqIQgCQAJAAkAgDCARSwRAIBEgCDYCACARQQRqIREMAQsgESAKayIHQQJ1IhxBAWoiBUGAgICABE8NASAHQf////8DIAwgCmsiCUEBdSIRIAUgBSARSRsgCUH8////B08bIgkEfyAJQYCAgIAETw0QIAlBAnQQEgVBAAsiDGoiESAINgIAIBEgHEECdGshBSAHBEAgBSAKIAf8CgAACyARQQRqIREgDCAJQQJ0aiEMIAoEQCAKEBELIAUhCgsgDiAEQQN0aiIFKwMAIVYgBigCACIJIAYoAgQiBkYNAQNAIFYgCSoCBLugIVYgCUEIaiIJIAZHDQALDAELIBYgDDYC+AEgFiARNgL0ASAWIAo2AvABDAwLIAUgVp85AwAgBEEBaiIEIBdHDQALCyAWIAw2AvgBIBYgETYC9AEgFiAKNgLwAUEAIQkgFkEANgLsASAWQgA3AuQBAn8CQCAIBEAgCEGAgICAAkkNAQwMCyAWQgA3AtwBQQAhBEEAIQhBAAwBCyAIQQN0IgUQEiEEIBYgCEECdCIGEBIiCDYC3AEgFiAGIAhqIgk2AuABIAQgBWoLIRcgPkEATARAIAQhByAIDAELQQEgMCAwQQFMGyELIAQhBwNAAkAgHygChAEgD0EMbGoiHCgCACIJIBwoAgQiEEYNACAWKAL8ASISIA9BA3RqIRkDQCAJKAIAIg4gD04NAQJAIBYoAtwBIgUgFigC4AEiBkkEQCAFIA42AgAgBUEEaiEFDAELIAUgCGsiFEECdSIaQQFqIgVBgICAgARPDQYCQEH/////AyAGIAhrIgZBAXUiDSAFIAUgDUkbIAZB/P///wdPGyINRQRAQQAhBQwBCyANQYCAgIAETw0PIA1BAnQQEiEFIAkoAgAhDgsgBSAUaiITIA42AgAgEyAaQQJ0ayEGIBQEQCAGIAggFPwKAAALIBYgBSANQQJ0ajYC4AEgFiATQQRqIgU2AtwBIAgEQCAIEBELIAYhCAsgFiAFNgLcASAJKgIEuyASIAkoAgBBA3RqKwMAoyAZKwMAoyFWAkAgByAXSQRAIAcgVjkDACAHQQhqIQcMAQsgByAEayIGQQN1IhRBAWoiBUGAgICAAk8NBSAGQf////8BIBcgBGsiB0ECdSIOIAUgBSAOSRsgB0H4////B08bIg4EfyAOQYCAgIACTw0PIA5BA3QQEgVBAAsiF2oiByBWOQMAIAcgFEEDdGshBSAGBEAgBSAEIAb8CgAACyAHQQhqIQcgFyAOQQN0aiEXIAQEQCAEEBELIAUhBAsgCUEIaiIJIBBHDQALCyAWIBc2AuwBIBYgBzYC6AEgFiAINgLYASAWIAQ2AuQBAkAgFigC3AEiBSAWKALgASIOSQRAIAUgDzYCACAFQQRqIQUMAQsgBSAIayIFQQJ1IhRBAWoiBkGAgICABE8NCyAFQf////8DIA4gCGsiDkEBdSINIAYgBiANSRsgDkH8////B08bIgYEfyAGQYCAgIAETw0NIAZBAnQQEgVBAAsiDWoiDiAPNgIAIA4gFEECdGshFCAFBEAgFCAIIAX8CgAACyAWIA0gBkECdGo2AuABIBYgDkEEaiIFNgLcASAWIBQ2AtgBIAhFDQAgCBARCyAWIAU2AtwBAkAgByAXSQRAIAdCgICAgICAgPg/NwMAIAdBCGohByAWKALkASEFIBYoAuwBIRcMAQsgByAEayIGQQN1Ig5BAWoiBUGAgICAAk8NCyAGQf////8BIBcgBGsiB0ECdSIIIAUgBSAISRsgB0H4////B08bIggEfyAIQYCAgIACTw0NIAhBA3QQEgVBAAsiF2oiB0KAgICAgICA+D83AwAgByAOQQN0ayEFIAYEQCAFIAQgBvwKAAALIAdBCGohByAXIAhBA3RqIRcgBEUNACAEEBELIBYoAtgBIQgCQCAcKAIEIAlGBEAgBSEEDAELIBYoAvwBIg0gD0EDdGohEyAFIQQDQAJAIBYoAtwBIgUgFigC4AEiDkkEQCAFIAkoAgA2AgAgBUEEaiEFDAELIAUgCGsiBUECdSIQQQFqIgZBgICAgARPDQYgBUH/////AyAOIAhrIg5BAXUiFCAGIAYgFEkbIA5B/P///wdPGyIOBH8gDkGAgICABE8NDyAOQQJ0EBIFQQALIhJqIhQgCSgCADYCACAUIBBBAnRrIQYgBQRAIAYgCCAF/AoAAAsgFiASIA5BAnRqNgLgASAWIBRBBGoiBTYC3AEgCARAIAgQEQsgBiEICyAWIAU2AtwBIAkqAgS7IA0gCSgCAEEDdGorAwCjIBMrAwCjIVYCQCAHIBdJBEAgByBWOQMAIAdBCGohBwwBCyAHIARrIgZBA3UiFEEBaiIFQYCAgIACTw0FIAZB/////wEgFyAEayIHQQJ1Ig4gBSAFIA5JGyAHQfj///8HTxsiDgR/IA5BgICAgAJPDQ8gDkEDdBASBUEACyIXaiIHIFY5AwAgByAUQQN0ayEFIAYEQCAFIAQgBvwKAAALIAdBCGohByAXIA5BA3RqIRcgBARAIAQQEQsgBSEECyAJQQhqIgkgHCgCBEcNAAsLIBYgFzYC7AEgFiAHNgLoASAWIAg2AtgBIBYgBDYC5AEgCyAPQQFqIg9HDQALIBYoAuABIQkgFigC3AELIQUgFkEANgLsASAWQgA3AuQBIBZBADYC4AEgFkIANwLYASAWQQE6AKQBIBYgDDYCoAEgFiARNgKcASAWIAo2ApgBIBYgCTYClAEgFiAFNgKQASAWIAg2AowBIBYgFzYCiAEgFiAHNgKEASAWIAQ2AoABIBYgMDYCeCAWIDA2AnQgFiABNgJ8IBb9DAAAAAAAAAAAAAAAAAAAAAD9CwLIASAW/QwAAAAAAAAAAAAAAAAAAAAA/QsCuAEgFv0MAAAAAAAAAAAAAAAAAAAAAP0LAqgBIAFBAk4EQCMAQRBrIhEkACAWQfQAaiIKKAIkIAooAgBBAnRqKAIAIgggCCAKKAIIIgluIgYgCWxrIApBNGohAQJAIAooAjggCigCNCIHa0ECdSIEIAlJBEAgASAJIARrEC8gCigCCCEJDAELIAQgCU0NACAKIAcgCUECdGo2AjgLQQBHIQcgCkFAayEEAkAgCigCRCAKKAJAIg5rQQJ1IgUgCUkEQCAEIAkgBWsQLyAKKAIIIQkMAQsgBSAJTQ0AIAogDiAJQQJ0ajYCRAsgBiAHaiEFIAlBAEoEQCAEKAIAIRcgASgCACEcQQAhASAFIQZBACEOA0AgHCAOQQJ0Ig9qIAE2AgAgASAKKAIAIgQgASAEShshByAKKAIkIQwgASEEA0ACQCAHIAQiAUYEQCAHIQEMAQsgDCABQQFqIgRBAnRqKAIAIAZNDQELCyAPIBdqIAE2AgAgBSAGaiEGIA5BAWoiDiAJRw0ACwsgCkHMAGohFwJAIAlBAWoiBCAKKAJQIAooAkwiBmtBAnUiAUsEQCAXIAQgAWsQLyAKKAIIQQFqIQQMAQsgASAETQ0AIAogBiAEQQJ0ajYCUAsgCigCACEBQQAhBiARQQA2AgwgEUIANwIEIAEEQCABQYCAgIAETw0KIBEgAUECdCIBEBIiBjYCBCARIAEgBmoiBzYCDCABBEAgBkEAIAH8CwALIBEgBzYCCAsCQCAKKAJcIgEgCigCWCIJa0EMbSIHIARJBEACQAJAAkACQAJAIAQgB2siBCAKKAJgIg4gASIGa0EMbU0EQCAKIAQEfyABIARBDGxqIQcDQCAGQQA2AgggBkIANwIAIBEoAggiASARKAIEIglHBEAgASAJayIBQQBIDQQgBiABEBIiBDYCBCAGIAQ2AgAgBiABIARqIg42AgggAQRAIAQgCSAB/AoAAAsgBiAONgIECyAGQQxqIgYgB0cNAAsgBwUgBgs2AlwMBQsgBiAKKAJYIgdrIglBDG0gBGoiAUHWqtWqAU8NAUEAIQZB1arVqgEgDiAHa0EMbSIOQQF0IhwgASABIBxJGyAOQarVqtUATxsiDgRAIA5B1qrVqgFPDQMgDkEMbBASIQYLIAYgCWoiASAEQQxsaiEcIAYgDkEMbGohDCABIQYDQCAGQQA2AgggBkIANwIAIBEoAggiBCARKAIEIg9HBEAgBCAPayIEQQBIDQUgBiAEEBIiDjYCBCAGIA42AgAgBiAEIA5qIhQ2AgggBARAIA4gDyAE/AoAAAsgBiAUNgIECyAGQQxqIgYgHEcNAAsgASAJQXRtQQxsaiEBIAkEQCABIAcgCfwKAAALIAogDDYCYCAKIBw2AlwgCiABNgJYIAcEQCAHEBELDAQLEBMACxATAAsQHwALEBMACyARKAIEIQYMAQsgBCAHTw0AIAEgCSAEQQxsaiIHRwRAA0AgAUEMayIEKAIAIgkEQCABQQhrIAk2AgAgAUEEaygCABogCRARCyAEIgEgB0cNAAsLIAogBzYCXAsgBgRAIBEgBjYCCCARKAIMGiAGEBELIAooAgQhByARQQA2AgwgEUIANwIEAkAgB0UEQEEAIQkMAQsgB0GAgICABE8NCiAHQQJ0IgEQEiEJIAEEQCAJQQAgAfwLAAsLAkAgCEUNACAKKAIYIRxBACEGQQAhASAIQQRPBEAgCEF8cSEPQQAhDgNAIAkgHCABQQJ0aiIEKAIAQQJ0aiIMIAwoAgBBAWo2AgAgCSAEKAIEQQJ0aiIMIAwoAgBBAWo2AgAgCSAEKAIIQQJ0aiIMIAwoAgBBAWo2AgAgCSAEKAIMQQJ0aiIEIAQoAgBBAWo2AgAgAUEEaiEBIA5BBGoiDiAPRw0ACwsgCEEDcSIERQ0AA0AgCSAcIAFBAnRqKAIAQQJ0aiIIIAgoAgBBAWo2AgAgAUEBaiEBIAZBAWoiBiAERw0ACwsgCigCCCIOQQBKBEAgFygCACEXQQAhCEEAIQQgBSEGQQAhAQNAAkAgASAHTg0AIAQgBksNAANAIAkgAUECdGooAgAgBGohBCABQQFqIgEgB04NASAEIAZNDQALCyAXIAhBAWoiCEECdGogATYCACAFIAZqIQYgCCAKKAIIIg5IDQALCwJAIAooAgBBAEwNACAKKAIkIQYgCigCWCIcKAIAIQdBACEBIA5BAEoEQCAKKAJMIQ8DQCAGIAFBAWoiBUECdGooAgAhBCAHIAFBAnQiF2ogBiAXaigCACIBNgIAIAooAhghDEEAIQgDQCAIQQFqIQgCQCABIARPDQAgDyAIQQJ0aigCACEUA0AgDCABQQJ0aigCACAUTg0BIAFBAWoiASAERw0ACyAEIQELIBwgCEEMbGooAgAgF2ogATYCACAIIA5HDQALIAUiASAKKAIASA0ACwwBCwNAIAcgAUECdCIEaiAEIAZqKAIANgIAIAFBAWoiASAKKAIASA0ACwsgCQRAIAkQEQsgEUEQaiQACyAWQQA2AmAgFkLxKjcDWCAWQQA6AFIgFkGBAjsBUCAWQoeAgICA/QA3A0ggFkKAgICAgICA+L9/NwNAIBb9DAAAAAAAAPC/8WjjiLX45D79CwQwIBb9DAAAAAAAAAAAAAAAAAAAAAD9CwMYIBb9DAAAAAAAAAAAAAAAAAAAAAD9CwMIIBZBCGohNSAWQRRqITYgFkEgaiEOIBZBMGohFEEAIQRBACEPIwBB4BdrIhAkAAJAAkACQAJAAkACQAJAIAJBAWoiCEEAQQQgFkH0AGoiBS0AMCIBGyAFaigCACIGIAVBBEEAIAEbaigCACIBIAEgBkobIgFKBEAgASEIIBQtACINAUEIEBdBqxcQLUGg4wJBBBABAAsgASAIRw0AIBQtACFFDQELAkACQCABQQVMBEAgFC0AIEEBcQ0BCyAULQAhQQFHDQEgCEEBdCABSA0BCyAIIREgDiEcQQAhDiMAQcABayIgJAAgBUEAQQQgBS0AMCIBG2ooAgAhBCAFQQRBACABG2ooAgAhASAg/QwAAAAAAAAAAAAAAAAAAAAA/QsDMCAgQUBr/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAgQQA2AE8gIP0MAAAAAAAAAAAAAAAAAAAAAP0LA4ABICBBADYCkAEgIEIANwMoICBBADYCVCAgQQA2AmQgIEJ/NwJcICD9DAAAAAAAAAAAAAAAAAAAAAD9CwNwICD9DAAAAAAAAAAAAAAAAAAAAAD9CwOYASAgQQA2ArABICBBEDYCqAEgIEEoaiIaIAEgBEEoEPsDIwBBIGsiDyQAIAVBAEEEIAUiFy0AMCIBG2ooAgAhCSAFQQRBACABG2ooAgAhCiAgQQxqIghBADYCCCAIQgA3AgACQAJAAkACQAJAIAkgCnJBAE4EQAJAIApFDQAgCUUNACAKQf////8HIAltSg0cCyAIIAkgCmwgCiAJEBsgCCgCBCEBIAgoAgghBCAPQgA3AxAgDyAENgIMIA8gATYCCCABIARyQQBOBEAgCCAPQQhqEDICQCAIKAIEIg0gCCgCCGwiBkEATA0AIA8rAxAhViAIKAIAIQUCQCAGQQFGBEAgBSEEDAELIAUgBkH+////B3EiB0EDdGohBCBW/RQhZUEAIQEDQCAFIAFBA3RqIGX9CwMAIAFBAmoiASAHRw0ACyAGIAdGDQELIAQgVjkDAAsgFy0AMEUEQCAKQQBMDQQgCCgCACEUIBcoAhghCSAXKAIMIQwgFygCJCITKAIAIQVBACEEDAMLIAlBAEwNAyAIKAIAIRMgFygCGCEKIBcoAgwhDCAXKAIkIgsoAgAhBUEAIQYDQAJAIAUiBCALIAYiAUEBaiIGQQJ0aigCACIFTw0AIBMgASANbEEDdGohFEEAIQcgBSAEIgFrQQNxIhIEQANAIBQgCiABQQJ0aigCAEEDdGogDCABQQN0aisDADkDACABQQFqIQEgB0EBaiIHIBJHDQALCyAEIAVrQXxLDQADQCAUIAogAUECdGooAgBBA3RqIAwgAUEDdGorAwA5AwAgFCAKIAFBAWoiBEECdGooAgBBA3RqIAwgBEEDdGorAwA5AwAgFCAKIAFBAmoiBEECdGooAgBBA3RqIAwgBEEDdGorAwA5AwAgFCAKIAFBA2oiBEECdGooAgBBA3RqIAwgBEEDdGorAwA5AwAgAUEEaiIBIAVHDQALCyAGIAlHDQALDAMLDCYLDCgLA0ACQCAFIgEgEyAEIgdBAWoiBEECdGooAgAiBU8NACABQQFqIQYgFCAHQQN0aiEHIAUgAWtBAXEEQCAHIAkgAUECdGooAgAgDWxBA3RqIAwgAUEDdGorAwA5AwAgBiEBCyAFIAZGDQADQCAHIAkgAUECdGooAgAgDWxBA3RqIAwgAUEDdGorAwA5AwAgByAJIAFBAWoiBkECdGooAgAgDWxBA3RqIAwgBkEDdGorAwA5AwAgAUECaiIBIAVHDQALCyAEIApHDQALCyAPQSBqJAAgICgCVCEBQQAhBSMAQYADayIZJAAgGiAIKAIEIAgoAgggARD7AwJAAkACQAJAAkACQAJAAkAgCCgCCCIEIBooAoABSARAIBn9DAAAAAAAAAAAAAAAAAAAAAD9CwNQIBn9DAAAAAAAAAAAAAAAAAAAAAD9CwNgIBlBADYAbyAZ/QwAAAAAAAAAAAAAAAAAAAAA/QsDqAEgGf0MAAAAAAAAAAAAAAAAAAAAAP0LA7gBIBn9DAAAAAAAAAAAAAAAAAAAAAD9CwPIASAZQgA3AdYBIBlBADYCiAIgGf0MAAAAAAAAAAAAAAAAAAAAAP0LA7ACIBn9DAAAAAAAAAAAAAAAAAAAAAD9CwOgAiAZQgA3AcYCIBlCADcDwAIgGUEANgL4AiAZQgA3A0ggGUEANgJ0IBlCADcDoAEgGUEANgKYASAZQgA3A5ABIBlBADYChAEgGUJ/NwJ8IBn9DAAAAAAAAAAAAAAAAAAAAAD9CwP4ASAZ/QwAAAAAAAAAAAAAAAAAAAAA/QsDkAIgGf0MAAAAAAAAAAAAAAAAAAAAAP0LA+gCIBlByABqIAggARDfASAaQQE6ACQgGS0AbCIBRQ0BIBogGSgCaCIENgIgAkACQCAEDgMAAQABCwJAIBotACdFBEAgGi0AKEEBcUUNAQsgGS0Ab0UEQCAZLQBwQQFxRQ0gCyAZKAJIIQYgGiAZQcgAahBNAkAgGigCCCAaKAIEbCIIQQBMDQAgGigCACEHQQAhBAJAIAhBBEkNACAHIAZrQRBJDQAgCEH+////B3EhBEEAIQEDQCAHIAFBA3QiCWogBiAJav0AAwD9CwMAIAFBAmoiASAERw0ACyAEIAhGDQELIAggBCIBa0EDcSIJBEADQCAHIAFBA3QiCmogBiAKaisDADkDACABQQFqIQEgBUEBaiIFIAlHDQALCyAEIAhrQXxLDQADQCAHIAFBA3QiBGogBCAGaisDADkDACAHIARBCGoiBWogBSAGaisDADkDACAHIARBEGoiBWogBSAGaisDADkDACAHIARBGGoiBGogBCAGaisDADkDACABQQRqIgEgCEcNAAsLIBktAGwhAQsCQAJAIBotAClFBEAgGi0AKkEBcUUNAQsgAUEBcUUNIyAZLQBxRQRAIBktAHJBAXFFDSILIBkoAlQhBiAaQQxqIBlB1ABqEE0CQCAaKAIUIBooAhBsIghBAEwNACAaKAIMIQdBACEFQQAhBAJAIAhBBEkNACAHIAZrQRBJDQAgCEH+////B3EhBEEAIQEDQCAHIAFBA3QiCWogBiAJav0AAwD9CwMAIAFBAmoiASAERw0ACyAEIAhGDQELIAggBCIBa0EDcSIJBEADQCAHIAFBA3QiCmogBiAKaisDADkDACABQQFqIQEgBUEBaiIFIAlHDQALCyAEIAhrQXxLDQADQCAHIAFBA3QiBGogBCAGaisDADkDACAHIARBCGoiBWogBSAGaisDADkDACAHIARBEGoiBWogBSAGaisDADkDACAHIARBGGoiBGogBCAGaisDADkDACABQQRqIgEgCEcNAAsLIBktAGxBAXENAQwjCyABQQFxRQ0iCyAaQRhqIQEgGSgCYCEHIBkoAmQiBCAaKAIcRwRAIARBAEgNMSABIAQgBBAeIBooAhwgBEcNIQsCQCAEQQBMDQAgASgCACEIQQAhBUEAIQYCQCAEQQRJDQAgCCAHa0EQSQ0AIARB/v///wdxIQZBACEBA0AgCCABQQN0IglqIAcgCWr9AAMA/QsDACABQQJqIgEgBkcNAAsgBCAGRg0BCyAEIAYiAWtBA3EiCQRAA0AgCCABQQN0IgpqIAcgCmorAwA5AwAgAUEBaiEBIAVBAWoiBSAJRw0ACwsgBiAEa0F8Sw0AA0AgCCABQQN0IgVqIAUgB2orAwA5AwAgCCAFQQhqIgZqIAYgB2orAwA5AwAgCCAFQRBqIgZqIAYgB2orAwA5AwAgCCAFQRhqIgVqIAUgB2orAwA5AwAgAUEEaiIBIARHDQALCyAZLQBsRQ0hIBogGSgCeDYCMAsgGUHIAGoQpwIMBQsgBEEATA0oIAgoAgQiB0EATA0oQQEhASAIKAIAIgkrAwCZIVYCQCAHQQFGDQAgB0EBayIGQQFxIAdBAkcEQCAJQQhqIQ8gBkF+cSEGA0AgViAJIAFBA3QiDGorAwAiV5kiWCBYIFYgViBYYxsgVyBXYhsgViBWYhsiViAMIA9qKwMAIleZIlggWCBWIFYgWGMbIFcgV2IbIFYgVmIbIVYgAUECaiEBIAVBAmoiBSAGRw0ACwtFDQAgViAJIAFBA3RqKwMAIleZIlggWCBWIFYgWGMbIFcgV2IbIFYgVmIbIVYLIARBAUcEQEECIAQgBEECTBshDyAHQf7///8HcSEMIAdBAXEhFEEBIQYDQCAJIAYgB2xBA3RqIQpBACEBQQAhBSAHQQFHBEADQCBWIAogAUEDdGoiDSsDACJXmSJYIFggViBWIFhjGyBXIFdiGyBWIFZiGyJWIA0rAwgiV5kiWCBYIFYgViBYYxsgVyBXYhsgViBWYhshViABQQJqIQEgBUECaiIFIAxHDQALCyAUBEAgViAKIAFBA3RqKwMAIleZIlggWCBWIFYgWGMbIFcgV2IbIFYgVmIbIVYLIAZBAWoiBiAPRw0ACwsgVr1C////////////AINCgICAgICAgPj/AFoEQCAaQQM2AiAgGkEBOgAkDAULIBlBADYCRCAZQgA3AjxEAAAAAAAA8D8gViBWRAAAAAAAAAAAYRshVyAEIAdyIQECQCAaLQCEAUEBRgRAIAFBAEgNLSAZIFc5A1ggGSAINgJIIBkgBK0gB61CIIaENwNQIBlBPGogGUHIAGoQpAIgGSgCRCIPQQBMDQEgGSgCQCIGQQBMDQEgBkEBcSEUIAZB/v///wZxIQQgV/0UIWUgGSgCPCIMIAkgBiAPakEDdGpBCGtJIAkgDCAGIA9sQQN0aklxIAZBgICAgAFxQRx2ciAHQQFGIAZBA0txQX9zckEBcSENA0AgCSAOQQN0aiEIIAwgBiAObEEDdGohCkEAIQVBACEBAkAgDUUEQANAIAogBUEDdCIBaiABIAhq/QADACBl/fMB/QsDACAFQQJqIgUgBEcNAAsgBCIBIAZGDQELIAFBAXIhBSAUBEAgCiABQQN0aiAIIAEgB2xBA3RqKwMAIFejOQMAIAUhAQsgBSAGRg0AA0AgCiABQQN0aiAIIAEgB2xBA3RqKwMAIFejOQMAIAogAUEBaiIFQQN0aiAIIAUgB2xBA3RqKwMAIFejOQMAIAFBAmoiASAGRw0ACwsgDkEBaiIOIA9HDQALDAELIAFBAEgNLCAZIFc5A1ggGSAINgJIIBkgB60gBK1CIIaENwNQIBlBPGogGUHIAGoQpAIgGSgCRCAZKAJAbCIGQQBMDQAgGSgCPCEHQQAhAQJAIAZBBEkNACAHIAlrQRBJDQAgBkH+////B3EhASBX/RQhZUEAIQUDQCAHIAVBA3QiBGogBCAJav0AAwAgZf3zAf0LAwAgBUECaiIFIAFHDQALIAEgBkYNAQsgAUEBciEEIAZBAXEEQCAHIAFBA3QiAWogASAJaisDACBXozkDACAEIQELIAQgBkYNAANAIAcgAUEDdCIEaiAEIAlqKwMAIFejOQMAIAcgBEEIaiIEaiAEIAlqKwMAIFejOQMAIAFBAmoiASAGRw0ACwsCf0EAIQZBACEJIwBBEGsiTSQAIBlBPGoiASgCCCEEIAEoAgQhBSAZQcgAaiIlQQA2AgggJUIANwIAAkACQCAEIAVyQQBOBEACQCAFRQ0AIARFDQAgBUH/////ByAEbUoNDQsgJSAEIAVsIAUgBBAbIAEoAgghBCAlQgA3AgwgBEEASA0CIARBgICAgARPDQwgBEEBdCIFICUoAhBBAXRHBEAgJSgCDCIHBEAgB0EEaygCABARCyAlIAVBAEwEf0EABSAFQYCAgIACTw0OIAVBA3RBEGoQFiIFRQ0OIAVBcHEiByAFNgIMIAdBEGoLNgIMCyAlIAQ2AhAgJUEAOgAcICUgBDYCFCABKAIEIAEoAghIDQEgASgCACEFICUgARBNAkAgJSgCCCAlKAIEbCIIQQBMDQAgJSgCACEHQQAhBAJAIAhBBEkNACAHIAVrQRBJDQAgCEH+////B3EhBEEAIQEDQCAHIAFBA3QiCmogBSAKav0AAwD9CwMAIAFBAmoiASAERw0ACyAEIAhGDQELIAggBCIBa0EDcSIKBEADQCAHIAFBA3QiDmogBSAOaisDADkDACABQQFqIQEgCUEBaiIJIApHDQALCyAEIAhrQXxLDQADQCAHIAFBA3QiBGogBCAFaisDADkDACAHIARBCGoiCWogBSAJaisDADkDACAHIARBEGoiCWogBSAJaisDADkDACAHIARBGGoiBGogBCAFaisDADkDACABQQRqIgEgCEcNAAsLIwBB4ABrIhIkACAlKAIIISYgJSgCBCEyIBJBADYCXCASQgA3AlQCQCAyQSByQQBOBEAgMkEARyAyQf///x9KcQ0OIBJB1ABqIDJBBXQgMkEgEBsgEkEANgJQIBJCADcCSCAmQSByQQBIDQQgJkEARyAmQf///x9KcQ0OIBJByABqICZBBXQgJkEgEBsCQCAmIDIgJiAySBsiOEEATA0AQSAgOCA4QSBOGyE/A0AgJSgCBCEFICUoAgAhByASICYgBmsiBDYCNCASIDIgBmsiATYCMCASIAcgBkEDdCIJaiAFIAZsQQN0ajYCLCABIARyQQBIQQAgBxsNMSASIAU2AkQgEiAGNgJAIBIgBjYCPCASICU2AjggASAGckEASA0rIAQgBnJBAEgNKyAGIAUgAWtKDSsgBiAlKAIIIARrSg0rICUoAgwiBSAlKAIQIghBA3RqIQogCCAlKAIUIgcgByAIShsiDEEATiIUIAVFciEPAkACQAJAIARBME4EQCA/IDggBmsiDiAOID9KGyIOIAZqICZHDQELIA9FDTQgDEEASA0uIAVBACAIQQFrIgEgByABIAdIGyIBQQBIGw00IAFBAE4NAQwuCyAPRQ0zIBRFDS0gBUEAIAhBAWsiCCAHIAcgCEobQQBIIgcbDTMgBw0tIBIoAlghByABIA5yQQBIQQAgEigCVCIIGw0zIAFBAEgNLSAOQQBIDS0gASAHSg0tIBIoAlwgDkgNLSASIAg2AhggEiAONgIgIBIgATYCHCASIAEgByABIAcbIA5BAUYiARs2AiQgBCASKAJMIgdMBEAgEigCUCAOTg0CCwwtCyAKIAZBA3QiAWohKiABIAVBCGpqITIgEigCVCELQQAhByMAQdABayIKJAAgEigCNCEpIBIoAjAhBSAKQgA3AmQgBSEGAkAgC0UEQCAFQQBIDSwgCkHkAGogBSAFEB4gCigCZCELIBIoAjAhBgsCQCASKAIsIghBACAGQQBIG0UEQCASKAI4Ig5BBGohFCAFIAVBH3VBf3NxIS4gCkH4AGohJyAKQUBrIR4gDigCBCEPIAghBCApQQFrIjMhDCAFIQEDQCAKIBIpAiw3AgwgCiASKAI0NgIUIAcgEigCNE4NNyAKIAE2AhwgCiAIIAYgAWsiCUEDdGoiDTYCGCABQQBIQQAgBBsNNiAKIAY2AiggCiAINgIkIAogCv0AAgj9CwIsIAogDjYCPCAeIBIoAkQ2AgggHiASKQI8NwIAIAogDzYCVCAKIAc2AlAgCkEANgJMIAogCTYCWCAKIA4oAgQ2AmAgASAJckEASA0wIBQoAgAhBiAKIAFBAWsiGDYCcCAKIA1BCGo2AmwgAUEATEEAIAQbDTYgJyAKQRhqIg5BzAD8CgAAIApBATYCxAEgCiAKKAKcASgCBDYCzAEgByAuRg0wIA4gCkHsAGoiFCAHQQN0IhMgBCAGIAdsQQN0amogEyAqahCiAiASKAIsIQQgEigCMCEGIBIoAjgiCCgCBCEVIBIoAjQhCSAKIAw2AiAgCiABNgIcIAogBCAGIAFrIg9BA3RqIBUgCSAMayINbEEDdGo2AhggASAMckEASEEAIAQbDTYgCiAS/QACLP0LAiQgCiASKAJENgI8IAogEikCPDcCNCAKIA82AkAgCiANNgJEIAogCigCMCgCBDYCSCABIA9yQQBIDTAgDCANckEASA0wIAgoAgQhASAGQQBIQQAgBBsNNiAKIBIpAiw3AgwgCiASKAI0NgIUIAcgCU4NNyAKIBg2AnAgCiAGNgJ8IAogBCABIAdsQQN0aiIJNgJ4IAogCSAGIBhrIgZBA3RqNgJsIAogCv0AAgj9CwKAASAKIAg2ApABIAogEigCRDYCnAEgCiASKQI8NwKUASAKIAY2AqwBIAogATYCqAEgCiAHNgKkASAKQQA2AqABIAogCCgCBCIBNgK0ASAGIBhyQQBIDTBBACEPIwBBkAJrIggkACAEIAEgB2xBA3RqIBNqIiErAwAhVgJAIA4oAgQiAUEBRgRAIA4oAggiBkEASA06RAAAAAAAAPA/IFahIVYgDigCACEJIA4oAhgoAgQhDUEAIQQCQAJAIAYOAgMBAAsgDUEBRw0AIAZB/v///wdxIQQgVv0UIWVBACEBA0AgCSABQQN0aiIVIGUgFf0AAwD98gH9CwMAIAFBAmoiASAERw0ACyAEIAZGDQILIAYgBCIBa0EDcSIVBEADQCAJIAEgDWxBA3RqIh0gViAdKwMAojkDACABQQFqIQEgD0EBaiIPIBVHDQALCyAEIAZrQXxLDQEDQCAJIAEgDWxBA3RqIgQgViAEKwMAojkDACAJIAFBAWogDWxBA3RqIgQgViAEKwMAojkDACAJIAFBAmogDWxBA3RqIgQgViAEKwMAojkDACAJIAFBA2ogDWxBA3RqIgQgViAEKwMAojkDACABQQRqIgEgBkcNAAsMAQsgVkQAAAAAAAAAAGENACAIIA4oAggiDzYC+AEgCCALNgLwASAPQQBIDTAgDigCACEEIAggAUEBayIdNgKoASAIIARBCGo2AqQBIAggDzYCrAEgDyAdckEASEEAIAQbDTcgCCAOKAIwNgLgASAIIA79AAIg/QsC0AEgCCAOKQIYImk3AsgBIAggDikCEDcCwAEgCCAO/QACAP0LArABIAhCATcC5AEgCCBppygCBDYC7AEgAUEATA0xIBQoAgAhASAUKAIEIQQgCEEQaiAUQQhqQcQA/AoAACAIIAQ2AgwgCCABNgIIIAhB1ABqIgEgCEGkAWpBzAD8CgAAIAQgHUcNMiAIKAJcIA9HDTMCQCAPRQ0AIA9BA3QiBEUNACALQQAgBPwLAAsgCEKAgICAgICA+D83A4ACIAhBCGohCUQAAAAAAAAAACFWQQAhFSMAQbABayIGJAACQCABKAIIQQFGBEAgCCsDgAIhWCAJKAIAIgRBACAJKAIEIglBAEgbDTkgASgCACINQQAgASgCBCIBQQBIGw05IAEgCUcNNwJAIAlFDQAgCUEATA05IAQrAwAgDSsDAKIhVkEBIQEgCUEBRg0AIAlBAWsiJEEDcSEiIAlBAmtBA08EQCAkQXxxISQDQCBWIAQgAUEDdCIJaisDACAJIA1qKwMAoqAgBCAJQQhqIiZqKwMAIA0gJmorAwCioCAEIAlBEGoiJmorAwAgDSAmaisDAKKgIAQgCUEYaiIJaisDACAJIA1qKwMAoqAhViABQQRqIQEgFUEEaiIVICRHDQALCyAiRQ0AQQAhCQNAIFYgBCABQQN0IhVqKwMAIA0gFWorAwCioCFWIAFBAWohASAJQQFqIgkgIkcNAAsLIAgoAvABIgEgWCBWoiABKwMAoDkDAAwBCyAGIAlBzAD8CgAAIAZB0ABqIAFBzAD8CgAAIAYgCCgC+AE2AqgBIAYgCCkC8AE3A6ABIwBBEGsiCSQAAkAgBigCBCINQYCAgIACSQRAAkAgCCsDgAIhViAGKAJ0IRUgBigCWCAGKAJUIAYoAlAhJkEAIQEgBigCACIERQRAIA1BA3QhAQJAIA1BgIABTQRAIAkgAUEeakFwcWsiASQADAELIAFBEGoQFiIBRQ0CIAFBcHEiBCABNgIMIARBEGohAQsgASEECyAJIBUoAgQ2AgwgCSAmNgIIIAlBATYCBCAJIAQ2AgAgBigCoAEiBARAIAYoAqgBQQBIDTwLIAlBCGogCSAEQQEgVhBPAkAgDUGBgAFJDQAgAUUNACABQQRrKAIAEBELIAlBEGokAAwCCwsMMAsLIAZBsAFqJAAgDigCACIJQQAgDigCCCIGQQBIGw03IA4oAgRBAEwNOCAIKAL4ASAGRw06AkAgBkEATA0AIA4oAhgoAgQhFSAIKALwASENQQAhAQJAIAZBCEkNACAVQQFHDQAgCSAGQQN0IgRqIA1LIAkgBCANaklxDQAgBkH+////B3EhAUEAIQQDQCANIARBA3QiImoiJCAJICJq/QADACAk/QADAP3wAf0LAwAgBEECaiIEIAFHDQALIAEgBkYNAQsgAUEBciEEIAZBAXEEQCANIAFBA3RqIiIgCSABIBVsQQN0aisDACAiKwMAoDkDACAEIQELIAQgBkYNAANAIA0gAUEDdGoiBCAJIAEgFWxBA3RqKwMAIAQrAwCgOQMAIA0gAUEBaiIEQQN0aiIiIAkgBCAVbEEDdGorAwAgIisDAKA5AwAgAUECaiIBIAZHDQALCyAGQQBIDTkgDigCBEEATA04IAYgCCgC+AFHDToCQCAGQQBMDQAgISsDACFWIAgoAvABIQ0gDigCGCgCBCEVQQAhAQJAIAZBCEkNACAVQQFHDQAgDSAGQQN0IgRqIAlLIA0gBCAJaklxDQAgBkH+////B3EhASBW/RQhZUEAIQQDQCAJIARBA3QiImoiJCAk/QADACBlIA0gImr9AAMA/fIB/fEB/QsDACAEQQJqIgQgAUcNAAsgASAGRg0BCyABQQFyIQQgBkEBcQRAIAkgASAVbEEDdGoiIiAiKwMAIFYgDSABQQN0aisDAKKhOQMAIAQhAQsgBCAGRg0AA0AgCSABIBVsQQN0aiIEIAQrAwAgViANIAFBA3RqKwMAoqE5AwAgCSABQQFqIgQgFWxBA3RqIiIgIisDACBWIA0gBEEDdGorAwCioTkDACABQQJqIgEgBkcNAAsLIBQoAgQiAUEASA05ICErAwAhViAIQSBqIBRBzAD8CgAAIAggCCgC+AEiBDYCeCAIIFY5AxggCCABNgIQIAggCCkC8AE3A3AgHSAIKAIkRw00IAQgD0cNNEEAIQFBACEPIwBBEGsiBCEiIAQkACAIQQhqIgYoAhxBA3QiCUGAgAhNBEAgBCAJQR5qQXBxayIBJAALIAgoAnAhKCAiIAYgARCgAiIkKAIAIQ0CQCAIKAKsASImQQBMDQAgCCgCyAEoAgQhHSAkKAIEIQkgCCgCpAEiIUEAIAgoAqgBIgFBAEgbDTggCUEASA06IAEgCUcNOyABRQ0AIAlBAXEhLyAJQf7///8HcSEEICEgDSAJQQN0akkEfyANICEgHSAmQQFrbCAJakEDdGpJBUEACyAdQYCAgIABcUEcdnIgCUECSXJBAXEhKwNAIA8gCCgCrAFODTogISAPIB1sQQN0aiEVICggD0EDdGorAwAhVkEAIQECQCArRQRAIFb9FCFlA0AgFSABQQN0IgZqIi0gLf0AAwAgZSAGIA1q/QADAP3yAf3xAf0LAwAgAUECaiIBIARHDQALIAQiASAJRg0BCyABQQFyIQYgLwRAIBUgAUEDdCIBaiItIC0rAwAgViABIA1qKwMAoqE5AwAgBiEBCyAGIAlGDQADQCAVIAFBA3QiBmoiLSAtKwMAIFYgBiANaisDAKKhOQMAIBUgBkEIaiIGaiItIC0rAwAgViAGIA1qKwMAoqE5AwAgAUECaiIBIAlHDQALCyAPQQFqIg8gJkcNAAsLAkAgJC0ADEEBRw0AIA1FDQAgDUEEaygCABARCyAiQRBqJAALIAhBkAJqJAAgByAzRg0CIBIoAiwiAUEAIBIoAjQiBEEASBsNNiAHIBIoAjBODTcgEigCOCIGKAIEIQkgCiAMNgIgIAogASATaiIPIAkgBCAMayIIbEEDdGoiCTYCGCAMQQBIQQAgARsNNiAKIAQ2AiwgCiAPNgIkIAogEigCNDYCOCAKIBIpAiw3AjAgCiAGNgI8IB4gEigCRDYCCCAeIBIpAjw3AgAgCkEBNgJgIApCgICAgBA3AlAgCiAHNgJMIAogCDYCXCAIIAxyQQBIDTAgBigCBCEEIAogDEEBayIiNgJ0IAogCSAEQQN0ajYCbCAMQQBKIgZBASABG0UNNiAnIA5BzAD8CgAAIApCgYCAgBA3AsgBIAZFDTAgASAEIAdBAWoiCWxBA3RqIBNqISYgEyAyaiEkIA4oAiQoAgQhBgJAAnwCQCAOKAIIIg1BAEoiAUEBIA4oAgAiHRsEQCABRQ00IA1BAWsiFUUNAUEBIQEgHSAGQQN0aiIIKwMAIlYgVqIhVgJAIBVBAUYNACANQQJrIg9BA3EhBCANQQNrQQNPBEAgD0F8cSEhQQAhDwNAIFYgCCABIAZsQQN0aisDACJWIFaioCAIIAFBAWogBmxBA3RqKwMAIlYgVqKgIAggAUECaiAGbEEDdGorAwAiViBWoqAgCCABQQNqIAZsQQN0aisDACJWIFaioCFWIAFBBGohASAPQQRqIg8gIUcNAAsLIARFDQBBACEPA0AgViAIIAEgBmxBA3RqKwMAIlYgVqKgIVYgAUEBaiEBIA9BAWoiDyAERw0ACwsgHSsDACJYIFZEAAAAAAAAEABlDQIaICQgViBYIFiioJ8iVpogViBYRAAAAAAAAAAAZhsiVjkDACAVIBQoAghHDTYgWCBWoSFWIBQoAgAhDyAUKAIwKAIEISFBACEEAkACQCANQQlJDQAgIUEBRw0AIAZBAUcNACAPIB1rQQhrQRBJDQAgFUF+cSEEIFb9FCFlQQAhAQNAIA8gAUEDdCIdaiAIIB1q/QADACBl/fMB/QsDACABQQJqIgEgBEcNAAsgBCAVRg0BCyAEIQEgDUEBcUUEQCAPIAEgIWxBA3RqIAggASAGbEEDdGorAwAgVqM5AwAgAUEBciEBCyANQQJrIARGDQADQCAPIAEgIWxBA3RqIAggASAGbEEDdGorAwAgVqM5AwAgDyABQQFqIgQgIWxBA3RqIAggBCAGbEEDdGorAwAgVqM5AwAgAUECaiIBIBVHDQALCyAmICQrAwAiViBYoSBWozkDAAwDCww5CyAdKwMACyFWICZCADcDACAkIFY5AwAgFCgCCCIGQQBOBEAgFCgCACEIIBQoAjAoAgQhDUEAIQ9BACEEAkACQCAGDgIDAQALIA1BAUcNACAGQf7///8HcSEEQQAhAQNAIAggAUEDdGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIAFBAmoiASAERw0ACyAEIAZGDQILIAYgBCIBa0EDcSIVBEADQCAIIAEgDWxBA3RqQgA3AwAgAUEBaiEBIA9BAWoiDyAVRw0ACwsgBCAGa0F8Sw0BA0AgCCABIA1sQQN0akIANwMAIAggAUEBaiANbEEDdGpCADcDACAIIAFBAmogDWxBA3RqQgA3AwAgCCABQQNqIA1sQQN0akIANwMAIAFBBGoiASAGRw0ACwwBCww5CyASKAI0IQEgEigCLCEEIBIoAjAhCCASKAI4IgYoAgQhFSAKIAw2AiAgCiAYNgIcIAogBCAIIBhrIg9BA3RqIBUgASAMayINbEEDdGo2AhggCiASKAJENgI8IAogEikCPDcCNCAKIBL9AAIs/QsCJCAKIA02AkQgCiAPNgJAIAogCigCMCgCBDYCSCAPIBhyQQBIDTAgDCANckEASA0wIAFBAEhBACAEGw02IAcgCE4NNyABICJrIgggInJBAEgNMCAGKAIEIQ8gCiABNgKAASAKICI2AnQgCiAEIBNqIgE2AnggCiABIAggD2xBA3RqNgJsIAogEigCNDYCjAEgCiASKQIsNwKEASAKIAY2ApABIAogEigCRDYCnAEgCiASKQI8NwKUASAKQQE2ArQBIAogCDYCsAEgCkKAgICAEDcCpAEgCiAHNgKgASAEIAYoAgQgCWxBA3RqIBNqIRhBACEiIwBBgAJrIggkACAYKwMAIVYCQCAOKAIIIgFBAUYEQCAOKAIEIgRBAEgNOkQAAAAAAADwPyBWoSFWIA4oAgAhDkEAIQYCQAJAIAQOAgMBAAsgBEH+////B3EhBiBW/RQhZUEAIQEDQCAOIAFBA3RqIg8gZSAP/QADAP3yAf0LAwAgAUECaiIBIAZHDQALIAQgBkYNAgsDQCAOIAZBA3RqIgEgViABKwMAojkDACAGQQFqIgYgBEcNAAsMAQsgVkQAAAAAAAAAAGENACAIIA4oAgQiDTYC6AEgCCALNgLkASANQQBIDTAgDigCACEEIA4oAhgoAgQhBiAIIAFBAWsiFTYCoAEgCCAEIAZBA3RqNgKYASAIIA02ApwBIA0gFXJBAEhBACAEGw03IAggDigCMDYC1AEgCCAO/QACIP0LAsQBIAggDikCGCJpNwK8ASAIIA4pAhA3ArQBIAggDv0AAgD9CwKkASAIQoCAgIAQNwLYASAIIGmnKAIENgLgASABQQBMDTEgCCAIQZgBakHMAPwKAAAgCEHMAGogFEHMAPwKAAAgFSAUKAIIRw0yIA0gCCgCBEcNMwJAIA1FDQAgDUEDdCIBRQ0AIAtBACAB/AsACyAIQoCAgICAgID4PzcD8AFEAAAAAAAAAAAhViMAQRBrIgEkAAJAIAgoAgQiBEEBRgRAIAgrA/ABIVggCCgCACIPQQAgCCgCCCIEQQBIGw05IAgoAiQhDCAIKAJMIhNBACAIKAJUIgZBAEgbDTkgBCAGRw03AkAgBEUNACAEQQBMDTkgDysDACATKwMAoiFWQQEhBiAEQQFGDQAgCCgCcCgCBCEdIAwoAgQhISAEQQFrIgxBAXEgBEECRwRAIAxBfnEhBEEAIQwDQCBWIA8gBiAhbEEDdGorAwAgEyAGIB1sQQN0aisDAKKgIA8gBkEBaiImICFsQQN0aisDACATIB0gJmxBA3RqKwMAoqAhViAGQQJqIQYgDEECaiIMIARHDQALC0UNACBWIA8gBiAhbEEDdGorAwAgEyAGIB1sQQN0aisDAKKgIVYLIAgoAuQBIgQgWCBWoiAEKwMAoDkDAAwBCyAIKwPwASFWIAgoAgghBiAIKAJMIQ8gCCgCcCEMIAgoAgAhEyABIAgoAiQoAgQ2AgwgASATNgIIIAEgDCgCBDYCBCABIA82AgAgBCAGIAFBCGogASAIKALkASBWED0LIAFBEGokACAOKAIAIgxBACAOKAIEIg9BAEgbDTcgDigCCEEATA04IAgoAugBIA9HDToCQCAPQQBMDQAgCCgC5AEhBkEAIQQCQCAPQQhJDQAgDCAPQQN0IgFqIAZLIAwgASAGaklxDQAgD0H+////B3EhBEEAIQEDQCAGIAFBA3QiE2oiHSAMIBNq/QADACAd/QADAP3wAf0LAwAgAUECaiIBIARHDQALIAQgD0YNAQsgDyAEIgFrQQNxIhMEQANAIAYgAUEDdCIdaiIhIAwgHWorAwAgISsDAKA5AwAgAUEBaiEBICJBAWoiIiATRw0ACwsgBCAPa0F8Sw0AA0AgBiABQQN0IgRqIhMgBCAMaisDACATKwMAoDkDACAGIARBCGoiE2oiHSAMIBNqKwMAIB0rAwCgOQMAIAYgBEEQaiITaiIdIAwgE2orAwAgHSsDAKA5AwAgBiAEQRhqIgRqIhMgBCAMaisDACATKwMAoDkDACABQQRqIgEgD0cNAAsLIA9BAEgNOSAOKAIIQQBMDTggDyAIKALoAUcNOgJAIA9BAEwNACAYKwMAIVYgCCgC5AEhDkEAIQECQCAPQQZJDQAgDiAPQQN0IgRqIAxLIA4gBCAMaklxDQAgD0H+////B3EhASBW/RQhZUEAIQYDQCAMIAZBA3QiBGoiEyAT/QADACBlIAQgDmr9AAMA/fIB/fEB/QsDACAGQQJqIgYgAUcNAAsgASAPRg0BCyABQQFyIQQgD0EBcQRAIAwgAUEDdCIBaiIGIAYrAwAgViABIA5qKwMAoqE5AwAgBCEBCyAEIA9GDQADQCAMIAFBA3QiBGoiBiAGKwMAIFYgBCAOaisDAKKhOQMAIAwgBEEIaiIEaiIGIAYrAwAgViAEIA5qKwMAoqE5AwAgAUECaiIBIA9HDQALCyAYKwMAIVYgCCAILQDsAToAICAIIAgpAuQBNwMYIAhBKGogFEHMAPwKAAAgCCBWOQMQIAggDzYCCCANIAgoAhwiBkcNNCAVIAgoAjBHDTRBACEEIwBBEGsiASEYIAEkACAIKAJMIAZBA3QiBkGAgAhNBEAgASAGQR5qQXBxayIEJAALIAgoAighISgCBCEiIBggCCAEEKACIhUoAgAhDwJAIAgoAqABIh1BAEwNACAIKAK8ASgCBCENIBUoAgQhDiAIKAKYASITQQAgCCgCnAEiAUEASBsNOCAOQQBIDTogASAORw07IAFFDQAgDkEBcSEkIA5B/v///wdxIQRBACEUIBMgDyAOQQN0akkEfyAPIBMgDSAdQQFrbCAOakEDdGpJBUEACyANQYCAgIABcUEcdnIgDkECSXJBAXEhJgNAIBQgCCgCoAFODTogEyANIBRsQQN0aiEMICEgFCAibEEDdGorAwAhVkEAIQECQCAmRQRAIFb9FCFlA0AgDCABQQN0IgZqIiggKP0AAwAgZSAGIA9q/QADAP3yAf3xAf0LAwAgAUECaiIBIARHDQALIAQiASAORg0BCyABQQFyIQYgJARAIAwgAUEDdCIBaiIoICgrAwAgViABIA9qKwMAoqE5AwAgBiEBCyAGIA5GDQADQCAMIAFBA3QiBmoiKCAoKwMAIFYgBiAPaisDAKKhOQMAIAwgBkEIaiIGaiIoICgrAwAgViAGIA9qKwMAoqE5AwAgAUECaiIBIA5HDQALCyAUQQFqIhQgHUcNAAsLAkAgFS0ADEEBRw0AIA9FDQAgD0EEaygCABARCyAYQRBqJAALIAhBgAJqJAAgBSAJayEBICkgB2tBAmshDCASKAI4Ig5BBGohFCASKAIsIgQgDigCBCIPIAlsQQN0aiEIIBIoAjAhBiAJIQcgBEUNACAGQQBODQALCww0CyAKKAJkIgEEQCABQQRrKAIAEBELIApB0AFqJAAMAAsMAgsgEiAONgIMIBIgEigCSDYCBCASIAQ2AgggEiAEIAcgARs2AhAgCSAKaiEqIAVBCGogCWohLiASQRhqIUYgEkEEaiEnQQAhCUQAAAAAAAAAACFZIwBBoAJrIgskACASKAI0IRggEigCMCEkAkACQAJAAkAgDkEATA0AICRBfyAkICRBf04bayEzAkADQCAkIAlrIg9BAEhBACASKAIYIgQbRQRAIAkgM0YNMiAJIBIoAhwgD2tKDTIgEigCICAJSA0yIBIoAiQhASALIAQgCUEDdCIUajYC9AEgCyAJNgL8ASALIA82AvgBIAsgDyABIA8gARsgCUEBRiIHGzYCgAIgCSASKAIwIgggD2siBUoNMiASKAI0IgogCUgNMiASKAIsIQEgEigCOCAL/QwAAAAAAAAAAAAAAAAAAAAA/QsD4AEoAgQhBCALIAk2AugBIAsgASAUajYC4AEgCyAPNgLkASALIA8gBCAPIAQbIAcbNgLsASABQQAgCEEASBsNOCAJIApODTkgBSAPckEASA0yIAsgDzYC2AEgCyABIAQgCWxBA3RqIAVBA3RqNgLUASASKAIEIgRBACASKAIMIgFBAEgbDTggCSASKAIITg05IAEgCUgNMiALQoCAgIAQNwKwASALQoCAgIAQNwKkASALIAk2AqABIAsgJzYCnAEgCyABNgKYASALIAQgFGoiATYCkAEgCyAJNgKMASALIAE2AoQBIAsgC0HgAWo2AoABIwBBEGsiByQAIAdCADcCAAJAIAsoAoABIgQoAgQiAUUNACABQQBIDT4gByABIAEQHiAHKAIEIgFBAEgNOyALKAKAASEEIAFFDQAgAUEDdCIBRQ0AIAcoAgBBACAB/AsACyAHQoCAgICAgID4PzcDCEQAAAAAAAAAACFWIwBBEGsiASQAAkAgBCgCBCIFQQFGBEAgBysDCCFYIAQoAgAiCkEAIAQoAggiCEEASBsNOiALKAKEASIMQQAgCygCjAEiBUEASBsNOiAFIAhHDTgCQCAIRQ0AIAhBAEwNOiAKKwMAIAwrAwCiIVZBASEFIAhBAUYNACALKAKcASgCDCENIAQoAgwhBCAIQQFrIhNBAXEgCEECRwRAIBNBfnEhE0EAIQgDQCBWIAogBCAFbEEDdGorAwAgDCAFIA1sQQN0aisDAKKgIAogBUEBaiIeIARsQQN0aisDACAMIA0gHmxBA3RqKwMAoqAhViAFQQJqIQUgCEECaiIIIBNHDQALC0UNACBWIAogBCAFbEEDdGorAwAgDCAFIA1sQQN0aisDAKKgIVYLIAcoAgAiBCBYIFaiIAQrAwCgOQMADAELIAQoAgghCCAHKwMIIVYgCygChAEhCiALKAKcASEMIAQoAgAhDSABIAQoAgw2AgwgASANNgIIIAEgDCgCDDYCBCABIAo2AgAgBSAIIAFBCGogASAHKAIAIFYQPQsgAUEQaiQAIAsoAtgBIgogBygCBEcNOyAHKAIAIQgCQAJAIApBAEoEQCALKALUASEMQQAhBEEAIQECQCAKQQhJDQAgCCAKQQN0IgVqIAxLIAggBSAMaklxDQAgCkH+////B3EhAUEAIQUDQCAMIAVBA3QiDWoiEyAT/QADACAIIA1q/QADAP3xAf0LAwAgBUECaiIFIAFHDQALIAEgCkYNAgsgCiABIgVrQQNxIg0EQANAIAwgBUEDdCITaiIVIBUrAwAgCCATaisDAKE5AwAgBUEBaiEFIARBAWoiBCANRw0ACwsgASAKa0F8Sw0BA0AgDCAFQQN0IgFqIgQgBCsDACABIAhqKwMAoTkDACAMIAFBCGoiBGoiDSANKwMAIAQgCGorAwChOQMAIAwgAUEQaiIEaiINIA0rAwAgBCAIaisDAKE5AwAgDCABQRhqIgFqIgQgBCsDACABIAhqKwMAoTkDACAFQQRqIgUgCkcNAAsMAQsgCEUNAQsgCEEEaygCABARCyAHQRBqJAAgCQRAIBIoAjgiBSgCBCEBIBIoAiwiB0EAIBIoAjAiBEEASBsNOSALIBIpAiw3AnQgCyASKAI0NgJ8IAkgEigCNE4NOiAEIAlIDTMgCyAENgKUASALIAcgASAJbEEDdGoiBDYCkAEgCyAENgKEASALIAtB9AFqNgKAASALIAk2AogBIAsgC/0AAnD9CwKYASALIAU2AqgBIAsgEigCRDYCtAEgCyASKQI8NwKsASALIAE2AswBIAv9DAAAAAAAAAAAAAAAAAAAAAAgCf0cASAB/RwC/QsCuAEgCygC/AEgCUcNNCMAQRBrIgckACAHQgA3AgACQCALKAKAASIEKAIEIgFFDQAgAUEASA0/IAcgASABEB4gBygCBCIBQQBIDTwgCygCgAEhBCABRQ0AIAFBA3QiAUUNACAHKAIAQQAgAfwLAAsgB0KAgICAgICA+D83AwhEAAAAAAAAAAAhViMAQRBrIgUkACAEKAIIIQECQCAEKAIEIghBAUYEQCAHKwMIIVggBCgCACIKQQAgAUEASBsNOyALKAKEASIMQQAgCygCiAEiCEEASBsNOyABIAhHDTkCQCABRQ0AIAFBAEwNOyAKKwMAIAwrAwCiIVZBASEIIAFBAUYNACAEKAIMIQQgAUEBayINQQFxIAFBAkcEQCANQX5xIQ1BACEBA0AgViAKIAQgCGxBA3RqKwMAIAwgCEEDdGorAwCioCAKIAhBAWoiFSAEbEEDdGorAwAgDCAVQQN0aisDAKKgIVYgCEECaiEIIAFBAmoiASANRw0ACwtFDQAgViAKIAQgCGxBA3RqKwMAIAwgCEEDdGorAwCioCFWCyAHKAIAIgEgWCBWoiABKwMAoDkDAAwBCyAHKwMIIVYgCygChAEhCiAEKAIAIQwgBSAEKAIMNgIMIAUgDDYCCCAFQQE2AgQgBSAKNgIAIAggASAFQQhqIAUgBygCACBWED0LIAVBEGokACALKALYASIKIAcoAgRHDTwgBygCACEIAkACQCAKQQBKBEAgCygC1AEhDEEAIQRBACEFAkAgCkEISQ0AIAggCkEDdCIBaiAMSyAIIAEgDGpJcQ0AIApB/v///wdxIQVBACEBA0AgDCABQQN0Ig1qIhMgE/0AAwAgCCANav0AAwD98QH9CwMAIAFBAmoiASAFRw0ACyAFIApGDQILIAogBSIBa0EDcSINBEADQCAMIAFBA3QiE2oiFSAVKwMAIAggE2orAwChOQMAIAFBAWohASAEQQFqIgQgDUcNAAsLIAUgCmtBfEsNAQNAIAwgAUEDdCIEaiIFIAUrAwAgBCAIaisDAKE5AwAgDCAEQQhqIgVqIg0gDSsDACAFIAhqKwMAoTkDACAMIARBEGoiBWoiDSANKwMAIAUgCGorAwChOQMAIAwgBEEYaiIEaiIFIAUrAwAgBCAIaisDAKE5AwAgAUEEaiIBIApHDQALDAELIAhFDQELIAhBBGsoAgAQEQsgB0EQaiQACyALIAsoAtgBIgFBAWs2AoQBIAsgCygC1AEiBEEIajYCgAEgAUEASiIFQQEgBBtFDTggC0EBNgKQASALIAE2ApgBIAsgC0HUAWoiDDYCjAEgBUUNMiAMIAtBgAFqIAtBiAJqIBQgKmoQogICQCAYIAlBAWoiB0oEQCAYIAlBf3NqIgpBAEhBACASKAIEIgUbDTogCkEASA00IAkgEigCCCIVIAprIg1ODTQgEigCDCAJTA00IBIoAhAhCCALIAUgB0EDdCIpajYCXCALIAo2AmAgCyAIIAogCBsgCiAJGzYCaCALIAc2AmQgEigCMCITIAlIDTQgCSASKAI0IAprTg00IBIoAjgiBCgCBCEeIBIoAiwhASAL/QwAAAAAAAAAAAAAAAAAAAAA/QsDSCAEKAIEIQQgCyAKNgJQIAsgASAHIB5sQQN0ajYCSCALIAk2AkwgCyAJIAQgCSAEGyAKQQFGIh4bNgJUIAkgE04NPiABIAQgCWxBA3RqIBRqQoCAgICAgID4PzcDACAFQQAgFUEASBsNOiAJIBIoAgxODTsgCiANckEASA00IAsgBSAIIAlsQQN0aiIFIA1BA3RqIgg2AiggCyAKNgIsIAsgBTYCPCALIAk2AkAgCiAPckEASEEAIAEbDTogCSATIA9rSg00IBIoAjgiBSgCBCENIAsgCjYCiAEgCyABIBRqIAQgB2xBA3RqNgKAASALIA82AoQBIAsgEigCNDYClAEgCyASKQIsNwKMASALIAU2ApgBIAsgEigCRDYCpAEgCyASKQI8NwKcASALIA02ArABIAsgBzYCrAEgCyAJNgKoASALKALYASALIAw2ArQBIA9HDTUCQCAKRQ0AIApBA3QiAUUNACAIQQAgAfwLAAsgC0KAgICAgICA+D83AxggC0HUAWoiFSEFRAAAAAAAAAAAIVYjAEFAaiIEJAACQCALKAKIAUEBRgRAIAsrAxghWCALKAKAASIMQQAgCygChAEiAUEASBsNPCAFKAIAIg1BACAFKAIEIgVBAEgbDTwgASAFRw06AkAgAUUNACABQQBMDTwgDCsDACANKwMAoiFWQQEhCCABQQFGDQAgAUEBayIFQQNxIRMgAUECa0EDTwRAIAVBfHEhHUEAIQUDQCBWIAwgCEEDdCIBaisDACABIA1qKwMAoqAgDCABQQhqIiFqKwMAIA0gIWorAwCioCAMIAFBEGoiIWorAwAgDSAhaisDAKKgIAwgAUEYaiIBaisDACABIA1qKwMAoqAhViAIQQRqIQggBUEEaiIFIB1HDQALCyATRQ0AQQAhAQNAIFYgDCAIQQN0IgVqKwMAIAUgDWorAwCioCFWIAhBAWohCCABQQFqIgEgE0cNAAsLIAsoAigiASBYIFaiIAErAwCgOQMADAELIAQgCygCsAE2AjggBCAL/QACoAH9CwMoIAQgC/0AApAB/QsDGCAEIAv9AAKAAf0LAwgjAEEQayIIJAACQCAFKAIEIgxBgICAgAJJBEAgCysDGCFWIAQoAiAhDSAEKAIQIAQoAgwgBCgCCCEhQQAhASAFKAIAIgVFBEAgDEEDdCEBAkAgDEGAgAFNBEAgCCABQR5qQXBxayIBJAAMAQsgAUEQahAWIgFFDTYgAUFwcSIFIAE2AgwgBUEQaiEBCyABIQULIAggDSgCBDYCDCAIICE2AgggCEEBNgIEIAggBTYCACALKAIoIgUEQCALKAIsQQBIDT4LIAhBCGogCCAFQQEgVhBPAkAgDEGBgAFJDQAgAUUNACABQQRrKAIAEBELIAhBEGokAAwBCwwzCwsgBEFAayQAIAsoAtgBIAsoAuQBIAsgFTYCHCALIAtB4AFqNgIYRw01IAsoAugBIgEgCygCQEcNNiABQQBIDTwCQCABRQ0AIAFBA3QiAUUNACALKAI8QQAgAfwLAAsgC0KAgICAgICA+D83A4ABIAtBPGoiBCALQRhqIgUgC0HUAWoiCCALQYABaiIMEJ0CIAsoAmAiAUEASEEAIAsoAlwiDRsNOiABQQBIDTQgCygCZCAJSA00IAsgCygCaDYCmAEgC0IANwKQASALIAE2AoQBIAsgDTYCgAEgCyAJNgKIASALKAJAIQ0gCyAENgKcASALIAtB3ABqNgKMASAJIA1HDTUgCygCLCABRw03IAtCgICAgICAgPi/fzcDGCALQShqIAwgBCAFEOsDIAsoAtgBIAsoAvgBIAsgCDYCHCALIAtB9AFqNgIYRw01IAsoAvwBIgEgCygCQEcNNiABQQBIDTwCQCABRQ0AIAFBA3QiAUUNACALKAI8QQAgAfwLAAsgC0KAgICAgICA+D83A4ABIAtBPGoiASALQRhqIgQgC0HUAWogC0GAAWoiBRCdAiALKAJAIAsoAkwgCyABNgIcIAsgC0HIAGo2AhhHDTUgCygCLCALKAJQRw03IAtCgICAgICAgPi/fzcDgAEgC0EoaiAEIAEgBRCdAiALKAIsIgFBAEgNPCALKwOIAiFWQQAhBCALKAIoIQgCQAJAAkAgAQ4CAgEACyABQf7///8HcSEEIFb9FCFlQQAhBQNAIAggBUEDdGoiDCBlIAz9AAMA/fIB/QsDACAFQQJqIgUgBEcNAAsgASAERg0BCwNAIAggBEEDdGoiBSBWIAUrAwCiOQMAIARBAWoiBCABRw0ACwsgEigCLCIFQQAgEigCNCIBQQBIGw06IAkgEigCME4NOyABIAprIgggCnJBAEgNNCASKAI4KAIEIQQgCyAKNgIwIAtBAUEBIAQgBEEBTRsgHhs2AjggCyAFIBRqIgUgBCAIbEEDdGo2AiggASAJTA00IAsgATYCmAEgCyAFNgKQASALIAU2AoQBIAsgC0HcAGo2AoABIAsgBzYCjAEgCyASKAJENgK0ASALIBIpAjw3AqwBIAsgEv0AAiz9CwKcASALQoCAgIAQNwLIASALQoCAgIAQNwK8ASALIAk2ArgBIAsoAmQgB0cNNSMAQRBrIgwkACAMQgA3AgACQCALKAKAASIFKAIEIgFFDQAgAUEASA1AIAwgASABEB4gDCgCBCIBQQBIDT0gCygCgAEhBSABRQ0AIAFBA3QiAUUNACAMKAIAQQAgAfwLAAsgDEKAgICAgICA+D83AwhEAAAAAAAAAAAhViMAQRBrIgEkAAJAIAUoAgQiBEEBRgRAIAwrAwghWCAFKAIAIg1BACAFKAIIIghBAEgbDTwgCygChAEiE0EAIAsoAowBIgRBAEgbDTwgBCAIRw06AkAgCEUNACAIQQBMDTwgDSsDACATKwMAoiFWQQEhBCAIQQFGDQAgCygCqAEoAgQhFSAFKAIMIQUgCEEBayIeQQFxIAhBAkcEQCAeQX5xIR5BACEIA0AgViANIAQgBWxBA3RqKwMAIBMgBCAVbEEDdGorAwCioCANIARBAWoiISAFbEEDdGorAwAgEyAVICFsQQN0aisDAKKgIVYgBEECaiEEIAhBAmoiCCAeRw0ACwtFDQAgViANIAQgBWxBA3RqKwMAIBMgBCAVbEEDdGorAwCioCFWCyAMKAIAIgQgWCBWoiAEKwMAoDkDAAwBCyAFKAIIIQggDCsDCCFWIAsoAoQBIQ0gCygCqAEhEyAFKAIAIRUgASAFKAIMNgIMIAEgFTYCCCABIBMoAgQ2AgQgASANNgIAIAQgCCABQQhqIAEgDCgCACBWED0LIAFBEGokACALKAIwIgggDCgCBEcNPSAMKAIAIQ0CQAJAIAhBAEoEQCALKAI4IRUgCygCKCETQQAhBQJAIAhBCEkNACAVQQFHDQAgDSAIQQN0IgFqIBNLIA0gASATaklxDQAgCEH+////B3EhBUEAIQQDQCATIARBA3QiAWoiHiAe/QADACABIA1q/QADAP3xAf0LAwAgBEECaiIEIAVHDQALIAUgCEYNAgsgBUEBciEBIAhBAXEEQCATIAUgFWxBA3RqIgQgBCsDACANIAVBA3RqKwMAoTkDACABIQULIAEgCEYNAQNAIBMgBSAVbEEDdGoiASABKwMAIA0gBUEDdGorAwChOQMAIBMgBUEBaiIBIBVsQQN0aiIEIAQrAwAgDSABQQN0aisDAKE5AwAgBUECaiIFIAhHDQALDAELIA1FDQELIA1BBGsoAgAQEQsgDEEQaiQAIAkEQCASKAIYIgRBACASKAIgIgFBAEgbDTsgCSASKAIcTg08IAEgCUgNNSALQoCAgIAQNwKwASALQoCAgIAQNwKkASALIAk2AqABIAsgRjYCnAEgCyABNgKYASALIAQgFGoiATYCkAEgCyAJNgKMASALIAE2AoQBIAsoAkwgCyALQcgAajYCgAEgCUcNNiMAQRBrIgwkACAMQgA3AgACQCALKAKAASgCCCIBRQ0AIAFBAEgNQSAMIAEgARAeIAwoAgQiAUEASA0+IAFFDQAgAUEDdCIBRQ0AIAwoAgBBACAB/AsACyAMQoCAgICAgID4PzcDCEQAAAAAAAAAACFWQQAhIUEAIR0jAEFAaiIEJAACQCALKAKAASIBKAIIQQFGBEAgDCsDCCFYIAEoAgAiCEEAIAEoAgQiAUEASBsNPSALKAKEASINQQAgCygCjAEiBUEASBsNPSABIAVHDTsCQCABRQ0AIAFBAEwNPSAIKwMAIA0rAwCiIVZBASEFIAFBAUYNACALKAKcASgCDCETIAFBAWsiFUEBcSABQQJHBEAgFUF+cSEBA0AgViAIIAVBA3RqKwMAIA0gBSATbEEDdGorAwCioCAIIAVBAWoiFUEDdGorAwAgDSATIBVsQQN0aisDAKKgIVYgBUECaiEFICFBAmoiISABRw0ACwtFDQAgViAIIAVBA3RqKwMAIA0gBSATbEEDdGorAwCioCFWCyAMKAIAIgEgWCBWoiABKwMAoDkDAAwBCyAEIAE2AjwgBCALKAK0ATYCOCAEIAv9AAKkAf0LAyggBCAL/QAClAH9CwMYIAQgC/0AAoQB/QsDCCMAQRBrIhMkAAJAAkAgBCgCECINQYCAgIACSQRAIAwrAwghViAEKAIgIQUgBCgCCCEVIAQoAjwhIiANQQN0IQEgDUGBgAFPBEAgAUEQahAWIgFFDTcgAUFwcSIIIAE2AgwgCEEQaiEIDAILIBMgAUEeakFwcWsiCCQAIA0NAQwCCww1CyANQYCAAUshISAFKAIMIR5BACEFAkAgDUEGSQ0AIB5BAUcNACAIIBVrQRBJDQAgDUH+////AXEhBUEAIQEDQCAIIAFBA3QiKGogFSAoav0AAwD9CwMAIAFBAmoiASAFRw0ACyAFIA1GDQELIA0gBSIBa0EDcSIoBEADQCAIIAFBA3RqIBUgASAebEEDdGorAwA5AwAgAUEBaiEBIB1BAWoiHSAoRw0ACwsgBSANa0F8Sw0AA0AgCCABQQN0aiAVIAEgHmxBA3RqKwMAOQMAIAggAUEBaiIFQQN0aiAVIAUgHmxBA3RqKwMAOQMAIAggAUECaiIFQQN0aiAVIAUgHmxBA3RqKwMAOQMAIAggAUEDaiIFQQN0aiAVIAUgHmxBA3RqKwMAOQMAIAFBBGoiASANRw0ACwsgIigCBCEBICIoAgggIigCACENIBMgIigCDDYCDCATIA02AgggE0EBNgIEIBMgCDYCACAMKAIAIg0EQCAMKAIEQQBIDT0LIAEgE0EIaiATIA1BASBWEE8gIQRAIAhBBGsoAgAQEQsgE0EQaiQACyAEQUBrJAAgCygCMCIIIAwoAgRHDT4gDCgCACENAkACQCAIQQBKBEAgCygCOCEVIAsoAighE0EAIQECQCAIQQhJDQAgFUEBRw0AIA0gCEEDdCIEaiATSyANIAQgE2pJcQ0AIAhB/v///wdxIQFBACEFA0AgEyAFQQN0IgRqIh4gHv0AAwAgBCANav0AAwD98QH9CwMAIAVBAmoiBSABRw0ACyABIAhGDQILIAFBAXIhBCAIQQFxBEAgEyABIBVsQQN0aiIFIAUrAwAgDSABQQN0aisDAKE5AwAgBCEBCyAEIAhGDQEDQCATIAEgFWxBA3RqIgQgBCsDACANIAFBA3RqKwMAoTkDACATIAFBAWoiBCAVbEEDdGoiBSAFKwMAIA0gBEEDdGorAwChOQMAIAFBAmoiASAIRw0ACwwBCyANRQ0BCyANQQRrKAIAEBELIAxBEGokAAsgCyALKAIwIgFBAWs2AogBIAsgCygCKCIEIAsoAjhBA3RqNgKAASABQQBKIgVBASAEG0UNOiALQQE2ApQBIAsgATYCmAEgCyALQShqIiE2AowBIAVFDTQgFCAuaiEdIAsoAjghCAJAAnwCQCALKAIwIg1BAEoiAUEBIAsoAigiFRsEQCABRQ04IA1BAWsiE0UNAUEBIQEgFSAIQQN0aiIMKwMAIlYgVqIhVgJAIBNBAUYNACANQQJrIgRBA3EhBSANQQNrQQNPBEAgBEF8cSEeQQAhBANAIFYgDCABIAhsQQN0aisDACJWIFaioCAMIAFBAWogCGxBA3RqKwMAIlYgVqKgIAwgAUECaiAIbEEDdGorAwAiViBWoqAgDCABQQNqIAhsQQN0aisDACJWIFaioCFWIAFBBGohASAEQQRqIgQgHkcNAAsLIAVFDQBBACEEA0AgViAMIAEgCGxBA3RqKwMAIlYgVqKgIVYgAUEBaiEBIARBAWoiBCAFRw0ACwsgFSsDACJYIFZEAAAAAAAAEABlDQIaIB0gViBYIFiioJ8iVpogViBYRAAAAAAAAAAAZhsiVjkDACATIAsoAogBRw06IFggVqEhViALKAKAASEEIAsoAowBKAIQIR5BACEFAkACQCANQQlJDQAgHkEBRw0AIAhBAUcNACAEIBVrQQhrQRBJDQAgE0F+cSEFIFb9FCFlQQAhAQNAIAQgAUEDdCIVaiAMIBVq/QADACBl/fMB/QsDACABQQJqIgEgBUcNAAsgBSATRg0BCyAFIQEgDUEBcUUEQCAEIAEgHmxBA3RqIAwgASAIbEEDdGorAwAgVqM5AwAgAUEBciEBCyANQQJrIAVGDQADQCAEIAEgHmxBA3RqIAwgASAIbEEDdGorAwAgVqM5AwAgBCABQQFqIgUgHmxBA3RqIAwgBSAIbEEDdGorAwAgVqM5AwAgAUECaiIBIBNHDQALCyALIB0rAwAiViBYoSBWozkDkAIMAwsMPQsgFSsDAAshViALQgA3A5ACIB0gVjkDACALKAKIASIIQQBOBEAgCygCgAEhDCALKAKMASgCECENQQAhBEEAIQUCQAJAIAgOAgMBAAsgDUEBRw0AIAhB/v///wdxIQVBACEBA0AgDCABQQN0av0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAUECaiIBIAVHDQALIAUgCEYNAgsgCCAFIgFrQQNxIhMEQANAIAwgASANbEEDdGpCADcDACABQQFqIQEgBEEBaiIEIBNHDQALCyAFIAhrQXxLDQEDQCAMIAEgDWxBA3RqQgA3AwAgDCABQQFqIA1sQQN0akIANwMAIAwgAUECaiANbEEDdGpCADcDACAMIAFBA2ogDWxBA3RqQgA3AwAgAUEEaiIBIAhHDQALDAELDD0LIAkgEigCMCIFTg0+IAcgEigCNCIITg0+IBIoAiwiDCASKAI4Ig0oAgQgB2xBA3RqIBRqQoCAgICAgID4PzcDACASKAIkIRMgEigCGCIEQQAgEigCHCIBQQBIGw06IAkgEigCIE4NOyAJICRGIhVBACAEGw06IAEgD0EBayIPayIeIA9yQQBIDTQgCyAPNgJAIAsgBCAJIBNsQQN0aiIEIB5BA3RqIhM2AjwgASAJSA00IAsgBDYCGCALIAk2AhwgASAJTA00IAsgBDYCDCALIAc2AhAgCiAPckEASA06IBUNNCAJIAUgD2tODTQgCSAIIAprTg00IA0oAgQhASASKAI4IgQoAgQhBSALIA82AoQBIAsgDCApaiABIAdsQQN0ajYCgAEgCyAKNgKIASALIBIoAjQ2ApQBIAsgEikCLDcCjAEgCyAENgKYASALIBIoAkQ2AqQBIAsgEikCPDcCnAEgCyAFNgKwASALIAc2AqwBIAsgBzYCqAEgCygCMCALICE2ArQBIApHDTUCQCAPRQ0AIA9BA3QiAUUNACATQQAgAfwLAAsgC0KAgICAgICA+D83A5gCRAAAAAAAAAAAIVYjAEEQayIBJAACQCALKAKEASIFQQFGBEAgCysDmAIhWCALKAKAASIKQQAgCygCiAEiBEEASBsNPCALKAKYASETIAsoArQBIgUoAgghCCAFKAIAIgxBACAIQQBIGw08IAQgCEcNOgJAIARFDQAgBEEATA08IAorAwAgDCsDAKIhVkEBIQggBEEBRg0AIAUoAhAhDSATKAIEIRMgBEEBayIFQQFxIARBAkcEQCAFQX5xIQRBACEFA0AgViAKIAggE2xBA3RqKwMAIAwgCCANbEEDdGorAwCioCAKIAhBAWoiHiATbEEDdGorAwAgDCANIB5sQQN0aisDAKKgIVYgCEECaiEIIAVBAmoiBSAERw0ACwtFDQAgViAKIAggE2xBA3RqKwMAIAwgCCANbEEDdGorAwCioCFWCyALKAI8IgQgWCBWoiAEKwMAoDkDAAwBCyALKwOYAiFWIAsoAogBIQggCygCtAEhBCALKAKAASEKIAEgCygCmAEoAgQ2AgwgASAKNgIIIAQoAgAhCiABIAQoAhA2AgQgASAKNgIAIAUgCCABQQhqIAEgCygCPCBWED0LIAFBEGokACALKAIwIAsoAlAgCyALQShqNgKcAiALIAtByABqNgKYAkcNNSALKAJMIgEgCygCHEcNNiABQQBIDTwCQCABRQ0AIAFBA3QiAUUNACALKAIYQQAgAfwLAAsgC0KAgICAgICA+D83A4ABIAtBGGohCCALQYABaiIVIQFEAAAAAAAAAAAhViMAQRBrIgUkAAJAIAsoAkwiBEEBRgRAIAErAwAhWCALKAJIIgpBACALKAJQIgRBAEgbDTwgCygCnAIiDSgCCCEBIA0oAgAiDEEAIAFBAEgbDTwgASAERw06AkAgBEUNACAEQQBMDTwgCisDACAMKwMAoiFWQQEhASAEQQFGDQAgDSgCECENIAsoAlQhEyAEQQFrIh5BAXEgBEECRwRAIB5BfnEhHkEAIQQDQCBWIAogASATbEEDdGorAwAgDCABIA1sQQN0aisDAKKgIAogAUEBaiIhIBNsQQN0aisDACAMIA0gIWxBA3RqKwMAoqAhViABQQJqIQEgBEECaiIEIB5HDQALC0UNACBWIAogASATbEEDdGorAwAgDCABIA1sQQN0aisDAKKgIVYLIAgoAgAiASBYIFaiIAErAwCgOQMADAELIAsoAlAhCiABKwMAIVYgCygCnAIhASALKAJIIQwgBSALKAJUNgIMIAUgDDYCCCABKAIAIQwgBSABKAIQNgIEIAUgDDYCACAEIAogBUEIaiAFIAgoAgAgVhA9CyAFQRBqJAAgCygC+AEhBCALKAL8ASIBIA9yIgVBAEhBACALKAL0ASIKGw06IAUgBCAPayIEckEASA00IAsgCygCgAI2ApgBIAtBADYClAEgCyAENgKQASALIA82AoQBIAsgCiAEQQN0ajYCgAEgCyABNgKIASALKAIcIQQgCyAINgKcASALIAtB9AFqNgKMASABIARHDTUgCygCQCAPRw03IAtCgICAgICAgPi/fzcDmAIgC0E8aiAVIAggC0GYAmoQ6wMgCygCMCALKAJgIAsgC0EoajYCnAIgCyALQdwAajYCmAJHDTUgCygCZCIBIAsoAhBHDTYgAUEASA08AkAgAUUNACABQQN0IgFFDQAgCygCDEEAIAH8CwALIAtCgICAgICAgPg/NwOAASALQQxqISFEAAAAAAAAAAAhViMAQRBrIhMkAAJAIAsoApgCIgEoAghBAUYEQCALKwOAASFYIAEoAgAiBUEAIAEoAgQiBEEASBsNPCALKAKcAiIKKAIIIQEgCigCACIIQQAgAUEASBsNPCABIARH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cSINBEADQCAGIAFBA3QiGGogCiAYaisDADkDACABQQFqIQEgBEEBaiIEIA1HDQALCyAFIAxrQXxLDQADQCAGIAFBA3QiBGogBCAKaisDADkDACAGIARBCGoiBWogBSAKaisDADkDACAGIARBEGoiBWogBSAKaisDADkDACAGIARBGGoiBGogBCAKaisDADkDACABQQRqIgEgDEcNAAsLIBAoAuABIgFBAEhBACAQKALcASIEGw0rIAFBAEgNFkEBIAcgCGoiBSAXIAUgF0obIgUgEyAFIBNIGyIFIAVBAUwbIhcgECgC5AFKDRYgECABNgJEIBBCADcCPCAQIBk2AjggECAXNgI0IBAgATYCMCAQIAQ2AiwgECgC3BchBCAQIBBB1BdqIgU2AiggASAERw0mIBAgFzYCFCAQIBAoAnAiATYCECAQIBAoAmwiBDYCDCABQQBIQQAgBBsNKyAQQgA3AhwgECABNgIkIBAgEEHsAGo2AhggAUEASA0WIBAoAnQgF0gNFiABIBAoAtgXRw0nIBBBDGogBSASEP0DIBAoAnAiBUEASEEAIBAoAmwiChsNKyAFQQBIDRYgECgCdCAXSA0WIBAoAtgXIgRBAEhBACAQKALUFyIBGw0rIARBAEgNFiAQKALcFyAXSA0WIAQgBUcNJyAFIBdsIQwCQCAFRQ0AQQAhBEEAIQcCQCAMQQJJDQAgASAKa0EQSQ0AIAxBfnEhB0EAIQYDQCABIAZBA3QiDWogCiANav0AAwD9CwMAIAZBAmoiBiAHRw0ACyAHIAxGDQELIAwgByIGa0EDcSINBEADQCABIAZBA3QiGGogCiAYaisDADkDACAGQQFqIQYgBEEBaiIEIA1HDQALCyAHIAxrQXxLDQADQCABIAZBA3QiBGogBCAKaisDADkDACABIARBCGoiB2ogByAKaisDADkDACABIARBEGoiB2ogByAKaisDADkDACABIARBGGoiBGogBCAKaisDADkDACAGQQRqIgYgDEcNAAsLIBwoAgQiBEEASA0tIBcgECgC3BdODSwgBCAFRw0nAkAgBUUNACABIAxBA3RqIQcgHCgCACEKQQAhAQJAIAVBBEkNACAHIAprQRBJDQAgBUH+////B3EhASBW/RQhZUEAIQYDQCAHIAZBA3QiBGogBCAKav0AAwAgZf3zAf0LAwAgBkEC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AEF/IAIgAEEgcRshAA0ACyAFQdABaiQAIARBoAFqJAAgAAtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawsXACAAIAEQigIgAEEANgJIIABBADoAUAsSACAARQRAQQAPCyAAIAEQwQELiQIAAkAgAAR/IAFB/wBNDQECQEGggwMoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIPCyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAw8LIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDwsLQeTtAkEZNgIAQX8FQQELDwsgACABOgAAQQELQQECfyMAQRBrIgEkAEF/IQICQCAAEKIBDQAgACABQQ9qQQEgACgCIBEEAEEBRw0AIAEtAA8hAgsgAUEQaiQAIAILRgEBfyAAQdz0ASgCACIBNgIAIAAgAUEMaygCAGpB/PQBKAIANgIAIABBgPUBKAIANgIIIABBDGoQjQIaIABBQGsQVhogAAtOAQF/IABB0O0BNgIAIAAQtgMaAkAgAC0AYEEBRw0AIAAoAiAiAUUNACABEBELAkAgAC0AYUEBRw0AIAAoAjgiAUUNACABEBELIAAQjgELvwMBA38gAEG81AA2AgAgACIBKAKMARARIAFBADYCjAEgASgCCARAA0AgAkECdCIAIAEoApQBaigCAEEASgRAIAEoApABIABqKAIAEBELIAJBAWoiAiABKAIISQ0ACwsgASgCkAEQESABQQA2AgggAUEANgKQASABKAJEIQAgAUEANgJEIAAEQCAAEJUCEBELIAEoAowCIgAEQANAIAAoAgAgABARIgANAAsLIAEoAoQCIQAgAUEANgKEAiAABEAgASgCiAIaIAAQEQsgASgCzAEiAARAA0AgACgCACAAEBEiAA0ACwsgASgCxAEhACABQQA2AsQBIAAEQCABKALIARogABAR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IAI2AgQgACABNgIAAkACQCABIAJsIgVFBEAgAEEANgIwIABCADcCKCAAIAI2AiQgACABNgIgIABBADYCHAwBCyAFQYCAgIAETw0BIAAgBUECdCIDEBIiBDYCECAAIAMgBGoiBzYCGCADBEAgBEH/ASAD/AsACyAAQQA2AjAgAEIANwIoIAAgAjYCJCAAIAE2AiAgACAENgIcIAAgBzYCFCAAIAMQEiIENgIoIAAgAyAEaiIBNgIwIAQhAgJAIAVBAWtB/////wNxIgNBA08EQCACIANBAWoiBUH8////B3EiA0ECdGohAgNAIAQgBkECdGr9DP///3////9/////f////3/9CwIAIAZBBGoiBiADRw0ACyADIAVGDQELA0AgAkH/////BzYCACACQQRqIgIgAUcNAAsLIAAgATYCLAsgAEIANwI4IAAgBDYCNCAAQUBr/QwAAAAAAAAAAAAAAAAAAAAA/QsCACAADwsQEwALuwIBBH8jAEEwayICJAAgAv0MAAAAAAAAAAAAAAAAAAAAAP0LAhwgAkEANgIsIAJB////+wc2AgggAkJ/NwIAIAL9DAAAAAAAAAAAAAAAAAAAAAD9CwIMAkAgASgCBCIDIAEoAgAiBEcEQCADIARrIgFBAEgNASACIAEQEiIDNgIkIAIgASADaiIFNgIsIAEEQCADIAQgAfwKAAALIAIgBTYCKAsgAAJ/IAAoAgwiASAAKAIQSQRAIAEgAhCTAUEwagwBCyAAQQhqIAIQmAILNgIMIAAgACgCBEEBajYCBCACKAIkIgAEQCACIAA2AiggAigCLBogABARCyACKAIYIgAEQCACIAA2AhwgAigCIBogABARCyACKAIMIgAEQCACIAA2AhAgAigCFBogABARCyACQTBqJAAPCxATAAvxBgEDfyAAKAIIIAAoAgAiBGtBMG0gA08EQCADIAAoAgQiBSAEayIGQTBtSwRAIAEgBmohAyAEIAVHBEADQCAEIAEpAgA3AgAgBCABKAIINgIIIAEgBEcEQCAEQQxqIAEoAgwiBiABKAIQIgUgBSAGa0ECdRArIARBGGogASgCGCIGIAEoAhwiBSAFIAZrQQJ1ECsgBEEkaiABKAIkIgYgASgCKCIFIAUgBmtBAnUQKwsgBEEwaiEEIAFBMGoiASADRw0ACyAAKAIEIQULIAUhASACIANH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IQQCQCAGQQRJDQAgBCACa0EQSQ0AIAZB/v///wdxIQEDQCAEIANBA3QiB2ogAiAHav0AAwD9CwMAIANBAmoiAyABRw0ACyABIAZGDQELIAYgASIDa0EDcSIHBEADQCAEIANBA3QiCWogAiAJaisDADkDACADQQFqIQMgBUEBaiIFIAdHDQALCyABIAZrQXxLDQADQCAEIANBA3QiAWogASACaisDADkDACAEIAFBCGoiBWogAiAFaisDADkDACAEIAFBEGoiBWogAiAFaisDADkDACAEIAFBGGoiAWogASACaisDADkDACADQQRqIgMgBkcNAAsLIAoQ9QMgCi0APEUNBiAKKAIEIQIgDygCCCIBQQBIQQAgCigCACIDGw0QIAFBAEgNESABIAJKDREgCigCCCABSA0RIAggAjYCGCAIQgA3AhAgCCAKNgIMIAggATYCCCAIIAE2AgQgCCADNgIAIAEEQCABQf////8HIAFuSw0ICyAAQcgAaiICIAEgAWwgASABEBtBACEFIAgoAgghBiAIKAIAIQ0gCCgCDCgCBCEMAkAgCCgCBCIHIAIoAgRGBEAgAigCCCAGRg0BCyAGIAdyQQBIDQsCQCAHRQ0AIAZFDQAgB0H/////ByAGbUoNDQsgAiAGIAdsIAcgBhAbIAIoAgghBiACKAIEIQcLIAZBAEoEQCACKAIAIQsgDEEDdCERIAdBA3QhEgNAIAsgBSASbGohDkEAIQEgByAFIAUgB0obIgJBAEoEQCANIAUgDGxBA3RqIQQgCyAFIAdsQQN0aiEJQQAhEEEAIQMCQAJAIAJBAkkNACANIAUgEWxqIgEgAkEDdCITaiAOSyABIA4gE2pJcQ0AIAJBfnEhA0EAIQEDQCAJIAFBA3QiE2ogBCATav0AAwD9CwMAIAFBAmoiASADRw0ACyACIANGDQELIAIgAyIBa0EDcSITBEADQCAJIAFBA3QiFGogBCAUaisDADkDACABQQFqIQEgEEEBaiIQIBNHDQALCyADIAJrQXxLDQADQCAJIAFBA3QiA2ogAyAEaisDADkDACAJIANBCGoiEGogBCAQaisDADkDACAJIANBEGoiEGogBCAQaisDADkDACAJIANBGGoiA2ogAyAEaisDADkDACABQQRqIgEgAkcNAAsLIAIhAQsgASAHSARAIAsgAUEDdCICaiAB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Qv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQOyAFIAAgAiAGEHogBSkDCEIEhiAFKQMAIgJCPIiEIQACQCAEIAhHIAUpAxAgBSkDGIRCAFJxrSACQv//////////D4OEIgJCgYCAgICAgIAIWgRAIABCAXwhAAwBCyACQoCAgICAgICACFINACAAQgGDIAB8IQALIABCgICAgICAgAiFIAAgAEL/////////B1YiBBshACAErQshAiAFQSBqJAAgAUKAgICAgICAgIB/gyACQjSGhCAAhL8LRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQQSAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALQwEBfyAAQQRqIgJBADYCHCACQcT4ATYCACACQcTxATYCACAAQeTsATYCACACQfjsATYCACAAQdjsASgCAGogARC/AQtDAQF/IABBBGoiAkEANgIcIAJBxPgBNgIAIAJBkO4BNgIAIABB7OoBNgIAIAJBgOsBNgIAIABB4OoBKAIAaiABEL8BCzsAIAAoAkwaIAAoAogBRQRAIABB0PkBQbj5AUGggwMoAgAoAgAbNgKIAQsgACgCSEUEQCAAQQE2AkgLCz8AIABBADYCFCAAIAE2AhggAEEANgIMIABCgqCAgOAANwIEIAAgAUU2AhAgAEEgakEAQSj8CwAgAEEcahDzAQs7AQF/IABBjPcBKAIAIgE2AgAgACABQQxrKAIAakGY9wEoAgA2AgAgAEEEahDEARogAEHoAGoQVhogAAsJACAAEMMBEBELGAAgAEGQ7QE2AgAgAEEgahAUGiAAEI4BC7QBAQJ/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABIAA2AgwgAUEAOgAIIAAgACgCAEEMaygCAGooAhBFBEAgACAAKAIAQQxrKAIAaigCSCICBEAgAhCOAgsgAUEBOgAICwJAIAEtAAhFDQAgACAAKAIAQQxrKAIAaigCGCICIAIoAgAoAhgRAABBf0cNACAAIAAoAgBBDGsoAgBqQQEQZwsgAUEIahBeCyABQRBqJAALFAAgAEHw6wE2AgAgAEEEahAYIAALCQAgABDGARAR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CyAJBEACQCAAKAIQIAlsQQFqIgKtIhSnIgNBfyADIBRCIIinGyACQQFyQYCABEkbIgMQFiICRQ0AIAJBBGstAABBA3FFDQAgAkEAIAMQowELIAAoApABIApBAnRqIAI2AgAgAkUNAgsCQCAHQX9HBEAgByECIAYgCUoEQCABIAAoAoABIAAoAowBIAAoAgwgAmxqaiAAKAKoASAAKAKkARELACESIAYhBANAIARBAWshBANAAkAgACgCbBogACgCkAEgAkECdGooAgAgACgCECAEbGoiAy8BACINRQ0AIANBBGohDkEAIQNBACEIA0AgDiADQQJ0aigCACILIAAoAgRLDQkgASAAKAKAASAAKAKMASAAKAIMIAtsamogACgCqAEgACgCpAERCwAiEyASIBIgE14iDBshEiALIAIgDBshAiAIIAxyIQggA0EBaiIDIA1HDQALIAhBAXENAQsLIAQgCUoNAAsLIAkgBiAGIAlKGyILQQBIDQEgACgChAEgACgCjAEgACgCDCAHbGpqLQACQQFxIQ4DQCAFQQhqIgMgACACIAEgCxD1AgJAIA5FDQAgBSABIAAoAoABIAAoAowBIAAoAgwgBSgCHGxqaiAAKAKoASAAKAKkARELADgCBCADIAVBBGogBUEcahBGIAUoAgwiECAFKAIIIgZrQQN1IgwgACgCJE0NAAJAIAxBAkgNACAMQQJrQQF2IREgBikCACEUQQAhAyAGIQIDQCADQQF0IghBAXIhBCACIgcgA0EDdGoiDUEIaiECAkAgDCAIQQJqIghMBEAgBCEDDAELIAQhAyANKgIIIA1BEGoiBCoCAF1FDQAgBCECIAghAwsgByACKQIANwIAIAMgEUwNAAsgEEEIayIDIAJGBEAgAiAUNwIADAELIAIgAykCADcCACADIBQ3AgAgAiAGa0EIakEDdSIDQQJIDQAgAioCACISIAYgA0ECa0EBdiIDQQN0aiIEKgIAXkUNACACKAIEIQcDQAJAIAIgBCICKQIANwIAIANFDQAgBiADQQFrQQF2IgNBA3RqIgQqAgAgEl0NAQsLIAIgBzYCBCACIBI4AgALIAUgBSgCDEEIazYCDAsgACAKIAVBCGogC0EAEPECIQIgBSgCCCIDBEAgBSADNgIMIAUoAhAaIAMQEQsgC0EASiALQQFrIQsNAAsMAQsgACAJ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CyISaiIIIBA2AgAgCCATQQJ0ayECIBkEQCACIAAgGfwKAAALIAhBBGohCCASIAtBAnRqIRIgAARAIAAQEQsgAiEACyAKIA9JBEAgCiAqOAIAIApBBGohCgwBCyAKIAFrIgtBAnUiEEEBaiICQYCAgIAETw0DIAtB/////wMgDyABayIKQQF1Ig8gAiACIA9JGyAKQfz///8HTxsiDwR/IA9BgICAgARPDREgD0ECdBASBUEACyITaiIKICo4AgAgCiAQQQJ0ayECIAsEQCACIAEgC/wKAAALIApBBGohCiATIA9BAnRqIQ8gAQRAIAEQEQsgAiEBCyAVQQFqIhUgESgCBCILSQ0BDAMLCyAGIBI2AhwgBiAINgIYIAYgADYCFAwMCyAGIA82AhAgBiAKNgIMIAYgATYCCAwLCyAGIBI2AhwgBiAINgIYIAYgADYCFCAGIA82AhAgBiAKNgIMIAYgATYCCCALBEAgCCAAa0ECdSEPIBEoAjQgESgCJCAObEECdGohECARKAIcIBEoAgwgDmxBAnRqIQpBACECA0AgECACQQJ0IghqAn0gAiAPSQRAIAggCmogACAIaigCADYCACABIAhqKgIADAELIAogAkECdGpBfzYCAEP//39/CzgCACACQQFqIgIgC0cNAAsLIAEEQCABEBELIAAEQCAAEBELIA5BAWoiDiARKAIASQ0ACwsgBkEgaiQACwJAIActAKgCQQFHDQACQCARKAIMIBEoAghsIgFFDQAgESgCHCICIQAgAUEBa0H/////A3EiCEEDTwRAIAIgCEEBaiILQfz///8HcSIIQQJ0aiEAA0AgLyACIANBAnRq/QACAP0M//////////////////////04/bEBIS8gA0EEaiIDIAhHDQALIC8gLyAv/Q0ICQoLDA0ODwABAgMAAQID/a4BIi8gLyAv/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQMgCCALRg0BCyACIAFBAnRqIQIDQCADIAAoAgBBf0dqIQMgAEEEaiIAIAJHDQALCyANQeQAaiIAIAEQsAEgDSAAQanLAEEpEEUiACgCCDYCeCANIAApAgA3A3AgAEIANwIAIABBADYCCCANIA1B8ABqQfDKAEEEEDMiACgCCDYCiAEgDSAAKQIANwOAASAAQgA3AgAgAEEANgIIIA1B2ABqIgAgAxCwASANIA1BgAFqIA0oAlggACANLABjIgBBAEgiARsgDSgCXCAAIAEbEDMiACgCCDYCECANIAApAgA3AwggAEIANwIAIABBADYCCCANQQhqQQEQPCANLAATQQBIBEAgDSgCEBogDSgCCBARCyANLABjQQBIBEAgDSgCYBogDSgCWBARCyANLACLAUEASARAIA0oAogBGiANKAKAARARCyANLAB7QQBIBEAgDSgCeBogDSgCcBARCyANLABvQQBODQAgDSgCbBogDSgCZBARCyAHKgKIAiAHKAL8AbKUENQDIQQgByANQQhqIAcoAkwgBPwBEIABIgApAwA3A5gBIAdBmAFqIhYgAEcEQCAHQagBaiAAKAIQIgEgACgCFCICIAIgAWtBAnUQKyAHIAAoAhwgBygCqAEiASABIAcoAqwBRhs2ArQBIAcgACgCCDYCoAEgByAAKAIMNgKkASAHQcABaiAAKAIoIgEgACgCLCICIAIgAWtBAnUQKyAHIAAoAjQgBygCwAEiASABIAcoAsQBRhs2AswBIAcgACgCIDYCuAEgByAAKAIkNgK8ASAHQdgBaiAAKAJAIgEgACgCRCICIAIgAWsQ3gMgByAAKAJMIAcoAtgBIgEgASAHKALcAUYbNgLkASAHIAAoAjg2AtABIAcgACgCPDYC1AELIAAoAkAiAQRAIAAgATYCRCAAKAJIGiABEBELIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELAkAgESgCACIZRQ0AIBEoAgQiG0UNACARKAIMIRogESgCHCEUA0AgFCAJIBpsQQJ0aiEXIAcoArQBIhIgBygCpAEiFSAJQQFqIgZsIh5BAnRqIR8gEiAJIBVsIh1BAnRqIQggBygCzAEiICAHKAK8ASIiIAlsQQJ0aiEOIBEoAjQgESgCJCAJbEECdGohHCAHKAKcASEKQQAhEwNAAkAgFyATQQJ0IgBqKAIAIg9Bf0YNAAJAIAAgHGoqAgAiJyAOKgIAYA0AIAghACAdIB5HBEADQCAAKAIAIA9GDQIgAEEEaiIAIB9HDQALC0ECIQFBACEAQQEhAwJAIApBAkkNAANAIAAhAiAOIANBAnRqKgIAIQQCQCABIApPBEAgAyEAIAQgJ14NASACIQAMAwsgDiABQQJ0aioCACIlIARfBEAgAyEAIAQgJ14NASACIQAMAwsgASEAICUiBCAnXg0AIAIhAAwCCyAIIAJBAnQiAWogCCAAQQJ0aigCADYCACABIA5qIAQ4AgAgAEEBdCICQQJqIQEgAkEBciIDIApJDQALCyAIIABBAnQiAGogDzYCACAAIA5qICc4AgALICcgICAPICJsQQJ0aiIQKgIAYA0AIBIgDyAVbCIAQQJ0aiELIAAgFSAPQQFqbCIBRwRAIBIgAUECdGohASALIQADQCAAKAIAIAlGDQIgAEEEaiIAIAFHDQALC0ECIQNBACEAQQEhAQJAIApBAkkNAANAIAAhAiAQIAFBAnRqKgIAIQQCQCADIApPBEAgASEAIAQgJ14NASACIQAMAwsgECADQQJ0aioCACIlIARfBEAgASEAIAQgJ14NASACIQAMAwsgAyEAICUiBCAnXg0AIAIhAAwCCyALIAJBAnQiAWogCyAAQQJ0aigCADYCACABIBBqIAQ4AgAgAEEBdCIBQQJqIQMgAUEBciIBIApJDQALCyALIABBAnQiAGogCTYCACAAIBBqICc4AgALIBNBAWoiEyAbRw0ACyAGIgkgGUcNAAsLIBYQVwJAIActAKgCQQFHDQBBACEDAkAgBygCpAEgBygCoAFsIgJFDQAgBygCtAEiASEAIAJBAWtB/////wNxIglBA08EQCABIAlBAWoiCEH8////B3EiCUECdGohAP0MAAAAAAAAAAAAAAAAAAAAACEvA0AgLyABIANBAnRq/QACAP0M//////////////////////04/bEBIS8gA0EEaiIDIAlHDQALIC8gLyAv/Q0ICQoLDA0ODwABAgMAAQID/a4BIi8gLyAv/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQMgCCAJRg0BCyABIAJBAnRqIQEDQCADIAAoAgBBf0dqIQMgAEEEaiIAIAFHDQALCyANQfAAaiIAIAMQRCANIABB9coAQTMQRSIAKAIINgKIASANIAApAgA3A4ABIABCADcCACAAQQA2AgggDSANQYABakHzL0EcEDMiACgCCDYCECANIAApAgA3AwggAEIANwIAIABBADYCCCANQQhqQQEQPCANLAATQQBIBEAgDSgCEBogDSgCCBARCyANLACLAUEASARAIA0oAogBGiANKAKAARARCyANLAB7QQBODQAgDSgCeBogDSgCcBARCyARKAJAIgAEQCARIAA2AkQgESgCSBogABARCyARKAIoIgAEQCARIAA2AiwgESgCMBogABARCyARKAIQIgAEQCARIAA2AhQgESgCGBogABARCyANQeABaiQAIAwoAngLIAUQgAEiCCgCAEUNACAmQwAAgD+SISogB0HYAGohDiAHQYQBaiESQQAhCwJAA0ACQCAMQQA2AiAgDEIANwIYIAcoAkwhACAMQQA2AhQgDEIANwIMIAAEQCAAQQBIDQogAEEBa0EFdkEBaiIBQQJ0EBIhAiAMIAE2AhQgDEEANgIQIAwgAjYCDCAMQQxqIAAQsQILIAwgEiAMQfgAaiALIA4Q3AMgDCgCACIJIQAgDCgCBCITIAlHBEADQEMAAAAAISVDAAAAACEnQwAAAAAhJkMAAAAAIQQCQCAYKAIEIgIgCSgCACINbCIAIAIgDUEBamwiBkYNACAYKAIUIgogAEECdGohACAMKAKMASAMKAJ8IAtsQQJ0aiEDAn8gAkEBcUUEQCAAIQEgAwwBCyAAQQRqIQEgAyoCACInICeUQwAAAACSIQQgACoCACIoICiUQwAAAACSISYgKCAnlEMAAAAAkiEnIANBBGoLIQAgAkH/////A3FBAUYNACAKIAZBAnRqIQIDQCABKgIEIiggACoCBCIplCABKgIAIisgACoCACIslCAnkpIhJyAAQQhqIQAgKSAplCAsICyUIASSkiEEICggKJQgKyArlCAmkpIhJiABQQhqIgEgAkcNAAsLAkAgJkMAAAAAWyIAIARDAAAAAFsiAXENAEMAAIA/ISUgAA0AIAENAEMAAIA/ICcgJiAElJGVkyElCyAlIAgoAjQgCCgCJCALbEECdGoiBioCAGBFBEAgCCgCDCALbCEKIAgoAhwhD0EAIQACQCAIKAIEIhBBAkkNAEECIQIgDyAKQQJ0aiERQQEhAwNAIAAhASAGIANBAnRqKgIAIQQCQCACIBBPBEAgAyEAIAQgJV4NASABIQAMAwsgBiACQQJ0aioCACImIARfBEAgAyEAIAQgJV4NASABIQAMAwsgAiEAICYiBCAlXg0AIAEhAAwCCyARIAFBAnQiAWogESAAQQJ0aigCADYCACABIAZqIAQ4AgAgAEEBdCIBQQJqIQIgAUEBciIDIBBJDQALCyAAQQJ0IgAgDyAKQQJ0amogDTYCACAAIAZqICU4AgAgCSgCACENCwJAIAwoAhwiACAMKAIgIgNJBEAgACAlOAIEIAAgDTYCACAAQQhqIQEMAQsgACAMKAIYIgBrIgFBA3UiBkEBaiICQYCAgIACTw0MIAFB/////wEgAyAAayIDQQJ1IgogAiACIApJGyADQfj///8HTxsiAgR/IAJBgICAgAJPDQQgAkEDdBASBUEACyIKaiIDICU4AgQgAyANNgIAIAMgBkEDdGshBiABBEAgBiAAIAH8CgAACyAMIAogAkEDdGo2AiAgDCADQQhqIgE2AhwgDCAGNgIYIABFDQAgABARCyAMIAE2AhwCQCABIAwoAhgiBmtBA3UiAEECSA0AIAFBBGsqAgAiBCAGIABBAmtBAXYiAEEDdGoiAioCBF1FDQAgAUEIayIDKAIAIQEDQAJAIAMgAiIDKQIANwIAIABFDQAgBiAAQQFrQQF2IgBBA3RqIgIqAgQgBF4NAQsLIAMgBDgCBCADIAE2AgALIAwoAgwgCSgCACIAQQN2Qfz///8BcWoiASABKAIAQQEgAHRyNgIAIBMgCUEEaiIJRw0ACyAMKAIAIQkgDCgCBCEAC0EAIQ0CQCAFIAAgCWtBAnVrIhNBAEwNAANAAkBBASAOEEwgBzUCTIKnIgl0IhUgCUEFdkECdCIWIAwoAgxqKAIAcUUEQEMAAAAAISVDAAAAACEnQwAAAAAhJkMAAAAAIQQCQCAYKAIEIgIgCWwiACACIAlBAWpsIgZGDQAgGCgCFCIKIABBAnRqIQAgDCgCjAEgDCgCfCALbEECdGohAwJ/IAJBAXFFBEAgACEBIAMMAQsgAEEEaiEBIAMqAgAiJyAnlEMAAAAAkiEEIAAqAgAiKCAolEMAAAAAkiEmICggJ5RDAAAAAJIhJyADQQRqCyEAIAJB/////wNxQQFGDQAgCiAGQQJ0aiECA0AgASoCBCIoIAAqAgQiKZQgASoCACIrIAAqAgAiLJQgJ5KSIScgAEEIaiEAICkgKZQgLCAslCAEkpIhBCAoICiUICsgK5QgJpKSISYgAUEIaiIBIAJHDQALCwJAICZDAAAAAFsiACAEQwAAAABbIgFxDQBDAACAPyElIAANACABDQBDAACAPyAnICYgBJSRlZMhJQsgJSAIKAI0IAgoAiQgC2xBAnRqIgYqAgBgRQRAIAgoAgwgC2whCiAIKAIcIQ9BACEAAkAgCCgCBCIQQQJJDQBBAiECIA8gCkECdGohEUEBIQMDQCAAIQEgBiADQQJ0aioCACEEAkAgAiAQTwRAIAMhACAEICVeDQEgASEADAMLIAYgAkECdGoqAgAiJiAEXwRAIAMhACAEICVeDQEgASEADAMLIAIhACAmIgQgJV4NACABIQAMAgsgESABQQJ0IgFqIBEgAEECdGooAgA2AgAgASAGaiAEOAIAIABBAXQiAUECaiECIAFBAXIiAyAQSQ0ACwsgAEECdCIAIA8gCkECdGpqIAk2AgAgACAGaiAlOAIACwJAIAwoAhwiACAMKAIgIgNJBEAgACAlOAIEIAAgCTYCACAAQQhqIQIMAQsgACAMKAIYIgBrIgFBA3UiBkEBaiICQYCAgIACTw0CIAFB/////wEgAyAAayIDQQJ1IgogAiACIApJGyADQfj///8HTxsiAgR/IAJBgICAgAJPDQYgAkEDdBASBUEACyIKaiIDICU4AgQgAyAJNgIAIAMgBkEDdGshCSABBEAgCSAAIAH8CgAACyAMIAogAkEDdGo2AiAgDCADQQhqIgI2AhwgDCAJNgIYIABFDQAgABARCyAMIAI2AhwCQCACIAwoAhgiCWtBA3UiAEECSA0AIAJBBGsqAgAiBCAJIABBAmtBAXYiAEEDdGoiASoCBF1FDQAgAkEIayIDKAIAIQIDQAJAIAMgASIDKQIANwIAIABFDQAgCSAAQQFrQQF2IgBBA3RqIgEqAgQgBF4NAQsLIAMgBDgCBCADIAI2AgALIAwoAgwgFmoiACAAKAIAIBVyNgIACyATIA1BAWoiDUcNAQwCCwsMCgsgDCgCGCIDKgIEISYgAygCACENAkAgDCgCHCIKIANrQQN1IgZBAkgNACADKQIAITAgBkECa0EBdiEPQQAhACADIQEDQCABIgIgAEEDdGoiCUEIaiEBAn8gAEEBdCIAQQFyIhAgBiAAQQJqIgBMDQAaIBAgCSoCDCAJKgIUXkUNABogCUEQaiEBIAALIQAgAiABKQIANwIAIAAgD0wNAAsgCkEIayIAIAFGBEAgASAwNwIADAELIAEgACkCADcCACAAIDA3AgAgASADa0EIakEDdSIAQQJIDQAgASoCBCIEIAMgAEECa0EBdiIAQQN0aiICKgIEXUUNACABKAIAIQkDQAJAIAEgAiIBKQIANwIAIABFDQAgAyAAQQFrQQF2IgBBA3RqIgIqAgQgBF4NAQsLIAEgBDgCBCABIAk2AgALIAwgDCgCHEEIayIJNgIcAkAgJiAqIAgoAjQgCCgCJCALbEECdGoqAgCUIihdRQ0AA0AgBygCpAEiACANbCIBIAAgDUEBaiITbEcEQCAHKAK0ASIJIAFBAnRqIQMDQCADKAIAIgZBf0cEQAJAIAwoAgwgBkEDdkH8////AXFqIgAoAgAiAUEBIAZ0IgJxDQAgACABIAJyNgIAQwAAAAAhJUMAAAAAISdDAAAAACEmQwAAAAAhBAJAIBgoAgQiAiAGbCIAIAIgBkEBamwiDUYNACAYKAIUIg8gAEECdGohACAMKAKMASAMKAJ8IAtsQQJ0aiEKAn8gAkEBcUUEQCAAIQEgCgwBCyAAQQRqIQEgCioCACInICeUQwAAAACSIQQgACoCACIpICmUQwAAAACSISYgKSAnlEMAAAAAkiEnIApBBGoLIQAgAkH/////A3FBAUYNACAPIA1BAnRqIQIDQCABKgIEIikgACoCBCIrlCABKgIAIiwgACoCACItlCAnkpIhJyAAQQhqIQAgKyArlCAtIC2UIASSkiEEICkgKZQgLCAslCAmkpIhJiABQQhqIgEgAkcNAAsLAkAgJkMAAAAAWyIAIARDAAAAAFsiAXENAEMAAIA/ISUgAA0AIAENAEMAAIA/ICcgJiAElJGVkyElCyAlIChdRQ0AICUgCCgCNCAIKAIkIAtsQQJ0aiIKKgIAYEUEQCAIKAIMIAtsIQ0gCCgCHCEPQQAhAAJAIAgoAgQiEEECSQ0AQQIhAiAPIA1BAnRqIRFBASEJA0AgACEBIAogCUECdGoqAgAhBAJAIAIgEE8EQCAJIQAgBCAlXg0BIAEhAAwDCyAKIAJBAnRqKgIAIiYgBF8EQCAJIQAgBCAlXg0BIAEhAAwDCyACIQAgJiIEICVeDQAgASEADAILIBEgAUECdCIBaiARIABBAnRqKAIANgIAIAEgCmogBDgCACAAQQF0IgFBAmohAiABQQFyIgkgEEkNAAsLIABBAnQiACAPIA1BAnRqaiAGNgIAIAAgCmogJTgCAAsCQCAMKAIcIgAgDCgCICIJSQRAIAAgJTgCBCAAIAY2AgAgAEEIaiECDAELIAAgDCgCGCIAayIBQQN1IgpBAWoiAkGAgICAAk8NCSABQf////8BIAkgAGsiCUECdSINIAIgAiANSRsgCUH4////B08bIgIEfyACQYCAgIACTw0IIAJBA3QQEgVBAAsiDWoiCSAlOAIEIAkgBjYCACAJIApBA3RrIQYgAQRAIAYgACAB/AoAAAsgDCANIAJBA3RqNgIgIAwgCUEIaiICNgIcIAwgBjYCGCAARQ0AIAAQEQsgDCACNgIcAkAgAiAMKAIYIglrQQN1IgBBAkgNACACQQRrKgIAIgQgCSAAQQJrQQF2IgBBA3RqIgEqAgRdRQ0AIAJBCGsiAigCACEGA0ACQCACIAEiAikCADcCACAARQ0AIAkgAEEBa0EBdiIAQQN0aiIBKgIEIAReDQELCyACIAQ4AgQgAiAGNgIACyAqIAgoAjQgCCgCJCALbEECdGoqAgCUISggBygCtAEhCQsgA0EEaiIDIAkgBygCpAEgE2xBAnRqRw0BCwsgDCgCHCEJCyAMKAIYIgMgCUYNASADKQIAIjBCIIinIQ8CQCAJIANrQQN1IgpBAkgNACAKQQJrQQF2IQ1BACEAIAMhAQNAIAEiAiAAQQN0aiIGQQhqIQECfyAAQQF0IgBBAXIiECAKIABBAmoiAEwNABogECAGKgIMIAYqAhReRQ0AGiAGQRBqIQEgAAshACACIAEpAgA3AgAgACANTA0ACyAJQQhrIgAgAUYEQCABIDA3AgAMAQsgASAAKQIANwIAIAAgMDcCACABIANrQQhqQQN1IgBBAkgNACABKgIEIgQgAyAAQQJrQQF2IgBBA3RqIgIqAgRdRQ0AIAEoAgAhCQNAAkAgASACIgEpAgA3AgAgAEUNACADIABBAWtBAXYiAEEDdGoiAioCBCAEXg0BCwsgASAEOAIEIAEgCTYCAAsgMKchDSAMIAwoAhxBCGsiCTYCHCAoIA++Xg0ACwsgDCgCACIABEAgDCAANgIEIAwoAggaIAAQEQsgDCgCDCIABEAgDCgCFBogABARCyAMKAIYIgAEQCAMIAA2AhwgDCgCIBogABARCyALQQFqIgsgCCgCAEkNAQwDCwsMCAsMBgsgCBBXIAhBsANrIAdHBEAgB0HAA2ogCCgCECIAIAgoAhQiASABIABrQQJ1ECsgByAIKAIcIAcoAsADIgAgACAHKALEA0YbNgLMAyAHIAgoAgg2ArgDIAcgCCgCDDYCvAMLAkAgCEGwA2sgB0YEQCAHKALYAyEAIAcoAtwDIQIgBygC1AMhASAHKALQAyEDDAELIAdB2ANqIAgoAigiACAIKAIsIgEgASAAa0ECdRArIAcgCCgCNCAHKALYAyIAIAAgBygC3AMiAkYbNgLkAyAHIAgoAiAiAzYC0AMgByAIKAIkIgE2AtQDCwJAIAEgA2wiASACIABrQQJ1IgJLBEAgB0HYA2ogASACaxAvIAcoAtgDIQAMAQsgASACTw0AIAcgACABQQJ0ajYC3AMLIAcgADYC5AMgCCgCQCIABEAgCCAANgJEIAgoAkgaIAAQEQsgCCgCKCIABEAgCCAANgIsIAgoAjAaIAAQEQsgCCgCECIARQ0AIAggADYCFCAIKAIYGiAAEBELIAwoAoABIgAEQCAMIAA2AoQBIAwoAogBGiAAEBELIAxBkAFqJAAMAwsgCSgCACAJIAsbQYsYQQkQHQ0AIAAQ4QMhCSABBEAgAyEGQQAhAyMAQZABayIMJAAgDCACKAIAIgs2AnggAigCBCEHIAxBADYCiAEgDEIANwKAASAMIAc2AnwgAigCDCIBIAIoAggiBUcEQCABIAVrIgFBAEgNBSAMIAEQEiIINgKAASAMIAEgCGoiAzYCiAEgAQRAIAggBSAB/AoAAAsgDCADNgKEAQsgDEGAAWohCiAMIAIoAhQiASAIIAMgCEYiAhs2AowBAkAgACIFKALwASAALAD3ASIAIABBAEgiABtBA0cNACAFKALsASAFQewBaiAAG0GIDEEDEB0NACACBEAgCiABIAEgByALbCIAQQJ0aiAAECsgDCgCeCELIAwoAoABIQgLIAwgCDYCjAEgC0UEQEEAIQsMAQsgDCgCfCIHRQ0AIAdBfHEhAiAHQQNxIRAgB0EESSERA0AgCCAHIA1sQQJ0aiEKQQAhAEMAAAAAISVBACEBIBFFBEADQCAKIABBAnRqIgMqAgwiJiAmlCADKgIIIiYgJpQgAyoCBCImICaUIAMqAgAiJiAmlCAlkpKSkiElIABBBGohACABQQRqIgEgAkcNAAsLQQAhAyAQBEADQCAKIABBAnRqKgIAIiYgJpQgJZIhJSAAQQFqIQAgA0EBaiIDIBBHDQALCwJAICVDAAAAAF5FDQAgJZEhJkEAIQAgEUUEQCAm/RMhLwNAIAogAEECdGoiASAB/QACACAv/ecB/QsCACAAQQRqIgAgAkcNAAsgAiIAIAdGDQELA0AgCiAAQQJ0aiIBIAEqAgAgJpU4AgAgAEEBaiIAIAdHDQALCyALIA1BAWoiDUcNAAsLAkACQAJAIAUoArACIAUsALcCIgAgAEEASCIAG0ECRw0AIAUoAqwCIAVBrAJqIAAbLwAAQeLMAUcNACMAQfAAayIKJAAgCkEgaiAMKAJ4IAYQgAEhBiAMKAJ4IQAgBS0AqAIhASAKQQA2AhwgCkEANgIUIAogAToAECAK/QwAAAAAAAAAADIAAAAAAAAAIAD9HAAgAEEybUEBav0cA/0LBAAgAARAIAkhCANAIAoQrAECQCAFKAJMIhJFDQAgBigCNCAGKAIkIA5sQQJ0aiEPIAwoAowBIAwoAnwgDmxBAnRqIQkgCCgCBCENIAgoAhQhECAGKAIEIhNBAU0EQCANQQNxIQtBACEBIA1BAWtB/////wNxQQNJIREDQEMAAAAAISUCQCABIA1sIgAgDSABQQFqIgdsIhNGDQAgECAAQQJ0aiEAQQAhAyAJIQIgCwRAA0AgACoCACACKgIAkyIEIASUICWSISUgAkEEaiECIABBBGohACADQQFqIgMgC0cNAAsLIBENACAQIBNBAnRqIQMDQCAAKgIMIAIqAgyTIgQgBJQgACoCCCACKgIIkyIEIASUIAAqAgQgAioCBJMiBCAElCAAKgIAIAIqAgCTIgQgBJQgJZKSkpIhJSACQRBqIQIgAEEQaiIAIANHDQALCyAlIA8qAgBgRQRAIAYoAhwgBigCDCAObEECdGogATYCACAPICU4AgALIAciASASRw0ACwwBCyANQQNxIRVBACEHIA1BAWtB/////wNxQQNJIRgDQEMAAAAAISUCQCAHIA1sIgAgDSAHQQFqIgtsIgFGDQAgECAAQQJ0aiEAQQAhAyAJIQIgFQRAA0AgACoCACACKgIAkyIEIASUICWSISUgAkEEaiECIABBBGohACADQQFqIgMgFUcNAAsLIBgNACAQIAFBAnRqIQEDQCAAKgIMIAIqAgyTIgQgBJQgACoCCCACKgIIkyIEIASUIAAqAgQgAioCBJMiBCAElCAAKgIAIAIqAgCTIgQgBJQgJZKSkpIhJSACQRBqIQIgAEEQaiIAIAFHDQALCyAlIA8qAgBgRQRAQQIhAiAGKAIcIAYoAgwgDmxBAnRqIRFBACEAQQEhAwNAAkAgACEBIA8gA0ECdGoqAgAhBAJAIAIgE08EQCADIQAgBCAlXg0BIAEhAAwCCyAPIAJBAnRqKgIAIiYgBF8EQCADIQAgBCAlXg0BIAEhAAwCCyACIQAgJiIEICVeDQAgASEADAELIBEgAUECdCIBaiARIABBAnRqKAIANgIAIAEgD2ogBDgCACAAQQF0IgFBAmohAiABQQFyIgMgE0kNAQsLIBEgAEECdCIAaiAHNgIAIAAgD2ogJTgCAAsgCyIHIBJHDQALCyAOQQFqIg4gDCgCeEkNAAsLIAYQVyAGQbADayAFRwRAIAVBwANqIAYoAhAiACAGKAIUIgEgASAAa0ECdRArIAUgBigCHCAFKALAAyIAIAAgBSgCxANGGzYCzAMgBSAGKAIINgK4AyAFIAYoAgw2ArwDCwJAIAZBsANrIAVGBEAgBSgC2AMhCSAFKALcAyECIAUoAtQDIQAgBSgC0AMhBwwBCyAFQdgDaiAGKAIoIgAgBigCLCIBIAEgAGtBAnUQKyAFIAYoAjQgBSgC2AMiCSAJIAUoAtwDIgJGGzYC5AMgBSAGKAIgIgc2AtADIAUgBigCJCIANgLUAwsCQCAAIAdsIgAgAiAJa0ECdSIBSwRAIAVB2ANqIAAgAWsQLyAFKALQAyEHIAUoAtgDIQkMAQsgACABTw0AIAUgCSAAQQJ0ajYC3AMLIAUgCTYC5AMCQCAHRQ0AIAUoAtQDIghFDQAgCEF8cSEDQQAhASAIQQRJIQUDQCAJIAEgCGxBAnRqIQtBACECQQAhAAJAIAVFBEADQCALIAJBAnRqIgAgAP0AAgD94wH9CwIAIAJBBGoiAiADRw0ACyADIgAgCEYNAQsDQCALIABBAnRqIgIgAioCAJE4AgAgAEEBaiIAIAhHDQALCyABQQFqIgEgB0cNAAsLIAosAB9BAEgEQCAKKAIcGiAKKAIUEBELIAYoAkAiAARAIAYgADYCRCAGKAJIGiAAEBELIAYoAigiAARAIAYgADYCLCAGKAIwGiAAEBELIAYoAhAiAARAIAYgADYCFCAGKAIYGiAAEBELIApB8ABqJAAMAQsCQCAMQShqIAUoApgBBH8gCwVBACED/QwAAAAAAAAAAAAAAAAAAAAAIS9BACEHIwBB4AFrIg0kAAJAIAUoAngiACAFKAJ8Rw0AIAUtAOkBQQFGBEAgDUGQAWogBUEYaiAFKAKEAiAFQdgAahDgAyAFKAJ4IgIEQCACIgEgBSgCfCIARwRAA0AgDSAAQQxrNgIIIA1BCGoQWCACIABBFGsiAEcNAAsgBSgCeCEBCyAFIAI2AnwgBSgCgAEaIAEQEQsgBSANKAKQASIANgJ4IAUgDSgClAE2AnwgBSANKAKYATYCgAEMAQsgDUGQAWogBUEBIAUoAoQCIAVB2ABqENoBIAUoAngiAgRAIAIiASAFKAJ8IgBHBEADQCANIABBDGs2AgggDUEIahBYIAIgAEEUayIARw0ACyAFKAJ4IQELIAUgAjYCfCAFKAKAARogARARCyAFIA0oApABIgA2AnggBSANKAKUATYCfCAFIA0oApgBNgKAAQsgBSAAKQIANwKEASAAIAVBhAFqRwRAIAVBjAFqIAAoAggiASAAKAIMIgAgACABa0EwbRDZAQsgDUGQAWogBUG4AmoQ3wMhEQJAAkACQCAFLQDpAUEBRgRAIAUoAqQCGiAFKgKMAiEnIwBBIGsiCCQAIBEoAgAEQCAFQdgAaiEeA0BBACEBQQAhFkEAIRBBACEAQQAhE0EAIQpBASEVAkAgESgCBCILQQFNDQACQANAAkACQCAVQQJ0IgIgESgCHCARKAIMIBJsQQJ0amooAgAiG0F/Rg0AIBEoAjQgESgCJCASbEECdGogAmoqAgAhJSAKIABrIhpBAnUhGCAAIApHBEBBASAYIBhBAU0bIR9BACEZA0AgBSgCRCILIAUoAjgiDyAbQQJ0aiIXKAIAIh1BAnQiAmohDiAFKAJIIhQgAmohAiAUIBcoAgQiIEECdGohFyALIA8gACAZQQJ0IiJqKAIAQQJ0aiIcKAIAIiFBAnQiI2ohDyAUICNqIQsgFCAcKAIEIhxBAnRqIRRDAAAAACEmAkAgHSAgRg0AIBwgIUYNAANAAkAgAigCACIdIAsoAgAiIEYEQCALQQRqIQsgAkEEaiECIA4qAgAgDyoCAJMiKCAolCAmkiEmIA5BBGohDiAPQQRqIQ8MAQsgHSAgSQRAIAJBBGohAiAOKgIAIiggKJQgJpIhJiAOQQRqIQ4MAQsgC0EEaiELIA8qAgAiKCAolCAmkiEmIA9BBGohDwsgAiAXRg0BIAsgFEcNAAsLIAIgF0cEQANAIA4qAgAiKCAolCAmkiEmIA5BBGohDiACQQRqIgIgF0cNAAsLIAEgImoqAgAhKCALIBRHBEADQCAPKgIAIiogKpQgJpIhJiAPQQRqIQ8gC0EEaiILIBRHDQALCwJAIChDAAAANF5FDQAgJSAmXkUNACAeENYBICddDQMLIBlBAWoiGSAfRw0ACwsCQCAKIBNJBEAgCiAbNgIAIApBBGohCgwBCyAYQQFqIgJBgICAgARPDQIgGkH/////AyATIABrIgtBAXUiCiACIAIgCkkbIAtB/P///wdPGyILBH8gC0GAgICABE8NFiALQQJ0EBIFQQALIg5qIgogGzYCACAKIBhBAnRrIQIgGgRAIAIgACAa/AoAAAsgCkEEaiEKIA4gC0ECdGohEyAABEAgABARCyACIQALIBAgFkkEQCAQICU4AgAgEEEEaiEQDAELIBAgAWsiC0ECdSIYQQFqIgJBgICAgARPDQMgC0H/////AyAWIAFrIg5BAXUiDyACIAIgD0kbIA5B/P///wdPGyIOBH8gDkGAgICABE8NFSAOQQJ0EBIFQQALIhZqIg8gJTgCACAPIBhBAnRrIQIgCwRAIAIgASAL/AoAAAsgD0EEaiEQIBYgDkECdGohFiABBEAgARARCyACIQELIBVBAWoiFSARKAIEIgtJDQEMAwsLIAggEzYCHAwGCyAIIBY2AhAgCCAQNgIMIAggATYCCBATAAsgCCATNgIcIAggCjYCGCAIIAA2AhQgCCAWNgIQIAggEDYCDCAIIAE2AgggCwRAIAogAGtBAnUhDyARKAI0IBEoAiQgEmxBAnRqIRAgESgCHCARKAIMIBJsQQJ0aiEOQQAhAgNAIBAgAkECdCIKagJ9IAIgD0kEQCAKIA5qIAAgCmooAgA2AgAgASAKaioCAAwBCyAOIAJBAnRqQX82AgBD//9/fws4AgAgAkEBaiICIAtHDQALCyABBEAgARARCyAABEAgABARCyASQQFqIhIgESgCAEkNAAsLDAELIAUoAqQCGiAFKgKMAiEnIwBBIGsiCCQAIBEoAgAEQCAFQdgAaiEXA0BBACEBQQAhEEEAIQ5BACEAQQAhEkEAIQpBASEVAkAgESgCBCILQQFNDQACQANAAkACQCAVQQJ0IgIgESgCHCARKAIMIA9sQQJ0amooAgAiE0F/Rg0AIBEoAjQgESgCJCAPbEECdGogAmoqAgAhJSAKIABrIhlBAnUhGCAAIApHBEBBASAYIBhBAU0bIR4gE0EBaiEfQQAhGwNAIAEgG0ECdCILaioCACEoQwAAAAAhJgJAIAUoAgQiFiATbCICIBYgH2wiHUYNACAFKAIUIhogAkECdGohAiAaIAAgC2ooAgAgFmxBAnRqIQtBACEUIBZBA3EiIARAA0AgAioCACALKgIAkyIqICqUICaSISYgC0EEaiELIAJBBGohAiAUQQFqIhQgIEcNAAsLIBZBAWtB/////wNxQQNJDQAgGiAdQQJ0aiEWA0AgAioCDCALKgIMkyIqICqUIAIqAgggCyoCCJMiKiAqlCACKgIEIAsqAgSTIiogKpQgAioCACALKgIAkyIqICqUICaSkpKSISYgC0EQaiELIAJBEGoiAiAWRw0ACwsCQCAoQwAAADReRQ0AICUgJl5FDQAgFxDWASAnXQ0DCyAbQQFqIhsgHkcNAAsLAkAgCiASSQRAIAogEzYCACAKQQRqIQoMAQsgGEEBaiICQYCAgIAETw0CIBlB/////wMgEiAAayILQQF1IgogAiACIApJGyALQfz///8HTxsiCwR/IAtBgICAgARPDRUgC0ECdBASBUEACyISaiIKIBM2AgAgCiAYQQJ0ayECIBkEQCACIAAgGfwKAAALIApBBGohCiASIAtBAnRqIRIgAARAIAAQEQsgAiEACyAOIBBJBEAgDiAlOAIAIA5BBGohDgwBCyAOIAFrIgtBAnUiE0EBaiICQYCAgIAETw0DIAtB/////wMgECABayIOQQF1IhAgAiACIBBJGyAOQfz///8HTxsiEAR/IBBBgICAgARPDRQgEEECdBASBUEACyIYaiIOICU4AgAgDiATQQJ0ayECIAsEQCACIAEgC/wKAAALIA5BBGohDiAYIBBBAnRqIRAgAQRAIAEQEQsgAiEBCyAVQQFqIhUgESgCBCILSQ0BDAMLCyAIIBI2AhwMBQsgCCAQNgIQIAggDjYCDCAIIAE2AggQEwALIAggEjYCHCAIIAo2AhggCCAANgIUIAggEDYCECAIIA42AgwgCCABNgIIIAsEQCAKIABrQQJ1IRAgESgCNCARKAIkIA9sQQJ0aiESIBEoAhwgESgCDCAPbEECdGohDkEAIQID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TQ0AIAZBwAAgBygCACAGKAIAKAIMEQQARQ0AIAdBBGohBwwBCwsgDkEASgRAIAIoAgAhDyAOIRADQAJAIAQgB08NACAQRQ0AIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCyAQBH8gBkEwIAYoAgAoAiwRAwAFQQALIREgAigCACEPA0AgEEEASgRAIAIgD0EEaiISNgIAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIAIoAgAiD0EEajYCACAPIAk2AgALAkAgBCAHRgRAIAZBMCAGKAIAKAIsEQMAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAELAn8gCy0AC0EHdgRAIAsoAgQMAQsgCy0AC0H/AHELBH8CfyALLQALQQd2BEAgCygCAAwBCyALCywAAAVBfwshEUEAIRBBACESA0AgBCAHRg0BAkAgECARRwRAIBAhDwwBCyACIAIoAgAiD0EEajYCACAPIAo2AgBBACEPAn8gCy0AC0EHdgRAIAsoAgQMAQsgCy0AC0H/AHELIBJBAWoiEk0EQCAQIREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyASai0AAEH/AEYEQEF/IREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyASaiwAACERCyAHQQRrIgcoAgAhECACIAIoAgAiGEEEajYCACAYIBA2AgAgD0EBaiEQDAALAAsgAigCABC2AQsgFEEBaiEUDAELCwuQAgEBfyMAQRBrIgokAAJ/IAAEQCACQeyNAxAVDAELIAJB5I0DEBULIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARCaASABECwaIAQgACAAKAIAKAIMEQAANgIAIAUgACAAKAIAKAIQEQAANgIAIApBBGoiASAAIAAoAgAoAhQRAgAgBiABEGUgARAUGiABIAAgACgCACgCGBECACAHIAEQmgEgARAsGiAJIAAgACgCACgCJBEAADYCACAKQRBqJAALzAEBBX8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQyQIgA0EQaiADKAIYIAMo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ACgCCEGAgICAeHI2AgggBUEQaiQADAELEDcACyAAIAM2AgQLHwEBfyABKAIAELkDIQIgACABKAIANgIEIAAgAjYCAAvbFgEJfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahAkBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQfgBNgJIIAsgC0HoAGogC0HwAGogC0HIAGoiEBAqIhEoAgAiATYCZCALIAFBkANqNgJgIwBBEGsiASQAIBBCADcCACAQQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBPGoiDkIANwIAIA5BADYCCCABQRBqJAAjAEEQayIBJAAgC0EwaiINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQSRqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBGGoiD0IANwIAIA9BADYCCCABQRBqJAAjAEEQayIBJAACQCACBEAgAUEEaiIKIANB7I0DEBUiAiACKAIAKAIsEQIADAELIAFBBGoiCiADQeSNAxAVIgIgAigCACgCLBECAAsgCyABKAIENgBcIAogAiACKAIAKAIgEQIAIAwgChCaASAKECwaIAogAiACKAIAKAIcEQIAIA0gChCaASAKECwaIAsgAiACKAIAKAIMEQAANgJYIAsgAiACKAIAKAIQEQAANgJUIAogAiACKAIAKAIUEQIAIBAgChBlIAoQFBogCiACIAIoAgAoAhgRAgAgDiAKEJoBIAoQLBogCyACIAIoAgAoAiQRAAA2AhQgAUEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahAkDQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLQAADgUBAAQDBQkLIANBA0YNByAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAEKAIACyAHKAIAKAIMEQQABEAgC0EMaiAAEOsCIA8gCygCDBDuAQwCCyAFIAUoAgBBBHI2AgBBACEADAYLIANBA0YNBgsDQCAAIAtBjARqECQNBiAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAEKAIACyAHKAIAKAIMEQQARQ0G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An8gACgCACIBKAIMIgMgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAygCAAsCfyACLQALQQd2BEAgAigCAAwBCyACCyAKQQJ0aigCAEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwDCyAAEDAaIApBAWohCgwACwALQQEhACARKAIAIAsoAmRGDQBBACEAIAtBADYCDCAQIBEoAgAgCygCZCALQQxqEDkgCygCDARAIAUgBSgCAEEEcjYCAAwBC0EBIQALIA8QLBogDBAsGiANECwaIA4QLBogEBAUGiARKAIAIQEgEUEANgIAIAEEQCABIBEoAgQRAQALDAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAACzkBAn8gASgCACEDIAFBADYCACAAKAIAIQIgACADNgIAIAIEQCACIAAoAgQRAQALIAAgASgCBDYCBAvkAQEGfyMAQRBrIgUkACAAKAIEIQNBAQJ/IAIoAgAgACgCAGsiBEH/////B0kEQCAEQQF0DAELQX8LIgQgBEEBTRshBCABKAIAIQcgACgCACEIIANB+AFGBH9BAAUgACgCAAsgBBDTASIGBEAgA0H4AUcEQCAAKAIAGiAAQQA2AgALIAVB9wE2AgQgACAFQQhqIAYgBUEEahAqIgMQ7QIgAygCACEGIANBADYCACAGBEAgBiADKAIEEQEACyABIAAoAgAgByAIa2o2AgAgAiAEIAAoAgBqNgIAIAVBEGokAA8LECAACyABAX8gASgCABC/A8AhAiAAIAEoAgA2AgQgACACOgAAC7AXAQl/IwBBkARrIgskACALIAo2AogEIAsgATYCjAQCQCAAIAtBjARqECUEQCAFIAUoAgBBBHI2AgBBACEADAELIAtB+AE2AkwgCyALQegAaiALQfAAaiALQcwAaiIQECoiESgCACIBNgJkIAsgAUGQA2o2AmAjAEEQayIBJAAgEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIBJAAgC0FAayIOQgA3AgAgDkEANgIIIAFBEGokACMAQRBrIgEkACALQTRqIg1CADcCACANQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBKGoiDEIANwIAIAxBADYCCCABQRBqJAAjAEEQayIBJAAgC0EcaiIPQgA3AgAgD0EANgIIIAFBEGokACMAQRBrIgEkAAJAIAIEQCABQQRqIgogA0HcjQMQFSICIAIoAgAoAiwRAgAMAQsgAUEEaiIKIANB1I0DEBUiAiACKAIAKAIsEQIACyALIAEoAgQ2AFwgCiACIAIoAgAoAiARAgAgDCAKEGUgChAUGiAKIAIgAigCACgCHBECACANIAoQZSAKEBQaIAsgAiACKAIAKAIMEQAAOgBbIAsgAiACKAIAKAIQEQAAOgBaIAogAiACKAIAKAIUEQIAIBAgChBlIAoQFBogCiACIAIoAgAoAhgRAgAgDiAKEGUgChAUGiALIAIgAigCACgCJBEAADYCGCABQRBqJAAgCSAIKAIANgIAIARBgARxIRJBACEDQQAhAQNAIAEhAgJAAkACQAJAIANBBEYNACAAIAtBjARqECUNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgBC0AAAvAIgFBAE4EfyAHKAIIIAFBAnRqKAIAQQFxBUEACwRAIAtBEGogABDvAiAPIAssABAQsQEMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahAlDQYCfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUECdGooAgBBAXEFQQALRQ0GIAtBEGogABDvAiAPIAssABAQsQEMAAsACwJAAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQ0AAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgBC0AAAvAQf8BcQJ/IA0tAAtBB3YEQCANKAIADAELIA0LLQAARw0AIAAQMRogBkEAOgAAIA0gAgJ/IA0tAAtBB3YEQCANKAIEDAELIA0tAAtB/wBxC0EBSxshAQwGCwJAAn8gDC0AC0EHdgRAIAwoAgQMAQsgDC0AC0H/AHELRQ0AAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgBC0AAAvAQf8BcQJ/IAwtAAtBB3YEQCAMKAIADAELIAwLLQAARw0AIAAQMRogBkEBOgAAIAwgAgJ/IAwtAAtBB3YEQCAMKAIEDAELIAwtAAtB/wBxC0EBSxshAQwGCwJAAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQ0AAn8gDC0AC0EHdgRAIAwoAgQMAQsgDC0AC0H/AHELRQ0AIAUgBSgCAEEEcjYCAEEAIQAMBAsCfyANLQALQQd2BEAgDSgCBAwBCyANLQALQf8AcQtFBEACfyAMLQALQQd2BEAgDCgCBAwBCyAMLQALQf8AcQtFDQULIAYCfyAMLQALQQd2BEAgDCgCBAwBCyAMLQALQf8AcQtFOgAADAQLAkAgAg0AIANBAkkNACASDQBBACEBIANBAkYgCy0AX0EAR3FFDQULIAsgDhBINgIMIAsgCygCDDYCEAJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIA4QcDYCDCALKAIQIgEgCygCDEYNACABLAAAIgFBAE4EfyAHKAIIIAFBAnRqKAIAQQFxBUEAC0UNACALIAsoAhBBAWo2AhAMAQsLIAsgDhBINgIMAn8gDy0AC0EHdgRAIA8oAgQMAQsgDy0AC0H/AHELIAsoAhAgC0EMaiIBKAIAayIETwRAIAsgDxBwNgIMIAFBACAEaxD2ASAPEHAhBCAOEEghCiMAQRBrIhMkABBrIQEgBBBrIQQgASAKEGsgBCABaxAdRSATQRBqJAANAQsgCyAOEEg2AgggCyALKAIINgIMIAsgCygCDDYCEAsgCyALKAIQNgIMA0ACQCALIA4QcDYCCCALKAIMIAsoAghGDQAgACALQYwEahAlDQACfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAELQAAC8BB/wFxIAsoAgwtAABHDQAgABAxGiALIAsoAgxBAWo2AgwMAQsLIBJFDQMgCyAOEHA2AgggCygCDCALKAIIRg0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQJQ0AAn8CfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUECdGooAgBBwABxBUEACwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQ7gIgCSgCACEECyAJIARBAWo2AgAgBCABOgAAIApBAWoMAQsCfyAQLQALQQd2BEAgECgCBAwBCyAQLQALQf8AcQtFDQEgCkUNASALLQBaIAFB/wFxRw0BIAsoAmQiASALKAJgRgRAIBEgC0HkAGogC0HgAGoQgwEgCygCZCEBCyALIAFBBGo2AmQgASAKNgIAQQALIQogABAxGgwBCwsCQCALKAJkIgEgESgCAEYNACAKRQ0AIAsoAmAgAUYEQCARIAtB5ABqIAtB4ABqEIMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqECVFBEACfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAELQAAC8BB/wFxIAstAFtGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAEDEaIAsoAhhBAEwNAQJAIAAgC0GMBGoQJUUEQAJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAQtAAALwCIBQQBOBH8gBygCCCABQQJ0aigCAEHAAHEFQQALDQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQ7gILAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgBC0AAAvAIQEgCSAJKAIAIgRBAWo2AgAgBCABOgAAIAsgCygCGEEBazYCGAwACwALIAIhASAIKAIAIAkoAgBHDQMgBSAFKAIAQQRyNgIAQQAhAAwBCwJAIAJFDQBBASEKA0ACfyACLQALQQd2BEAgAigCBAwBCyACLQALQf8AcQsgCk0NAQJAIAAgC0GMBGoQJUUEQAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwEH/AXECfyACLQALQQd2BEAgAigCAAwBCyACCyAKai0AAEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwDCyAAEDEaIApBAWohCgwACwALQQEhACARKAIAIAsoAmRGDQBBACEAIAtBADYCECAQIBEoAgAgCygCZCALQRBqEDkgCygCEARAIAUgBSgCAEEEcjYCAAwBC0EBIQALIA8QFBogDBAUGiANEBQaIA4QFBogEBAUGiARKAIAIQEgEUEANgIAIAEEQCABIBEoAgQRAQALDAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAAC7ITAxB/AX0BfiMAQTBrIgckACAHIAE2AiwgAEEcQSAgAxtqKAIAIREgACACIAAoAhgQ9AECQAJAAkACQAJAAkACQAJAAkAgACgCGCIGIAIoAgQiCiACKAIAIglrQQN1TwRAIAdBADYCKCAHQgA3AiAgBgRAIAZBgICAgARPDQIgByAGQQJ0IgYQEiIFNgIkIAcgBTYCICAHIAUgBmo2AigLIAkgCkcEQANAAkAgBygCJCIBIAcoAigiCEkEQCABIAkoAgQ2AgAgAUEEaiEBDAELIAEgBygCICIFayIBQQJ1IgtBAWoiBkGAgICABE8NBSABQf////8DIAggBWsiCEEBdSIMIAYgBiAMSRsgCEH8////B08bIgYEfyAGQYCAgIAETw0LIAZBAnQQEgVBAAsiDGoiCCAJKAIENgIAIAggC0ECdGshCyABBEAgCyAFIAH8CgAACyAHIAwgBkECdGo2AiggByALNgIgIAhBBGohASAFRQ0AIAUQESACKAIEIQogAigCACEJCyAHIAE2AiQCQCAKIAlrQQN1IgxBAkgNACAMQQJrQQF2IQ8gCSkCACEWQQAhASAJIQUDQCABQQF0IgtBAXIhBiAFIgggAUEDdGoiDUEIaiEFAkAgDCALQQJqIgtMBEAgBiEBDAELIAYhASANKgIIIA1BEGoiBioCAF1FDQAgBiEFIAshAQsgCCAFKQIANwIAIAEgD0wNAAsgCkEIayIBIAVGBEAgBSAWNwIADAELIAUgASkCADcCACABIBY3AgAgBSAJa0EIakEDdSIBQQJIDQAgBSoCACIVIAkgAUECa0EBdiIBQQN0aiIGKgIAXkUNACAFKAIEIQgDQAJAIAUgBiIFKQIANwIAIAFFDQAgCSABQQFrQQF2IgFBA3RqIgYqAgAgFV0NAQsLIAUgCDYCBCAFIBU4AgALIAIgAigCBEEIayIKNgIEIAogAigCACIJRw0ACyAHKAIkIQUgBygCLCEBCyAAKAJsIQIgBUEEaygCACESQQAgBCACGw0DAn8gA0UEQCAAKAKEASAAKAKMASAAKAIMIAFsamoMAQsgACgCkAEgAUECdGooAgAgACgCECADQQFrbGoLIQIgBEUEQCACKAIADQULIAIgBSAHKAIgIgFrQQJ1IgY7AQAgASAFRiIIDQYgAkEEaiECQQEgBiAGQQFNGyEGIAAoApQBIQlBACEFIAQEQANAIAMgCSABIAVBAnQiC2ooAgAiCkECdGooAgBKDQsgAiALaiAKNgIAIAVBAWoiBSAGRw0ADAgLAAsDQCACIAVBAnQiC2oiCigCAA0GIAMgCSABIAtqKAIAIgtBAnRqKAIASg0KIAogCzYCACAGIAVBAWoiBUcNAAsMBgtBCBAXQZkpEC1BoOMCQQQQAQALEBMACxATAAsQIAALQQgQF0GtCxAtQaDjAkEEEAEAC0EIEBdBkRYQLUGg4wJBBBABAAsgCA0BIANBAWshE0EAIQ0DQCAAKAJsGiABIA1BAnQiC2ooAgAaIAcoAiAgC2ooAgAhBQJAAkACQAJ/IANFBEAgACgChAEgACgCjAEgACgCDCAFbGpqDAELIAAoApABIAVBAnRqKAIAIAAoAhAgE2xqCyIPLwEAIgIgEU0EQCAFIAcoAiwiBkYNASADIAAoApQBIAVBAnRqKAIASg0HIA9BBGohDCAERQ0CQQAhASACRQ0CA0AgDCABQQJ0aigCACAGRg0EIAIgAUEBaiIBRw0ACwwCC0EIEBdB9xMQLUGg4wJBBBABAAtBCBAXQa4kEC1BoOMCQQQQAQALIAIgEUkEQCAMIAJBAnRqIAY2AgAgDyACQQFqOwEADAELIAcgACgCgAEiASAAKAKMASIJIAYgACgCDCIIbGpqIAkgBSAIbGogAWogACgCqAEgACgCpAERCwA4AhxBACEJIAdBADYCFCAHQgA3AgwgB0EMaiAHQRxqIAdBLGoQRgJAIAJFDQADQAJAIAAoAoABIgEgACgCjAEiBSAAKAIMIgYgDCAJQQJ0aiIKKAIAbGpqIAUgBygCICALaigCACAGbGogAWogACgCqAEgACgCpAERCwAhFQJAIAcoAhAiASAHKAIUIghJBEAgASAVOAIAIAEgCigCADYCBCABQQhqIQgMAQsgASAHKAIMIgFrIgVBA3UiEEEBaiIGQYCAgIACTw0BIAVB/////wEgCCABayIIQQJ1Ig4gBiAGIA5JGyAIQfj///8HTxsiBgR/IAZBgICAgAJPDQcgBkEDdBASBUEACyIOaiIIIBU4AgAgCCAKKAIANgIEIAggEEEDdGshCiAFBEAgCiABIAX8CgAACyAHIA4gBkEDdGo2AhQgByAIQQhqIgg2AhAgByAKNgIMIAFFDQAgARARCyAHIAg2AhACQCAIIAcoAgwiCmtBA3UiAUECSA0AIAhBCGsiBioCACIVIAogAUECa0EBdiIBQQN0aiIFKgIAXkUNACAIQQRrKAIAIQgDQAJAIAYgBSIGKQIANwIAIAFFDQAgCiABQQFrQQF2IgFBA3RqIgUqAgAgFV0NAQsLIAYgCDYCBCAGIBU4AgALIAIgCUEBaiIJRw0BDAILCxATAAsgACAHQQxqIBEQ9AECQCAHKAIQIgogBygCDCIJRgRAQQAhCwwBCyAKIAlrIQFBACELA0AgDCALQQJ0aiAJKAIENgIAAkAgAUEDdSIQQQJIDQAgEEECa0EBdiEUIAkpAgAhFkEAIQEgCSEFA0AgAUEBdCIIQQFyIQIgBSIGIAFBA3RqIg5BCGohBQJAIBAgCEECaiIITARAIAIhAQwBCyACIQEgDioCCCAOQRBqIgIqAgBdRQ0AIAIhBSAIIQELIAYgBSkCADcCACABIBRMDQALIApBCGsiASAFRgRAIAUgFjcCAAwBCyAFIAEpAgA3AgAgASAWNwIAIAUgCWtBCGpBA3UiAUECSA0AIAUqAgAiFSAJIAFBAmtBAXYiAUEDdGoiBioCAF5FDQAgBSgCBCECA0ACQCAFIAYiBSkCADcCACABRQ0AIAkgAUEBa0EBdiIBQQN0aiIGKgIAIBVdDQELCyAFIAI2AgQgBSAVOAIACyAHIAcoAhBBCGsiCjYCECALQQFqIQsgCiAHKAIMIglrIQEgCSAKRw0ACwsgDyALOwEAIAlFDQAgByAJNgIQIAcoAhQaIAkQEQsgDUEBaiINIAcoAiQgBygCICIBa0ECdUkNAAsMAQsQHwALIAEEQCAHIAE2AiQgBygCKBogARARCyAHQTBqJAAgEg8LQQgQF0H9GBAtQaDjAkEEEAEACwwAIABBAUEtEP0CGgsMACAAQQFBLRD/AhoLbgEBfyMAQRBrIgYkACAGQQA6AA8gBiAFOgAOIAYgBDoADSAGQSU6AAwgBQRAIAYtAA0hBCAGIAYtAA46AA0gBiAEOgAOCyACIAEgAigCACABayAGQQxqIAMgACgCABCSAyABajYCACAGQRBqJAALnw4DEX8CfQF+IwBBIGsiBiQAIAYgAjYCHCABKAJEEPgBIhEvAQAhDyARKAIEIRIgAEEANgIIIABCADcCACAGQQA2AhQgBkIANwIMAkAgASgCjAEgASgCDCACbGoiAiABKAKEAWotAAJBAXFFBEAgBiADIAIgASgCgAFqIAEoAqgBIAEoAqQBEQsAOAIIIAAgBkEIaiAGQRxqIgIQRiAGIAYqAggiF4w4AgQgBkEMaiAGQQRqIAIQRgwBCyAGQf///3s2AgggBkEMaiAGQQhqIAZBHGoQRkP//39/IRcLIBIgBigCHEEBdGogDzsBAAJAAkACQCAGKAIMIgcgBigCECILRg0AIARBAWshEwNAIAcoAgQhDCAHKgIAjCAXXgRAIAEoAiQgACgCBCAAKAIAa0EDdUYNAgsCQCALIAdrQQN1Ig1BAkgNACANQQJrQQF2IRAgBykCACEYQQAhAiAHIQUDQCACQQF0IgpBAXIhCCAFIgkgAkEDdGoiDkEIaiEFAkAgDSAKQQJqIgpMBEAgCCECDAELIAghAiAOKgIIIA5BEGoiCCoCAF1FDQAgCCEFIAohAgsgCSAFKQIANwIAIAIgEEwNAAsgC0EIayICIAVGBEAgBSAYNwIADAELIAUgAikCADcCACACIBg3AgAgBSAHa0EIakEDdSICQQJIDQAgBSoCACIWIAcgAkECa0EBdiICQQN0aiIIKgIAXkUNACAFKAIEIQkDQAJAIAUgCCIFKQIANwIAIAJFDQAgByACQQFrQQF2IgJBA3RqIggqAgAgFl0NAQsLIAUgCTYCBCAFIBY4AgALIAYgBigCEEEIazYCECABKAJsGgJ/IARFBEAgASgChAEgASgCjAEgASgCDCAMbGpqDAELIAEoApABIAxBAnRqKAIAIAEoAhAgE2xqCyICLwEAIhAEQCACQQRqIRRBACELA0AgBiAUIAtBAnRqKAIAIgI2AggCQCASIAJBAXRqIgUvAQAgD0YNACAFIA87AQAgBiADIAEoAoABIAEoAowBIAEoAgwgAmxqaiABKAKoASABKAKkARELACIWOAIEIBYgF11FIAEoAiQgACgCBCAAKAIAa0EDdU1xDQAgFowhFgJAIAYoAhAiAiAGKAIUIgdJBEAgAiAWOAIAIAIgBigCCDYCBCACQQhqIQcMAQsgAiAGKAIMIgJrIgVBA3UiCUEBaiIIQYCAgIACTw0GIAVB/////wEgByACayIHQQJ1IgogCCAIIApJGyAHQfj///8HTxsiCAR/IAhBgICAgAJPDQggCEEDdBASBUEACyIKaiIHIBY4AgAgByAGKAIINgIEIAcgCUEDdGshCSAFBEAgCSACIAX8CgAACyAGIAogCEEDdGo2AhQgBiAHQQhqIgc2AhAgBiAJNgIMIAJFDQAgAhARCyAGIAc2AhACQCAHIAYoAgwiCWtBA3UiAkECSA0AIAdBCGsiCCoCACIWIAkgAkECa0EBdiICQQN0aiIFKgIAXkUNACAHQQRrKAIAIQcDQAJAIAggBSIIKQIANwIAIAJFDQAgCSACQQFrQQF2IgJBA3RqIgUqAgAgFl0NAQsLIAggBzYCBCAIIBY4AgALIAEoAoQBIAEoAowBIAEoAgwgBigCCGxqai0AAkEBcUUEQCAAIAZBBGogBkEIahBGCyAAKAIEIgwgACgCACIHa0EDdSINIAEoAiRLBEACQCANQQJIDQAgDUECa0EBdiEVIAcpAgAhGEEAIQIgByEFA0AgAkEBdCIKQQFyIQggBSIJIAJBA3RqIg5BCGohBQJAIA0gCkECaiIKTARAIAghAgwBCyAIIQIgDioCCCAOQRBqIggqAgBdRQ0AIAghBSAKIQILIAkgBSkCADcCACACIBVMDQALIAxBCGsiAiAFRgRAIAUgGDcCAAwBCyAFIAIpAgA3AgAgAiAYNwIAIAUgB2tBCGpBA3UiAkECSA0AIAUqAgAiFiAHIAJBAmtBAXYiAkEDdGoiCCoCAF5FDQAgBSgCBCEJA0ACQCAFIAgiBSkCADcCACACRQ0AIAcgAkEBa0EBdiICQQN0aiIIKgIAIBZdDQELCyAFIAk2AgQgBSAWOAIACyAAIAAoAgRBCGsiDDYCBCAAKAIAIQcLIAcgDEYNACAHKgIAIRcLIAtBAWoiCyAQRw0ACwsgBigCDCIHIAYoAhAiC0cNAAsLIAEoAkQhACAAKAIQIgVFBEAgABCWAiAAKAIQIQULIAAoAgQiASAFQQh2Qfz//wdxaiICKAIAIgMgBUH/B3FBAnRqQQAgACgCCCABRxsiASADRgR/IAJBBGsoAgBBgCBqBSABC0EEayARNgIAIAAgBUEBazYCECAAIAAoAhRBAWo2AhQgBigCDCIABEAgBiAANgIQIAYoAhQaIAAQEQsgBkEgaiQADwsQEwALEB8AC0EAIAEgAiADIARBBBBZIQEgAy0AAEEEcUUEQCAAIAFB0A9qIAFB7A5qIAEgAUHkAEkbIAFBxQBIG0HsDms2AgALC0AAIAIgAyAAQQhqIAAoAggoAgQRAAAiACAAQaACaiAFIARBABC6ASAAayIAQZ8CTARAIAEgAEEMbUEMbzYCAAsLQAAgAiADIABBCGogACgCCCgCABEAACIAIABBqAFqIAUgBEEAELoBIABrIgBBpwFMBEAgASAAQQxtQQdvNgIACwtBACABIAIgAyAEQQQQWiEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQvAEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABC8ASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLBABBAgu7AgEFfyMAQRBrIgckACMAQRBrIgMkAAJAIAFB9////wNNBEACQCABQQJJBEAgACAALQALQYABcSABQf8AcXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiABQQJPBH8gAUECakF+cSIEIARBAWsiBCAEQQJGGwVBAQtBAWoQgQEgAygCDBogACADKAIIIgQ2AgAgACAAKAIIQYCAgIB4cSADKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAE2AgQLIwBBEGsiBSQAIAUgAjYCDCAEIQIgASEGA0AgBgRAIAIgBSgCDDYCACAGQQFrIQYgAkEEaiECDAELCyAFQRBqJAAgA0EANgIEIAQgAUECdGogAygCBDYCACADQRBqJAAMAQsQNwALIAdBEGokACAAC4YHAQp/IwBBEGsiDCQAIAZB3I8DEBUhCSAMQQRqIAZBpJADEBUiDSIGIAYoAgAoAhQRAgAgBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCSAGwCAJKAIAKAIsEQMAIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAYtAABBMEcNACAGLQABQSByQfgARw0AIAlBMCAJKAIAKAIsEQMAIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAkgBiwAASAJKAIAKAIsEQMAIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAZBAmoiCCEGA0AgAiAGTQ0CIAYsAAAhBxAmGiAHQTBrQQpJIAdBIHJB4QBrQQZJckUNAiAGQQFqIQYMAAsACwNAIAIgBk0NASAGLAAAECYaQTBrQQpPDQEgBkEBaiEGDAALAAsCQAJ/IAwtAA9BB3YEQCAMKAIIDAELIAwtAA9B/wBxC0UEQCAJIAggBiAFKAIAIAkoAgAoAjARCgAaIAUgBSgCACAGIAhrQQJ0ajYCAAwBCyAIIAYQdiANIA0oAgAoAhARAAAhDyAIIQcDQCAGIAdNBEAgAyAIIABrQQJ0aiAFKAIAELYBBQJAAn8gDEEEaiIKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEEATA0AIAsCfyAKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEcNACAFIAUoAgAiC0EEajYCACALIA82AgAgDiAOAn8gCi0AC0EHdgRAIAooAgQMAQsgCi0AC0H/AHELQQFrSWohDkEAIQsLIAkgBywAACAJKAIAKAIsEQMAIQogBSAFKAIAIhBBBGo2AgAgECAKNgIAIAdBAWohByALQQFqIQsMAQsLCwJAAkADQCACIAZNDQEgBkEBaiEHIAYsAAAiBkEuRwRAIAkgBiAJKAIAKAIsEQMAIQYgBSAFKAIAIghBBGo2AgAgCCAGNgIAIAchBgwBCwsgDSANKAIAKAIMEQAAIQYgBSAFKAIAIghBBGoiCzYCACAIIAY2AgAMAQsgBSgCACELIAYhBwsgCSAHIAIgCyAJKAIAKAIwEQoAGiAFIAUoAgAgAiAHa0ECdGoiBTYCACAEIAUgAyABIABrQQJ0aiABIAJGGzYCACAMQQRqEBQaIAxBEGokAAuAAgEDfyMAQRBrIgUkACMAQRBrIgMkAAJAIAFB9////wdNBEACQCABQQtJBEAgACAALQALQYABcSABQf8AcXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiABQQtPBH8gAUEIakF4cSIEIARBAWsiBCAEQQtGGwVBCgtBAWoQiwEgAygCDBogACADKAIIIgQ2AgAgACAAKAIIQYCAgIB4cSADKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAE2AgQLIAQgASACEL8CIANBADoAByABIARqIAMtAAc6AAAgA0EQaiQADAELEDcACyAFQRBqJAAgAAv1BgEKfyMAQRBrIgskACAGQeSPAxAVIQkgC0EEaiAGQZyQAxAVIg0iBiAGKAIAKAIUEQIAIAUgAzYCAAJAAkAgACIILQAAIgZBK2sOAwABAAELIAkgBsAgCSgCACgCHBEDACEGIAUgBSgCACIHQQFqNgIAIAcgBjoAACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACAJQTAgCSgCACgCHBEDACEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAJIAYsAAEgCSgCACgCHBEDACEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAGQQJqIgghBgNAIAIgBk0NAiAGLAAAIQcQJhogB0Ewa0EKSSAHQSByQeEAa0EGSXJFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAABAmGkEwa0EKTw0BIAZBAWohBgwACwALAkACfyALLQAPQQd2BEAgCygCCAwBCyALLQAPQf8AcQtFBEAgCSAIIAYgBSgCACAJKAIAKAIgEQoAGiAFIAUoAgAgBiAIa2o2AgAMAQsgCCAGEHYgDSANKAIAKAIQEQAAIQ8gCCEHA0AgBiAHTQRAIAMgCCAAa2ogBSgCABB2BQJAAn8gC0EEaiIKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEEATA0AIAwCfyAKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEcNACAFIAUoAgAiDEEBajYCACAMIA86AAAgDiAOAn8gCi0AC0EHdgRAIAooAgQMAQsgCi0AC0H/AHELQQFrSWohDkEAIQwLIAkgBywAACAJKAIAKAIcEQMAIQogBSAFKAIAIhBBAWo2AgAgECAKOgAAIAdBAWohByAMQQFqIQwMAQsLCwNAAkACQCACIAZNBEAgBiEHDAELIAZBAWohByAGLAAAIgZBLkcNASANIA0oAgAoAgwRAAAhBiAFIAUoAgAiCEEBajYCACAIIAY6AAALIAkgByACIAUoAgAgCSgCACgCIBEKABogBSAFKAIAIAIgB2tqIgU2AgAgBCAFIAMgASAAa2ogASACRhs2AgAgC0EEahAUGiALQRBqJAAPCyAJIAYgCSgCACgCHBEDACEGIAUgBSgCACIIQQFqNgIAIAggBjoAACAHIQYMAAsAC5UFAQR/IwBB0AJrIgAkACAAIAI2AsgCIAAgATYCzAIgAxBcIQYgAyAAQdABahCcASEHIABBxAFqIAMgAEHEAmoQmwEjAEEQayICJAAgAEG4AWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBkgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECQNACAAKAK0AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQGSABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQGSAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCtAELAn8gAEHMAmoiCCgCACIDKAIMIgkgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgCSgCAAsgBiACIABBtAFqIABBCGogACgCxAIgAEHEAWogAEEQaiAAQQxqIAcQhAENACAIEDAaDAELCwJAAn8gAC0AzwFBB3YEQCAAKALIAQwBCyAALQDPAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEIgDNgIAIABBxAFqIABBEGogACgCDCAEEDkgAEHMAmogAEHIAmoQJARAIAQgBCgCAEECcjYCAAsgACgCzAIgARAUGiAAQcQBahAUGiAAQdACaiQAC4MCAQd/IAEgACgCCCIDIAAoAgQiAmtBA3VNBEAgACABBH8gAUEDdCIABEAgAkEAIAD8CwALIAAgAmoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkEDdSIFIAFqIgRBgICAgAJJBEBB/////wEgAyACayIDQQJ1IgggBCAEIAhJGyADQfj///8HTxsiBARAIARBgICAgAJPDQIgBEEDdBASIQcLIAYgB2ohAyABQQN0IgEEQCADQQAgAfwLAAsgAyAFQQN0ayEFIAYEQCAFIAIgBvwKAAALIAAgByAEQQN0ajYCCCAAIAEgA2o2AgQgACAFNgIAIAIEQCACEBELDwsQEwALEB8AC2cBAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCADQQRqIANBDGoQVCAAQeUVIAMoAggQmwMhAigCACIABEBBoIMDKAIAGiAABEBBoIMDQfjxAiAAIABBf0YbNgIACwsgA0EQaiQAIAILsQICBH4FfyMAQSBrIggkAAJAAkACQCABIAJHBEBB5O0CKAIAIQxB5O0CQQA2AgAjAEEQayIJJAAQJhojAEEQayIKJAAjAEEQayILJAAgCyABIAhBHGpBAhCBAiALKQMAIQQgCiALKQMINwMIIAogBDcDACALQRBqJAAgCikDACEEIAkgCikDCDcDCCAJIAQ3AwAgCkEQaiQAIAkpAwAhBCAIIAkpAwg3AxAgCCAENwMIIAlBEGokACAIKQMQIQQgCCkDCCEFQeTtAigCACIBRQ0BIAgoAhwgAkcNAiAFIQYgBCEHIAFBxABHDQMMAgsgA0EENgIADAILQeTtAiAMNgIAIAgoAhwgAkYNAQsgA0EENgIAIAYhBSAHIQQLIAAgBTcDACAAIAQ3AwggCEEgaiQAC8ABAgN/AXwjAEEQayIDJAACQAJAAkAgACABRwRAQeTtAigCACEFQeTtAkEANgIAECYaIwBBEGsiBCQAIAQgACADQQxqQQEQgQIgBCkDACAEKQMIEIUCIQYgBEEQaiQAAkBB5O0CKAIAIgAEQCADKAIMIAFGDQEMAwtB5O0CIAU2AgAgAygCDCABRw0CDAQLIABBxABHDQMMAgsgAkEENgIADAILRAAAAAAAAAAAIQYLIAJBBDYCAAsgA0EQaiQAIAYLvAECA38BfSMAQRBrIgMkAAJAAkACQCAAIAFHBEBB5O0CKAIAIQVB5O0CQQA2AgAQJhojAEEQayIEJAAgBCAAIANBDGpBABCBAiAEKQMAIAQpAwgQnQMhBiAEQRBqJAACQEHk7QIoAgAiAARAIAMoAgwgAUYNAQwDC0Hk7QIgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtDAAAAACEGCyACQQQ2AgALIANBEGokACAGC8UBAgN/AX4jAEEQayIEJAACfgJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0Hk7QIoAgAhBkHk7QJBADYCABAmGiAAIARBDGogA0J/EIYBIQcCQEHk7QIoAgAiAARAIAQoAgwgAUcNASAAQcQARg0EDAULQeTtAiAGNgIAIAQoAgwgAUYNBAsLCyACQQQ2AgBCAAwCCyACQQQ2AgBCfwwBC0IAIAd9IAcgBUEtRhsLIARBEGokAAvWAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0Hk7QIoAgAhBkHk7QJBADYCABAmGiAAIARBDGogA0J/EIYBIQcCQEHk7QIoAgAiAARAIAQoAgwgAUcNASAAQcQARg0FDAQLQeTtAiAGNgIAIAQoAgwgAUYNAwsLCyACQQQ2AgBBAAwDCyAHQv////8PWA0BCyACQQQ2AgBBfwwBC0EAIAenIgBrIAAgBUEtRhsLIARBEGokAAuLBQEDfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQXCEGIABBxAFqIAMgAEH3AWoQnQEjAEEQayICJAAgAEG4AWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBkgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECUNACAAKAK0AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQGSABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQGSAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCtAELAn8gAEH8AWoiBygCACIDKAIMIgggAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgCC0AAAvAIAYgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakGgoQIQhQENACAHEDEaDAELCwJAAn8gAC0AzwFBB3YEQCAAKALIAQwBCyAALQDPAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEIgDNgIAIABBxAFqIABBEGogACgCDCAEEDkgAEH8AWogAEH4AWoQJQRAIAQgBCgCAEECcjYCAAsgACgC/AEgARAUGiAAQcQBahAUGiAAQYACaiQAC9sBAgN/AX4jAEEQayIEJAACfwJAAkACQCAAIAFHBEACQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0ADAELQeTtAigCACEGQeTtAkEANgIAECYaIAAgBEEMaiADQn8QhgEhBwJAQeTtAigCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAtB5O0CIAY2AgAgBCgCDCABRg0DCwsLIAJBBDYCAEEADAMLIAdC//8DWA0BCyACQQQ2AgBB//8DDAELQQAgB6ciAGsgACAFQS1GGwsgBEEQaiQAQf//A3ELwgECAX4CfyMAQRBrIgUkAAJAAkAgACABRwRAQeTtAigCACEGQeTtAkEANgIAECYaIAAgBUEMaiADQoCAgICAgICAgH8QhgEhBAJAQeTtAigCACIABEAgBSgCDCABRw0BIABBxABGDQMMBAtB5O0CIAY2AgAgBSgCDCABRg0DCwsgAkEENgIAQgAhBAwBCyACQQQ2AgAgBEIAVQRAQv///////////wAhBAwBC0KAgICAgICAgIB/IQQLIAVBEGokACAEC8wBAgJ/AX4jAEEQayIEJAACfwJAAkAgACABRwRAQeTtAigCACEFQeTtAkEANgIAECYaIAAgBEEMaiADQoCAgICAgICAgH8QhgEhBgJAQeTtAigCACIABEAgBCgCDCABRw0BIABBxABGDQQMAwtB5O0CIAU2AgAgBCgCDCABRg0CCwsgAkEENgIAQQAMAgsgBkKAgICAeFMNACAGQv////8HVQ0AIAanDAELIAJBBDYCAEH/////ByAGQgBVDQAaQYCAgIB4CyAEQRBqJAAL8QEBA38CQCMAQRBrIgMkACACIAFrQQJ1IgVB9////wNNBEACQCAFQQJJBEAgACAALQALQYABcSAFQf8AcXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAFQQJPBH8gBUECakF+cSIEIARBAWsiBCAEQQJGGwVBAQtBAWoQgQEgAygCDBogACADKAIIIgQ2AgAgACAAKAIIQYCAgIB4cSADKAIMQf////8HcXI2AgggACAAKAIIQYCA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AEEwIApBEmpBEkEAEDogACASIBEgEmsQNQwCCyAKIQYLIABBMCAGQQlqQQlBABA6CyAAQSAgAiAJIARBgMAAcxA6IAIgCSACIAlKGyENDAELIBQgBUEadEEfdUEJcWohCQJAIANBC0sNAEEMIANrIQZEAAAAAAAAMEAhGANAIBhEAAAAAAAAMECiIRggBkEBayIGDQALIAktAABBLUYEQCAYIAGaIBihoJohAQwBCyABIBigIBihIQELIBEgCygCLCIHIAdBH3UiBnMgBmutIBEQhwEiBkYEQCAGQQFrIgZBMDoAACALKAIsIQcLIBBBAnIhCiAFQSBxIQwgBkECayIOIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcUUgA0EATHEhCCALQRBqIQcDQCAHIgUgAfwCIgZB4IUCai0AACAMcjoAACABIAa3oUQAAAAAAAAwQKIhAQJAIAdBAWoiByALQRBqa0EBRw0AIAFEAAAAAAAAAABhIAhxDQAgBUEuOgABIAVBAmohBwsgAUQAAAAAAAAAAGINAAtBfyENIANB/f///wcgCiARIA5rIghqIgZrSg0AIABBICACIAYgA0ECaiAHIAtBEGoiBWsiByAHQQJrIANIGyAHIAMbIgNqIgYgBBA6IAAgCSAKEDUgAEEwIAIgBiAEQYCABHMQOiAAIAUgBxA1IABBMCADIAdrQQBBABA6IAAgDiAIEDUgAEEgIAIgBiAEQYDAAHMQOiACIAYgAiAGShshDQsgC0GwBGokACANC7oCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACEJQDCw8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAtvAQV/IAAoAgAiAywAAEEwayIBQQlLBEBBAA8LA0BBfyEEIAJBzJmz5gBNBEBBfyABIAJBCmwiBWogASAFQf////8Hc0sbIQQLIAAgA0EBaiIFNgIAIAMsAAEgBCECIAUhA0EwayIBQQpJDQALIAIL+hICEn8CfiMAQUBqIgYkACAGIAE2AjwgBkEnaiEVIAZBKGohDwJAAkACQAJAA0BBACEFA0AgASELIAUgDEH/////B3NKDQIgBSAMaiEMAkACQAJAAkAgASIFLQAAIgkEQANAAkACQCAJQf8BcSIBRQRAIAUhAQwBCyABQSVHDQEgBSEJA0AgCS0AAUElRwRAIAkhAQwCCyAFQQFqIQUgCS0AAiAJQQJqIgEhCUElRg0ACwsgBSALayIFIAxB/////wdzIhZKDQkgAARAIAAgCyAFEDULIAUNByAGIAE2AjwgAUEBaiEFQX8hDgJAIAEsAAFBMGsiCEEJSw0AIAEtAAJBJEcNACABQQNqIQVBASEQIAghDgsgBiAFNgI8QQAhCgJAIAUsAAAiCUEgayIBQR9LBEAgBSEIDAELIAUhCEEBIAF0IgFBidEEcUUNAANAIAYgBUEBaiIINgI8IAEgCnIhCiAFLAABIglBIGsiAUEgTw0BIAghBUEBIAF0IgFBidEEcQ0ACwsCQCAJQSpGBEACfwJAIAgsAAFBMGsiAUEJSw0AIAgtAAJBJEcNAAJ/IABFBEAgBCABQQJ0akEKNgIAQQAMAQsgAyABQQN0aigCAAshDSAIQQNqIQFBAQwBCyAQDQYgCEEBaiEBIABFBEAgBiABNgI8QQAhEEEAIQ0MAwsgAiACKAIAIgVBBGo2AgAgBSgCACENQQALIRAgBiABNgI8IA1BAE4NAUEAIA1rIQ0gCkGAwAByIQoMAQsgBkE8ahCXAyINQQBIDQogBigCPCEBC0EAIQVBfyEHAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ/AkAgASwAAkEwayIIQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ/IABFBEAgBCAIQQJ0akEKNgIAQQAMAQsgAyAIQQN0aigCAAsMAQsgEA0GIAFBAmohAUEAIABFDQAaIAIgAigCACIIQQRqNgIAIAgoAgALIQcgBiABNgI8IAdBAE4MAQsgBiABQQFqNgI8IAZBPGoQlwMhByAGKAI8IQFBAQshEgNAIAUhE0EcIQggASIRLAAAIgVB+wBrQUZJDQsgAUEBaiEBIAUgE0E6bGpBz4ECai0AACIFQQFrQf8BcUEISQ0ACyAGIAE2AjwCQCAFQRtHBEAgBUUNDCAOQQBOBEAgAEUEQCAEIA5BAnRqIAU2AgAMDAsgBiADIA5BA3RqKQMANwMwDAILIABFDQggBkEwaiAFIAIQlgMMAQsgDkEATg0LQQAhBSAARQ0ICyAALQAAQSBxDQsgCkH//3txIgkgCiAKQYDAAHEbIQpBACEOQYkKIRQgDyEIAkACQAJ/AkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCARLQAAIgXAIhFBU3EgESAFQQ9xQQNGGyARIBMbIgVB2ABrDiEEFhYWFhYWFhYQFgkGEBAQFgYWFhYWAgUDFhYKFgEWFgQACwJAIAVBwQBrDgcQFgsWEBAQAAsgBUHTAEYNCwwVCyAGKQMwIRhBiQoMBQtBACEFAkACQAJAAkACQAJAAkAgEw4IAAECAwQcBQYcCyAGKAIwIAw2AgAMGwsgBigCMCAMNgIADBoLIAYoAjAgDKw3AwAMGQsgBigCMCAMOwEADBgLIAYoAjAgDDoAAAwXCyAGKAIwIAw2AgAMFgsgBigCMCAMrDcDAAwVC0EIIAcgB0EITRshByAKQQhyIQpB+AAhBQsgDyEBIAVBIHEhCSAGKQMwIhgiF0IAUgRAA0AgAUEBayIBIBenQQ9xQeCFAmotAAAgCXI6AAAgF0IPViAXQgSIIRcNAAsLIAEhCyAYUA0DIApBCHFFDQMgBUEEdkGJCmohFEECIQ4MAwsgDyEBIAYpAzAiGCIXQgBSBEADQCABQQFrIgEgF6dBB3FBMHI6AAAgF0IHViAXQgOIIRcNAAsLIAEhCyAKQQhxRQ0CIAcgDyABayIBQQFqIAEgB0gbIQcMAgsgBikDMCIYQgBTBEAgBkIAIBh9Ihg3AzBBASEOQYkKDAELIApBgBBxBEBBASEOQYoKDAELQYsKQYkKIApBAXEiDhsLIRQgGCAPEIcBIQsLIBIgB0EASHENESAKQf//e3EgCiASGyEKAkAgGEIAUg0AIAcNACAPIQtBACEHDA4LIAcgGFAgDyALa2oiASABIAdIGyEHDA0LIAYtADAhBQwLCyAGKAIwIgFBxjMgARsiC0EAQf////8HIAcgB0H/////B08bIgUQhAIiASALayAFIAEbIgEgC2ohCCAHQQBOBEAgCSEKIAEhBwwMCyAJIQogASEHIAgtAAANDwwLCyAGKQMwIhdCAFINAUEAIQUMCQsgBwRAIAYoAjAMAgtBACEFIABBICANQQAgChA6DAILIAZBADYCDCAGIBc+AgggBiAGQQhqIgU2AjBBfyEHIAULIQlBACEFA0ACQCAJKAIAIgtFDQAgBkEEaiALEMABIgtBAEgNDyALIAcgBWtLDQAgCUEEaiEJIAUgC2oiBSAHSQ0BCwtBPSEIIAVBAEgNDCAAQSAgDSAFIAoQOiAFRQRAQQAhBQwBC0EAIQggBigCMCEJA0AgCSgCACILRQ0BIAZBBGoiByALEMABIgsgCGoiCCAFSw0BIAAgByALEDUgCUEEaiEJIAUgCEsNAAsLIABBICANIAUgCkGAwABzEDogDSAFIAUgDUgbIQUMCAsgEiAHQQBIcQ0JQT0hCCAAIAYrAzAgDSAHIAogBRCVAyIFQQBODQcMCgsgBS0AASEJIAVBAWohBQwACwALIAANCSAQRQ0DQQEhBQNAIAQgBUECdGooAgAiAARAIAMgBUEDdGogACACEJYDQQEhDCAFQQFqIgVBCkcNAQwLCwsgBUEKTwRAQQEhDAwKCwNAIAQgBUECdGooAgANAUEBIQwgBUEBaiIFQQpHDQALDAkLQRwhCAwGCyAGIAU6ACdBASEHIBUhCyAJIQoLIAcgCCALayIJIAcgCUobIgEgDkH/////B3NKDQNBPSEIIA0gASAOaiIHIAcgDUgbIgUgFkoNBCAAQSAgBSAHIAoQOiAAIBQgDhA1IABBMCAFIAcgCkGAgARzEDogAEEwIAEgCUEAEDogACALIAkQNSAAQSAgBSAHIApBgMAAcxA6IAYoAjwhAQwBCwsLQQAhDAwDC0E9IQgLQeTtAiAINgIAC0F/IQwLIAZBQGskACAMC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEJkDIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsL5QIBA38CQCABLQAADQBBjSsQgwIiAQRAIAEtAAANAQsgAEEMbEHAgQJqEIMCIgEEQCABLQAADQELQZorEIMCIgEEQCABLQAADQELQdstIQELAkADQAJAIAEgAmotAAAiBEUNACAEQS9GDQBBFyEEIAJBAWoiAkEXRw0BDAILCyACIQQLQdstIQMCQAJAAkACQAJAIAEtAAAiAkEuRg0AIAEgBGotAAANACABIQMgAkHDAEcNAQsgAy0AAUUNAQsgA0HbLRC+AUUNACADQa4qEL4BDQELIABFBEBBlPkBIQIgAy0AAUEuRg0CC0EADwtBgIwDKAIAIgIEQANAIAMgAkEIahC+AUUNAiACKAIgIgINAAsLQSQQFiICBEAgAkGU+QEpAgA3AgAgAkEIaiIBIAMgBBBfIAEgBGpBADoAACACQYCMAygCADYCIEGAjAMgAjYCAAsgAkGU+QEgACACchshAgsgAgv8HgIPfwV+IwBBkAFrIgMkACADQQBBkAH8CwAgA0F/NgJMIAMgADYCLCADQfMBNgIgIAMgADYCVCABIQQgAiEOIwBBsAJrIgUkACADKAJMGgJAAkAgAygCBEUEQCADEKIBGiADKAIERQ0BCyAELQAAIgFFDQECQAJAA0ACQAJAIAFB/wFxIgBBIEYgAEEJa0EFSXIEQANAIAQiAUEBaiEEIAEtAAEiAEEgRiAAQQlrQQVJcg0ACyADQgAQVQNAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAhCyIAQSBGIABBCWtBBUlyDQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFHx8IRQMAQsCfwJAAkAgAEElRgRAIAQtAAEiAEEqRg0BIABBJUcNAgsgA0IAEFUCQCAELQAAQSVGBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiASIAQSBGIABBCWtBBUlyDQALIARBAWohBAwBCyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEBDAELIAMQISEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgAUEATg0KIA0NCgwJCyADKAIEIAMoAixrrCADKQN4IBR8fCEUIAQhAQwDC0EAIQcgBEECagwBCwJAIABBMGsiAEEJSw0AIAQtAAJBJEcNACMAQRBrIgEgDjYCDCABIA4gAEECdGpBBGsgDiAAQQFLGyIAQQRqNgIIIAAoAgAhByAEQQNqDAELIA4oAgAhByAOQQRqIQ4gBEEBagshAUEAIQtBACECIAEtAAAiBEEwa0H/AXFBCU0EQANAIAJBCmwgBEH/AXFqQTBrIQIgAS0AASEEIAFBAWohASAEQTBrQf8BcUEKSQ0ACwsgBEH/AXFB7QBHBH8gAQVBACEJIAdBAEchCyABLQABIQRBACEKIAFBAWoLIgZBAWohAUEDIQACQAJAAkACQAJAAkAgBEH/AXFBwQBrDjoECQQJBAQECQkJCQMJCQkJCQkECQkJCQQJCQQJCQkJCQQJBAQEBAQABAUJAQkEBAQJCQQCBAkJBAkCCQsgBkECaiABIAYtAAFB6ABGIgAbIQFBfkF/IAAbIQAMBAsgBkECaiABIAYtAAFB7ABGIgAbIQFBA0EBIAAbIQAMAwtBASEADAILQQIhAAwBC0EAIQAgBiEBC0EBIAAgAS0AACIAQS9xQQNGIgQbIRACQCAAQSByIAAgBBsiDEHbAEYNAAJAIAxB7gBHBEAgDEHjAEcNAUEBIAIgAkEBTBshAgwCCyAHIBAgFBCcAwwCCyADQgAQVQNAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAhCyIAQSBGIABBCWtBBUlyDQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFHx8IRQLIAMgAqwiEhBVAkAgAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEDAELIAMQIUEASA0ECyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDEHYAGsOIQYLCwILCwsLCwELAgQBAQELBQsLCwsLAwYLCwILBAsLBgALIAxBwQBrIgBBBksNCkEBIAB0QfEAcUUNCgsgBUEIaiADIBBBABCfAyADKQN4QgAgAygCBCADKAIsa6x9UQ0OIAdFDQkgBSkDECESIAUpAwghEyAQDgMFBgcJCyAMQRByQfMARgRAIAVBIGpBf0GBAhCjASAFQQA6ACAgDEHzAEcNCCAFQQA6AEEgBUEAOgAuIAVBADYBKgwICyAFQSBqIAEtAAEiAEHeAEYiBEGBAhCjASAFQQA6ACAgAUECaiABQQFqIAQbIQYCfwJAAkAgAUECQQEgBBtqLQAAIgFBLUcEQCABQd0ARg0BIABB3gBHIQggBgwDCyAFIABB3gBHIgg6AE4MAQsgBSAAQd4ARyIIOgB+CyAGQQFqCyEBA0ACQCABLQAAIgBBLUcEQCAARQ0PIABB3QBGDQoMAQtBLSEAIAEtAAEiBkUNACAGQd0ARg0AIAFBAWohDwJAIAYgAUEBay0AACIETQRAIAYhAAwBCwNAIARBAWoiBCAFQSBqaiAIOgAAIAQgDy0AACIASQ0ACwsgDyEBCyAAIAVBIGpqIAg6AAEgAUEBaiEBDAALAAtBCCEEDAILQQohBAwBC0EAIQQLQgAhEkEAIQJBACEGQQAhDyMAQRBrIggkAAJAIARBAUcgBEEkTXFFBEBB5O0CQRw2AgAMAQsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiAEEgRiAAQQlrQQVJcg0ACwJAAkAgAEEraw4DAAEAAQtBf0EAIABBLUYbIQ8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAhAAwBCyADECEhAAsCQAJAAkACQAJAIARBAEcgBEEQR3ENACAAQTBHDQACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECELIgBBX3FB2ABGBEBBECEEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAhCyIAQbH/AWotAABBEEkNAyADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQVQwGCyAEDQFBCCEEDAILIARBCiAEGyIEIABBsf8Bai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQVUHk7QJBHDYCAAwECyAEQQpHDQAgAEEwayICQQlNBEBBACEAA0AgAEEKbCACaiIAQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQIQtBMGsiAkEJTXENAAsgAK0hEgsgAkEJSw0CIBJCCn4hEyACrSEVA0ACQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiAEEwayICQQlNIBMgFXwiEkKas+bMmbPmzBlUcUUEQCACQQlNDQEMBQsgEkIKfiITIAKtIhVCf4VYDQELC0EKIQQMAQsgBCAEQQFrcQRAIABBsf8Bai0AACIGIARJBEADQCAGIAIgBGxqIgJBx+PxOEkCfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECELIgBBsf8Bai0AACIGIARJcQ0ACyACrSESCyAEIAZNDQEgBK0hEwNAIBIgE34iFSAGrUL/AYMiFkJ/hVYNAiAVIBZ8IRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiAEGx/wFqLQAAIgZNDQIgCCATQgAgEkIAEDYgCCkDCFANAAsMAQsgBEEXbEEFdkEHcUGxgQJqLAAAIREgAEGx/wFqLQAAIgIgBEkEQANAIAIgBiARdCIAciEGIABBgICAwABJAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAhCyIAQbH/AWotAAAiAiAESXENAAsgBq0hEgsgAiAETw0AQn8gEa0iE4giFSASVA0AA0AgAq1C/wGDIBIgE4aEIRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiAEGx/wFqLQAAIgJNDQEgEiAVWA0ACwsgBCAAQbH/AWotAABNDQADQCAEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAhC0Gx/wFqLQAASw0AC0Hk7QJBxAA2AgBBACEPQn8hEgsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsCQCASQn9SDQALIBIgD6wiE4UgE30hEgsgCEEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQkCQCAMQfAARw0AIAdFDQAgByASPgIADAULIAcgECASEJwDDAQLIAcgEyASEJ0DOAIADAMLIAcgEyASEIUCOQMADAILIAcgEzcDACAHIBI3AwgMAQtBHyACQQFqIAxB4wBHIgYbIQgCfyAQQQFGBEAgByECIAsEQCAIQQJ0EBYiAkUNBQsgBUIANwKoAkEAIQQCQAJAA0AgAiEAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADECELIgIgBWotACFFDQIgBSACOgAbIAVBHGogBUEbakEBIAVBqAJqEJ4BIgJBfkYNACACQX9GBEBBACEJDAQLIAAEQCAAIARBAnRqIAUoAhw2AgAgBEEBaiEECyALRQ0AIAQgCEcNAAsgACAIQQF0QQFyIghBAnQQ0wEiAg0AC0EAIQkgACEKQQEhCwwIC0EAIQkgACAFQagCagR/IAUoAqgCBUEAC0UNAhoLIAAhCgwGCyALBEBBACEEIAgQFiICRQ0EA0AgAiEAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADECELIgIgBWotACFFBEAgACEJQQAMBAsgACAEaiACOgAAIARBAWoiBCAIRw0ACyAAIAhBAXRBAXIiCBDTASICDQALQQAhCiAAIQlBASELDAYLQQAhBCAHBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsiACAFai0AIQRAIAQgB2ogADoAACAEQQFqIQQMAQUgByIAIQlBAAwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQIQsgBWotACENAAtBACEAQQAhCUEACyEKIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhNQDQUgBiASIBNRckUNBSALBEAgByAANgIACyAMQeMARg0AIAoEQCAKIARBAnRqQQA2AgALIAlFBEBBACEJDAELIAQgCWpBADoAAAsgAygCBCADKAIsa6wgAykDeCAUfHwhFCANIAdBAEdqIQ0LIAFBAWohBCABLQABIgENAQwFCwtBASELQQAhCUEAIQoLIA1BfyANGyENCyALRQ0BIAkQESAKEBEMAQtBfyENCyAFQbACaiQAIANBkAFqJAAgDQtDAAJAIABFDQACQAJAAkACQCABQQJqDgYAAQICBAMECyAAIAI8AAAPCyAAIAI9AQAPCyAAIAI+AgAPCyAAIAI3AwALC9oDAgV/An4jAEEgayIEJAAgAUL///////8/gyEHAkAgAUIwiEL//wGDIginIgNBgf8Aa0H9AU0EQCAHQhmIpyECAkAgAFAgAUL///8PgyIHQoCAgAhUIAdCgICACFEbRQRAIAJBAWohAgwBCyAAIAdCgICACIWEQgBSDQAgAkEBcSACaiECC0EAIAIgAkH///8DSyIFGyECQYGBf0GAgX8gBRsgA2ohAwwBCwJAIAAgB4RQDQAgCEL//wFSDQAgB0IZiKdBgICAAnIhAkH/ASEDDAELIANB/oABSwRAQf8BIQMMAQtBgP8AQYH/ACAIUCIFGyIGIANrIgJB8ABKBEBBACECQQAhAwwBCyAEQRBqIAAgByAHQoCAgICAgMAAhCAFGyIHQYABIAJrEDsgBCAAIAcgAhB6IAQpAwgiAEIZiKchAgJAIAQpAwAgAyAGRyAEKQMQIAQpAxiEQgBSca2EIgdQIABC////D4MiAEKAgIAIVCAAQoCAgAhRG0UEQCACQQFqIQIMAQsgByAAQoCAgAiFhEIAUg0AIAJBAXEgAmohAgsgAkGAgIAEcyACIAJB////A0siAxshAgsgBEEgaiQAIAFCIIinQYCAgIB4cSADQRd0ciACcr4LiQQCBH8BfgJAAkACQAJAAkACfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAECELIgJBK2sOAwABAAELIAJBLUYhBQJ/IAAoAgQiAyAAKAJoRwRAIAAgA0EBajYCBCADLQAADAELIAAQIQsiA0E6ayEEIAFFDQEgBEF1Sw0BIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAkE6ayEEIAIhAwsgBEF2SQ0AAkAgA0Ewa0EKTw0AQQAhAgNAIAMgAkEKbGoCfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAECELIQNBMGshAiACQcyZs+YASCADQTBrIgFBCU1xDQALIAKsIQYgAUEKTw0AA0AgA60gBkIKfnwhBgJ/IAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQIQsiA0EwayIBQQlNIAZCMH0iBkKuj4XXx8LrowFTcQ0ACyABQQpPDQADQAJ/IAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQIQtBMGtBCkkNAAsLIAApA3BCAFkEQCAAIAAoAgRBAWs2AgQLQgAgBn0gBiAFGyEGDAELQoCAgICAgICAgH8hBiAAKQNwQgBTDQAgACAAKAIEQQFrNgIEQoCAgICAgICAgH8PCyAGC+gyAxF/B34BfCMAQTBrIgwkAAJAAkAgAkECSw0AIAJBAnQiAkGc/wFqKAIAIREgAkGQ/wFqKAIAIRADQAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQIQsiAkEgRiACQQlrQQVJcg0AC0EBIQgCQAJAIAJBK2sOAwABAAELQX9BASACQS1GGyEIIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARAhIQILAkACQCACQV9xQckARgRAA0AgBkEHRg0CAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAhCyECIAZBlAhqIAZBAWohBiwAACACQSByRg0ACwsgBkEDRwRAIAZBCEYiBw0BIANFDQIgBkEESQ0CIAcNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRQ0AIAZBBEkNACAVQgBTIQIDQCACRQRAIAEgASgCBEEBazYCBAsgBkEBayIGQQNLDQALC0IAIRUjAEEQayIHJAAgCLJDAACAf5S8IgNB////A3EhCAJ/IANBF3YiAkH/AXEiAQRAIAFB/wFHBEAgCK1CGYYhFSACQf8BcUGA/wBqDAILIAitQhmGIRVB//8BDAELQQAgCEUNABogByAIrUIAIAhnIgFB0QBqEDsgBykDCEKAgICAgIDAAIUhFSAHKQMAIRZBif8AIAFrCyEBIAwgFjcDACAMIAGtQjCGIANBH3atQj+GhCAVhDcDCCAHQRBqJAAgDCkDCCEVIAwpAwAhFgwCCwJAAkACQAJAAkACQCAGDQBBACEGIAJBX3FBzgBHDQADQCAGQQJGDQICfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABECELIQIgBkGIGGogBkEBaiEGLAAAIAJBIHJGDQALCyAGDgQDAQEAAQsCQAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQIQtBKEYEQEEBIQYMAQtCgICAgICA4P//ACEVIAEpA3BCAFMNBiABIAEoAgRBAWs2AgQMBgsDQAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQIQsiCEHBAGshAgJAAkAgCEEwa0EKSQ0AIAJBGkkNACAIQd8ARg0AIAhB4QBrQRpPDQELIAZBAWohBgwBCwtCgICAgICA4P//ACEVIAhBKUYNBSABKQNwIhZCAFkEQCABIAEoAgRBAWs2AgQLAkAgAwRAIAYNAQwFC0Hk7QJBHDYCAEIAIRYMAgsDQCAWQgBZBEAgASABKAIEQQFrNgIECyAGQQFrIgYNAAsMAwsgASkDcEIAWQRAIAEgASgCBEEBazYCBAtB5O0CQRw2AgALIAFCABBVDAILAkAgAkEwRw0AAn8gASgCBCIHIAEoAmhHBEAgASAHQQFqNgIEIActAAAMAQsgARAhC0FfcUHYAEYEQCMAQbADayIFJAACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABECELIQICQAJ/A0AgAkEwRwRAAkAgAkEuRw0EIAEoAgQiAiABKAJoRg0AIAEgAkEBajYCBCACLQAADAMLBSABKAIEIgIgASgCaEcEf0EBIQ8gASACQQFqNgIEIAItAAAFQQEhDyABECELIQIMAQsLIAEQIQsiAkEwRwRAQQEhCwwBCwNAIBhCAX0hGAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQIQsiAkEwRg0AC0EBIQtBASEPC0KAgICAgIDA/z8hFgNAAkAgAiEGAkACQCACQTBrIg1BCkkNACACQS5HIgcgAkEgciIGQeEAa0EFS3ENAiAHDQAgCw0CQQEhCyAVIRgMAQsgBkHXAGsgDSACQTlKGyECAkAgFUIHVwRAIAIgCUEEdGohCQwBCyAVQhxYBEAgBUEwaiACEEkgBUEgaiAaIBZCAEKAgICAgIDA/T8QJyAFQRBqIAUpAzAgBSkDOCAFKQMgIhogBSkDKCIWECcgBSAFKQMQIAUpAxggFyAZEEEgBSkDCCEZIAUpAwAhFwwBCyACRQ0AIAoNACAFQdAAaiAaIBZCAEKAgICAgICA/z8QJyAFQUBrIAUpA1AgBSkDWCAXIBkQQUEBIQogBSkDSCEZIAUpA0AhFwsgFUIBfCEVQQEhDwsgASgCBCICIAEoAmhHBH8gASACQQFqNgIEIAItAAAFIAEQIQshAgwBCwsCfiAPRQRAAkACQCABKQNwQgBZBEAgASABKAIEIgJBAWs2AgQgA0UNASABIAJBAms2AgQgC0UNAiABIAJBA2s2AgQMAgsgAw0BCyABQgAQVQsgBUHgAGpEAAAAAAAAAAAgCLemEF0gBSkDYCEXIAUpA2gMAQsgFUIHVwRAIBUhFgNAIAlBBHQhCSAWQgF8IhZCCFINAAsLAkACQAJAIAJBX3FB0ABGBEAgASADEJ4DIhZCgICAgICAgICAf1INAyADBEAgASkDcEIAWQ0CDAMLQgAhFyABQgAQVUIADAQLQgAhFiABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEWCyAJRQRAIAVB8ABqRAAAAAAAAAAAIAi3phBdIAUpA3AhFyAFKQN4DAELIBggFSALG0IChiAWfEIgfSIVQQAgEWutVQRAQeTtAkHEADYCACAFQaABaiAIEEkgBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AECcgBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AECcgBSkDgAEhFyAFKQOIAQwBCyARQeIBa6wgFVcEQCAJQQBOBEADQCAFQaADaiAXIBlCAEKAgICAgIDA/79/EEEgFyAZQoCAgICAgID/PxCkAyEBIAVBkANqIBcgGSAFKQOgAyAXIAFBAE4iAhsgBSkDqAMgGSACGxBBIAIgCUEBdCIBciEJIBVCAX0hFSAFKQOYAyEZIAUpA5ADIRcgAUEATg0ACwsCfiAVQSAgEWutfCIWpyIBQQAgAUEAShsgECAWIBCtUxsiAUHxAE8EQCAFQYADaiAIEEkgBSkDiAMhFiAFKQOAAyEaQgAMAQsgBUHgAmpEAAAAAAAA8D9BkAEgAWsQfBBdIAVB0AJqIAgQSSAFKQPQAiEaIAVB8AJqIAUpA+ACIAUpA+gCIAUpA9gCIhYQowMgBSkD+AIhGyAFKQPwAgshGCAFQcACaiAJIAlBAXFFIBcgGUIAQgAQeUEARyABQSBJcXEiAXIQiQEgBUGwAmogGiAWIAUpA8ACIAUpA8gCECcgBUGQAmogBSkDsAIgBSkDuAIgGCAbEEEgBUGgAmogGiAWQgAgFyABG0IAIBkgARsQJyAFQYACaiAFKQOgAiAFKQOoAiAFKQOQAiAFKQOYAhBBIAVB8AFqIAUpA4ACIAUpA4gCIBggGxCGAiAFKQPwASIYIAUpA/gBIhZCAEIAEHlFBEBB5O0CQcQANgIACyAFQeABaiAYIBYgFacQogMgBSkD4AEhFyAFKQPoAQwBC0Hk7QJBxAA2AgAgBUHQAWogCBBJIAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQJyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAECcgBSkDsAEhFyAFKQO4AQshFSAMIBc3AxAgDCAVNwMYIAVBsANqJAAgDCkDGCEVIAwpAxAhFgwECyABKQNwQgBTDQAgASABKAIEQQFrNgIECyABIQYgAiEHIAghDSADIQhBACEDIwBBkMYAayIEJABBACARayIPIBBrIRQCQAJ/A0ACQCAHQTBHBEAgB0EuRw0EIAYoAgQiASAGKAJoRg0BIAYgAUEBajYCBCABLQAADAMLIAYoAgQiASAGKAJoRwRAIAYgAUEBajYCBCABLQAAIQcFIAYQISEHC0EBIQMMAQsLIAYQIQsiB0EwRgRAA0AgFUIBfSEVAn8gBigCBCIBIAYoAmhHBEAgBiABQQFqNgIEIAEtAAAMAQsgBhAhCyIHQTBGDQALQQEhAwtBASELCyAEQQA2ApAGIAdBMGshAgJ+AkACQAJAAkACQAJAIAdBLkYiAQ0AIAJBCU0NAAwBCwNAAkAgAUEBcQRAIAtFBEAgFiEVQQEhCwwCCyADRSEBDAQLIBZCAXwhFiAJQfwPTARAIA4gFqcgB0EwRhshDiAEQZAGaiAJQQJ0aiIBIAoEfyAHIAEoAgBBCmxqQTBrBSACCzYCAEEBIQNBACAKQQFqIgEgAUEJRiIBGyEKIAEgCWohCQwBCyAHQTBGDQAgBCAEKAKARkEBcjYCgEZB3I8BIQ4LAn8gBigCBCIBIAYoAmhHBEAgBiABQQFqNgIEIAEtAAAMAQsgBhAhCyIHQTBrIQIgB0EuRiIBDQAgAkEKSQ0ACwsgFSAWIAsbIRUCQCADRQ0AIAdBX3FBxQBHDQACQCAGIAgQngMiF0KAgICAgICAgIB/Ug0AIAhFDQRCACEXIAYpA3BCAFMNACAGIAYoAgRBAWs2AgQLIBUgF3whFQwECyADRSEBIAdBAEgNAQsgBikDcEIAUw0AIAYgBigCBEEBazYCBAsgAUUNAUHk7QJBHDYCAAsgBkIAEFVCACEVQgAMAQsgBCgCkAYiAUUEQCAERAAAAAAAAAAAIA23phBdIAQpAwghFSAEKQMADAELAkAgFkIJVQ0AIBUgFlINACAQQR5NQQAgASAQdhsNACAEQTBqIA0QSSAEQSBqIAEQiQEgBEEQaiAEKQMwIAQpAzggBCkDICAEKQMoECcgBCkDGCEVIAQpAxAMAQsgD0EBdq0gFVMEQEHk7QJBxAA2AgAgBEHgAGogDRBJIARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQJyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQJyAEKQNIIRUgBCkDQAwBCyARQeIBa6wgFVUEQEHk7QJBxAA2AgAgBEGQAWogDRBJIARBgAFqIAQpA5ABIAQpA5gBQgBCgICAgICAwAAQJyAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAECcgBCkDeCEVIAQpA3AMAQsgCgRAIApBCEwEQCAEQZAGaiAJQQJ0aiIBKAIAIQYDQCAGQQpsIQYgCkEBaiIKQQlHDQALIAEgBjYCAAsgCUEBaiEJCyAVpyEKAkAgDkEJTg0AIBVCEVUNACAKIA5IDQAgFUIJUQRAIARBwAFqIA0QSSAEQbABaiAEKAKQBhCJASAEQaABaiAEKQPAASAEKQPIASAEKQOwASAEKQO4ARAnIAQpA6gBIRUgBCkDoAEMAgsgFUIIVwRAIARBkAJqIA0QSSAEQYACaiAEKAKQBhCJASAEQfABaiAEKQOQAiAEKQOYAiAEKQOAAiAEKQOIAhAnIARB4AFqQQAgCmtBAnRBkP8BaigCABBJIARB0AFqIAQpA/ABIAQpA/gBIAQpA+ABIAQpA+gBEKEDIAQpA9gBIRUgBCkD0AEMAgsgECAKQX1sakEbaiICQR5MQQAgBCgCkAYiASACdhsNACAEQeACaiANEEkgBEHQAmogARCJASAEQcACaiAEKQPgAiAEKQPoAiAEKQPQAiAEKQPYAhAnIARBsAJqIApBAnRByP4BaigCABBJIARBoAJqIAQpA8ACIAQpA8gCIAQpA7ACIAQpA7gCECcgBCkDqAIhFSAEKQOgAgwBCwNAIARBkAZqIAkiAUEBayIJQQJ0aigCAEUNAAtBACEOAkAgCkEJbyICRQRAQQAhAgwBCyACQQlqIAIgFUIAUxshEgJAIAFFBEBBACECQQAhAQwBC0GAlOvcA0EAIBJrQQJ0QZD/AWooAgAiBW0hC0EAIQdBACEGQQAhAgNAIARBkAZqIg8gBkECdGoiAyAHIAMoAgAiCSAFbiIIaiIDNgIAIAJBAWpB/w9xIAIgA0UgAiAGRnEiAxshAiAKQQlrIAogAxshCiALIAkgBSAIbGtsIQcgBkEBaiIGIAFHDQALIAdFDQAgAUECdCAPaiAHNgIAIAFBAWohAQsgCiASa0EJaiEKCwNAIARBkAZqIAJBAnRqIQ8gCkEkSCEGAkADQCAGRQRAIApBJEcNAiAPKAIAQdHp+QRPDQILIAFB/w9qIQlBACEDA0AgASEIIAOtIARBkAZqIAlB/w9xIgtBAnRqIgE1AgBCHYZ8IhVCgZTr3ANUBH9BAAUgFSAVQoCU69wDgCIWQoCU69wDfn0hFSAWpwshAyABIBU+AgAgCCAIIAsgCCAVUBsgAiALRhsgCyAIQQFrQf8PcSIHRxshASALQQFrIQkgAiALRw0ACyAOQR1rIQ4gCCEBIANFDQALIAJBAWtB/w9xIgIgAUYEQCAEQZAGaiIIIAFB/g9qQf8PcUECdGoiASABKAIAIAdBAnQgCGooAgByNgIAIAchAQsgCkEJaiEKIARBkAZqIAJBAnRqIAM2AgAMAQsLAkADQCABQQFqQf8PcSEIIARBkAZqIAFBAWtB/w9xQQJ0aiESA0BBCUEBIApBLUobIRMCQANAIAIhA0EAIQYCQANAAkAgAyAGakH/D3EiAiABRg0AIARBkAZqIAJBAnRqKAIAIgcgBkECdEHg/gFqKAIAIgJJDQAgAiAHSQ0CIAZBAWoiBkEERw0BCwsgCkEkRw0AQgAhFUEAIQZCACEWA0AgASADIAZqQf8PcSICRgRAIAFBAWpB/w9xIgFBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAJBAnRqKAIAEIkBIARB8AVqIBUgFkIAQoCAgIDlmreOwAAQJyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBBIAQpA+gFIRYgBCkD4AUhFSAGQQFqIgZBBEcNAAsgBEHQBWogDRBJIARBwAVqIBUgFiAEKQPQBSAEKQPYBRAnQgAhFSAEKQPIBSEWIAQpA8AFIRcgDkHxAGoiByARayIJQQAgCUEAShsgECAJIBBIIggbIgZB8ABNDQIMBQsgDiATaiEOIAEhAiABIANGDQALQYCU69wDIBN2IQVBfyATdEF/cyELQQAhBiADIQIDQCAEQZAGaiIPIANBAnRqIgcgBiAHKAIAIgkgE3ZqIgc2AgAgAkEBakH/D3EgAiAHRSACIANGcSIHGyECIApBCWsgCiAHGyEKIAkgC3EgBWwhBiADQQFqQf8PcSIDIAFHDQALIAZFDQEgAiAIRwRAIAFBAnQgD2ogBjYCACAIIQEMAwsgEiASKAIAQQFyNgIADAELCwsgBEGQBWpEAAAAAAAA8D9B4QEgBmsQfBBdIARBsAVqIAQpA5AFIAQpA5gFIBYQowMgBCkDuAUhGiAEKQOwBSEZIARBgAVqRAAAAAAAAPA/QfEAIAZrEHwQXSAEQaAFaiAXIBYgBCkDgAUgBCkDiAUQoAMgBEHwBGogFyAWIAQpA6AFIhUgBCkDqAUiGBCGAiAEQeAEaiAZIBogBCkD8AQgBCkD+AQQQSAEKQPoBCEWIAQpA+AEIRcLAkAgA0EEakH/D3EiAiABRg0AAkAgBEGQBmogAkECdGooAgAiAkH/ybXuAU0EQCACRQRAIANBBWpB/w9xIAFGDQILIARB8ANqIA23RAAAAAAAANA/ohBdIARB4ANqIBUgGCAEKQPwAyAEKQP4AxBBIAQpA+gDIRggBCkD4AMhFQwBCyACQYDKte4BRwRAIARB0ARqIA23RAAAAAAAAOg/ohBdIARBwARqIBUgGCAEKQPQBCAEKQPYBBBBIAQpA8gEIRggBCkDwAQhFQwBCyANtyEcIAEgA0EFakH/D3FGBEAgBEGQBGogHEQAAAAAAADgP6IQXSAEQYAEaiAVIBggBCkDkAQgBCkDmAQQQSAEKQOIBCEYIAQpA4AEIRUMAQsgBEGwBGogHEQAAAAAAADoP6IQXSAEQaAEaiAVIBggBCkDsAQgBCkDuAQQQSAEKQOoBCEYIAQpA6AEIRULIAZB7wBLDQAgBEHQA2ogFSAYQgBCgICAgICAwP8/EKADIAQpA9ADIAQpA9gDQgBCABB5DQAgBEHAA2ogFSAYQgBCgICAgICAwP8/EEEgBCkDyAMhGCAEKQPAAyEVCyAEQbADaiAXIBYgFSAYEEEgBEGgA2ogBCkDsAMgBCkDuAMgGSAaEIYCIAQpA6gDIRYgBCkDoAMhFwJAIBRBAmsgB0H/////B3FODQAgBCAWQv///////////wCDNwOYAyAEIBc3A5ADIARBgANqIBcgFkIAQoCAgICAgID/PxAnIAQpA5ADIAQpA5gDQoCAgICAgIC4wAAQpAMhAyAEKQOIAyAWIANBAE4iAhshFiAEKQOAAyAXIAIbIRcgFSAYQgBCABB5IQEgFCACIA5qIg5B7gBqTgRAIAggBiAJRyADQQBIcnEgAUEAR3FFDQELQeTtAkHEADYCAAsgBEHwAmogFyAWIA4QogMgBCkD+AIhFSAEKQPwAgshFiAMIBU3AyggDCAWNwMgIARBkMYAaiQAIAwpAyghFSAMKQMgIRYMAgtCACEWDAELQgAhFQsgACAWNwMAIAAgFTcDCCAMQTBqJAALwAYCBH8DfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABB5RQ0AAn8gBEL///////8/gyEKAn8gBEIwiKdB//8BcSIHQf//AUcEQEEEIAcNARpBAkEDIAMgCoRQGwwCCyADIAqEUAsLRQ0AIAJCMIinIghB//8BcSIGQf//AUcNAQsgBUEQaiABIAIgAyAEECcgBSAFKQMQIgIgBSkDGCIBIAIgARChAyAFKQMIIQIgBSkDACEEDAELIAEgAkL///////////8AgyIKIAMgBEL///////////8AgyIJEHlBAEwEQCABIAogAyAJEHkEQCABIQQMAgsgBUHwAGogASACQgBCABAnIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEHIAYEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAECcgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAnIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCELIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAt9IAMgBFatfSIJQgBZBEAgCSAEIAN9IgSEUARAIAVBIGogASACQgBCABAnIAUpAyghAiAFKQMgIQQMBQsgCUIBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAGQQFrIgYgB0oNAAsgByEGCwJAIAogC30gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAECcgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIAZBAWshBiAEQgGGIQQgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/ECcgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALqQ8CBX8PfiMAQdACayIFJAAgBEL///////8/gyEKIAJC////////P4MhCyACIASFQoCAgICAgICAgH+DIQwgBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDAwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEMIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDAwDCyAMQoCAgICAgMD//wCEIQxCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDYRQBEBCgICAgICA4P//ACAMIAIgA4RQGyEMQgAhAQwCCyACIAOEUARAIAxCgICAgICAwP//AIQhDEIAIQEMAgsgDUL///////8/WARAIAVBwAJqIAEgCyABIAsgC1AiBht5IAZBBnStfKciBkEPaxA7QRAgBmshBiAFKQPIAiELIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAogAyAKIApQIgcbeSAHQQZ0rXynIgdBD2sQOyAGIAdqQRBrIQYgBSkDuAIhCiAFKQOwAiEDCyAFQaACaiAKQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABA2IAVBkAJqQgAgBSkDqAJ9QgAgBEIAEDYgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQNiAFQfABaiAEQgBCACAFKQOIAn1CABA2IAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEDYgBUHQAWogBEIAQgAgBSkD6AF9QgAQNiAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABA2IAVBsAFqIARCAEIAIAUpA8gBfUIAEDYgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQNiAFQZABaiADQg+GQgAgAkIAEDYgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDSAFKQOYAXwiBCANVK18IARCAVatfH1CABA2IAVBgAFqQgEgBH1CACACQgAQNiAGIAkgCGtqIQYCfyAFKQNwIhNCAYYiDiAFKQOIASIPQgGGIAUpA4ABQj+IhHwiEELn7AB9IhRCIIgiAiALQoCAgICAgMAAhCIVQgGGIhZCIIgiBH4iESABQgGGIg1CIIgiCiAQIBRWrSAOIBBWrSAFKQN4QgGGIBNCP4iEIA9CP4h8fHxCAX0iE0IgiCIQfnwiDiARVK0gDiAOIBNC/////w+DIhMgAUI/iCIXIAtCAYaEQv////8PgyILfnwiDlatfCAEIBB+fCAEIBN+IhEgCyAQfnwiDyARVK1CIIYgD0IgiIR8IA4gDiAPQiCGfCIOVq18IA4gDiAUQv////8PgyIUIAt+IhEgAiAKfnwiDyARVK0gDyAPIBMgDUL+////D4MiEX58Ig9WrXx8Ig5WrXwgDiAEIBR+IhggECARfnwiBCACIAt+fCILIAogE358IhBCIIggCyAQVq0gBCAYVK0gBCALVq18fEIghoR8IgQgDlStfCAEIA8gAiARfiICIAogFH58IgpCIIggAiAKVq1CIIaEfCICIA9UrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIBYgF4QhFSAFQdAAaiACIAQgAyASEDYgAUIxhiAFKQNYfSAFKQNQIgFCAFKtfSEKQgAgAX0hCyAGQf7/AGoMAQsgBUHgAGogBEI/hiACQgGIhCICIARCAYgiBCADIBIQNiABQjCGIAUpA2h9IAUpA2AiDUIAUq19IQpCACANfSELIAEhDSAGQf//AGoLIgZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgCkIBhiALQj+IhCEBIARC////////P4MgBq1CMIaEIQogC0IBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEHogBUEwaiANIBUgBkHwAGoQOyAFQSBqIAMgEiAFKQNAIgIgBSkDSCIKEDYgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIg1UrX0hASAEIA19CyEEIAVBEGogAyASQgNCABA2IAUgAyASQgVCABA2IAogAiACIAMgBCACQgGDIgR8IgNUIAEgAyAEVK18IgEgElYgASASURutfCICVq18IgQgAiACIARCgICAgICAwP//AFQgAyAFKQMQViABIAUpAxgiBFYgASAEURtxrXwiAlatfCIEIAIgBEKAgICAgIDA//8AVCADIAUpAwBWIAEgBSkDCCIDViABIANRG3GtfCIBIAJUrXwgDIQhDAsgACABNwMAIAAgDDcDCCAFQdACaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAnIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA//8AECdB/f8CIAMgA0H9/wJPG0H+/wFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5ECcgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3/AGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5ECdB6IF9IAMgA0HogX1NG0Ga/gFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf//AGqtQjCGECcgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzwAIAAgATcDACAAIAJC////////P4MgAkKAgICAgIDA//8Ag0IwiKcgA0IwiKdBgIACcXKtQjCGhDcDCAvAAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFJxDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAIAEgAlIgASACU3ENASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC+YBAQV/IwBBEGsiBCQAQaCDAygCACEGIAEoAkwaIAEoAkhBAEwEQCABEIkCC0GggwMgASgCiAE2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ASgCACABQQA2AgAQzgMhBSAAQQA2AkAgAEEAQQAgACgCACgCDBEEABogASgCACEDIAFBADYCACADBEAgAyABQQRqKAIAEQAAGgtBACAAIAQgBXIbBUEACyACQRBqJAALhwIBA38CQCMAQRBrIgMkACACIAFrIgVB9////wdNBEACQCAFQQtJBEAgACAALQALQYABcSAFQf8AcXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAFQQtPBH8gBUEIakF4cSIEIARBAWsiBCAEQQtGGwVBCgtBAWoQiwEgAygCDBogACADKAIIIgQ2AgAgACAAKAIIQYCAgIB4cSADKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAU2AgQLAkAgAiABayIARSICDQAgAg0AIAQgASAA/AoAAAsgA0EAOgAHIAAgBGogAy0ABzoAACADQRBqJAAMAQsQNwALC1QBAn8CQCAAKAIAIgJFDQACfyACKAIYIgMgAigCHEYEQCACIAEgAigCACgCNBEDAAwBCyACIANBBGo2AhggAyABNgIAIAELQX9HDQAgAEEANgIACwsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEEajYCDCABKAIACyoAIABB8OsBNgIAIABBBGoQ8wEgAEIANwIYIABCADcCECAAQgA3AgggAAtrAQJ/IwBBEGsiAiQAIAJBCGogABBmGgJAIAItAAhFDQAgAkEEaiIDIAAgACgCAEEMaygCAGooAhg2AgAgAyABEIwBIAMoAgANACAAIAAoAgBBDGsoAgBqQQEQZwsgAkEIahBeIAJBEGokAAsTACAAIAAoAgBBDGsoAgBqEJECCxMAIAAgACgCAEEMaygCAGoQywELPwEBfyAAKAIYIgIgACgCHEYEQCAAIAFB/wFxIAAoAgAoAjQRAwAPCyAAIAJBAWo2AhggAiABOgAAIAFB/wFxCzEBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIoEQAADwsgACABQQFqNgIMIAEtAAALrSMDFX8CfQF+IwBBQGoiBCQAIAQgAjYCPCAAKAKgASIDBEAgACgCgAEgACgCjAEgACgCDCACbGpqIAEgA/wKAAALIAAoAkAhCgJAIAIgACgCeCILRgRAIAAoAghBAUYNASAE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A0AgBCABQQJ0Ig9qIAMgD2r9AAIA/QsCACABQQRqIgEgAkcNAAsgAiAJRg0BCyACIQEgBUEDcSIPBEADQCAEIAFBAnQiEGogAyAQaigCADYCACABQQFqIQEgC0EBaiILIA9HDQALCyACIAVrQX1PDQADQCAEIAFBAnQiAmogAiADaigCADYCACAEIAJBBGoiBWogAyAFaigCADYCACAEIAJBCGoiBWogAyAFaigCADYCACAEIAJBDGoiAmogAiADaigCADYCACAJIAFBBGoiAUcNAAsLIAdBAWohBwsgAEEwaiIAIA5HDQALCyAGQRRqIgYgDEcNAAsLDwsQEwALtwIBA38gACgCCCIEIAAoAgAiBWsgA08EQCADIAAoAgQiBCAFayIGSwRAIAQgBUcEQCAGBEAgBSABIAb8CgAACyAAKAIEIQQLIAIgASAGaiIDayEBAkAgAiADRg0AIAFFDQAgBCADIAH8CgAACyAAIAEgBGo2AgQPCyACIAFrIQMCQCABIAJGDQAgA0UNACAFIAEgA/wKAAALIAAgAyAFajYCBA8LIAUEQCAAIAU2AgQgBRARIABBADYCCCAAQgA3AgBBACEECyADQQBOBEAgAEH/////ByAEQQF0IgUgAyADIAVJGyAEQf////8DTxsiBBASIgM2AgQgACADNgIAIAAgAyAEajYCCCACIAFrIQQCQCABIAJGDQAgBEUNACADIAEgBPwKAAALIAAgAyAEajYCBA8LEBMAC9EDAQV/IAAgASkCADcCACAAIAEoAgg2AgggASgCDCECIABBADYCGCAAQgA3AhAgACACNgIMQQAhAgJAAkACQCABKAIUIgMgASgCECIGRwRAIAMgBmsiA0EASA0BIAAgAxASIgI2AhQgACACNgIQIAAgAiADaiIENgIYIAMEQCACIAYgA/wKAAALIAAgBDYCFAsgACABKAIcIAIgAiAERhs2AhwgACABKAIgNgIgIAEoAiQhAiAAQQA2AjAgAEIANwIoIAAgAjYCJEEAIQIgASgCLCIEIAEoAigiA0cEQCAEIANrIgRBAEgNAiAAIAQQEiICNgIsIAAgAjYCKCAAIAIgBGoiBTYCMCAEBEAgAiADIAT8CgAACyAAIAU2AiwLIAAgASgCNCACIAIgBUYbNgI0IAAgASgCODYCOCABKAI8IQJBACEEIABBADYCSCAAQgA3AkAgACACNgI8QQAhAiABKAJEIgMgASgCQCIFRwRAIAMgBWsiA0EASA0DIAAgAxASIgI2AkQgACACNgJAIAAgAiADaiIENgJIIAMEQCACIAUgA/wKAAALIAAgBDYCRAsgACABKAJMIAIgAiAERhs2AkwgAA8LEBMACxATAAsQEwAL4gUDDX8CfgF7IwBB0ABrIgYkACAAQQA2AgggAEIANwIAIABBFBASIgo2AgAgACAKQRRqIgQ2AgggCiEFA0AgBUEANgIQIAVCADcCCCAFQRRqIQUgB0EBaiIHQQFHDQALIAAgBDYCBCAGQRBqIQ0DQCAGIBJCAXwiESADKQMAfDcDICAGIAMpAwggEXw3AyggBiADKQMQIBF8NwMwIAYgAykDGCARfDcDOCAGQSBqIQ5BACEIIwBBMGsiBCQAIAZBCGoiCyACNgIAIAv9DAAAAAAAAAAAAAAAAAAAAAD9CwIEIAEoAgAhACAEQQA2AiwgBEIANwIkAkACQAJAAkACQCAABEAgAEGAgICABE8NAyAEIABBAnQiBxASIgA2AiQgBCAAIAdqIgw2AiwgB0UiD0UEQCAAQQAgB/wLAAsgBCAMNgIoIAAhBQJAIAdBBGsiCUEMTwRAIAAgCUECdkEBaiIQQfz///8HcSIIQQJ0aiEF/QwAAAAAAQAAAAIAAAADAAAAIRNBACEJA0AgACAJQQJ0aiAT/QsCACAT/QwEAAAABAAAAAQAAAAEAAAA/a4BIRMgCUEEaiIJIAhHDQALIAggEEYNAQsDQCAFIAg2AgAgCEEBaiEIIAVBBGoiBSAMRw0ACwsMAQtBACEAIARBADYCFCAEQgA3AgwMAQsgBEEANgIUIARCADcCDCAHQQBIDQIgBCAHEBIiBTYCDCAEIAUgB2oiCDYCFCAPRQRAIAUgACAH/AoAAAsgBCAINgIQCyALIAEgBEEMaiACIA5B5AAQmQIgBCgCDCIFBEAgBCAFNgIQIAQoAhQaIAUQEQsgAARAIAQgADYCKCAAEBELIARBMGokAAwCCxATAAsQEwALIAogEqdBFGxqIgAgBikDCDcCACAAQQhqIAYoAhAiACAGKAIUIgUgBSAAa0EwbRDZASAGIA02AkwgBkHMAGoQWCARIhJCAVINAAsgBkHQAGokAAsiACAALQDpAUEBRgRAQQgQF0HnMBAtQaDjAkEEEAEACyAAC40JAhB/A30gAkEATARAQQAPCyABKAIAIAEoAgRHBEADQCABKAIAIhAgASgCBCIRRwRAA0ACQCAQKAIAIg0gECgCBCISRg0AAkADQCANKAIAIghBAE4EQCANKAIEIglBAEgNAiANKgIIIRQgDyAIIAJwRgRAQQAhBAJAIBQgACgCNCILIAAoAiQgCGwiDEECdGoqAgBgDQAgACgCHCEFIAAoAgwiAyAIbCIHIAMgCEEBamwiA0cEQCAFIANBAnRqIQYgBSAHQQJ0aiEDA0AgAygCACAJRg0CIANBBGoiAyAGRw0ACwtBASEEQQAhA0ECIQYgACgCBCIOQQFLBEACQANAIAMhBSAAKAI0IgsgACgCJCAIbCIMQQJ0aiIHIARBAnRqKgIAIRMCQCAGIA5PBEAgBCEDIBMgFF4NASAFIQMMAwsgByAGQQJ0aioCACIVIBNfBEAgBCEDIBMgFF4NASAFIQMMAwsgBiEDIBUiEyAUXg0AIAUhAwwCCyAAKAIcIAAoAgwgCGxBAnRqIgQgBUECdCIGaiAEIANBAnRqKAIANgIAIAYgB2ogEzgCACAAKAJMIAAoAjwgCGxqIgQgBWogAyAEai0AADoAACADQQF0IgRBAmohBiAEQQFyIgQgACgCBCIOSQ0ACyAAKAIkIAhsIQwgACgCNCELCyAAKAIMIAhsIQcgACgCHCEFCyADQQJ0IgQgBSAHQQJ0amogCTYCACALIAxBAnRqIARqIBQ4AgAgACgCTCAAKAI8IAhsaiADakExOgAAQQEhBAsgBCAKaiEKCyAPIAkgAnBGBEBBACEEAkAgFCAAKAI0IgsgACgCJCAJbCIMQQJ0aioCAGANACAAKAIcIQUgACgCDCIDIAlsIgcgAyAJQQFqbCIDRwRAIAUgA0ECdGohBiAFIAdBAnRqIQMDQCADKAIAIAhGDQIgA0EEaiIDIAZHDQALC0EBIQRBACEDQQIhBiAAKAIEIg5BAUsEQAJAA0AgAyEFIAAoAjQiCyAAKAIkIAlsIgxBAnRqIgcgBEECdGoqAgAhEwJAIAYgDk8EQCAEIQMgEyAUXg0BIAUhAwwDCyAHIAZBAnRqKgIAIhUgE18EQCAEIQMgEyAUXg0BIAUhAwwDCyAGIQMgFSITIBReDQAgBSEDDAILIAAoAhwgACgCDCAJbEECdGoiBCAFQQJ0IgZqIAQgA0ECdGooAgA2AgAgBiAHaiATOAIAIAAoAkwgACgCPCAJbGoiBCAFaiADIARqLQAAOgAAIANBAXQiBEECaiEGIARBAXIiBCAAKAIEIg5JDQALIAAoAiQgCWwhDCAAKAI0IQsLIAAoAgwgCWwhByAAKAIcIQULIANBAnQiBCAFIAdBAnRqaiAINgIAIAsgDEECdGogBGogFDgCACAAKAJMIAAoAjwgCWxqIANqQTE6AABBASEECyAEIApqIQoLIBIgDUEMaiINRw0BDAMLC0GjL0GZFUH9AkGrERAAAAtBmS9BmRVB/gJBqxEQAAALIBBBDGoiECARRw0ACwsgD0EBaiIPIAJHDQALCyAKC6sOAg9/BH4jAEEgayIQJAAgACgCACEIIARBAEoEQCAErSEXA0AgECAUIhVCAXwiFCADKQMAfDcDACAQIBQgAykDCHw3AwggECAUIAMpAxB8NwMQIBAgFCADKQMYfDcDGAJAIAhBAEwNAEEAIQogACgCBCIFQQBMDQADQCAKQQFqIRJBACERIAVBAEoEQANAAkAgACgCHCAAKAIMIApsQQJ0aiARQQJ0aigCACILQX9GDQAgACgCTCAAKAI8IApsaiARai0AACAKIARwrSEWIBAQTKchDEExRgRAAkAgFSAWUg0AIAEoAjQgASgCJCAKbEECdGoiCSgCACAMTA0AIAEoAhwiBSABKAIMIgYgCmwiB0ECdGohDSAGIBJsIgYgB0cEQCAFIAZBAnRqIQYgDSEFA0AgBSgCACALRg0CIAVBBGoiBSAGRw0ACwtBASEGQQAhBUECIQgCQCABKAIEIg9BAU0NAANAIAUhByAJIAZBAnRqKAIAIQ4CQCAIIA9PBEAgBiEFIAwgDkgNASAHIQUMAwsgCSAIQQJ0aigCACITIA5MBEAgBiEFIAwgDkgNASAHIQUMAwsgCCEFIAwgE0gNACAHIQUMAgsgDSAHQQJ0IgZqIA0gBUECdCIHaigCADYCACAGIAlqIAcgCWooAgA2AgAgBUEBdCIGQQJqIQggBkEBciIGIA9JDQALCyANIAVBAnQiBWogCzYCACAFIAlqIAw2AgALIBUgCyAEb61SDQEgASgCNCABKAIkIAtsQQJ0aiIJKAIAIAxMDQEgASgCHCIFIAEoAgwiBiALbCIHQQJ0aiENIAYgC0EBamwiBiAHRwRAIAUgBkECdGohBiANIQUDQCAFKAIAIApGDQMgBUEEaiIFIAZHDQALC0EBIQdBACEFQQIhBgJAIAEoAgQiDkEBTQ0AA0AgBSEIIAkgB0ECdGooAgAhCwJAIAYgDk8EQCAHIQUgCyAMSg0BIAghBQwDCyAJIAZBAnRqKAIAIg8gC0wEQCAHIQUgCyAMSg0BIAghBQwDCyAGIQUgDCAPSA0AIAghBQwCCyANIAhBAnQiBmogDSAFQQJ0IgdqKAIANgIAIAYgCWogByAJaigCADYCACAFQQF0IgdBAmohBiAHQQFyIgcgDkkNAAsLIA0gBUECdCIFaiAKNgIAIAUgCWogDDYCAAwBCwJAIBUgFlINACACKAI0IAIoAiQgCmxBAnRqIgkoAgAgDEwNACACKAIcIgUgAigCDCIGIApsIgdBAnRqIQ0gBiASbCIGIAdHBEAgBSAGQQJ0aiEGIA0hBQNAIAUoAgAgC0YNAiAFQQRqIgUgBkcNAAsLQQEhBkEAIQVBAiEIAkAgAigCBCIPQQFNDQADQCAFIQcgCSAGQQJ0aigCACEOAkAgCCAPTwRAIAYhBSAMIA5IDQEgByEFDAMLIAkgCEECdGooAgAiEyAOTARAIAYhBSAMIA5IDQEgByEFDAMLIAghBSAMIBNIDQAgByEFDAILIA0gB0ECdCIGaiANIAVBAnQiB2ooAgA2AgAgBiAJaiAHIAlqKAIANgIAIAVBAXQiBkECaiEIIAZBAXIiBiAPSQ0ACwsgDSAFQQJ0IgVqIAs2AgAgBSAJaiAMNgIACyAVIAsgBG+tUg0AIAIoAjQgAigCJCALbEECdGoiCSgCACAMTA0AIAIoAhwiBSACKAIMIgYgC2wiB0ECdGohDSAGIAtBAWpsIgYgB0cEQCAFIAZBAnRqIQYgDSEFA0AgBSgCACAKRg0CIAVBBGoiBSAGRw0ACwtBASEHQQAhBUECIQYCQCACKAIEIg5BAU0NAANAIAUhCCAJIAdBAnRqKAIAIQsCQCAGIA5PBEAgByEFIAsgDEoNASAIIQUMAwsgCSAGQQJ0aigCACIPIAtMBEAgByEFIAsgDEoNASAIIQUMAwsgBiEFIAwgD0gNACAIIQUMAgsgDSAIQQJ0IgZqIA0gBUECdCIHaigCADYCACAGIAlqIAcgCWooAgA2AgAgBUEBdCIHQQJqIQYgB0EBciIHIA5JDQALCyANIAVBAnQiBWogCjYCACAFIAlqIAw2AgALIBFBAWoiESAAKAIEIgVIDQALIAAoAgAhCAsgEiIKIAhIDQALCyAUIBdSDQALCwJAIAhFDQAgACgCBCIGRQ0AQQAhByAGIQoDQAJAIApFBEBBACEKDAELQQAhBSABKAIERQ0AA0ACQCABKAIEIgJFDQAgACgCHCAAKAIMIAdsQQJ0aiAFQQJ0aigCACEDIAEoAhwgASgCDCAHbEECdGohBEEAIQoDQCADIAQgCkECdGooAgBHBEAgAiAKQQFqIgpHDQEMAgsLIAAoAkwgACgCPCAHbGogBWpBMDoAACAAKAIEIQYLIAVBAWoiBSAGSQ0ACyAAKAIAIQggBiEKCyAHQQFqIgcgCEkNAAsLIBBBIGokAAvwAwIIfwJ9AkAgACgCNCIIIAAoAiQgAWwiBkECdGoqAgBDAAAAAF8NACAAKAIcIQQgACgCDCIDIAFsIgcgAyABQQFqbCIDRwRAIAQgA0ECdGohBSAEIAdBAnRqIQMDQCADKAIAIAJGDQIgA0EEaiIDIAVHDQALC0EAIQMgACgCBCIKQQJPBEBBAiEGQQEhBAJAA0AgAyEFIAAoAjQiCCAAKAIkIgcgAWxBAnRqIgkgBEECdGoqAgAhCwJAIAYgCk8EQCAEIQMgC0MAAAAAXg0BIAUhAwwDCyAJIAZBAnRqKgIAIgwgC18EQCAEIQMgC0MAAAAAXg0BIAUhAwwDCyAGIQMgDEMAAAAAXg0AIAUhAwwCCyAAKAIcIAAoAgwgAWxBAnRqIgQgBUECdCIGaiAEIANBAnQiB2ooAgA2AgAgBiAJaiAHIAlqKgIAOAIAIAUgACgCTCAAKAI8IAFsaiIEaiADIARqLQAAOgAAIANBAXQiBUECaiEGIAVBAXIiBCAAKAIEIgpJDQALIAAoAiQhByAAKAI0IQgLIAEgB2whBiAAKAIMIAFsIQcgACgCHCEECyADQQJ0IgUgBCAHQQJ0amogAjYCACAIIAZBAnRqIAVqQwAAAAA4AgAgACgCTCAAKAI8IAFsaiADakExOgAACwsHACAAKAIMC/MDAgZ/AnwjAEEQayIFJAAgASgCCCEEAkACQAJAAkAgASgCBCIHQQFGBEAgAysDACELIAEoAgAiA0EAIARBAEgbDQQgAigCBCEBIAIoAgAiAkEAIAFBAEgbDQQgASAERw0CAkAgBEUEQAwBCyAEQQBMDQQgAysDACACKwMAoiEKQQEhASAEQQFGDQAgBEEBayIGQQNxIQcgBEECa0EDTwRAIAZBfHEhCUEAIQYDQCAKIAMgAUEDdCIEaisDACACIARqKwMAoqAgAyAEQQhqIghqKwMAIAIgCGorAwCioCADIARBEGoiCGorAwAgAiAIaisDAKKgIAMgBEEYaiIEaisDACACIARqKwMAoqAhCiABQQRqIQEgBkEEaiIGIAlHDQALCyAHRQ0AQQAhBANAIAogAyABQQN0IgZqKwMAIAIgBmorAwCioCEKIAFBAWohASAEQQFqIgQgB0cNAAsLIAAoAgAiACALIAqiIAArAwCgOQMADAELIAMrAwAhCiACKAIAIQIgASgCACEBIAUgBzYCDCAFIAE2AgggBUEBNgIEIAUgAjYCACAHIAQgBUEIaiAFIAAoAgAgChA9CyAFQRBqJAAPC0HEOkHQG0HSAEGIDBAAAAtB+jpBshpBmwNBmQkQAAALQag0QeQhQbIBQaklEAAAC/4LAxh/AXwBeyMAQaACayIDJAACQAJAAkACQAJAAkACQCABKAIIIg0gACgCBEcNACAAKAIIIA1HDQAgASgCBCANSA0AIA1BAWsiEUEATgRAIA1BA3QhGSARIQUDQAJAIA0gBUF/cyIHaiIEQQBMDQAgBSACKAIETg0FIAEoAgwiDigCBCEGIAIoAgAgAigCDCgCBEEBaiAFbEEDdGorAwAhGyABKAIEIg9BAEhBACABKAIAIggbDQYgAyABKQIANwIMIAMgASgCCDYCFCAFIAEoAggiC04NByAHIA9qIglBAE4iB0EBIAgbRQ0GIAkgBUEBaiIMckEASA0IIAdFDQQgCyAEayILIARyQQBIDQggAyABKAIINgIwIAMgASkCADcDKCADIAEoAhg2AiAgAyABKQIQNwMYIANBQGsiFCABKAIYNgIAIAMgASkCEDcDOCAAKAIAIhBBACAAKAIIIgdBAEgbDQYgBSAAKAIETg0HIAcgBGsiEiAEckEASA0IIAggBSAGbEEDdGoiFSAMQQN0IhZqIRcgECAFIAdsQQN0aiIYIBJBA3RqIRAgBEEDdCIKBEAgEEEAIAr8CwALIANCgICAgICAgPg/NwNIIAMgBzYCnAIgAyASNgKYAiADIAc2ApACIANBADYCjAIgAyAFNgKIAiADIAA2AoQCIAMgBzYCgAIgAyAYNgL4ASADIAQ2AvQBIAMgEDYC7AEgAyAENgLAASADIAk2ArwBIAMgCCAWaiAGIAtsQQN0ajYCuAEgAyADKAIwNgLMASADIAMpAyg3AsQBIAMgDjYC0AEgAyADKAIgNgLcASADIAMpAxg3AtQBIAMgBjYC6AEgAyALNgLkASADIAw2AuABIAMgDzYCeCADIBU2AnQgAyAJNgJsIAMgFzYCaCADIBuaOQNgIAMgCTYCXCADIAP9AAII/QsCfCADIA42AowBIAMgFCgCADYCmAEgAyADKQM4NwOQASADIAY2ArABIAMgDDYCqAEgAyAGNgKkASADIAU2AqABIANBADYCnAEgA0G4AWogA0HQAGogA0HsAWogA0HIAGoQ7AMgBSARTg0AIAUgACgCBCIUTg0JIAAoAgAiDCAAKAIIIgkgBWxBA3RqIRIgDCAJIBlsaiEQQQAhCEEAIAlBA3QiBGshFSAEQXhzIRYgDCAJIA0gE2tBA3RsIhdqIRggESEHA0AgCSARTA0KIBEgFE4NCiASIAdBA3QiBGoiBiAGKwMAIhsgBCAMIAcgCWxBA3RqIgRqKwMAojkDAAJAIA0gB0F/c2oiC0EATA0AIAcgACgCBE4NCSAJIAtrIgYgC3JBAEgNCiAEIAZBA3QiBmohDiAGIBJqIQ9BACEEAkAgCEECSQ0AIBAgCCAWbGogGEkEfyAMIBcgCEEDdGtqIBAgCCAVbGpJBUEACw0AIAhBfnEhBCAb/RQhHEEAIQYDQCAPIAZBA3QiCmoiGiAcIAogDmr9AAMA/fIBIBr9AAMA/fAB/QsDACAGQQJqIgYgBEcNAAsgBCAIRg0BCyAEQQFyIQYgCEEBcQRAIA8gBEEDdCIEaiIKIBsgBCAOaisDAKIgCisDAKA5AwAgBiEECyAGIAhGDQADQCAPIARBA3QiBmoiCiAbIAYgDmorAwCiIAorAwCgOQMAIA8gBkEIaiIGaiIKIBsgBiAOaisDAKIgCisDAKA5AwAgBEECaiIEIAtHDQALCyAIQQFqIQggB0EBayIHIAVKDQALCyAFIAIoAgRODQQgBSAAKAIETg0IIAUgACgCCCIETg0IIAAoAgAgBCAFbEEDdGogBUEDdGogAigCACACKAIMKAIEQQFqIAVsQQN0aisDADkDACATQQFqIRMgBUEASiAFQQFrIQUNAAsLIANBoAJqJAAPC0HvEUGKHUE2QaITEAAAC0GxMkH2HUHKAEHNFRAAAAtB2zpBsSFBtQFBlDoQAAALQag0QeQhQbIBQaklEAAAC0HSNUGCIEH6AEHKGRAAAAtB9Q9BgiBBkwFByhkQAAALQd85QbEhQe8CQZQ6EAAAC9wYAxp/AXwBeyMAQaACayIEJAACQAJAAkACQAJAAkACQCABKAIEIhggACgCBEcNACAAKAIIIBhHDQAgASgCCCAYSA0AIBhBAWsiGUEATgRAIBhBA3QhHCAZIQwDQAJAIBggDEF/cyIHaiIGQQBMDQAgDCACKAIETg0FIAIoAgAgAigCDCgCBEEBaiAMbEEDdGorAwAhHSABKAIIIhNBAEhBACABKAIAIgkbDQkgBCABKQIANwIMIAQgASgCCDYCFCAMIAEoAgQiA04NBiABKAIMIhUoAgQhFiAHIBNqIghBAE4iB0EBIAkbRQ0JIAggDEEBaiINckEASA0HIAdFDQQgAyAGayIDIAZyQQBIDQcgBCABKAIINgIwIAQgASkCADcDKCAEIAEoAhg2AiAgBCABKQIQNwMYIARBQGsiDyABKAIYNgIAIAQgASkCEDcDOCAAKAIAIgtBACAAKAIIIgdBAEgbDQkgDCAAKAIETg0GIAcgBmsiCiAGckEASA0HIAkgDEEDdGoiESANIBZsQQN0IhJqIQ4gCyAHIAxsQQN0aiIFIApBA3RqIQsgBkEDdCIUBEAgC0EAIBT8CwALIARCgICAgICAgPg/NwNIIAQgBzYCnAIgBCAKNgKYAiAEIAc2ApACIARBADYCjAIgBCAMNgKIAiAEIAA2AoQCIAQgBzYCgAIgBCAFNgL4ASAEIAY2AvQBIAQgCzYC7AEgBCAGNgLAASAEIAg2ArwBIAQgCSADQQN0aiASajYCuAEgBCAEKAIwNgLMASAEIAQpAyg3AsQBIAQgFTYC0AEgBCAEKAIgNgLcASAEIAQpAxg3AtQBIAQgFjYC6AEgBCADNgLkASAEIA02AuABIAQgEzYCeCAEIBE2AnQgBCAINgJsIAQgDjYCaCAEIB2aOQNgIAQgCDYCXCAEIAT9AAII/QsCfCAEIBU2AowBIAQgDygCADYCmAEgBCAEKQM4NwOQASAEQQE2ArABIAQgDTYCqAEgBEEBNgKkASAEIAw2AqABIARBADYCnAEjAEEQayIKJAAgBCgCjAEhCSAEKAJoIQggBCgC0AEhDSAEKALAASEWIAQoArwBIRMgBCgCuAEhFSAKIAQrA2AgBCsDSKI5AwgCQCAEKAL0ASIUQYCAgIACSQRAAkBBACEHIAQoAuwBIgZFBEAgFEEDdCEGAkAgFEGAgAFNBEAgCiAGQR5qQXBxayIHJAAMAQsgBkEQahAWIgZFDQIgBkFwcSIHIAY2AgwgB0EQaiEHCyAHIQYLIA0oAgQhEiAJKAIEIRFBACELIwBBEGsiDyQAAkACQCAVQQAgEyAWIBMgFkgbIg0gE3JBAEgbRQRAIBNBAE4EQCAWQQBIDQIgDUEASgRAIA0hCQNAAkAgDSALayIaQQBMDQAgBiALQQN0Ig5qIgMgCisDCCAIIAsgEWxBA3RqKwMAoiADKwMAoDkDACAJQQFMDQAgAyAKKwMIIAggC0EBciIFIBFsQQN0aiIQKwMAoiAOIBVqIg4gBSASbEEDdGorAwCiIAMrAwCgOQMAIAYgBUEDdGoiBSAKKwMIIBArAwCiIAUrAwCgOQMAIAlBAkYNACADIAorAwggCCALQQJyIgUgEWxBA3RqIhArAwCiIh0gDiAFIBJsQQN0aiIXKwMAoiADKwMAoDkDACADIB0gFysDCKIgAysDCKA5AwggBiAFQQN0aiIFIAorAwggECsDAKIgBSsDAKA5AwAgCUEDRg0AIAMgCisDCCAIIAtBA3IiBSARbEEDdGoiFysDAKIiHSAOIAUgEmxBA3RqIhArAwCiIAMrAwCgOQMAIAMgHSAQKwMIoiADKwMIoDkDCCADIB0gECsDEKIgAysDEKA5AxAgBiAFQQN0aiIFIAorAwggFysDAKIgBSsDAKA5AwAgCUEERg0AIAMgCisDCCAIIAtBBHIiECARbEEDdGoiFysDAKIiHSAOIBAgEmxBA3RqIgUrAwCiIAMrAwCgOQMAIAMgHSAFKwMIoiADKwMIoDkDCCADIB0gBSsDEKIgAysDEKA5AxAgAyAdIAUrAxiiIAMrAxigOQMYIAYgEEEDdGoiBSAKKwMIIBcrAwCiIAUrAwCgOQMAIAlBBUYNACADIAorAwggCCALQQVyIhAgEWxBA3RqIhcrAwCiIh0gDiAQIBJsQQN0aiIFKwMAoiADKwMAoDkDACADIB0gBSsDCKIgAysDCKA5AwggAyAdIAUrAxCiIAMrAxCgOQMQIAMgHSAFKwMYoiADKwMYoDkDGCADIB0gBSsDIKIgAysDIKA5AyAgBiAQQQN0aiIFIAorAwggFysDAKIgBSsDAKA5AwAgCUEGRg0AIAMgCisDCCAIIAtBBnIiECARbEEDdGoiFysDAKIiHSAOIBAgEmxBA3RqIgUrAwCiIAMrAwCgOQMAIAMgHSAFKwMIoiADKwMIoDkDCCADIB0gBSsDEKIgAysDEKA5AxAgAyAdIAUrAxiiIAMrAxigOQMYIAMgHSAFKwMgoiADKwMgoDkDICADIB0gBSsDKKIgAysDKKA5AyggBiAQQQN0aiIFIAorAwggFysDAKIgBSsDAKA5AwAgCUEHRg0AIAMgCisDCCAIIAtBB3IiBSARbEEDdGoiECsDAKIiHSAOIAUgEmxBA3RqIg4rAwCiIAMrAwCgOQMAIAMgHSAOKwMIoiADKwMIoDkDCCADIB0gDisDEKIgAysDEKA5AxAgAyAdIA4rAxiiIAMrAxigOQMYIAMgHSAOKwMgoiADKwMgoDkDICADIB0gDisDKKIgAysDKKA5AyggAyAdIA4rAzCiIAMrAzCgOQMwIAYgBUEDdGoiAyAKKwMIIBArAwCiIAMrAwCgOQMACyALBEAgDyASNgIMIA8gFSALIBJsQQN0ajYCCCAPIBE2AgQgDyAIIAsgEWxBA3RqNgIAIAtBCCAaIBpBCE4bIA9BCGogDyAGIAorAwgQPQsgCUEIayEJIAtBCGoiCyANSA0ACwsgEyAWSgRAIA8gEjYCDCAPIBUgDSASbEEDdGo2AgggDyARNgIEIA8gCCANIBFsQQN0ajYCACANIBMgDWsgD0EIaiAPIAYgCisDCBA9CyAPQRBqJAAMAwsMAQsMDgtBjC9B5CFBpgFBqSUQAAALAkAgFEGBgAFJDQAgB0UNACAHQQRrKAIAEBELIApBEGokAAwCCwtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALIAwgGU4NACAMIAAoAgQiD04NCCAAKAIAIhMgACgCCCINIAxsQQN0aiEKIBMgDSAcbGohC0EAIQlBACANQQN0IgZrIREgBkF4cyESIBMgDSAYIBtrQQN0bCIOaiEFIBkhBgNAIA0gGUwNCSAPIBlMDQkgCiAGQQN0IgdqIgggCCsDACIdIAcgEyAGIA1sQQN0aiIIaisDAKI5AwACQCAYIAZBf3NqIgNBAEwNACAGIAAoAgRODQggDSADayIHIANyQQBIDQkgCCAHQQN0IgdqIRUgByAKaiEWQQAhBwJAIAlBAkkNACALIAkgEmxqIAVJBH8gEyAOIAlBA3RraiALIAkgEWxqSQVBAAsNACAJQX5xIQcgHf0UIR5BACEIA0AgFiAIQQN0IhRqIhogHiAUIBVq/QADAP3yASAa/QADAP3wAf0LAwAgCEECaiIIIAdHDQALIAcgCUYNAQsgB0EBciEIIAlBAXEEQCAWIAdBA3QiB2oiFCAdIAcgFWorAwCiIBQrAwCgOQMAIAghBwsgCCAJRg0AA0AgFiAHQQN0IghqIhQgHSAIIBVqKwMAoiAUKwMAoDkDACAWIAhBCGoiCGoiFCAdIAggFWorAwCiIBQrAwCgOQMAIAdBAmoiByADRw0ACwsgCUEBaiEJIAZBAWsiBiAMSg0ACwsgDCACKAIETg0EIAwgACgCBE4NByAMIAAoAggiBk4NByAAKAIAIAYgDGxBA3RqIAxBA3RqIAIoAgAgAigCDCgCBEEBaiAMbEEDdGorAwA5AwAgG0EBaiEbIAxBAEogDEEBayEMDQALCyAEQaACaiQADwtB7xFBih1BNkGiExAAAAtBsTJB9h1BygBBzRUQAAALQds6QbEhQbUBQZQ6EAAAC0HSNUGCIEH6AEHKGRAAAAtB9Q9BgiBBkwFByhkQAAALQd85QbEhQe8CQZQ6EAAAC0GoNEHkIUGyAUGpJRAAAAvrHAMSfwJ8AX4jAEGQAWsiBiQAIAAoAgQhAyAAKAIIIQQCQAJAAkACQAJAAkACQAJAIAIoAgQiBUEATA0AIAMgBWogBGpBE0oNACABKAIIIgUgAikCACIXQiCIp0cNAiACKAIIIQcgASgCACEIIAEoAgQhCSAGIAU2AiggBiAJNgIkIAYgCDYCICAGIAEoAhQ2AjQgBiABKQIMNwIsIAYgASgCJDYCRCAGIAEpAhw3AjwgBiAHNgJQIAYgFzcCSCAGIAIoAhQ2AlwgBiACKQIMNwJUIAYgAigCJDYCbCAGIAIpAhw3AmQgBiAINgJwIAYgFz4CfCAGIAYoAjA2AnggBiAFNgKIASAGIAYoAlg2AoQBIAMgCUcNAyAEIAdHDQMgBiAAKAIANgIUIAYgACgCGCgCBDYCHCAGIAA2AhAgBiAGQQNqNgIMIAYgBkEgajYCCCAGIAZBFGo2AgRBACEDAkAgBigCECIAKAIIIgVBAEwNACAAKAIEIgdBAEwNACAGKAIIIgAoAgghBCAGKAIEIgEoAgghCCABKAIAIQkgACgCACIOQQAgBEEASBsNCAJAAkAgBEUEQEEAIQIDQCAJIAIgCGxBA3RqIQNBACEBA0AgASAAKAIETg0EIAAoAihBACAAKAIsIgRBAEgbDQ0gAiAAKAIwTg0EIAQNAyADIAFBA3RqQgA3AwAgAUEBaiIBIAdHDQALIAJBAWoiAiAFRw0ACwwDCyAEQQBKBEAgBEEBRgRAQQAhAgNAIAkgAiAIbEEDdGohA0EAIQEDQCABIAAoAgRODQUgACgCOCEEIAAoAigiC0EAIAAoAiwiCkEASBsNDiACIAAoAjBODQUgCkEBRw0EIAMgAUEDdCIKaiAKIA5qKwMAIAsgAiAEbEEDdGorAwCiOQMAIAFBAWoiASAHRw0ACyACQQFqIgIgBUcNAAsMBAsgBEEBayIBQX5xIRAgAUEBcSENIARBAkYhEQNAIAkgAyAIbEEDdGohEkEAIQIDQCACIAAoAgRODQQgACgCECELIAAoAjghASAAKAIoIgxBACAAKAIsIgpBAEgbDQ0gAyAAKAIwTg0EIAQgCkcNAyAOIAJBA3QiE2oiCisDACAMIAEgA2xBA3RqIgwrAwCiIRVBACEPQQEhASARRQRAA0AgFSAKIAEgC2xBA3RqKwMAIAwgAUEDdGorAwCioCAKIAFBAWoiFCALbEEDdGorAwAgDCAUQQN0aisDAKKgIRUgAUECaiEBIA9BAmoiDyAQRw0ACwsgEiATaiANBHwgFSAKIAEgC2xBA3RqKwMAIAwgAUEDdGorAwCioAUgFQs5AwAgAkEBaiICIAdHDQALIANBAWoiAyAFRw0ACwwDCyAAKAIEQQBMDQEgACgCKEEAIAAoAiwiAUEASBsNCiAAKAIwQQBMDQEgASAERw0ADAgLQfE4QcUdQfQAQb8VEAAAC0HSNUGCIEH6AEHKGRAAAAsMAQsgAyAEckEASA0DAkAgA0EATA0AIARBAEwNACAAKAIAIQcgA0EDdCEFIAAoAhgoAgRBA3QhCEEAIQMgBEEETwRAIARB/P///wdxIQoDQCAFRSIJRQRAIAcgAyAIbGpBACAF/AsACyAJRQRAIAcgCCADQQFybGpBACAF/AsACyAJRQRAIAcgCCADQQJybGpBACAF/AsACyAJRQRAIAcgCCADQQNybGpBACAF/AsACyADQQRqIQMgC0EEaiILIApHDQALCyAEQQNxIgRFDQADQCAFBEAgByADIAhsakEAIAX8CwALIANBAWohAyAMQQFqIgwgBEcNAAsLIAZCgICAgICAgPg/NwMgIwBBkAFrIgMkAAJAAkAgACgCBCIEIAEoAgRHDQAgACgCCCIFIAIoAghHDQACQCAFRQ0AIARFDQAgASgCCCIHRQ0AIAVBAUYEQCADIAAoAgAiBTYCQCADIAQ2AkQgBEEASEEAIAUbDQogAyAAKAIwNgJ8IAMgAP0AAiD9CwJsIAMgACkCGCIXNwJkIAMgACkCEDcCXCADIAD9AAIA/QsCTCADQgA3AoABIAMgF6coAgQ2AogBIAIoAgAhACADIAIoAgQiBDYCBCADIAA2AgAgAEEAIARBAEgbDQogAyACKAIINgIUIAMgAikCADcCDCADIAIoAhQ2AiAgAyACKQIMNwIYIAMgAigCJDYCMCACKQIcIRcgA0IANwI0IAMgAygCHDYCPCADIBc3AiggA0FAayEIIwBBEGsiACQAAkAgASgCBCICQQFGBEAgBisDICEWIAEoAgAiBEEAIAEoAggiAkEASBsNDCABKAIQIQcgAygCACIFQQAgAygCBCIBQQBIGw0MIAEgAkcNCwJAIAJFDQAgAkEATA0LIAQrAwAgBSsDAKIhFUEBIQEgAkEBRg0AIAJBAWsiCUEBcSACQQJHBEAgCUF+cSEJQQAhAgNAIBUgBCABIAdsQQN0aisDACAFIAFBA3RqKwMAoqAgBCABQQFqIgogB2xBA3RqKwMAIAUgCkEDdGorAwCioCEVIAFBAmohASACQQJqIgIgCUcNAAsLRQ0AIBUgBCABIAdsQQN0aisDACAFIAFBA3RqKwMAoqAhFQsgCCgCACIBIBYgFaIgASsDAKA5AwAMAQsgBisDICEVIAEoAgghBCADKAIAIQUgASgCACEHIAAgASgCEDYCDCAAIAc2AgggAEEBNgIEIAAgBTYCACACIAQgAEEIaiAAIAgoAgAgFRA9CyAAQRBqJAAMAQsgBEEBRgRAIAMgACgCACIENgJAIAMgBTYCSCAFQQBIQQAgBBsNCiADIAAoAjA2AnwgAyAA/QACIP0LAmwgAyAA/QACEP0LAlwgAyAA/QACAP0LAkwgA0EBNgKIASADQgA3AoABIAMgASgCACIANgIAIAMgBzYCCCAHQQBIQQAgABsNCiADIAEoAgg2AhQgAyABKQIANwIMIAMgASgCFDYCICADIAEpAgw3AhggAyABKAIkNgIwIAEpAhwhFyADQgA3AjQgA0EBNgI8IAMgFzcCKCADQUBrIQlBACEKQQAhCyMAQcABayIEJAACQCACKAIIQQFGBEAgBisDICEWIAMoAgAiBUEAIAMoAggiAUEASBsNDCADKAIcIQggAigCACIHQQAgAigCBCIAQQBIGw0MIAAgAUcNCwJAIAFFDQAgAUEATA0LIAUrAwAgBysDAKIhFUEBIQAgAUEBRg0AIAFBAWsiAkEBcSABQQJHBEAgAkF+cSEBA0AgFSAFIAAgCGxBA3RqKwMAIAcgAEEDdGorAwCioCAFIABBAWoiAiAIbEEDdGorAwAgByACQQN0aisDAKKgIRUgAEECaiEAIApBAmoiCiABRw0ACwtFDQAgFSAFIAAgCGxBA3RqKwMAIAcgAEEDdGorAwCioCEVCyAJKAIAIgAgFiAVoiAAKwMAoDkDAAwBCyAEQfQAaiAJQcwA/AoAACAEIAIoAgg2AlAgBCACKQIANwNIIAQgAigCFDYCXCAEIAIpAgw3AlQgBCACKAIkNgJsIAQgAikCHDcCZCAEIAMoAgg2AhAgBCADKQIANwMIIAQgAygCFDYCHCAEIAMpAgw3AhQgBCADKAIgNgIoIAQgAykCGDcDICAEIAMoAjA2AjggBCADKQIoNwMwIAQgAygCPDYCRCAEIAMpAjQ3AjwjAEEQayIHJAACQAJAAkACQCAEKAIQIgVBgICAgAJJBEAgBisDICEVIAQoAiQhCSAEKAIIIQggBCgCWCEMIAQoAlAhDiAEKAJMIQ8gBCgCSCEQIAVBA3QhACAFQYGAAU8EQCAAQRBqEBYiAEUNBCAAQXBxIgEgADYCDCABQRBqIQIMAgsgByAAQR5qQXBxayICJAAgBQ0BDAILDAILIAVBgIABSyELQQAhAQJAIAVBBkkNACAJQQFHDQAgAiAIa0EQSQ0AIAVB/v///wFxIQFBACEAA0AgAiAAQQN0Ig1qIAggDWr9AAMA/QsDACAAQQJqIgAgAUcNAAsgASAFRg0BCyAFIAEiAGtBA3EiDQRAA0AgAiAAQQN0aiAIIAAgCWxBA3RqKwMAOQMAIABBAWohACAKQQFqIgogDUcNAAsLIAEgBWtBfEsNAANAIAIgAEEDdGogCCAAIAlsQQN0aisDADkDACACIABBAWoiAUEDdGogCCABIAlsQQN0aisDADkDACACIABBAmoiAUEDdGogCCABIAlsQQN0aisDADkDACACIABBA2oiAUEDdGogCCABIAlsQQN0aisDADkDACAAQQRqIgAgBUcNAAsLIAcgDDYCDCAHIBA2AgggB0EBNgIEIAcgAjYCAAJAIAQoAnQiAARAIAQoAnxBAEgNAQsgDiAPIAdBCGogByAAIAQoApgBKAIEIBUQTyALBEAgAkEEaygCABARCyAHQRBqJAAMAgsMDQtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALCyAEQcABaiQADAELIAYrAyAhFSADIAc2AlAgAyAFNgJMIAMgBDYCSCADQgA3A0AgA0HQAGogA0HIAGogA0HMAGoQfSADIAMoAlAiBCADKAJIbDYCVCADIAQgAygCTGw2AlggASgCBCACKAIIIAEoAgggASgCACABKAIQIAIoAgAgAigCECAAKAIAIAAoAhgoAgQgFSADQUBrEJQBIAMoAkAiAARAIABBBGsoAgAQEQsgAygCRCIARQ0AIABBBGsoAgAQEQsgA0GQAWokAAwBC0G8OEHbGkHWA0H3FRAAAAsLIAZBkAFqJAAPC0G+O0H3G0HiAEGQDRAAAAtB88UAQY8iQYYCQd8kEAAAC0GxMkH2HUHKAEHNFRAAAAtB+jpBshpBmwNBmQkQAAALQcQ6QdAbQdIAQYgMEAAAC0GoNEHkIUGyAUGpJRAAAAuFBQMPfwF8AXsCQCAAKAIEIgMgACgCCCIBQQJtIglyIgRBAEhBACAAKAIAIgUbRQRAIAEgBHJBAEgNASADQQBIDQEgASAJayIEIAlyQQBIDQECQCABQQJIDQAgA0UNACAFIAAoAgwoAgQiBiAEbCIAQQN0aiENIANB/v///wdxIQQgBSAFIABBA3RqIANBA3RqSQR/IAUgBiABQQN0QQhrbGogBSAGIAlBAWtsIANqQQN0akkFQQALIAZBgICAgAFxQRx2ckEAIAZBA3RrQQBIciADQQRJckEBcSEOA0AgBSAGIAtsQQN0aiEHIA0gCSALQX9zaiAGbEEDdGohCEEAIQBBACEBAkAgDkUEQANAIAcgAEEDdCIBaiIC/QADACERIAIgASAIaiIB/QADAP0LAwAgASAR/QsDACAAQQJqIgAgBEcNAAsgBCIBIANGDQELQQAhAiADIAEiAGtBA3EiCgRAA0AgByAAQQN0IgxqIg8rAwAhECAPIAggDGoiDCsDADkDACAMIBA5AwAgAEEBaiEAIAJBAWoiAiAKRw0ACwsgASADa0F8Sw0AA0AgByAAQQN0IgFqIgIrAwAhECACIAEgCGoiAisDADkDACACIBA5AwAgByABQQhqIgJqIgorAwAhECAKIAIgCGoiAisDADkDACACIBA5AwAgByABQRBqIgJqIgorAwAhECAKIAIgCGoiAisDADkDACACIBA5AwAgByABQRhqIgFqIgIrAwAhECACIAEgCGoiASsDADkDACABIBA5AwAgAEEEaiIAIANHDQALCyALQQFqIgsgCUcNAAsLDwtBqDRB5CFBsgFBqSUQAAALQfUPQYIgQZMBQcoZEAAAC84DAgZ/AnwjAEEQayIGJAACQAJAAkACQCABKAIEIgRBAUYEQCADKwMAIQsgASgCACIDQQAgASgCCCIEQQBIGw0EIAIoAgQhBSABKAIMIQcgAigCACICQQAgBUEASBsNBCAEIAVHDQICQCAERQRADAELIARBAEwNBCADKwMAIAIrAwCiIQpBASEBIARBAUYNACAHKAIMIQUgBEEBayIHQQFxIARBAkcEQCAHQX5xIQdBACEEA0AgCiADIAEgBWxBA3RqKwMAIAIgAUEDdGorAwCioCADIAFBAWoiCSAFbEEDdGorAwAgAiAJQQN0aisDAKKgIQogAUECaiEBIARBAmoiBCAHRw0ACwtFDQAgCiADIAEgBWxBA3RqKwMAIAIgAUEDdGorAwCioCEKCyAAKAIAIgAgCyAKoiAAKwMAoDkDAAwBCyADKwMAIQogASgCCCEDIAEoAgAhBSAGIAEoAgwoAgw2AgwgBiAFNgIIIAIoAgAhASAGQQE2AgQgBiABNgIAIAQgAyAGQQhqIAYgACgCACAKED0LIAZBEGokAA8LQcQ6QdAbQdIAQYgMEAAAC0H6OkGyGkGbA0GZCRAAAAtBqDRB5CFBsgFBqSUQAAALyBUCHX8KfCMAQRBrIhEkACABKAIYIRIgACgCGCETIAAoAgghECAAKAIEIRQgACgCACEbIAEoAhwhGiARIAErAxAgAysDAKI5AwggGkGAgICAAkkEQAJAQQAhASASRQRAIBpBA3QhAAJAIBpBgIABTQRAIBEgAEEeakFwcWsiASQADAELIABBEGoQFiIARQ0CIABBcHEiASAANgIMIAFBEGohAQsgASESCyATKAIEIRwgAigCACEdIwBBEGsiAyQAAkACQAJAIBtBACAUIBAgECAUShsiEyAUckEASBtFBEAgFEEASA0CIBBBAEgNAiATQQBKBEAgEyEQA0BBCCATIBVrIgAgAEEIThshBCAAQQBKBEBBAUEIIBAgEEEIThsiACAAQQFMGyEKIABBA2shCyAAQQJrIQ1BACEFA0AgBSAVaiEAAkAgBCAFQX9zaiICQQBMBEAgACECDAELIAAgFCACa04NBiAAQQFqQQN0IgcgGyAAIBxsQQN0amoiCCsDACAHIBJqIgcrAwCiISECQCACQQFGDQAgDSAFayIGQQNxIQ5BASECIAsgBWtBA08EQCAGQXxxIQ9BACEJA0AgISAIIAJBA3QiBmorAwAgBiAHaisDAKKgIAggBkEIaiIMaisDACAHIAxqKwMAoqAgCCAGQRBqIgxqKwMAIAcgDGorAwCioCAIIAZBGGoiBmorAwAgBiAHaisDAKKgISEgAkEEaiECIAlBBGoiCSAPRw0ACwtBACEGIA5FDQADQCAhIAggAkEDdCIJaisDACAHIAlqKwMAoqAhISACQQFqIQIgBkEBaiIGIA5HDQALCyAdIAAiAkEDdGoiCCARKwMIICGiIAgrAwCgOQMACyAdIAJBA3RqIgIgESsDCCASIABBA3RqKwMAoiACKwMAoDkDACAFQQFqIgUgCkcNAAsLIBQgBCAVaiICayIAQQBKBEAgAyAcNgIMIAMgGyACQQN0IgJqIBUgHGxBA3RqNgIIIANBATYCBCADIAIgEmo2AgAgHSAVQQN0aiEIIBErAwghI0EAIQUgBCICQQNrIQkgAygCCCEOAkAgAygCDCIHQQN0QYD6AUsNACAEQQhIDQAgBEEHayEKIAMoAgQhCyADKAIAIQ0gAEEATCEPA0ACQCAPBEBEAAAAAAAAAAAhIkQAAAAAAAAAACEhRAAAAAAAAAAAISREAAAAAAAAAAAhJUQAAAAAAAAAACEnRAAAAAAAAAAAIShEAAAAAAAAAAAhKUQAAAAAAAAAACEqDAELRAAAAAAAAAAAISJBACEGIAVBB3IgB2xBA3QhDCAFQQZyIAdsQQN0IRYgBUEFciAHbEEDdCEXIAVBBHIgB2xBA3QhGCAFQQNyIAdsQQN0IRkgBUECciAHbEEDdCEeIAVBAXIgB2xBA3QhHyAFIAdsQQN0ISBEAAAAAAAAAAAhIUQAAAAAAAAAACEkRAAAAAAAAAAAISVEAAAAAAAAAAAhJ0QAAAAAAAAAACEoRAAAAAAAAAAAISlEAAAAAAAAAAAhKgNAICogDSAGIAtsQQN0aisDACImIA4gBkEDdGoiBCAMaisDAKKgISogKSAmIAQgFmorAwCioCEpICggJiAEIBdqKwMAoqAhKCAnICYgBCAYaisDAKKgIScgJSAmIAQgGWorAwCioCElICQgJiAEIB5qKwMAoqAhJCAhICYgBCAfaisDAKKgISEgIiAmIAQgIGorAwCioCEiIAZBAWoiBiAARw0ACwsgCCAFQQN0aiIEICMgIqIgBCsDAKA5AwAgCCAFQQFyQQN0aiIEICMgIaIgBCsDAKA5AwAgCCAFQQJyQQN0aiIEICMgJKIgBCsDAKA5AwAgCCAFQQNyQQN0aiIEICMgJaIgBCsDAKA5AwAgCCAFQQRyQQN0aiIEICMgJ6IgBCsDAKA5AwAgCCAFQQVyQQN0aiIEICMgKKIgBCsDAKA5AwAgCCAFQQZyQQN0aiIEICMgKaIgBCsDAKA5AwAgCCAFQQdyQQN0aiIEICMgKqIgBCsDAKA5AwAgCiAFQQhqIgVKDQALCyAFIAlIBEAgAygCBCEKIAMoAgAhCyAAQQBMIQ0DQAJAIA0EQEQAAAAAAAAAACEiRAAAAAAAAAAAISFEAAAAAAAAAAAhJEQAAAAAAAAAACElDAELRAAAAAAAAAAAISJBACEEIAVBA2ogB2xBA3QhDyAFQQJqIAdsQQN0IQwgBUEBaiAHbEEDdCEWIAUgB2xBA3QhF0QAAAAAAAAAACEhRAAAAAAAAAAAISREAAAAAAAAAAAhJQNAICUgCyAEIApsQQN0aisDACImIA4gBEEDdGoiBiAPaisDAKKgISUgJCAmIAYgDGorAwCioCEkICEgJiAGIBZqKwMAoqAhISAiICYgBiAXaisDAKKgISIgBEEBaiIEIABHDQALCyAIIAVBA3RqIgQgIyAioiAEKwMAoDkDACAIIAVBAWpBA3RqIgQgIyAhoiAEKwMAoDkDACAIIAVBAmpBA3RqIgQgIyAkoiAEKwMAoDkDACAIIAVBA2pBA3RqIgQgIyAloiAEKwMAoDkDACAFQQRqIgUgCUgNAAsLIAJBAWsiDyAFSgRAIABB/v///wdxIQwgAEEBcSEWIAMoAgQhCSADKAIAIQoDQAJAIABBAEwEQEQAAAAAAAAAACEhRAAAAAAAAAAAISIMAQsgBSAHbCELIAVBAWogB2whDUQAAAAAAAAAACEhQQAhBEQAAAAAAAAAACEiQQAhBiAAQQFHBEADQCAhIAogBCAJbEEDdGorAwAiJCAOIARBA3RqIhcgDUEDdCIYaisDAKKgIAogCSAEQQFyIhlsQQN0aisDACIlIBggDiAZQQN0aiIZaisDAKKgISEgIiAkIBcgC0EDdCIYaisDAKKgICUgGCAZaisDAKKgISIgBEECaiEEIAZBAmoiBiAMRw0ACwsgFkUNACAhIAogBCAJbEEDdGorAwAiJCAOIARBA3RqIgQgDUEDdGorAwCioCEhICIgJCAEIAtBA3RqKwMAoqAhIgsgCCAFQQN0aiIEICMgIqIgBCsDAKA5AwAgCCAFQQFqQQN0aiIEICMgIaIgBCsDAKA5AwAgBUECaiIFIA9IDQALCyACIAVKBEAgAEH+////B3EhDSAAQQFxIQ8gAygCBCEGIAMoAgAhCQNAAkAgAEEATARARAAAAAAAAAAAISEMAQsgDiAFIAdsQQN0aiEKRAAAAAAAAAAAISFBACEEQQAhCyAAQQFHBEADQCAhIAkgBCAGbEEDdGorAwAgCiAEQQN0aisDAKKgIAkgBiAEQQFyIgxsQQN0aisDACAKIAxBA3RqKwMAoqAhISAEQQJqIQQgC0ECaiILIA1HDQALCyAPRQ0AICEgCSAEIAZsQQN0aisDACAKIARBA3RqKwMAoqAhIQsgCCAFQQN0aiIEICMgIaIgBCsDAKA5AwAgBUEBaiIFIAJHDQALCwsgEEEIayEQIBVBCGoiFSATSA0ACwsgA0EQaiQADAMLQag0QeQhQbIBQaklEAAAC0H1D0GCIEGTAUHKGRAAAAtBjC9B5CFBpgFBqSUQAAALAkAgGkGBgAFJDQAgAUUNACABQQRrKAIAEBELIBFBEGokAA8LC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAuVDAEpfyMAQTBrIgUkACAFIAMrAwA5AyAgASgCCCEDIAEoAgQhByAFIAIoAggiDDYCDCAFIAc2AgggBUIANwMAIAUgByADIAMgB0obIgg2AhAgBSAMNgIsIAVBEGogBUEIaiAFQSxqEJUBIAUgBSgCECIDIAUoAghsNgIUIAUgAyAFKAIMbDYCGCABKAIAIRcgASgCDCgCBCEQIAIoAgAhIyACKAIEISQgACgCACEYIAAoAgwoAgQhGSMAQZAEayIBIQQgASQAAkACQCAFKAIIIgAgByAAIAdIGyIaIAUoAhAiCWwiG0GAgICAAk8NACAFKAIAIgNFBEAgG0EDdCECAkAgG0GAgAFNBEAgASACQR5qQXBxayIRIgEkAAwBCyACQRBqEBYiAkUNAiACQXBxIgMgAjYCDCADQRBqIRELIBEhAwsgCSAMbCIcQYCAgIACTw0AIAUoAgQiDUUEQCAcQQN0IQICQCAcQYCAAU0EQCABIAJBHmpBcHFrIhQkAAwBCyACQRBqEBYiAUUNAiABQXBxIgIgATYCDCACQRBqIRQLIBQhDQsgBEEYaiIdQQBB8AP8CwAgBEKAgICAgICA+D83A4gEIARCgICAgICAgPg/NwPAAyAEQoCAgICAgID4PzcD+AIgBEKAgICAgICA+D83A7ACIARCgICAgICAgPg/NwPoASAEQoCAgICAgID4PzcDoAEgBEKAgICAgICA+D83A1ggBEKAgICAgICA+D83AxAgCCAHIAcgCEobIgFBAEoEQCAAIAkgACAJSBsiACAHIAAgB0gbIRVBACAJQQN0ayElIAFBA3RBCGohJkEIIBogCSAJIBpKGyIAIABBCE4bIhIgEEEDdCInQQhqIh5sISggCUEATCEpA0AgBCAkNgIIIAQgIyABIAkgASABIAlKGyICayIfQQN0ajYCBCANIARBBGogAiAMEH4gKUUEQCAXICYgIiAlbGogHyAnbGogAkEDdGtqISpBACEOIAIhCEEAIQoDQCACIAprIgAgEiAAIAAgEkobIgZrISACQCAGQQBMDQBBCCAVIAIgDiASbGsiACAAIBVKGyIAIABBCE4bQQN0QQhrIQtBCCAVIAggCCAVShsiDyAPQQhOGyIWQQFxICogDiAobGohE0EAIQAgD0EBRwRAIBZBfnEhLEEAIRYDQAJAIABBAXIiDyAGTg0AIAsgAEEDdGsiIUUNACAdIABByABsaiATIAAgHmxqICH8CgAACwJAIABBAmoiACAGTg0AIAsgD0EDdGsiIUUNACAdIA9ByABsaiATIA8gHmxqICH8CgAACyAWQQJqIhYgLEcNAAsLRQ0AIABBAWogBk4NACALIABBA3RrIgtFDQAgHSAAQcgAbGogEyAAIB5saiAL/AoAAAsgBEEINgIIIAQgBEEQajYCBCADIARBBGoiACAGIAYQQiAEIBk2AgggBCAYIAogH2oiC0EDdGo2AgQgACADIA0gBiAGIAwgBSsDICAGIAIgChAuICBBAEoEQCAEIBA2AgggBCAXIAYgC2pBA3QiE2ogCyAQbEEDdGo2AgQgAyAAIAYgIBBCIAQgGTYCCCAEIBMgGGo2AgQgACADIA0gICAGIAwgBSsDICAGIAIgChAuCyAIIBJrIQggDkEBaiEOIAogEmoiCiACSA0ACwsgASAHSARAIBcgECAfbEEDdGohBiABIQADQCAEIBA2AgggBCAGIABBA3QiCmo2AgQgAyAEQQRqIg4gAiAHIAAgGmoiCCAHIAhIGyAAayIAEEIgBCAZNgIIIAQgCiAYajYCBCAOIAMgDSAAIAIgDCAFKwMgQX9Bf0EAEC4gCCIAIAdIDQALCyAiQQFqISIgASAJayIBQQBKDQALCwJAIBxBgYABSQ0AIBRFDQAgFEEEaygCABARCwJAIBtBgYABSQ0AIBFFDQAgEUEEaygCABARCyAEQZAEaiQADAELQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEACyAFKAIAIgAEQCAAQQRrKAIAEBELIAUoAgQiAARAIABBBGsoAgAQEQsgBUEwaiQAC/IPAyp/A3sBfCMAQSBrIg8kACABKAIkIQQCQAJAAkACQCABKAIIIgIgACgCBEYEQCAAKAIIIARGDQELIAIgBHJBAEgNAQJAIAJFDQAgBEUNACACQf////8HIARtSg0DCyAAIAIgBGwgAiAEEBsgACgCCCEEIAAoAgQhAgsgD0IANwMQIA8gAjYCCCAPIAQ2AgwgAiAEckEASA0CIAAgD0EIahAyAkAgACgCCCAAKAIEbCIGQQBMDQAgDysDECEvIAAoAgAhAgJAIAZBAUYEQCACIQUMAQsgAiAGQf7///8HcSINQQN0aiEFIC/9FCEsQQAhBANAIAIgBEEDdGogLP0LAwAgBEECaiIEIA1HDQALIAYgDUYNAQsgBSAvOQMACyAPQoCAgICAgID4PzcDCCMAQTBrIgIkACABKAIAIRkgASgCDCABKAIIIQUgASgCBCELIAIgDysDCDkDICABKAIkIREgAiALNgIQIAIgETYCDCACIAsgBSAFIAtKGyITNgIIIAJCADcDACACIBE2AiwgAkEQaiACQQhqIAJBLGoQlQEgAiACKAIQIgUgAigCCGw2AhQgAiAFIAIoAgxsNgIYKAIEIRAgASgCHCEhIAEoAigoAgQhIiAAKAIAIRogACgCBCEbQQAhBEEAIQYjAEGQBGsiACEDIAAkAAJAIAIiBSgCCCIBIAsgEyALIBNIGyIUIAEgFEgbIhwgAigCECIObCIdQYCAgIACSQRAAkAgAigCACICRQRAIB1BA3QhAgJAIB1BgIABTQRAIAAgAkEeakFwcWsiBCIAJAAMAQsgAkEQahAWIgJFDQIgAkFwcSIEIAI2AgwgBEEQaiEECyAEIQILIA4gEWwiHkGAgICAAkkEQCAFKAIEIg1FBEAgHkEDdCEGAkAgHkGAgAFNBEAgACAGQR5qQXBxayIGJAAMAQsgBkEQahAWIgBFDQMgAEFwcSIGIAA2AgwgBkEQaiEGCyAGIQ0LIANBGGpBAEHwA/wLACADQoCAgICAgID4PzcDiAQgA0KAgICAgICA+D83A8ADIANCgICAgICAgPg/NwP4AiADQoCAgICAgID4PzcDsAIgA0KAgICAgICA+D83A+gBIANCgICAgICAgPg/NwOgASADQoCAgICAgID4PzcDWCADQoCAgICAgID4PzcDECALQQBKBEBBCCAcIA4gDiAcShsiACAAQQhOGyEWIAEgDiABIA5IGyIAIAsgACALSBsiACATIAAgE0gbIR8gFCAOayEjA0AgAyAiNgIIIAMgISAJQQN0IiBqNgIEIA0gA0EEaiAUIAlrIA4gCyAJayIAIAAgDkobIgAgCSATSCAAIAlqIBRKcSIkGyIBIBEQfgJAIAkgE04NACABQQBMDQAgGiAgaiElIBkgCSAQbEEDdGohJkEAIQogASESA0AgCSAKaiEVIBYgASAKayIAIAAgFkobIgxBAEoEQEEIIB8gEiASIB9KGyIAIABBCE4bIScgFUEBaiEoIBkgFUEDdCIpaiEqQQAhCANAAkAgCEUNACAqIAhBA3QiAGohFyADQRBqIABqIRhBACEAAkAgCEEBRg0AIBBBAUcNACAIQf7///8HcSEAIBcgKWohK/0MAAAAAAEAAAAAAAAAAAAAACEsQQAhBwNAIBggLEEG/asBIi39GwBqICsgB0EDdGr9AAMAIi79IQA5AwAgGCAt/RsBaiAu/SEBOQMAICz9DAIAAAACAAAAAgAAAAIAAAD9rgEhLCAHQQJqIgcgAEcNAAsgACAIRg0BCyAAQQFyIQcgCEEBcQRAIBggAEEGdGogFyAAIBVqIBBsQQN0aisDADkDACAHIQALIAcgCEYNAANAIBggAEEGdGoiByAXIAAgFWogEGxBA3RqKwMAOQMAIAdBQGsgFyAAIChqIBBsQQN0aisDADkDACAAQQJqIgAgCEcNAAsLIAhBAWoiCCAnRw0ACwsgA0EINgIIIAMgA0EQajYCBCACIANBBGoiACAMIAwQaCADIBs2AgggAyAaIBVBA3QiB2o2AgQgACACIA0gDCAMIBEgBSsDICAMIAEgChAuIApBAEoEQCADIBA2AgggAyAHICZqNgIEIAIgACAMIAoQaCADIBs2AgggAyAlNgIEIAAgAiANIAogDCARIAUrAyAgDCABIAoQLgsgEiAWayESIAogFmoiCiABSA0ACwsgFCAJIAkgFEobIgdBAEoEQCAZICBqIQhBACEAA0AgAyAQNgIIIAMgCCAAIBBsQQN0ajYCBCACIANBBGoiCiABIAcgACAcaiISIAcgEkgbIABrIgwQaCADIBs2AgggAyAaIABBA3RqNgIEIAogAiANIAwgASARIAUrAyBBf0F/QQAQLiASIgAgB0gNAAsLICMgCSAkGyAOaiIJIAtIDQALCwJAIB5BgYABSQ0AIAZFDQAgBkEEaygCABARCwJAIB1BgYABSQ0AIARFDQAgBEEEaygCABARCyADQZAEaiQADAMLCwtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALIAUoAgAiAARAIABBBGsoAgAQEQsgBSgCBCIABEAgAEEEaygCABARCyAFQTBqJAAgD0EgaiQADwtBkcIAQf4gQZUCQd8kEAAAC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAtBsTJB9h1BygBBzRUQAAAL5QsDGH8BfAF7IwBBoAJrIgMkAAJAAkACQAJAAkACQAJAIAEoAggiDSAAKAIERw0AIAAoAgggDUcNACABKAIEIA1IDQAgDUEBayIRQQBOBEAgDUEDdCEZIBEhBgNAAkAgDSAGQX9zIgdqIgRBAEwNACAGIAIoAgRODQUgASgCDCIOKAIEIQUgAigCACAGQQN0aisDACEbIAEoAgQiD0EASEEAIAEoAgAiCBsNBiADIAEpAgA3AgwgAyABKAIINgIUIAYgASgCCCILTg0HIAcgD2oiCUEATiIHQQEgCBtFDQYgCSAGQQFqIgxyQQBIDQggB0UNBCALIARrIgsgBHJBAEgNCCADIAEoAgg2AjAgAyABKQIANwMoIAMgASgCGDYCICADIAEpAhA3AxggA0FAayIUIAEoAhg2AgAgAyABKQIQNwM4IAAoAgAiEEEAIAAoAggiB0EASBsNBiAGIAAoAgRODQcgByAEayISIARyQQBIDQggCCAFIAZsQQN0aiIVIAxBA3QiFmohFyAQIAYgB2xBA3RqIhggEkEDdGohECAEQQN0IgoEQCAQQQAgCvwLAAsgA0KAgICAgICA+D83A0ggAyAHNgKcAiADIBI2ApgCIAMgBzYCkAIgA0EANgKMAiADIAY2AogCIAMgADYChAIgAyAHNgKAAiADIBg2AvgBIAMgBDYC9AEgAyAQNgLsASADIAQ2AsABIAMgCTYCvAEgAyAIIBZqIAUgC2xBA3RqNgK4ASADIAMoAjA2AswBIAMgAykDKDcCxAEgAyAONgLQASADIAMoAiA2AtwBIAMgAykDGDcC1AEgAyAFNgLoASADIAs2AuQBIAMgDDYC4AEgAyAPNgJ4IAMgFTYCdCADIAk2AmwgAyAXNgJoIAMgG5o5A2AgAyAJNgJcIAMgA/0AAgj9CwJ8IAMgDjYCjAEgAyAUKAIANgKYASADIAMpAzg3A5ABIAMgBTYCsAEgAyAMNgKoASADIAU2AqQBIAMgBjYCoAEgA0EANgKcASADQbgBaiADQdAAaiADQewBaiADQcgAahDsAyAGIBFODQAgBiAAKAIEIhRODQkgACgCACIMIAAoAggiCSAGbEEDdGohEiAMIAkgGWxqIRBBACEIQQAgCUEDdCIEayEVIARBeHMhFiAMIAkgDSATa0EDdGwiF2ohGCARIQcDQCAJIBFMDQogESAUTg0KIBIgB0EDdCIEaiIFIAUrAwAiGyAEIAwgByAJbEEDdGoiBGorAwCiOQMAAkAgDSAHQX9zaiILQQBMDQAgByAAKAIETg0JIAkgC2siBSALckEASA0KIAQgBUEDdCIFaiEOIAUgEmohD0EAIQQCQCAIQQJJDQAgECAIIBZsaiAYSQR/IAwgFyAIQQN0a2ogECAIIBVsakkFQQALDQAgCEF+cSEEIBv9FCEcQQAhBQNAIA8gBUEDdCIKaiIaIBwgCiAOav0AAwD98gEgGv0AAwD98AH9CwMAIAVBAmoiBSAERw0ACyAEIAhGDQELIARBAXIhBSAIQQFxBEAgDyAEQQN0IgRqIgogGyAEIA5qKwMAoiAKKwMAoDkDACAFIQQLIAUgCEYNAANAIA8gBEEDdCIFaiIKIBsgBSAOaisDAKIgCisDAKA5AwAgDyAFQQhqIgVqIgogGyAFIA5qKwMAoiAKKwMAoDkDACAEQQJqIgQgC0cNAAsLIAhBAWohCCAHQQFrIgcgBkoNAAsLIAYgAigCBE4NBCAGIAAoAgRODQggBiAAKAIIIgRODQggBkEDdCIHIAAoAgAgBCAGbEEDdGpqIAIoAgAgB2orAwA5AwAgE0EBaiETIAZBAEogBkEBayEGDQALCyADQaACaiQADwtB7xFBih1BNkGiExAAAAtBsTJB9h1BygBBzRUQAAALQds6QbEhQbUBQZQ6EAAAC0GoNEHkIUGyAUGpJRAAAAtB0jVBgiBB+gBByhkQAAALQfUPQYIgQZMBQcoZEAAAC0HfOUGxIUHvAkGUOhAAAAsfAEEIEBcgABDAAiIAQfTiAjYCACAAQYDjAkEBEAEAC7MCAgV/AXwjAEEQayIEJAACQAJAIAEoAgQiBUGAgICAAkkEQCADKwMAIQkgACgCGCEDIAAoAgggACgCBCAAKAIAIQhBACEAIAEoAgAiAUUEQCAFQQN0IQACQCAFQYCAAU0EQCAEIABBHmpBcHFrIgAkAAwBCyAAQRBqEBYiAEUNBCAAQXBxIgEgADYCDCABQRBqIQALIAAhAQsgBCADKAIENgIMIAQgCDYCCCAEQQE2AgQgBCABNgIAIAIoAgAiAQRAIAIoAghBAEgNAgsgBEEIaiAEIAFBASAJEE8CQCAFQYGAAUkNACAARQ0AIABBBGsoAgAQEQsgBEEQaiQADwsMAQtBqDRB5CFBsgFBqSUQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC5ACACAAQQA2AgggAEIANwMAAkACQCABIAJyQQBOBEACQCABRQ0AIAJFDQAgAUH/////ByACbUoNAgsgACABIAJsIAEgAhAbIABCADcCDCACIAEgASACShsiAUEASA0CIABBDGogASABEB4gAEIANwIUIABBFGogAiACEKcBIABCADcCHCAAQRxqIAIgAhCnASAAQgA3AiQgAEEkaiACIAIQHiAAQgA3AiwgAEEsaiACIAIQHiAAQgA3AjQgAEE0aiACIAIQHiAAQQA7ATwPC0GRwgBB/iBBlQJB3yQQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC0HrLUH+IEGwAkHfJBAAAAuABQMHfwN7AXwjAEEgayIEJAACQAJAAkACQAJAIAEoAgQiAiAAKAIERgRAIAAoAgggAkYNAQsgAkEASA0BIAIEQCACQf////8HIAJuSw0DCyAAIAIgAmwgAiACEBsgASgCBCICIAAoAgRHDQMLIAAoAgggAkcNAiAEQgA3AxAgBCACNgIMIAQgAjYCCCACQQBIDQMgACAEQQhqEDICQCAAKAIEIgggACgCCGwiBUEATA0AIAQrAxAhDCAAKAIAIQMCQCAFQQFGBEAgAyEGDAELIAMgBUH+////B3EiB0EDdGohBiAM/RQhCUEAIQIDQCADIAJBA3RqIAn9CwMAIAJBAmoiAiAHRw0ACyAFIAdGDQELIAYgDDkDAAsCQCABKAIEIgNBAEwNACAAKAIAIQAgASgCACEGQQAhAiADQQFHBEAgA0H+////B3EhAiAI/REhCv0MAAAAAAEAAAAAAAAAAAAAACEJQQAhAQNAIAYgAUECdGoiBSgCBCEHIAAgBSgCAEEDdGogCSAK/bUBIgv9GwBBA3RqQoCAgICAgID4PzcDACAAIAdBA3RqIAv9GwFBA3RqQoCAgICAgID4PzcDACAJ/QwCAAAAAgAAAAIAAAACAAAA/a4BIQkgAUECaiIBIAJHDQALIAIgA0YNAQsDQCAAIAYgAkECdGooAgBBA3RqIAIgCGxBA3RqQoCAgICAgID4PzcDACACQQFqIgIgA0cNAAsLIARBIGokAA8LQZHCAEH+IEGVAkHfJBAAAAtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALQao5QdccQc0HQYUWEAAAC0GxMkH2HUHKAEHNFRAAAAt0AAJAAkAgASgCBCIBBEAgAUH/////ByABbUoNAiABQQBIDQEgAUH/////ByABbksNAgsgACABIAFsIAEgARAbDwtBkcIAQf4gQZUCQd8kEAAAC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAutLAQefwd8AnsBfiMAQZABayIEJAACQAJAAkACQAJAAkACfwJAIAAoAggiDiAAKAIEIhUgDiAVSBsiEUEATgRAIABBDGogESAREB4gAEEkaiAOIA4QHiAAKAIIIgJBAEgNBCAAQRxqIAIgAhCnASAAQSxqIA4gDhAeIABBNGogDiAOEB4CQCAOQQBMDQAgACgCLCEFIAAoAjQhBiAAKAIAIgxBACAAKAIEIgJBAEgbDQkgAkUEQANAIAEgACgCCE4NCSAGIAFBA3QiAmpCADcDACACIAVqQgA3AwAgAUEBaiIBIA5HDQALDAELIAJBAEwNBCACQQFGBEADQCABIAAoAghODQkgBiABQQN0IgJqIAIgDGorAwAiHyAfop8iHzkDACACIAVqIB85AwAgAUEBaiIBIA5HDQALDAELIAJBAWsiAUF8cSEKIAFBA3EhCyACQQJrQQNJIQkDQCAHIAAoAghODQggDCACIAdsQQN0aiIIKwMAIh8gH6IhH0EBIQEgCUUEQCAIQRhqIRYgCEEQaiEQIAhBCGohEkEAIQMDQCAfIAggAUEDdCIPaisDACIfIB+ioCAPIBJqKwMAIh8gH6KgIA8gEGorAwAiHyAfoqAgDyAWaisDACIfIB+ioCEfIAFBBGohASADQQRqIgMgCkcNAAsLQQAhAyALBEADQCAfIAggAUEDdGorAwAiHyAfoqAhHyABQQFqIQEgA0EBaiIDIAtHDQALCyAGIAdBA3QiAWogH58iHzkDACABIAVqIB85AwAgB0EBaiIHIA5HDQALCyAAKAIwIgdBAEwNB0EBIQEgACgCLCICKwMAIR8CQCAHQQFGDQAgB0EBayIDQQNxIQggB0ECa0EDTwRAIAJBGGohBSACQRBqIQYgAkEIaiEPIANBfHEhDEEAIQMDQCAFIAFBA3QiB2orAwAiICAGIAdqKwMAIiEgByAPaisDACIiIAIgB2orAwAiIyAfIB8gI2MbIh8gHyAiYxsiHyAfICFjGyIfIB8gIGMbIR8gAUEEaiEBIANBBGoiAyAMRw0ACwsgCEUNAEEAIQMDQCACIAFBA3RqKwMAIiAgHyAfICBjGyEfIAFBAWohASADQQFqIgMgCEcNAAsLIABCADcDSCAAIBE2AlBBASARRQ0CGiAfRAAAAAAAALA8oiIfIB+iIBW3oyElQQEgESARQQFMGyEXIBVBA2shGCAVQQJrIRkgDkECayEaQQAhFkEAIQgDQCAAKAIwIA4gCGsiC2siASALckEASA0GIAAoAiwiCiABQQN0aiIDKwMAISBBACECAkAgC0EBRg0AIA4gCEF/c2oiB0EDcSEFQQEhAUEAIQYCQCAaIAhrQQNJBEAgICEfDAELIAdBfHEhEiAgIR9BACEHA0AgAyABQQNqIg1BA3RqKwMAIiEgAyABQQJqIhNBA3RqKwMAIiIgAyABQQFqIhRBA3RqKwMAIiMgAyABQQN0aisDACIkIB8gHyAkYyIPGyIfIB8gI2MiDBsiHyAfICJjIgkbIh8gHyAhYyIQGyEfICEgIiAjICQgICAPGyAMGyAJGyAQGyEgIA0gEyAUIAEgAiAPGyAMGyAJGyAQGyECIAFBBGohASAHQQRqIgcgEkcNAAsLIAVFDQADQCADIAFBA3RqKwMAIiEgHyAfICFjIgcbIR8gISAgIAcbISAgASACIAcbIQIgAUEBaiEBIAZBAWoiBiAFRw0ACwsgAiAIaiEMAkAgACgCUCARRw0AICAgIKIgJSAVIAhrt6JjRQ0AIAAgCDYCUAsgCEEDdCEPIAAoAhwgCEECdGogDDYCACACBEAgACgCACIBQQAgACgCBCICQQBIGw0KIAggACgCCCIHTg0IIAxBAEgNCCAHIAxMDQgCQCACQQBMDQAgASACIAhsQQN0aiEFIAEgAiAMbEEDdGohBkEAIQNBACEHAkAgAkEGSQ0AIAEgAiAMQQN0QQhqbGogBUsEQCAGIAEgAiAPQQhqbGpJDQELIAJB/v///wdxIQdBACEBA0AgBSABQQN0IglqIhD9AAMAISYgECAGIAlqIgn9AAMA/QsDACAJICb9CwMAIAFBAmoiASAHRw0ACyACIAdGDQELIAIgByIBa0EDcSIJBEADQCAFIAFBA3QiEGoiEisDACEfIBIgBiAQaiIQKwMAOQMAIBAgHzkDACABQQFqIQEgA0EBaiIDIAlHDQALCyAHIAJrQXxLDQADQCAFIAFBA3QiB2oiAysDACEfIAMgBiAHaiIDKwMAOQMAIAMgHzkDACAFIAdBCGoiA2oiCSsDACEfIAkgAyAGaiIDKwMAOQMAIAMgHzkDACAFIAdBEGoiA2oiCSsDACEfIAkgAyAGaiIDKwMAOQMAIAMgHzkDACAFIAdBGGoiB2oiAysDACEfIAMgBiAHaiIHKwMAOQMAIAcgHzkDACABQQRqIgEgAkcNAAsLIAogD2oiASsDACEfIAEgCiAMQQN0IgFqIgIrAwA5AwAgAiAfOQMAIAAoAjQiAiAPaiIHKwMAIR8gByABIAJqIgErAwA5AwAgASAfOQMAIBZBAWohFgsgACgCACIDQQAgACgCBCIBQQBIGw0JIAggACgCCE4NByAEIAE2AjQgBCABNgIoIARBADYCICAEIAA2AhwgBCABNgIUIAQgCDYCJCAEIBUgCGsiAjYCCCAEIAEgAmsiBzYCLCAEIAMgASAIbEEDdGoiATYCECAEIAEgB0EDdGoiATYCBCACIAdyQQBIDQYgACgCDCEHIAQgAkEBayIMNgJIIAQgAUEIajYCRCAEIAQoAjQ2AoABIAQgBP0AAiT9CwJwIAQgBP0AAhT9CwJgIAQgBP0AAgT9CwJQIARBATYChAEgBCAEKAJoKAIENgKMASAEQQRqIARBxABqIAcgD2ogBEE4ahCiAiAAKAIEIgEgCGxBA3QiCiAAKAIAIgMgD2pqIAQrAzgiHzkDACAfmSIfIAArA0hkBEAgACAfOQNICyAAKAIIIQUgBCALQQFrIgc2AgwgBCACNgIIIAQgAyABIAJrIgZBA3RqIAUgB2siCyABbEEDdGo2AgQgAiAHckEASA0JIAQgATYCHCAEIAA2AhAgBCALNgIYIAQgBjYCFCACIAZyQQBIDQYgByALckEASA0GIAFBAEgNCSAFIAhMDQcgBCABNgJ0IAQgATYCaCAEIAg2AmQgBEEANgJgIAQgADYCXCAEIAE2AlQgBCAMNgJIIAQgASAMayIBNgJsIAQgAyAKaiICNgJQIAQgAiABQQN0ajYCRCABIAxyQQBIDQYgACgCDCAPaiEQIAAoAiQgCEEBaiIHQQN0aiECQQAhCiMAQcABayIDJAAgECsDACEfAkACQAJAAkACQAJAAkACQCAEKAIIIgFBAUYEQCAEKAIMIgVBAEgNBkQAAAAAAADwPyAfoSEfIAQoAgQhBiAEKAIQKAIEIQtBACECAkACQCAFDgIDAQALIAtBAUcNACAFQf7///8HcSECIB/9FCEmQQAhAQNAIAYgAUEDdGoiCSAmIAn9AAMA/fIB/QsDACABQQJqIgEgAkcNAAsgAiAFRg0CCyAFIAIiAWtBA3EiCQRAA0AgBiABIAtsQQN0aiIQIB8gECsDAKI5AwAgAUEBaiEBIApBAWoiCiAJRw0ACwsgAiAFa0F8Sw0BA0AgBiABIAtsQQN0aiICIB8gAisDAKI5AwAgBiABQQFqIAtsQQN0aiICIB8gAisDAKI5AwAgBiABQQJqIAtsQQN0aiICIB8gAisDAKI5AwAgBiABQQNqIAtsQQN0aiICIB8gAisDAKI5AwAgAUEEaiIBIAVHDQALDAELIB9EAAAAAAAAAABhDQAgAyAEKAIMIgs2AqgBIAMgAjYCoAEgC0EASA0BIAQoAgQhBSADIAFBAWsiEjYCcCADIAVBCGo2AmwgAyALNgJ0IAsgEnJBAEhBACAFGw0RIAMgBCgCHDYCkAEgAyAEKQIUNwKIASADIAT9AAIE/QsCeCADQgE3ApQBIAMgAygChAEoAgQ2ApwBIAFBAEwNDiAE/QACXCEmIAQpAmwhKCAEKAJ0IQUgBCgCRCEGIAQoAkghASAE/QACTCEnIAMgAygCnAE2AmQgAyAD/QACjAH9CwJUIAMgA/0AAnz9CwJEIAMgBTYCMCADICg3AiggAyAm/QsCGCADICf9CwIIIAMgA/0AAmz9CwI0IAMgATYCBCADIAY2AgAgASASRw0CIAMoAjwgC0cNAyADQTRqIQECQCALRQ0AIAtBA3QiBUUNACACQQAgBfwLAAsgA0KAgICAgICA+D83A7ABIANBsAFqIQVEAAAAAAAAAAAhHyMAQYABayICJAACQAJAAkAgASgCCEEBRgRAIAUrAwAhICADKAIAIgVBACADKAIEIgZBAEgbDRUgASgCACIKQQAgASgCBCIBQQBIGw0VIAEgBkcNAgJAIAZFDQAgBkEATA0VIAUrAwAgCisDAKIhH0EBIQEgBkEBRg0AIAZBAWsiDUEDcSEJIAZBAmtBA08EQCANQXxxIRNBACENA0AgHyAFIAFBA3QiBmorAwAgBiAKaisDAKKgIAUgBkEIaiIUaisDACAKIBRqKwMAoqAgBSAGQRBqIhRqKwMAIAogFGorAwCioCAFIAZBGGoiBmorAwAgBiAKaisDAKKgIR8gAUEEaiEBIA1BBGoiDSATRw0ACwsgCUUNAEEAIQYDQCAfIAUgAUEDdCINaisDACAKIA1qKwMAoqAhHyABQQFqIQEgBkEBaiIGIAlHDQALCyADKAKgASIBICAgH6IgASsDAKA5AwAMAQsgAiADKAIwNgIwIAIgA/0AAiD9CwMgIAIgA/0AAhD9CwMQIAIgA/0AAgD9CwMAIAIgASgCMDYCaCACIAH9AAIg/QsDWCACIAH9AAIQ/QsDSCACIAH9AAIA/QsDOCACIAMoAqgBNgJ4IAIgAykCoAE3A3AgAkE4aiACIAJB8ABqIAUQ8QMLIAJBgAFqJAAMAQtBxDpB0BtB0gBBiAwQAAALIAQoAgQiBkEAIAQoAgwiBUEASBsNESAEKAIIQQBMDQ8gAygCqAEgBUcNBgJAIAVBAEwNACAEKAIQKAIEIQkgAygCoAEhCkEAIQECQCAFQQhJDQAgCUEBRw0AIAYgBUEDdCICaiAKSyAGIAIgCmpJcQ0AIAVB/v///wdxIQFBACECA0AgCiACQQN0Ig1qIhMgBiANav0AAwAgE/0AAwD98AH9CwMAIAJBAmoiAiABRw0ACyABIAVGDQELIAFBAXIhAiAFQQFxBEAgCiABQQN0aiINIAYgASAJbEEDdGorAwAgDSsDAKA5AwAgAiEBCyACIAVGDQADQCAKIAFBA3RqIgIgBiABIAlsQQN0aisDACACKwMAoDkDACAKIAFBAWoiAkEDdGoiDSAGIAIgCWxBA3RqKwMAIA0rAwCgOQMAIAFBAmoiASAFRw0ACwsgBUEASA0FIAQoAghBAEwNDyAFIAMoAqgBRw0GAkAgBUEATA0AIBArAwAhHyADKAKgASEKIAQoAhAoAgQhCUEAIQECQCAFQQhJDQAgCUEBRw0AIAogBUEDdCICaiAGSyAKIAIgBmpJcQ0AIAVB/v///wdxIQEgH/0UISZBACECA0AgBiACQQN0Ig1qIhMgE/0AAwAgJiAKIA1q/QADAP3yAf3xAf0LAwAgAkECaiICIAFHDQALIAEgBUYNAQsgAUEBciECIAVBAXEEQCAGIAEgCWxBA3RqIg0gDSsDACAfIAogAUEDdGorAwCioTkDACACIQELIAIgBUYNAANAIAYgASAJbEEDdGoiAiACKwMAIB8gCiABQQN0aisDAKKhOQMAIAYgAUEBaiICIAlsQQN0aiINIA0rAwAgHyAKIAJBA3RqKwMAoqE5AwAgAUECaiIBIAVHDQALCyAEKAJIIgFBAEgNBSAQKwMAIR8gAyAEKAJ0NgJIIAMgBP0AAmT9CwM4IAMgBP0AAlT9CwMoIAT9AAJEISYgAyADKAKoASICNgJYIAMgJv0LAxggAyAfOQMQIAMgATYCCCADIAMpAqABNwNQIBIgAygCHEcNBCACIAtHDQQgA0HsAGogAyADQdAAahChAgsgA0HAAWokAAwGC0GML0HkIUGmAUGpJRAAAAtBvjtB9xtB4gBBkA0QAAALQfPFAEGPIkGGAkHfJBAAAAtBqjlBohxBsAFBhRYQAAALQbEyQfYdQcoAQc0VEAAAC0GqOUHXHEHyBUGhJhAAAAsgByAOSARAIBkgCGsiAUF8cSELIAFBA3EhBSAAKAIAIgEgD2ohCiABIAAoAgQiBiAMayICQQN0aiEJIAAoAjQhECAAKAIsIRIgAiAMckEATiENIBggCGtBA0khEyAHIQIDQCASIAJBA3QiAWoiFCsDACIfRAAAAAAAAAAAYgRAAkAgHyABIBBqIhsrAwCjIiAgIKJEAAAAAAAAAAAgCiACIAZsQQN0IgFqKwMAmSAfoyIgRAAAAAAAAPA/oEQAAAAAAADwPyAgoaIiICAgRAAAAAAAAAAAYxsiIKJEAAAAAAAAUD5lBEAgBkEASA0OIAIgACgCCE4NDCANRQ0LAkAgDEUEQEQAAAAAAAAAACEfDAELIAEgCWoiCCsDACIfIB+iIR8gDEEBRg0AQQEhASATRQRAIAhBGGohHCAIQRBqIR0gCEEIaiEeQQAhDwNAIB8gCCABQQN0IgNqKwMAIh8gH6KgIAMgHmorAwAiHyAfoqAgAyAdaisDACIfIB+ioCADIBxqKwMAIh8gH6KgIR8gAUEEaiEBIA9BBGoiDyALRw0ACwtBACEDIAVFDQADQCAfIAggAUEDdGorAwAiHyAfoqAhHyABQQFqIQEgA0EBaiIDIAVHDQALCyAbIB+fIh85AwAMAQsgHyAgn6IhHwsgFCAfOQMACyACQQFqIgIgDkcNAAsLIAciCCAXRw0ACwwBCwwDC0F/QQEgFkEBcRsLIQggAEEUaiAOIA4QpwECQCAAKAIYIgJBAEwNACAAKAIUIQdBACEBIAJBBE8EQCACQfz///8HcSEB/QwAAAAAAQAAAAIAAAADAAAAISZBACEDA0AgByADQQJ0aiAm/QsCACAm/QwEAAAABAAAAAQAAAAEAAAA/a4BISYgA0EEaiIDIAFHDQALIAEgAkYNAQsDQCAHIAFBAnRqIAE2AgAgAUEBaiIBIAJHDQALCyARBEBBASARIBFBAUwbIQUgACgCFCEHIAAoAhwhDkEAIQEDQAJAAkAgDiABQQJ0IgZqKAIAIgNBAEgNACABIAJODQAgAiADSg0BC0GfOkGbG0GwAUHzDBAAAAsgBiAHaiIGKAIAIREgBiAHIANBAnRqIgMoAgA2AgAgAyARNgIAIAFBAWoiASAFRw0ACwsgAEEBOgA8IAAgCDYCVCAEQZABaiQADwsgACgCCEEATA0CDAMLQestQf4gQbACQd8kEAAAC0H1D0GCIEGTAUHKGRAAAAtB0jVBgiBB+gBByhkQAAALQfo6QbIaQZsDQZkJEAAAC0GoNEHkIUGyAUGpJRAAAAuAEwIQfwF7IwBB4ABrIgUkACAALQAMQQFzQQBxIQ8gASgCCCEDAkACQAJAAkACQAJAIAAoAhAiBEEwSA0AIANBAkgNAEEwIARBAWpBAXYgBEHgAE8bIQ4DQAJ/IAAtAAwiDUEBRgRAIAwgDmoiAiAEIAIgBEgbIQIgDAwBCyAEIAxrIgIgDmsiBEEAIARBAEobCyEEIAAoAhQhCSAAKAIAIggoAgAhBiAIKAIEIQcgBSACIARrIgM2AkwgBSAHIAQgCWoiCWsiAjYCSCAFIAYgCUEDdGogBCAHbEEDdGo2AkQgBkEAIAIgA3IiBkEASBsNBSAFIAc2AlwgBSAINgJQIAUgBDYCWCAFIAk2AlQgBCAGciAJckEASA0GIAQgCCgCCCADa0oNBiABKAIEIQggASgCACELIAEoAgghCiAFIAI2AiwgBSACIAogDxsiBjYCMCAFIAsgCCAJIAdraiIHQQN0aiAIIAdBACAPGyIJbEEDdGo2AiggC0EAIAIgBnJBAEgbDQUgBSAINgJAIAUgCTYCPCAFIAE2AjQgBSAHNgI4IAIgB3JBAEgNBiAHIAggAmtKDQYgBiAJckEASA0GIAkgCiAGa0oNBiAFIAAoAgQiAigCACIJIAIoAgQiB0EBaiAEbEEDdGo2AgggBSADNgIMIANBAEhBACAJGw0FIAVBADYCJCAFIAQ2AhwgBSACNgIUIAQgAigCCCICIAcgAiAHSBsgA2tKDQYgBUEoaiEJIAVBCGohByANQQFzIQgjAEHwAGsiAyQAIAVBxABqIgQoAgghAiADQQA2AmAgA0IANwJYAkACQAJAAkACQCACQQBOBEAgAgRAIAJB/////wcgAm5LDQQLIANB2ABqIgYgAiACbCACIAIQGwJAIAgEQCAGIAQgBxDnAwwBCyADQdgAaiAEIAcQ5wMLIAQoAgAhEiAEKAIEIQ0gBCgCCCEHIAMgBP0AAgz9CwNIIAT9AAIMIRMgAyAHNgIMIAMgDTYCCCADIBI2AgQgAyAT/QsCECADIAkoAhg2AjggAyAJ/QACCP0LAiggAyAJKQIANwIgIA0gCSgCBEcNBCADQQA2AkQgA0IANwI8IAMoAighAgJAAkAgB0UNACACRQ0AIAdB/////wcgAm1KDQUgAiAHckEATg0BDAQLIAIgB3JBAEgNAwsgA0E8aiIGIAIgB2wgByACEBsgA0HoAGohCyAGIANBBGoiAhDuAwJAIAgEQCADKAJAIAMoAmAgAyAGNgJsIAMgA0HYAGo2AmhHDQZBACEEIANBADYCDCADQgA3AgQgAiALEJ8CIAMoAgQhCCAGIAIQTQJAIAMoAkQgAygCQGwiC0EATA0AIAMoAjwhBgJAIAtBBEkNACAGIAhrQRBJDQAgC0H+////B3EhBEEAIQIDQCAGIAJBA3QiCmogCCAKav0AAwD9CwMAIAJBAmoiAiAERw0ACyAEIAtGDQELIAsgBCICa0EDcSIQBEBBACEKA0AgBiACQQN0IhFqIAggEWorAwA5AwAgAkEBaiECIApBAWoiCiAQRw0ACwsgBCALa0F8Sw0AA0AgBiACQQN0IgRqIAQgCGorAwA5AwAgBiAEQQhqIgpqIAggCmorAwA5AwAgBiAEQRBqIgpqIAggCmorAwA5AwAgBiAEQRhqIgRqIAQgCGorAwA5AwAgAkEEaiICIAtHDQALCyADKAIEIgJFDQEgAkEEaygCABARDAELIAMoAkAgAygCXCADIANBPGoiBjYCbCADIANB2ABqNgJoRw0FQQAhBCADQQA2AgwgA0IANwIEIANBBGoiAiADQegAahCeAiADKAIEIQggBiACEE0CQCADKAJEIAMoAkBsIgtBAEwNACADKAI8IQYCQCALQQRJDQAgBiAIa0EQSQ0AIAtB/v///wdxIQRBACECA0AgBiACQQN0IgpqIAggCmr9AAMA/QsDACACQQJqIgIgBEcNAAsgBCALRg0BCyALIAQiAmtBA3EiEARAQQAhCgNAIAYgAkEDdCIRaiAIIBFqKwMAOQMAIAJBAWohAiAKQQFqIgogEEcNAAsLIAQgC2tBfEsNAANAIAYgAkEDdCIEaiAEIAhqKwMAOQMAIAYgBEEIaiIKaiAIIApqKwMAOQMAIAYgBEEQaiIKaiAIIApqKwMAOQMAIAYgBEEYaiIEaiAEIAhqKwMAOQMAIAJBBGoiAiALRw0ACwsgAygCBCICRQ0AIAJBBGsoAgAQEQsgAyANNgIIIAMgEjYCBCADIAP9AANI/QsCECADIAc2AgwgAygCQCADIANBPGoiBDYCICAHRw0EIAkoAgQgDUcNASAJKAIIIAMoAkRHDQEgA0KAgICAgICA+L9/NwNoIAkgA0EEaiAEIANB6ABqEO0DIAMoAjwiAgRAIAJBBGsoAgAQEQsgAygCWCICBEAgAkEEaygCABARCyADQfAAaiQADAULDAELQao5QaIcQbABQYUWEAAAC0GRwgBB/iBBlQJB3yQQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC0G+O0H3G0HiAEGQDRAAAAsgDCAOaiIMIAAoAhAiBEgNAAsMAQsgA0EASA0BIAIgAyADEB4gACgCECIMQQBMDQADQCABKAIAIQsgASgCBCEJIAEoAgghCiAFIAAoAgAiAygCBCAIIAwgCEF/c2ogAC0ADBsiBCAAKAIUaiIOayIHNgIMIAUgByAKIA8bIgY2AhAgBSALIAkgB2siDUEDdGogCSAKIAZrIgpsQQN0ajYCCCAGIAdyQQBIQQAgCxsNBCAFIAk2AiAgBSABNgIUIAUgCjYCHCAFIA02AhggByANckEASA0FIAYgCnJBAEgNBSAEQQBIDQMgBCAMTg0DIAMoAgAhDCAFIAMoAgQiCSAOQQFqIgdrIgY2AkggBSAMIAdBA3RqIAQgCWxBA3RqNgJEIAZBAEhBACAMGw0EIAUgCTYCXCAFIAQ2AlggBSADNgJQIAUgBzYCVCAGIAdyQQBIDQUgBCADKAIITg0FIAUgACgCBCIDKAIAIARBA3RqIAMoAgQgBGxBA3RqKwMAOQMoIAVBCGogBUHEAGogBUEoaiACKAIAEJYBIAhBAWoiCCAAKAIQIgxIDQALCyAFQeAAaiQADwtB6y1B/iBBsAJB3yQQAAALQfwZQeYiQecBQZITEAAAC0GoNEHkIUGyAUGpJRAAAAtB9Q9BgiBBkwFByhkQAAALhEoEN38CfAN7An4jAEHgAGsiCiQAIAAtAAxBAXNBAHEhKyABKAIIIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIDQTBIDQAgBEECSA0AQTAgA0EBakEBdiADQeAATxshLANAIAAoAgAiBSgCCAJ/IAAtAAwiEEEBRgRAIBwgLGoiAiADIAIgA0gbIQIgHAwBCyADIBxrIgIgLGsiA0EAIANBAEobCyIDIAAoAhRqIgRrIQ0gBSgCBCEHIAUoAgAiBkEAIA0gAiADayICckEASBsNCyACIANyQQBIDQcgBCANckEASA0HIAMgByACa0oNByAKIAc2AlwgCiADNgJUIAogDTYCTCAKIAI2AkggCiAGIANBA3RqIAQgB2xBA3RqNgJEIAogBDYCWCAKIAU2AlAgASgCBCENIAEoAgAhCCABKAIIIQsgCiAFKAIIIgYgBGsiBTYCLCAKIAUgCyArGyIHNgIwIAogCCAEIA1qIAZrIgRBA3RqIA0gBEEAICsbIgZsQQN0ajYCKCAIQQAgBSAHckEASBsNCyAKIA02AkAgCiAGNgI8IAogATYCNCAKIAQ2AjggBCAFckEASA0HIAQgDSAFa0oNByAGIAdyQQBIDQcgBiALIAdrSg0HIAogACgCBCIEKAIAIAQoAgQiBUEDdGoiDSAFQQFqIANsQQN0ajYCCCAKIAI2AgwgAkEASEEAIA0bDQsgCkEANgIkIAogAzYCHCAKIAQ2AhQgAyAEKAIIQQFrIgQgBSAEIAVIGyACa0oNByAKQQhqIQQgEEEBcyEoIwBB8ABrIgkkACAKQcQAaiIDKAIEIQIgCUEANgJgIAlCADcCWAJAIAJBAE4EQAJAIAIEQCACQf////8HIAJuSw0TCyAJQdgAaiIFIAIgAmwgAiACEBsCQCAoBEAgBSADIAQQ6AMMAQsgCUHYAGogAyAEEOgDCyADKAIAISkgAygCBCEWIAMoAgghHSAJIAP9AAIM/QsDSCAJIB02AgwgCSAWNgIIIAkgKTYCBCAJIAP9AAIM/QsCECAJIAooAkA2AjggCSAK/QACMP0LAiggCSAKKQIoNwIgIB0gCigCLEcNCSAJQQA2AkQgCUIANwI8IAkoAighAgJAAkAgFkUNACACRQ0AIBZB/////wcgAm1KDRQgAiAWckEATg0BDAILIAIgFnJBAEgNAQsgCUE8aiIRIAIgFmwgFiACEBsgCUHoAGohLSMAQSBrIhkkACAJQQRqIhUoAiQhBQJAIBUoAgQiAyARKAIERgRAIBEoAgggBUYNAQsgAyAFckEASA0MAkAgA0UNACAFRQ0AIANB/////wcgBW1KDQ4LIBEgAyAFbCADIAUQGyARKAIIIQUgESgCBCEDCyAZQgA3AxAgGSADNgIIIBkgBTYCDCADIAVyQQBIDQ0gESAZQQhqEDICQCARKAIIIBEoAgRsIgNBAEwNACAZKwMQITogESgCACECAkAgA0EBRgRAIAIhBAwBCyACIANB/v///wdxIg1BA3RqIQQgOv0UITxBACEFA0AgAiAFQQN0aiA8/QsDACAFQQJqIgUgDUcNAAsgAyANRg0BCyAEIDo5AwALIBlCgICAgICAgPg/NwMIIwBBMGsiAiQAIBUoAgAhDiAVKAIMIBUoAgQhAyAVKAIIIQUgAiAZKwMIOQMgIBUoAiQhDSACIAU2AhAgAiANNgIMIAIgBSADIAMgBUobIgg2AgggAkIANwMAIAIgDTYCLCACQRBqIAJBCGogAkEsahCVASACIAIoAhAiAyACKAIIbDYCFCACIAMgAigCDGw2AhgoAgQhGyAVKAIcIS4gFSgCKCgCBCEvIBEoAgAhISARKAIEISJBACESQQAhB0EAIQYjAEGQBGsiAyEPIAMkAAJAIAIiDCgCCCICIAUgCCAFIAhIGyIaIAIgGkgbIiMgDCgCECITbCIkQYCAgIACTw0TIAwoAgAiBEUEQCAkQQN0IQQCQCAkQYCAAU0EQCADIARBHmpBcHFrIgciAyQADAELIARBEGoQFiIERQ0VIARBcHEiByAENgIMIAdBEGohBwsgByEECyANIBNsIiVBgICAgAJPDRMgDCgCBCILRQRAICVBA3QhBgJAICVBgIABTQRAIAMgBkEeakFwcWsiBiQADAELIAZBEGoQFiIDRQ0VIANBcHEiBiADNgIMIAZBEGohBgsgBiELCyAPQRhqQQBB8AP8CwAgD0KAgICAgICA+D83A4gEIA9CgICAgICAgPg/NwPAAyAPQoCAgICAgID4PzcD+AIgD0KAgICAgICA+D83A7ACIA9CgICAgICAgPg/NwPoASAPQoCAgICAgID4PzcDoAEgD0KAgICAgICA+D83A1ggD0KAgICAgICA+D83AxAgBUEASgRAIAIgEyACIBNIGyICIAUgAiAFSBsiAiAIIAIgCEgbISogGiATayEwQQggIyATIBMgI0obIgIgAkEIThsiHiAbQQN0IiZBCGoiMWwhMgNAIA8gLzYCCCAPIC4gEkEDdCICajYCBCALIA9BBGogGiASayATIAUgEmsiAyADIBNKGyIDIAMgEmogGkogCCASSnEiMxsiAyANEH4CQCAIIBJMDQAgA0EATA0AIA4gEiAxbGohNCACICFqITUgAiAOaiE2QQAhHyADIRBBACEUA0ACQCAeIAMgFGsiAiACIB5KGyIXQQBMDQAgKiAQIBAgKkobIhhBAUYNAEEBIQJBCCAYIBhBCE4bQQFrIiBBAXEgNCAfIDJsaiEnIBhBAkcEQCAgQX5xIThBACEYA0AgAkEDdCIgBEAgD0EQaiACQQZ0aiAnIAIgJmxqICD8CgAACyACQQFqIiBBA3QiOQRAIA9BEGogIEEGdGogJyAgICZsaiA5/AoAAAsgAkECaiECIBhBAmoiGCA4Rw0ACwtFDQAgAkEDdCIYRQ0AIA9BEGogAkEGdGogJyACICZsaiAY/AoAAAsgD0EINgIIIA8gD0EQajYCBCAEIA9BBGoiAiAXIBcQQiAPICI2AgggDyAhIBIgFGoiGEEDdGo2AgQgAiAEIAsgFyAXIA0gDCsDICAXIAMgFBAuIBRBAEoEQCAPIBs2AgggDyA2IBggG2xBA3RqNgIEIAQgAiAXIBQQQiAPICI2AgggDyA1NgIEIAIgBCALIBQgFyANIAwrAyAgFyADIBQQLgsgECAeayEQIB9BAWohHyAUIB5qIhQgA0gNAAsLIBogEiASIBpKGyIUQQBKBEAgDiASIBtsQQN0aiEXQQAhAgNAIA8gGzYCCCAPIBcgAkEDdCIfajYCBCAEIA9BBGoiGCADIBQgAiAjaiIQIBAgFEobIAJrIgIQQiAPICI2AgggDyAfICFqNgIEIBggBCALIAIgAyANIAwrAyBBf0F/QQAQLiAQIgIgFEgNAAsLIDAgEiAzGyATaiISIAVIDQALCwJAICVBgYABSQ0AIAZFDQAgBkEEaygCABARCwJAICRBgYABSQ0AIAdFDQAgB0EEaygCABARCyAPQZAEaiQADAALIAwoAgAiAgRAIAJBBGsoAgAQEQsgDCgCBCICBEAgAkEEaygCABARCyAMQTBqJAAgGUEgaiQAAkAgKARAIAkoAkAgCSgCYCAJIBE2AmwgCSAJQdgAajYCaEcNC0EAIQMgCUEANgIMIAlCADcCBCAVIC0QnwIgCSgCBCEEIBEgFRBNAkAgCSgCRCAJKAJAbCIHQQBMDQAgCSgCPCEFAkAgB0EESQ0AIAUgBGtBEEkNACAHQf7///8HcSEDQQAhAgNAIAUgAkEDdCINaiAEIA1q/QADAP0LAwAgAkECaiICIANHDQALIAMgB0YNAQsgByADIgJrQQNxIgYEQEEAIQ0DQCAFIAJBA3QiCGogBCAIaisDADkDACACQQFqIQIgDUEBaiINIAZHDQALCyADIAdrQXxLDQADQCAFIAJBA3QiA2ogAyAEaisDADkDACAFIANBCGoiDWogBCANaisDADkDACAFIANBEGoiDWogBCANaisDADkDACAFIANBGGoiA2ogAyAEaisDADkDACACQQRqIgIgB0cNAAsLIAkoAgQiAkUNASACQQRrKAIAEBEMAQsgCSgCQCAJKAJcIAkgCUE8aiIFNgJsIAkgCUHYAGo2AmhHDQpBACEDIAlBADYCDCAJQgA3AgQgCUEEaiICIAlB6ABqEJ4CIAkoAgQhBCAFIAIQTQJAIAkoAkQgCSgCQGwiB0EATA0AIAkoAjwhBQJAIAdBBEkNACAFIARrQRBJDQAgB0H+////B3EhA0EAIQIDQCAFIAJBA3QiDWogBCANav0AAwD9CwMAIAJBAmoiAiADRw0ACyADIAdGDQELIAcgAyICa0EDcSIGBEBBACENA0AgBSACQQN0IghqIAQgCGorAwA5AwAgAkEBaiECIA1BAWoiDSAGRw0ACwsgAyAHa0F8Sw0AA0AgBSACQQN0IgNqIAMgBGorAwA5AwAgBSADQQhqIg1qIAQgDWorAwA5AwAgBSADQRBqIg1qIAQgDWorAwA5AwAgBSADQRhqIgNqIAMgBGorAwA5AwAgAkEEaiICIAdHDQALCyAJKAIEIgJFDQAgAkEEaygCABARCyAJIB02AgwgCSApNgIEIAkgCf0AA0j9CwIQIAkgFjYCCCAJKAJAIAkgCUE8ajYCICAWRw0JIAooAiwgHUcNCCAKKAIwIAkoAkRHDQggCUKAgICAgICA+L9/NwNoQQAhDSMAQTBrIgIkACAJKAIEIR0gCSgCECAJKAIMIQ8gCSgCCCEDIAIgCSsDaDkDICAJKAJEIRYgAiAPIAMgAyAPShsiAzYCECACIBY2AgwgAiAPNgIIIAJCADcDACACIBY2AiwgAkEQaiACQQhqIAJBLGoQlQEgAiACKAIQIgUgAigCCGw2AhQgAiAFIAIoAgxsNgIYKAIEIRUgCSgCPCEnIAkoAkAhKCAKKAIoIR4gCigCNCgCBCEhQQAhBSMAQZAEayIEIQwgBCQAAkAgAiIIKAIIIgIgDyACIA9IGyIiIAgoAhAiEmwiI0GAgICAAkkEQAJAIAgoAgAiC0UEQCAjQQN0IQUCQCAjQYCAAU0EQCAEIAVBHmpBcHFrIgUiBCQADAELIAVBEGoQFiIFRQ0CIAVBcHEiByAFNgIMIAdBEGohBQsgBSELCyASIBZsIiRBgICAgAJJBEAgCCgCBCIQRQRAICRBA3QhDQJAICRBgIABTQRAIAQgDUEeakFwcWsiDSQADAELIA1BEGoQFiIERQ0DIARBcHEiDSAENgIMIA1BEGohDQsgDSEQCyAMQRhqQQBB8AP8CwAgDEKAgICAgICA+D83A4gEIAxCgICAgICAgPg/NwPAAyAMQoCAgICAgID4PzcD+AIgDEKAgICAgICA+D83A7ACIAxCgICAgICAgPg/NwPoASAMQoCAgICAgID4PzcDoAEgDEKAgICAgICA+D83A1ggDEKAgICAgICA+D83AxAgAyAPIAMgD0gbIgRBAEoEQEEIICIgEiASICJKGyIDIANBCE4bIRcgAiASIAIgEkgbIgIgDyACIA9IGyEmA0AgDCAoNgIIIAwgJyAEIBIgBCAEIBJKGyIGayIpQQN0IipqNgIEIBAgDEEEaiAGIBYQfiAGIQdBACETIBJBAEoEQANAIAYgE2siAiAXIAIgAiAXShsiEWshJSATIClqIRQgEUEASgRAQQggJiAHIAcgJkobIgIgAkEIThshGSAUQQFqISAgHSAUQQN0Ii1qIS5BACEDA0ACQCADIg5BAWoiAyARTg0AIC4gDkEDdCICaiEaIAxBEGogAmohGyADIQICQCAZIA5Bf3NqIh9BAkkNACAVQQFHDQAgGiADQQN0aiAtaiEvIAP9Ef0MAAAAAAEAAAAAAAAAAAAAAP2uASE8IAMgH0F+cSIYaiECQQAhDgNAIBsgPEEG/asBIj39GwBqIC8gDkEDdGr9AAMAIj79IQA5AwAgGyA9/RsBaiA+/SEBOQMAIDz9DAIAAAACAAAAAgAAAAIAAAD9rgEhPCAOQQJqIg4gGEcNAAsgGCAfRg0BCyACQQFqIQ4gGSACa0EBcQRAIBsgAkEGdGogGiACIBRqIBVsQQN0aisDADkDACAOIQILIA4gGUYNAANAIBsgAkEGdGoiDiAaIAIgFGogFWxBA3RqKwMAOQMAIA5BQGsgGiACICBqIBVsQQN0aisDADkDACACQQJqIgIgGUcNAAsLIAMgGUcNAAsLIAxBCDYCCCAMIAxBEGo2AgQgCyAMQQRqIgIgESAREGggDCAhNgIIIAwgHiAUQQN0IgNqNgIEIAIgCyAQIBEgESAWIAgrAyAgESAGIBMQLiAlQQBKBEAgDCAVNgIIIAwgAyAdaiARIBRqIgMgFWxBA3RqNgIEIAsgAiARICUQaCAMICE2AgggDCAeIANBA3RqNgIEIAIgCyAQICUgESAWIAgrAyAgESAGIBMQLgsgByAXayEHIBMgF2oiEyAGSA0ACwsgBCAPSARAIB0gKmohByAEIQIDQCAMIBU2AgggDCAHIAIgFWxBA3RqNgIEIAsgDEEEaiIOIAYgDyACICJqIgMgAyAPShsgAmsiERBoIAwgITYCCCAMIB4gAkEDdGo2AgQgDiALIBAgESAGIBYgCCsDIEF/QX9BABAuIAMiAiAPSA0ACwsgBCASayIEQQBKDQALCwJAICRBgYABSQ0AIA1FDQAgDUEEaygCABARCwJAICNBgYABSQ0AIAVFDQAgBUEEaygCABARCyAMQZAEaiQADAMLCwsMDQsgCCgCACICBEAgAkEEaygCABARCyAIKAIEIgIEQCACQQRrKAIAEBELIAhBMGokACAJKAI8IgIEQCACQQRrKAIAEBELIAkoAlgiAgRAIAJBBGsoAgAQEQsgCUHwAGokAAwCCwsMCQsgHCAsaiIcIAAoAhAiA0gNAAsMAQsgBEEASA0BIAIgBCAEEB4gACgCECIcQQBMDQADQCABKAIAIQggASgCBCEHIAEoAgghCyAKIAAoAgAiBCgCCCANIBwgDUF/c2ogAC0ADBsiAyAAKAIUIg5qayIFNgIMIAogBSALICsbIgY2AhAgCiAIIAcgBWsiEEEDdGogByALIAZrIgtsQQN0ajYCCCAFIAZyQQBIQQAgCBsNCiAKIAc2AiAgCiABNgIUIAogCzYCHCAKIBA2AhggBSAQckEASA0GIAYgC3JBAEgNBiADQQBIDQMgAyAcTg0DIAQoAgQhByAEKAIIIANBAWoiCCAOaiIFayIGQQBIQQAgBCgCACILGw0KIAUgBnJBAEgNBiADIAdODQYgCiAENgJQIAogBjYCTCAKIAU2AlggCiADNgJUIAogCyADQQN0IgNqIAUgB2xBA3RqNgJEIApBATYCXCAKIAMgACgCBCIEKAIAaiAEKAIEIAhsQQN0aisDADkDKCACKAIAIQNBACEFIwBBsAFrIgYkACAKKwMoIToCQAJAAkAgCigCDCIEQQFGBEAgCigCECIHQQBIDQ1EAAAAAAAA8D8gOqEhOiAKKAIIIQggCigCFCgCBCELQQAhBAJAAkAgBw4CAwEACyALQQFHDQAgB0H+////B3EhBCA6/RQhPEEAIQMDQCAIIANBA3RqIhAgPCAQ/QADAP3yAf0LAwAgA0ECaiIDIARHDQALIAQgB0YNAgsgByAEIgNrQQNxIhAEQANAIAggAyALbEEDdGoiDiA6IA4rAwCiOQMAIANBAWohAyAFQQFqIgUgEEcNAAsLIAQgB2tBfEsNAQNAIAggAyALbEEDdGoiBCA6IAQrAwCiOQMAIAggA0EBaiALbEEDdGoiBCA6IAQrAwCiOQMAIAggA0ECaiALbEEDdGoiBCA6IAQrAwCiOQMAIAggA0EDaiALbEEDdGoiBCA6IAQrAwCiOQMAIANBBGoiAyAHRw0ACwwBCyA6RAAAAAAAAAAAYQ0AIAYgCigCECIQNgKYASAGIAM2ApABIBBBAEgNASAKKAIIIQUgBiAEQQFrIgk2AmAgBiAFQQhqNgJcIAYgEDYCZCAJIBByQQBIQQAgBRsNDSAGIAooAiA2AoABIAYgCikCGDcCeCAGIAr9AAII/QsCaCAGQgE3AoQBIAYgBigCdCgCBDYCjAEgBEEATA0JIAopAkQhPyAGIAooAkwiBDYCECAGID83AwggCv0AAlAhPCAGIAb9AAJs/QsCNCAGIAb9AAJ8/QsCRCAGIAYoAowBNgJUIAYgBv0AAlz9CwIkIAYgPP0LAhQgBCAJRw0IIAYoAiwgEEcNDgJAIBBFDQAgEEEDdCIERQ0AIANBACAE/AsACyAGQoCAgICAgID4PzcDoAFEAAAAAAAAAAAhOkEAIQ9BACERIwBB8ABrIgckAAJAAkACQAJAIAYoAixBAUYEQCAGKwOgASE7IAYoAggiCEEAIAYoAhAiBEEASBsNEiAGKAIUIQUgBigCJCILQQAgBigCKCIDQQBIGw0SIAMgBEcNAgJAIARFDQAgBEEATA0EIAgrAwAgCysDAKIhOkEBIQMgBEEBRg0AIAUoAgQhDiAEQQFrIgVBAXEgBEECRwRAIAVBfnEhBEEAIQUDQCA6IAggAyAObEEDdGorAwAgCyADQQN0aisDAKKgIAggA0EBaiIPIA5sQQN0aisDACALIA9BA3RqKwMAoqAhOiADQQJqIQMgBUECaiIFIARHDQALC0UNACA6IAggAyAObEEDdGorAwAgCyADQQN0aisDAKKgIToLIAYoApABIgMgOyA6oiADKwMAoDkDAAwBCyAHIAYoAiA2AiAgByAGKQIYNwMYIAcgBv0AAgj9CwMIIAcgBigCVDYCWCAHIAb9AAJE/QsDSCAHIAb9AAI0/QsDOCAHIAb9AAIk/QsDKCAHIAYoApgBNgJoIAcgBikCkAE3A2AjAEEQayILJAACQAJAIAcoAhAiCEGAgICAAkkEQCAGKwOgASE6IAcoAhQhBCAHKAIIIQ4gBygCQCESIAcoAjAhFSAHKAIsIRYgBygCKCETIAhBA3QhAyAIQYGAAU8EQCADQRBqEBYiA0UNEyADQXBxIgUgAzYCDCAFQRBqIQUMAgsgCyADQR5qQXBxayIFJAAgCA0BDAILDBELIAhBgIABSyEPIAQoAgQhDEEAIQQCQCAIQQZJDQAgDEEBRw0AIAUgDmtBEEkNACAIQf7///8BcSEEQQAhAwNAIAUgA0EDdCIUaiAOIBRq/QADAP0LAwAgA0ECaiIDIARHDQALIAQgCEYNAQsgCCAEIgNrQQNxIhQEQANAIAUgA0EDdGogDiADIAxsQQN0aisDADkDACADQQFqIQMgEUEBaiIRIBRHDQALCyAEIAhrQXxLDQADQCAFIANBA3RqIA4gAyAMbEEDdGorAwA5AwAgBSADQQFqIgRBA3RqIA4gBCAMbEEDdGorAwA5AwAgBSADQQJqIgRBA3RqIA4gBCAMbEEDdGorAwA5AwAgBSADQQNqIgRBA3RqIA4gBCAMbEEDdGorAwA5AwAgA0EEaiIDIAhHDQALCyALIBIoAgQ2AgwgCyATNgIIIAtBATYCBCALIAU2AgACQCAHKAJgIgMEQCAHKAJoQQBIDRMLIBUgFiALQQhqIAsgA0EBIDoQTyAPBEAgBUEEaygCABARCyALQRBqJAAMAAsLIAdB8ABqJAAMAgtBxDpB0BtB0gBBiAwQAAALQfo6QbIaQZsDQZkJEAAACyAKKAIIIgdBACAKKAIQIgVBAEgbDQ0gCigCDEEATA0PIAYoApgBIAVHDRACQCAFQQBMDQAgCigCFCgCBCELIAYoApABIQhBACEDAkAgBUEISQ0AIAtBAUcNACAHIAVBA3QiBGogCEsgByAEIAhqSXENACAFQf7///8HcSEDQQAhBANAIAggBEEDdCIOaiIMIAcgDmr9AAMAIAz9AAMA/fAB/QsDACAEQQJqIgQgA0cNAAsgAyAFRg0BCyADQQFyIQQgBUEBcQRAIAggA0EDdGoiDiAHIAMgC2xBA3RqKwMAIA4rAwCgOQMAIAQhAwsgBCAFRg0AA0AgCCADQQN0aiIEIAcgAyALbEEDdGorAwAgBCsDAKA5AwAgCCADQQFqIgRBA3RqIg4gByAEIAtsQQN0aisDACAOKwMAoDkDACADQQJqIgMgBUcNAAsLIAVBAEgNDCAKKAIMQQBMDQ8gBSAGKAKYAUcNEAJAIAVBAEwNACAKKwMoITogBigCkAEhCCAKKAIUKAIEIQtBACEDAkAgBUEISQ0AIAtBAUcNACAIIAVBA3QiBGogB0sgCCAEIAdqSXENACAFQf7///8HcSEDIDr9FCE8QQAhBANAIAcgBEEDdCIOaiIMIAz9AAMAIDwgCCAOav0AAwD98gH98QH9CwMAIARBAmoiBCADRw0ACyADIAVGDQELIANBAXIhBCAFQQFxBEAgByADIAtsQQN0aiIOIA4rAwAgOiAIIANBA3RqKwMAoqE5AwAgBCEDCyAEIAVGDQADQCAHIAMgC2xBA3RqIgQgBCsDACA6IAggA0EDdGorAwCioTkDACAHIANBAWoiBCALbEEDdGoiDiAOKwMAIDogCCAEQQN0aisDAKKhOQMAIANBAmoiAyAFRw0ACwsgCigCTCIDQQBIDQwgCisDKCE6IAYgCigCXDYCOCAGIAopAlQ3AzAgBiAKKQJMIj83AyggCikCRCFAIAYgBigCmAEiBDYCSCAGIEA3AyAgBiA6OQMYIAYgAzYCECAGIAYpApABNwNAIAkgP6dHDQcgBCAQRw0HQQAhA0EAIQ5BACEHIwBBEGsiCyQAIAYoAihBA3QiBEGAgAhNBEAgCyAEQR5qQXBxayIDJAALIAZBQGsoAgAhEgJ/IAYoAighCAJAAkAgAyIERQRAIAhBA3QiBUEQahAWIgRFDQEgBEFwcSIFIAQ2AgwgBUEQaiEECyALIAg2AgQgCyAENgIAIAhBAE4NAQwQCyAFDQ0gCyAINgIEQQAhBCALQQA2AgALAkAgCEH+////AXFFDQAgBEEPcUUNAEHKPEHkIUHHAUGcCBAAAAsgCyADRToADCAGKAIoIAhGBEACQCAIQQBMDQAgBigCICEQIAYrAxghOiAGKAIsKAIEIQxBACEFAkAgCEEESQ0AIAxBAUcNACAEIBBrQRBJDQAgCEH+////B3EhBSA6/RQhPEEAIQMDQCAEIANBA3QiCWogPCAJIBBq/QADAP3yAf0LAwAgA0ECaiIDIAVHDQALIAUgCEYNAQsgCCAFIgNrQQNxIgkEQANAIAQgA0EDdGogOiAQIAMgDGxBA3RqKwMAojkDACADQQFqIQMgDkEBaiIOIAlHDQALCyAFIAhrQXxLDQADQCAEIANBA3RqIDogECADIAxsQQN0aisDAKI5AwAgBCADQQFqIgVBA3RqIDogECAFIAxsQQN0aisDAKI5AwAgBCADQQJqIgVBA3RqIDogECAFIAxsQQN0aisDAKI5AwAgBCADQQNqIgVBA3RqIDogECAFIAxsQQN0aisDAKI5AwAgA0EEaiIDIAhHDQALCyALDAELDA8LIg8oAgAhEAJAAkAgBigCZCIRQQBMDQAgBigCdCgCBCEMIA8oAgQhCCAGKAJcIglBACAGKAJgIgNBAEgbDQ8gCEEASA0OIAMgCEcNEiADRQ0AIAhBAXEhFSAIQf7///8HcSEEIAkgECAIQQN0akkEfyAQIAkgDCARQQFrbCAIakEDdGpJBUEACyAMQYCAgIABcUEcdnIgCEECSXJBAXEhFgNAIAcgBigCZE4NEiAJIAcgDGxBA3RqIQ4gEiAHQQN0aisDACE6QQAhAwJAIBZFBEAgOv0UITwDQCAOIANBA3QiBWoiEyAT/QADACA8IAUgEGr9AAMA/fIB/fEB/QsDACADQQJqIgMgBEcNAAsgBCIDIAhGDQELIANBAXIhBSAVBEAgDiADQQN0IgNqIhMgEysDACA6IAMgEGorAwCioTkDACAFIQMLIAUgCEYNAANAIA4gA0EDdCIFaiITIBMrAwAgOiAFIBBqKwMAoqE5AwAgDiAFQQhqIgVqIhMgEysDACA6IAUgEGorAwCioTkDACADQQJqIgMgCEcNAAsLIAdBAWoiByARRw0ACwsCQCAPLQAMQQFHDQAgEEUNACAQQQRrKAIAEBELIAtBEGokAAwACwsgBkGwAWokAAwBC0GML0HkIUGmAUGpJRAAAAsgDUEBaiINIAAoAhAiHEgNAAsLIApB4ABqJAAPC0HrLUH+IEGwAkHfJBAAAAtB/BlB5iJB5wFBkhMQAAALQao5QaIcQbABQYUWEAAAC0G+O0H3G0HiAEGQDRAAAAtB9Q9BgiBBkwFByhkQAAALQZHCAEH+IEGVAkHfJBAAAAtBBBAXIgBBiOECNgIAIABB4OACNgIAIABBrOECQQIQAQALQbEyQfYdQcoAQc0VEAAAC0GoNEHkIUGyAUGpJRAAAAtB88UAQY8iQYYCQd8kEAAAC0HSNUGCIEH6AEHKGRAAAAtBqjlB1xxB8gVBoSYQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC5EvBCh/AnwEewF+IwBBkAFrIgUkAAJAAkACQAJAAkACQAJAAkACQCABKAIEIgZB5QBOBEAgAyAGckEASEEAIAAoAnAiChsNCSAGIANrIgsgBnIiGkEASEEAIAobDQkgAigCCCEWIAIoAgAhEyABKAIIIQAgASgCDCgCBCEbAkACQCADQQBIQQAgASgCACIVG0UEQCADIAZLDQEgCiADIAZsQQN0aiEXIBNFIBZBAE5yIRwgCiAGIAZsIgdBBHRqIRggCiAHQQN0aiEZIBVFIAtBAE5yISAgAEEAIABBAEobISEgBkH+////B3EhDSADIAZrISIgC0H+////B3EhCCADQX5xIQwgA0EDdCEdIAogFWshIyALQQN0ISRBACAbQQN0ayElIBMgBkEEdEEIayIAaiEeIAogACAGbGohJiAKIAYgBkEYbEEIa2xqIScgAyAGQQN0QQhrbCAKaiAVayEoIAb9ESExIAMgC3JBAEghKSALQQJJISoDQCARICFGDQwgESAlbCEfIBUgESAbbEEDdGohDgJAIANFDQAgHyAjaiEQQQAhAANAIA4gAEEDdGorAwBEAAAAAAAAAABhBEAgAEEBaiIAIANHDQEMAgsLIAYgD00NDSAKIAMgD2xBA3RqIQRBACEJQQAhBwJAAkAgA0EBRg0AIBAgDyAdbGpBEEkNAANAIAQgB0EDdCIAaiAAIA5q/QADAP0LAwAgB0ECaiIHIAxHDQALIAwiByADRg0BCyADIAciAGtBA3EiEARAA0AgBCAAQQN0IhRqIA4gFGorAwA5AwAgAEEBaiEAIAlBAWoiCSAQRw0ACwsgByADa0F8Sw0AA0AgBCAAQQN0IgdqIAcgDmorAwA5AwAgBCAHQQhqIglqIAkgDmorAwA5AwAgBCAHQRBqIglqIAkgDmorAwA5AwAgBCAHQRhqIgdqIAcgDmorAwA5AwAgAEEEaiIAIANHDQALCyAcRQ0OIBEgAigCBCIQTg0NIAYgFkcNCyATIBFBA3RqIRQgGSAPQQN0IgBqIQlBACEHQQAhBAJAAkAgEEEBRw0A/QwAAAAAAQAAAAAAAAAAAAAAIS4gHiAJIAAgJmoiACAAIAlLG0sEQCATIAkgACAAIAlJG0EIakkNAQsDQCAJIC4gMf21ASIv/RsAQQN0aiAUIARBA3Rq/QADACIw/SEAOQMAIAkgL/0bAUEDdGogMP0hATkDACAu/QwCAAAAAgAAAAIAAAACAAAA/a4BIS4gBEECaiIEIA1HDQALIA0iBCAGRg0BCyAGIAQiAGtBA3EiKwRAA0AgCSAAIAZsQQN0aiAUIAAgEGxBA3RqKwMAOQMAIABBAWohACAHQQFqIgcgK0cNAAsLIAQgBmtBfEsNAANAIAkgACAGbEEDdGogFCAAIBBsQQN0aisDADkDACAJIABBAWoiByAGbEEDdGogFCAHIBBsQQN0aisDADkDACAJIABBAmoiByAGbEEDdGogFCAHIBBsQQN0aisDADkDACAJIABBA2oiByAGbEEDdGogFCAHIBBsQQN0aisDADkDACAAQQRqIgAgBkcNAAsLIA9BAWohDwsgIEUNDSApDQcgC0EASA0IAkAgAyAGRg0AIB8gKGohECAOIB1qIQRBACEAA0AgBCAAQQN0aisDAEQAAAAAAAAAAGEEQCAAQQFqIgAgC0cNAQwCCwsgBiASTQ0NIBcgCyASbEEDdGohDkEAIQlBACEHAkACQCAqDQAgECASICRsakEQSQ0AA0AgDiAHQQN0IgBqIAAgBGr9AAMA/QsDACAHQQJqIgcgCEcNAAsgCCIHIAtGDQELIAYgByIAIANqa0EDcSIQBEADQCAOIABBA3QiFGogBCAUaisDADkDACAAQQFqIQAgCUEBaiIJIBBHDQALCyAHICJqQXxLDQADQCAOIABBA3QiB2ogBCAHaisDADkDACAOIAdBCGoiCWogBCAJaisDADkDACAOIAdBEGoiCWogBCAJaisDADkDACAOIAdBGGoiB2ogBCAHaisDADkDACAAQQRqIgAgC0cNAAsLIBxFDQ4gESACKAIEIg5ODQ0gBiAWRw0EIBMgEUEDdGohECAYIBJBA3QiAGohBEEAIQlBACEHAkACQCAOQQFHDQD9DAAAAAABAAAAAAAAAAAAAAAhLiAeIAQgACAnaiIAIAAgBEsbSwRAIBMgBCAAIAAgBEkbQQhqSQ0BCwNAIAQgLiAx/bUBIi/9GwBBA3RqIBAgB0EDdGr9AAMAIjD9IQA5AwAgBCAv/RsBQQN0aiAw/SEBOQMAIC79DAIAAAACAAAAAgAAAAIAAAD9rgEhLiAHQQJqIgcgDUcNAAsgDSIHIAZGDQELIAYgByIAa0EDcSIUBEADQCAEIAAgBmxBA3RqIBAgACAObEEDdGorAwA5AwAgAEEBaiEAIAlBAWoiCSAURw0ACwsgByAGa0F8Sw0AA0AgBCAAIAZsQQN0aiAQIAAgDmxBA3RqKwMAOQMAIAQgAEEBaiIHIAZsQQN0aiAQIAcgDmxBA3RqKwMAOQMAIAQgAEECaiIHIAZsQQN0aiAQIAcgDmxBA3RqKwMAOQMAIAQgAEEDaiIHIAZsQQN0aiAQIAcgDmxBA3RqKwMAOQMAIABBBGoiACAGRw0ACwsgEkEBaiESCyARQQFqIhEgBkcNAAsgCkEAIAMgD3JBAEgiABsNDCAGIA9IDQYgAA0GIApBACAGIA9yQQBIGw0MIAYgD0kNBiAFIAY2AowBIAVCADcChAEgBSAGNgJ8IAUgBjYCeCAFIBk2AnQgBSAGNgJwIAUgDzYCbCAFIBk2AmggBSADNgJkIAVCADcCXCAFIAY2AlQgBSADNgJQIAUgCjYCTCAFIA82AkggBSADNgJEIAUgCjYCQCABKAIAIQAgBSABKAIIIgI2AhQgBSADNgIQIAUgADYCDCACIANyQQBIQQAgABsNDCAFIAEoAhg2AjAgBSABKQIQNwIoIAUgAf0AAgD9CwIYIAVCADcCNCAFIAUoAiQoAgQ2AjwgA0EASA0GIAJBAEgNBiADIAZKDQYgAiAGRw0JIAVBDGoiAiAFQUBrIgcgBUHoAGoiBBDpAyAKQQAgCyASciINQQBIGw0MIAYgEkgNBiANQQBIDQYgCkEAIAYgEnJBAEgbDQwgEkEASA0GIAUgBjYCjAEgBUIANwKEASAFIAY2AnwgBSAGNgJ4IAUgGDYCdCAFIAY2AnAgBSASNgJsIAUgGDYCaCAFIAs2AmQgBUIANwJcIAUgBjYCVCAFIAs2AlAgBSAXNgJMIAUgEjYCSCAFIAs2AkQgBSAXNgJAIAUgBjYCFCAFIAs2AhAgBSAAIANBA3RqNgIMIBpBAEhBACAAGw0MIAUgASgCGDYCMCAFIAEpAhA3AiggBSAB/QACAP0LAhggBUEANgI4IAUgAzYCNCAFIAUoAiQoAgQ2AjwgAyAackEASA0GIAIgByAEEOkDDAQLIABBAEwNCgwLCyAAQQBMDQkMBAsMBgsgACgCcCEAIAUgBjYCFCAFIAY2AhAgBSAANgIMIAZBAEhBACAAGw0IIABBD3FBACAGIAZsQfz///8BcRsNASAFIAEoAhg2AlggBSABKQIQNwNQIAUgAf0AAgD9CwNAIAUgAjYCXCABKAIIIhIgAigCBCIDRw0EIAYgBSgCREcNBSACKAIIIAZHDQUgBUFAayEAIwBB4ABrIg0kACAFQQxqIg8oAgQhBCAFKAIUIQgCQAJAIANBAEwNACADIARqIAhqQRNKDQAgACgCCCADRw0GIAAoAgAhCiAAKAIEIQsgDSADNgIwIA0gCzYCLCANIAo2AiggDSAAKQIUNwI8IA0gACkCDCIyNwI0IA0gCjYCSCANIAI2AkQgDSAypygCBDYCUCANIAIoAgA2AlQgDSADNgJYIA0gAzYCXCAEIAtHDQcgAigCCCAIRw0HIAUoAgwhACANIAQ2AiQgDSAANgIcIA0gDzYCGCANIA1BC2o2AhQgDSANQShqNgIQIA0gDUEcajYCDAJAIA0oAhgiACgCCCIKQQBMDQAgACgCBCILQQBMDQAgDSgCECICKAIIIQQgDSgCDCIAKAIIIQ8gACgCACEJIAIoAgAiEEEAIARBAEgbDQsCQAJAIARFBEBBACEDA0AgCSADIA9sQQN0aiEMQQAhAANAIAAgAigCBE4NBCACKAIcIgQoAgQhCCAEKAIAQQAgCEEASBsNECADIAQoAghODQQgCA0DIAwgAEEDdGpCADcDACAAQQFqIgAgC0cNAAsgA0EBaiIDIApHDQALDAMLIARBAEoEQCAEQQFGBEBBACEDA0AgCSADIA9sQQN0aiEMQQAhAANAIAAgAigCBE4NBSACKAIcIggoAgQhBCAIKAIAIhFBACAEQQBIGw0RIAMgCCgCCE4NBSAEQQFHDQQgDCAAQQN0IghqIAggEGorAwAgESADIARsQQN0aisDAKI5AwAgAEEBaiIAIAtHDQALIANBAWoiAyAKRw0ACwwECyAEQQFrIgBBfnEhFCAAQQFxIRUgBEECRiEWA0AgCSAMIA9sQQN0aiEXQQAhCANAIAggAigCBE4NBCACKAIMIAIoAhwiAygCBCEAIAMoAgAiDkEAIABBAEgbDRAgDCADKAIITg0EIAAgBEcNAyAQIAhBA3QiGGoiESsDACAOIAAgDGxBA3RqIg4rAwCiISwoAgQhE0EAIQNBASEAIBZFBEADQCAsIBEgACATbEEDdGorAwAgDiAAQQN0aisDAKKgIBEgAEEBaiIZIBNsQQN0aisDACAOIBlBA3RqKwMAoqAhLCAAQQJqIQAgA0ECaiIDIBRHDQALCyAXIBhqIBUEfCAsIBEgACATbEEDdGorAwAgDiAAQQN0aisDAKKgBSAsCzkDACAIQQFqIgggC0cNAAsgDEEBaiIMIApHDQALDAMLIAIoAgRBAEwNASACKAIcIgAoAgQhASAAKAIAQQAgAUEASBsNDSAAKAIIQQBMDQEgASAERw0ADAsLQfE4QcUdQfQAQb8VEAAACwwKCwwBCyAEIAhyQQBIDQQCQCAEIAhsIgNBAEwNACADQQN0IgNFDQAgBSgCDEEAIAP8CwALIA1CgICAgICAgPg/NwMoIA1BKGohDCMAQeAAayIDJAACQAJAIAUoAhAiBCAAKAIERw0AIAUoAhQiCCACKAIIRw0AAkAgCEUNACAERQ0AIAAoAggiCkUNACAIQQFGBEAgAyAFKAIMIgg2AgAgAyAENgIEIARBAEhBACAIGw0NIAMgBSgCFDYCFCADIAUpAgw3AgwgA0IANwIcIAMgAygCEDYCJCACKAIAIQQgAyACKAIEIgg2AjwgAyAENgI4IARBACAIQQBIGw0NIAMgCDYCUCADQgA3AkggAyACNgJEIAMgACADQThqIAwQnAIMAQsgBEEBRgRAIAMgBSgCDCIENgI4IAMgCDYCQCAIQQBIQQAgBBsNDSADIAUoAhQ2AkwgAyAFKQIMNwJEIANBATYCXCADQgA3AlQgAyAAKAIAIgQ2AgAgAyAKNgIIIApBAEhBACAEGw0NIAMgACgCGDYCJCADIAApAhA3AhwgAyAA/QACAP0LAgwgA0EBNgIwIANCADcCKCMAQeAAayIIJAACQAJAAkAgAigCCEEBRgRAIAwrAwAhLSADKAIAIgxBACADKAIIIgBBAEgbDREgAygCGCEEIAIoAgAiCkEAIAIoAgQiAkEASBsNESAAIAJHDQICQCAARQ0AIABBAEwNECAMKwMAIAorAwCiISxBASEJIABBAUYNACAEKAIEIQIgAEEBayIEQQFxIABBAkcEQCAEQX5xIQBBACEEA0AgLCAMIAIgCWxBA3RqKwMAIAogCUEDdGorAwCioCAMIAlBAWoiDyACbEEDdGorAwAgCiAPQQN0aisDAKKgISwgCUECaiEJIARBAmoiBCAARw0ACwtFDQAgLCAMIAIgCWxBA3RqKwMAIAogCUEDdGorAwCioCEsCyADKAI4IgAgLSAsoiAAKwMAoDkDAAwBCyAIIAMoAjA2AjAgCCAD/QACIP0LAyAgCCAD/QACEP0LAxAgCCAD/QACAP0LAwAgCEFAayADKAJANgIAIAggAykCODcDOCAIIAMoAkw2AkwgCCADKQJENwJEIAggAygCXDYCXCAIIAMpAlQ3AlQgCCACNgI0IwBBEGsiCiQAAkACQAJAAkAgCCgCCCIEQYCAgIACSQRAIAwrAwAhLCAIKAIYIQIgCCgCACELIAgoAjQhCSAEQQN0IQAgBEGBgAFPBEAgAEEQahAWIgBFDQQgAEFwcSIMIAA2AgwgDEEQaiEMDAILIAogAEEeakFwcWsiDCQAIAQNAQwCCwwCCyAEQYCAAUshESACKAIEIQ9BACECAkAgBEEGSQ0AIA9BAUcNACAMIAtrQRBJDQAgBEH+////AXEhAkEAIQADQCAMIABBA3QiE2ogCyATav0AAwD9CwMAIABBAmoiACACRw0ACyACIARGDQELIAQgAiIAa0EDcSITBEADQCAMIABBA3RqIAsgACAPbEEDdGorAwA5AwAgAEEBaiEAIA5BAWoiDiATRw0ACwsgAiAEa0F8Sw0AA0AgDCAAQQN0aiALIAAgD2xBA3RqKwMAOQMAIAwgAEEBaiICQQN0aiALIAIgD2xBA3RqKwMAOQMAIAwgAEECaiICQQN0aiALIAIgD2xBA3RqKwMAOQMAIAwgAEEDaiICQQN0aiALIAIgD2xBA3RqKwMAOQMAIABBBGoiACAERw0ACwsgCSgCCCEAIAkoAgAhAiAKIAkoAgQiBDYCDCAKIAI2AgggCkEBNgIEIAogDDYCAAJAIAgoAjgiAgRAIAgoAkBBAEgNAQsgACAEIApBCGogCiACIAgoAkggLBBPIBEEQCAMQQRrKAIAEBELIApBEGokAAwCCwwSC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAsLIAhB4ABqJAAMAQtBxDpB0BtB0gBBiAwQAAALDAELIAwrAwAhLCADIAo2AhAgAyAINgIMIAMgBDYCCCADQgA3AwAgA0EQaiADQQhqIANBDGoQfSADIAMoAhAiBCADKAIIbDYCFCADIAQgAygCDGw2AhggACgCBCACKAIIIAAoAgggACgCACAAKAIMKAIEIAIoAgAgAigCBCAFKAIMIAUoAhAgLCADEJQBIAMoAgAiAARAIABBBGsoAgAQEQsgAygCBCIARQ0AIABBBGsoAgAQEQsgA0HgAGokAAwBC0G8OEHbGkHWA0H3FRAAAAsLIA1B4ABqJAAgBiAFKAIQRw0FIAUoAhQgEkcNBSAGQQBMDQAgEkEATA0AIAZB/v///wdxIQIgASgCACINIAUoAgwiCCAGIBJsQQN0akkgCCANIAEoAgwoAgQiDCASQQFrbCAGakEDdGpJcSAGIAxyQYCAgIABcUEcdnIgBkEGSXIhCgNAIAggBiAHbEEDdGohASANIAcgDGxBA3RqIQNBACEAQQAhBAJAIApFBEADQCADIABBA3QiBGogASAEav0AAwD9CwMAIABBAmoiACACRw0ACyACIgQgBkYNAQtBACEJIAYgBCIAa0EDcSILBEADQCADIABBA3QiD2ogASAPaisDADkDACAAQQFqIQAgCUEBaiIJIAtHDQALCyAEIAZrQXxLDQADQCADIABBA3QiBGogASAEaisDADkDACADIARBCGoiC2ogASALaisDADkDACADIARBEGoiC2ogASALaisDADkDACADIARBGGoiBGogASAEaisDADkDACAAQQRqIgAgBkcNAAsLIAdBAWoiByASRw0ACwsgBUGQAWokAA8LQco8QeQhQccBQZwIEAAAC0H1D0GCIEGTAUHKGRAAAAtBsTJB9h1BygBBzRUQAAALQb47QfcbQeIAQZANEAAAC0HzxQBBjyJBhgJB3yQQAAALQfo6QbIaQZsDQZkJEAAAC0HSNUGCIEH6AEHKGRAAAAtBqDRB5CFBsgFBqSUQAAALsgEBBX8jAEEQayIDJABBASECAkAgACgCBCIEQQJOBEADQCADIAEQ2wEgAiAAKAIEIgVKDQIgACgCACACQQN0aiIGQQhrIAMrAwA5AwAgAiAFTg0CIAYgAysDCDkDACACQQJqIgIgBEgNAAsLIAIgBEYEQCADIAEQ2wEgBCAAKAIESg0BIAAoAgAgBEEDdGpBCGsgAysDADkDAAsgA0EQaiQADwtB2zpBsSFBmgNBjCoQAAALowIBBn8gASAAKAIIIgMgACgCBCICa0EMbU0EQCAAIAEEfyABQQxsQQxrIgAgAEEMcGtBDGoiAARAIAJBACAA/AsACyAAIAJqBSACCzYCBA8LAkAgAiAAKAIAIgJrIgVBDG0gAWoiBEHWqtWqAUkEQEHVqtWqASADIAJrQQxtIgNBAXQiBiAEIAQgBkkbIANBqtWq1QBPGyIEBEAgBEHWqtWqAU8NAiAEQQxsEBIhBwsgBSAHaiEDIAFBDGxBDGsiASABQQxwa0EMaiIBBEAgA0EAIAH8CwALIAMgBUF0bUEMbGohBiAFBEAgBiACIAX8CgAACyAAIAcgBEEMbGo2AgggACABIANqNgIEIAAgBjYCACACBEAgAhARCw8LEBMACxAfAAuFCwMFfwF8AXsjAEEgayIEJAAgACABIAJIOgCEAQJAAkACfwJAAkACQAJAIAEgAnJBAE4EQCAALQAlIAEgACgCNEZxIAIgACgCOEZxIAMgACgCLEZxIgVFBEAgACACNgI4IAAgATYCNCAAIAM2AiwgAEGAAjsBJCAAQQA2AiAgACADQQJ2QQFxIgY6ACcgACADQf8BcSIDQQV2IgdBAXE6ACogACADQQR2QQFxIgg6ACkgACADQQN2QQFxIgM6ACggAyAGcQ0CIAdBAXEgCHENAyAAIAIgASABIAJKGyIBNgI8IAFBAEgNCCAAQRhqIAEgARAeIAAoAjQiASAAKAI8QQAgAC0AKEEBcRsgAC0AJxsiAiABckEASA0EAkAgAUUNACACRQ0AIAFB/////wcgAm1KDQYLIAAgASACbCABIAIQGyAAKAI4IgEgACgCPEEAIAAtACpBAXEbIAAtACkbIgIgAXJBAEgNBAJAIAFFDQAgAkUNACABQf////8HIAJtSg0GCyAAQQxqIAEgAmwgASACEBsLIAUMBQtB9S5BvCJB0wJBmiUQAAALQcM/QbwiQecCQZolEAAAC0GPPkG8IkHoAkGaJRAAAAtBkcIAQf4gQZUCQd8kEAAAC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAtFBEAgACgCPCEBIARCADcDECAEIAE2AgwgBCABQQFqIgI2AggCQAJAIAEgAnJBAE4EQCAAQeAAaiAEQQhqEDICQCAAKAJoIAAoAmRsIgVBAEwNACAEKwMQIQkgACgCYCEDAkAgBUEBRgRAIAMhAgwBCyADIAVB/v///wdxIgZBA3RqIQIgCf0UIQpBACEBA0AgAyABQQN0aiAK/QsDACABQQJqIgEgBkcNAAsgBSAGRg0BCyACIAk5AwALIAAgAC0AKSAALQAqckEBcSIBOgCFASAAIAAtACcgAC0AKHJBAXEiAjoAhgECQCAALQCEAUEBRgRAIAAgAToAhgEgACACOgCFASACDQEMAwsgAUUNAgsgACgCPCEBIARCADcDECAEIAFBAWoiAjYCDCAEIAI2AgggAUF+TA0EIABByABqIARBCGoQMiAAKAJQIAAoAkxsIgJBAEwNAiAEKwMQIQkgACgCSCEDIAJBAUYEQCADIAk5AwAMAwsgAyACQf7///8HcSIFQQN0aiAJ/RQhCkEAIQEDQCADIAFBA3RqIAr9CwMAIAFBAmoiASAFRw0ACyACIAVGDQIgCTkDAAwCCwwDCyAAKAI8IQEgBEIANwMQIARBAjYCCCAEIAFBAWo2AgwgAUF+TA0CIABByABqIARBCGoQMiAAKAJQIAAoAkxsIgVBAEwNACAEKwMQIQkgACgCSCEDAkAgBUEBRgRAIAMhAgwBCyADIAVB/v///wdxIgZBA3RqIQIgCf0UIQpBACEBA0AgAyABQQN0aiAK/QsDACABQQJqIgEgBkcNAAsgBSAGRg0BCyACIAk5AwALAkAgAC0AhgFBAUcNACAAKAI8IQEgBEIANwMQIAQgATYCDCAEIAE2AgggAUEASA0CIABB1ABqIARBCGoQMiAAKAJcIAAoAlhsIgVBAEwNACAEKwMQIQkgACgCVCEDAkAgBUEBRgRAIAMhAgwBCyADIAVB/v///wdxIgZBA3RqIQIgCf0UIQpBACEBA0AgAyABQQN0aiAK/QsDACABQQJqIgEgBkcNAAsgBSAGRg0BCyACIAk5AwALIABB8ABqIAAoAjxBAWoiASABbEEDbCIBIAEQHiAAKAI8IgFBAEgNAiAAQfgAaiABQQNsIgAgABCnAQsgBEEgaiQADwtBsTJB9h1BygBBzRUQAAALQestQf4gQbACQd8kEAAAC/oYBBV/AnwBfgF7IAEoAgwhAwJAAkACQAJAAkAgASgCACIFKAIEIgIgACgCACIEKAIERgRAIAQoAgggA0YNAQsgAiADckEASA0BAkAgAkUNACADRQ0AIAJB/////wcgA21KDQULIAQgAiADbCACIAMQGyABKAIAIQULIwBBgAFrIgckACAEKAIEIQIgBCgCCCEIAkACQAJAAkACQCABIgNBBGooAgQiAUEATA0AIAEgAmogCGpBE0oNACAHIAU2AhAgByADKAIcNgIsIAcgA/0AAgz9CwIcIAcgAykCBDcCFCAFKAIIIAFHDQIgByAFNgJIIAcgAygCHDYCZCAHIAP9AAIM/QsCVCAHIAMpAgQiGTcCTCAHIAUpAgA3AmggByAZPgJwIAcoAlgoAgQhAyAHIAE2AnwgByADNgJ4IAcoAhwhAgJAAkACQAJ/IAcoAhAoAgQiAyAEKAIERgRAIAMhASACIAQoAgggAkYNARoLIAIgA3JBAEgNCQJAIANFDQAgAkUNACADQf////8HIAJtSg0CCyAEIAIgA2wgAyACEBsgBCgCBCEBIAQoAggLIQUgASADRw0BIAIgBUcNAQwCC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAtBxg9B1xxB/QVBoSYQAAALIAcgBCkCADcCQCAHIAQ2AjwgByAHQQ9qNgI4IAcgB0HIAGo2AjQgByAHQUBrNgIwAkAgBygCPCIBKAIIIghBAEwNACABKAIEIglBAEwNACAHKAIwIgEoAgQhCiABKAIAIQwgBygCNCIDKAIAIgQoAgghAiAEKAIAIhBBACACQQBIGw0IAkACQCACRQRAQQAhAgNAIAwgAiAKbEEDdGohBUEAIQEDQCABIAQoAgRODQQgAygCBEEAIAMoAggiBkEASBsNDSACIAMoAgxODQQgBg0DIAUgAUEDdGpCADcDACABQQFqIgEgCUcNAAsgAkEBaiICIAhHDQALDAMLIAJBAEoEQCACQQFGBEBBACECA0AgDCACIApsQQN0aiEFQQAhAQNAIAEgBCgCBE4NBSADKAIQKAIEIQYgAygCBCINQQAgAygCCCILQQBIGw0OIAIgAygCDE4NBSALQQFHDQQgBSABQQN0IgtqIAsgEGorAwAgDSACIAZsQQN0aisDAKI5AwAgAUEBaiIBIAlHDQALIAJBAWoiAiAIRw0ACwwECyACQQFrIgFBfnEhEiABQQFxIQ8gAkECRiETA0AgDCAGIApsQQN0aiEUQQAhBQNAIAUgBCgCBCINTg0EIAMoAhAoAgQhASADKAIEIg5BACADKAIIIgtBAEgbDQ0gBiADKAIMTg0EIAIgC0cNAyAQIAVBA3QiFWoiCysDACAOIAEgBmxBA3RqIg4rAwCiIRdBACERQQEhASATRQRAA0AgFyALIAEgDWxBA3RqKwMAIA4gAUEDdGorAwCioCALIAFBAWoiFiANbEEDdGorAwAgDiAWQQN0aisDAKKgIRcgAUECaiEBIBFBAmoiESASRw0ACwsgFCAVaiAPBHwgFyALIAEgDWxBA3RqKwMAIA4gAUEDdGorAwCioAUgFws5AwAgBUEBaiIFIAlHDQALIAZBAWoiBiAIRw0ACwwDCyAEKAIEQQBMDQEgAygCBEEAIAMoAggiAEEASBsNCiADKAIMQQBMDQEgACACRw0ADAkLQfE4QcUdQfQAQb8VEAAAC0HSNUGCIEH6AEHKGRAAAAsMAQsgB0IANwNQIAcgAjYCSCAHIAg2AkwgAiAIckEASA0CIAQgB0HIAGoQMgJAIAQoAgggBCgCBGwiBkEATA0AIAcrA1AhGCAEKAIAIQICQCAGQQFGBEAgAiEBDAELIAIgBkH+////B3EiCEEDdGohASAY/RQhGgNAIAIgCUEDdGogGv0LAwAgCUECaiIJIAhHDQALIAYgCEYNAQsgASAYOQMACyAHQoCAgICAgID4PzcDSCAHQcgAaiEJIwBB0ABrIgIkAAJAAkAgBCgCBCIBIAUoAgRHDQAgBCgCCCIGIAMoAgxHDQACQCAGRQ0AIAFFDQAgBSgCCCIIRQ0AIAZBAUYEQCACIAQoAgAiBjYCNCACIAE2AjggAUEASEEAIAYbDQogAiABNgJMIAJCADcCRCACIAQ2AkAgAygCBCEBIAIgAygCCCIENgIEIAIgATYCACABQQAgBEEASBsNCiACIAMoAhw2AiQgAiADKQIUNwIcIAIgA/0AAgT9CwIMIAJCADcCKCACIAIoAhgoAgQ2AjAgAkE0aiAFIAIgCRDmAwwBCyABQQFGBEAgAiAEKAIAIgE2AgAgAiAGNgIIIAZBAEhBACABGw0KIAJBATYCGCACQgA3AhAgAiAENgIMIAIgBSgCACIBNgI0IAIgCDYCPCAIQQBIQQAgARsNCiACQQE2AkwgAkIANwJEIAIgBTYCQCMAQeAAayIEJAACQAJAAkAgAygCDEEBRgRAIAkrAwAhGCACKAI0IgZBACACKAI8IgVBAEgbDQ4gAigCQCEJIAMoAgQiCEEAIAMoAggiAUEASBsNDiABIAVHDQICQCAFRQ0AIAVBAEwNDiAGKwMAIAgrAwCiIRdBASEBIAVBAUYNACAJKAIEIQMgBUEBayIJQQFxIAVBAkcEQCAJQX5xIQlBACEFA0AgFyAGIAEgA2xBA3RqKwMAIAggAUEDdGorAwCioCAGIAFBAWoiDCADbEEDdGorAwAgCCAMQQN0aisDAKKgIRcgAUECaiEBIAVBAmoiBSAJRw0ACwtFDQAgFyAGIAEgA2xBA3RqKwMAIAggAUEDdGorAwCioCEXCyACKAIAIgEgGCAXoiABKwMAoDkDAAwBCyAEIAIoAkw2AhggBCACKQJENwMQIAQgAv0AAjT9CwMAIAQgAygCHDYCOCAEIAMpAhQ3AzAgBCAD/QACBP0LAyAgBCACKAIYNgJYIAQgAikCEDcDUCAEIAL9AAIA/QsDQCAEQUBrIQwjAEEQayIIJAACQAJAAkAgBCgCCCIFQYCAgIACSQRAIAkrAwAhFyAEKAIMIQMgBCgCACEJIAQoAiwhDiAEKAIoIRAgBCgCJCERIAQoAiAhEiAFQQN0IQEgBUGBgAFPBEAgAUEQahAWIgFFDRMgAUFwcSIGIAE2AgwgBkEQaiEGDAILIAggAUEeakFwcWsiBiQAIAUNAQwCCwwRCyAFQYCAAUshDSADKAIEIQpBACEDAkAgBUEGSQ0AIApBAUcNACAGIAlrQRBJDQAgBUH+////AXEhA0EAIQEDQCAGIAFBA3QiD2ogCSAPav0AAwD9CwMAIAFBAmoiASADRw0ACyADIAVGDQELIAUgAyIBa0EDcSIPBEADQCAGIAFBA3RqIAkgASAKbEEDdGorAwA5AwAgAUEBaiEBIAtBAWoiCyAPRw0ACwsgAyAFa0F8Sw0AA0AgBiABQQN0aiAJIAEgCmxBA3RqKwMAOQMAIAYgAUEBaiIDQQN0aiAJIAMgCmxBA3RqKwMAOQMAIAYgAUECaiIDQQN0aiAJIAMgCmxBA3RqKwMAOQMAIAYgAUEDaiIDQQN0aiAJIAMgCmxBA3RqKwMAOQMAIAFBBGoiASAFRw0ACwsgCCAOKAIENgIMIAggEjYCCCAIQQE2AgQgCCAGNgIAAkAgDCgCACIBBEAgDCgCCEEASA0BCyAQIBEgCEEIaiAIIAEgDCgCDCgCBCAXEE8gDQRAIAZBBGsoAgAQEQsgCEEQaiQADAELDA4LCyAEQeAAaiQADAELQcQ6QdAbQdIAQYgMEAAACwwBCyAJKwMAIRcgAiAINgIQIAIgBjYCDCACIAE2AgggAkIANwMAIAJBEGogAkEIaiACQQxqEH0gAiACKAIQIgEgAigCCGw2AhQgAiABIAIoAgxsNgIYIAUoAgQiASADKAIMIAUoAgggBSgCACABIAMoAgQgAygCECgCBCAEKAIAIAQoAgQgFyACEJQBIAIoAgAiAQRAIAFBBGsoAgAQEQsgAigCBCIBRQ0AIAFBBGsoAgAQEQsgAkHQAGokAAwBC0G8OEHbGkHWA0H3FRAAAAsLIAdBgAFqJAAMAgtBvjtB9xtB4gBBkA0QAAALQbEyQfYdQcoAQc0VEAAACyAAKAIAGg8LQZHCAEH+IEGVAkHfJBAAAAtB+jpBshpBmwNBmQkQAAALQag0QeQhQbIBQaklEAAAC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAvAFgMTfwJ8An4jAEHgAGsiBiQAIAAoAgQhAyAAKAIIIQQCQAJAAkACQAJAAkACQCACKAIEIgVBAEwNACADIAVqIARqQRNKDQAgASgCCCIFIAIpAgAiGEIgiKdHDQIgBiACKAIIIgc2AjQgBiAYNwIsIAYgATYCKCAGQUBrIAIpAhQ3AgAgBiACKQIMIhk3AjggASgCACECIAEoAgQhASAGIBg+AlAgBiABNgJMIAYgAjYCSCAZpygCBCECIAYgBTYCXCAGIAI2AlggASADRw0DIAQgB0cNAyAGIAAoAgA2AhwgBiAAKAIMKAIENgIkIAYgADYCGCAGIAZBC2o2AhQgBiAGQShqNgIQIAYgBkEcajYCDEEAIQMCQCAGKAIYIgAoAggiB0EATA0AIAAoAgQiCEEATA0AIAYoAgwiACgCCCEJIAAoAgAhCyAGKAIQIgEoAgAiBCgCCCECIAQoAgAiD0EAIAJBAEgbDQcCQAJAIAJFBEBBACECA0AgCyACIAlsQQN0aiEDQQAhAANAIAAgBCgCBE4NBCABKAIEQQAgASgCCCIFQQBIGw0MIAIgASgCDE4NBCAFDQMgAyAAQQN0akIANwMAIABBAWoiACAIRw0ACyACQQFqIgIgB0cNAAsMAwsgAkEASgRAIAJBAUYEQEEAIQIDQCALIAIgCWxBA3RqIQNBACEAA0AgACAEKAIETg0FIAEoAhAoAgQhBSABKAIEIgxBACABKAIIIgpBAEgbDQ0gAiABKAIMTg0FIApBAUcNBCADIABBA3QiCmogCiAPaisDACAMIAIgBWxBA3RqKwMAojkDACAAQQFqIgAgCEcNAAsgAkEBaiICIAdHDQALDAQLIAJBAWsiAEF+cSEQIABBAXEhESACQQJGIRIDQCALIAMgCWxBA3RqIRNBACEFA0AgBSAEKAIEIgxODQQgASgCECgCBCEAIAEoAgQiDUEAIAEoAggiCkEASBsNDCADIAEoAgxODQQgAiAKRw0DIA8gBUEDdCIUaiIKKwMAIA0gACADbEEDdGoiDSsDAKIhFkEAIQ5BASEAIBJFBEADQCAWIAogACAMbEEDdGorAwAgDSAAQQN0aisDAKKgIAogAEEBaiIVIAxsQQN0aisDACANIBVBA3RqKwMAoqAhFiAAQQJqIQAgDkECaiIOIBBHDQALCyATIBRqIBEEfCAWIAogACAMbEEDdGorAwAgDSAAQQN0aisDAKKgBSAWCzkDACAFQQFqIgUgCEcNAAsgA0EBaiIDIAdHDQALDAMLIAQoAgRBAEwNASABKAIEQQAgASgCCCIAQQBIGw0JIAEoAgxBAEwNASAAIAJHDQAMCAtB8ThBxR1B9ABBvxUQAAALQdI1QYIgQfoAQcoZEAAACwwBCyADIARyQQBIDQMCQCADIARsIgNBAEwNACADQQN0IgNFDQAgACgCAEEAIAP8CwALIAZCgICAgICAgPg/NwMoIAZBKGohCCMAQfAAayIDJAACQAJAIAAoAgQiBCABKAIERw0AIAAoAggiBSACKAIIRw0AAkAgBUUNACAERQ0AIAEoAggiB0UNACAFQQFGBEAgAyAAKAIAIgU2AjggAyAENgI8IARBAEhBACAFGw0JIAMgACgCGDYCXCADIAApAhA3AlQgAyAA/QACAP0LAkQgA0IANwJgIAMgAygCUCgCBDYCaCACKAIAIQAgAyACKAIEIgQ2AgggAyAANgIEIABBACAEQQBIGw0JIAMgAigCGDYCKCADIAIpAhA3AiAgAyAC/QACAP0LAhAgA0IANwIsIAMgAygCHCgCBDYCNCADQThqIAEgA0EEaiAIEOYDDAELIARBAUYEQCADIAAoAgAiBDYCOCADIAU2AkAgBUEASEEAIAQbDQkgAyAAKAIYNgJcIAMgACkCEDcCVCADIAD9AAIA/QsCRCADQQE2AmggA0IANwJgIAMgASgCACIANgIEIAMgBzYCDCAHQQBIQQAgABsNCSADQQE2AhwgA0IANwIUIAMgATYCECMAQYABayIEJAACQAJAAkAgAigCCEEBRgRAIAgrAwAhFyADKAIEIgVBACADKAIMIgFBAEgbDQ0gAygCECEIIAIoAgAiB0EAIAIoAgQiAEEASBsNDSAAIAFHDQICQCABRQ0AIAFBAEwNDSAFKwMAIAcrAwCiIRZBASEAIAFBAUYNACAIKAIEIQggAUEBayICQQFxIAFBAkcEQCACQX5xIQFBACECA0AgFiAFIAAgCGxBA3RqKwMAIAcgAEEDdGorAwCioCAFIABBAWoiCyAIbEEDdGorAwAgByALQQN0aisDAKKgIRYgAEECaiEAIAJBAmoiAiABRw0ACwtFDQAgFiAFIAAgCGxBA3RqKwMAIAcgAEEDdGorAwCioCEWCyADKAI4IgAgFyAWoiAAKwMAoDkDAAwBCyAEIAMoAhw2AiAgBCADKQIUNwMYIAQgA/0AAgT9CwMIIARBQGsgAigCGDYCACAEIAIpAhA3AzggBCAC/QACAP0LAyggBCADKAJoNgJ4IAQgA/0AAlj9CwNoIAQgA/0AAkj9CwNYIAQgA/0AAjj9CwNIIwBBEGsiByQAAkACQAJAAkAgBCgCECIFQYCAgIACSQRAIAgrAwAhFiAEKAIUIQEgBCgCCCEIIAQoAjQhCyAEKAIwIQwgBCgCLCEKIAQoAighDSAFQQN0IQAgBUGBgAFPBEAgAEEQahAWIgBFDQQgAEFwcSICIAA2AgwgAkEQaiECDAILIAcgAEEeakFwcWsiAiQAIAUNAQwCCwwCCyAFQYCAAUshDyABKAIEIQlBACEBAkAgBUEGSQ0AIAlBAUcNACACIAhrQRBJDQAgBUH+////AXEhAUEAIQADQCACIABBA3QiDmogCCAOav0AAwD9CwMAIABBAmoiACABRw0ACyABIAVGDQELIAUgASIAa0EDcSIOBEADQCACIABBA3RqIAggACAJbEEDdGorAwA5AwAgAEEBaiEAIBBBAWoiECAORw0ACwsgASAFa0F8Sw0AA0AgAiAAQQN0aiAIIAAgCWxBA3RqKwMAOQMAIAIgAEEBaiIBQQN0aiAIIAEgCWxBA3RqKwMAOQMAIAIgAEECaiIBQQN0aiAIIAEgCWxBA3RqKwMAOQMAIAIgAEEDaiIBQQN0aiAIIAEgCWxBA3RqKwMAOQMAIABBBGoiACAFRw0ACwsgByALKAIENgIMIAcgDTYCCCAHQQE2AgQgByACNgIAAkAgBCgCSCIABEAgBCgCUEEASA0BCyAMIAogB0EIaiAHIAAgBCgCYCgCBCAWEE8gDwRAIAJBBGsoAgAQEQsgB0EQaiQADAILDA4LQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEACwsgBEGAAWokAAwBC0HEOkHQG0HSAEGIDBAAAAsMAQsgCCsDACEWIAMgBzYCSCADIAU2AkQgAyAENgJAIANCADcDOCADQcgAaiADQUBrIANBxABqEH0gAyADKAJIIgQgAygCQGw2AkwgAyAEIAMoAkRsNgJQIAEoAgQiBCACKAIIIAEoAgggASgCACAEIAIoAgAgAigCDCgCBCAAKAIAIAAoAgwoAgQgFiADQThqEJQBIAMoAjgiAARAIABBBGsoAgAQEQsgAygCPCIARQ0AIABBBGsoAgAQEQsgA0HwAGokAAwBC0G8OEHbGkHWA0H3FRAAAAsLIAZB4ABqJAAPC0G+O0H3G0HiAEGQDRAAAAtB88UAQY8iQYYCQd8kEAAAC0GxMkH2HUHKAEHNFRAAAAtB+jpBshpBmwNBmQkQAAALQag0QeQhQbIBQaklEAAAC+svAxR/A3wBeyMAQUBqIhMkACAHKwMAIR4gASgCCCEZAkACQAJAAkACQAJAAkACQAJAAkAgAigCACIIQQAgAigCBCIMQQBIIgcbRQRAIAZBAEgNAyAGIAIoAghODQMgDCAFKAIERwRAIAcNCiAFIAwgDBAeIAUoAgQgDEcNCwsCQCAMQQBMDQAgCCAGIAxsIgdBA3RqIREgBSgCACENAkAgDEEKSQ0AIA0gB0EDdCAIamtBEEkNACAMQf7///8HcSEJQQAhBwNAIA0gB0EDdCIIaiAIIBFq/QADAP0LAwAgB0ECaiIHIAlHDQALIAkgDEYNAQsgDCAJIgdrQQNxIhIEQANAIA0gB0EDdCIIaiAIIBFqKwMAOQMAIAdBAWohByAPQQFqIg8gEkcNAAsLIAkgDGtBfEsNAANAIA0gB0EDdCIIaiAIIBFqKwMAOQMAIA0gCEEIaiIJaiAJIBFqKwMAOQMAIA0gCEEQaiIJaiAJIBFqKwMAOQMAIA0gCEEYaiIJaiAJIBFqKwMAOQMAIAdBBGoiByAMRw0ACwsgBUEIaiEVAkAgAC0AMEEBRgRAIAAgBSAFQSBqIBUQpgIMAQsgACgCCCIHQQFGBEAgACgCACIRQQBMDQEgBSgCCCESIAUoAgAhECAAKAIYIQogACgCDCEMIAAoAiQhCANARAAAAAAAAAAAIR0CQCAIIAtBAnRqIgcoAgQiDSAHKAIAIgdNDQAgB0EBaiEJIA0gB2tBAXEEQCAMIAdBA3RqKwMAIBAgCiAHQQJ0aigCAEEDdGorAwCiRAAAAAAAAAAAoCEdIAkhBwsgCSANRg0AA0AgDCAHQQFqIglBA3RqKwMAIBAgCiAJQQJ0aigCAEEDdGorAwCiIAwgB0EDdGorAwAgECAKIAdBAnRqKAIAQQN0aisDAKIgHaCgIR0gB0ECaiIHIA1HDQALCyASIAtBA3RqIB05AwAgC0EBaiILIBFHDQALDAELIBMgBTYCKCATIAU2AhggEyAVNgIkIBMgADYCICATIBMpAyA3AxAgByATQRBqEKUCCyAFQRBqIRcgBgRAIAEgFSAGIBcQqAELAkAgBSgCDCIKRQRARAAAAAAAAAAAIR0MAQsgCkEATA0FQQEhByAVKAIAIgwrAwAiHCAcoiEdIApBAUYNACAKQQFrIglBA3EhDSAKQQJrQQNPBEAgDEEYaiERIAxBEGohEiAMQQhqIQggCUF8cSEJQQAhDwNAIB0gDCAHQQN0IgtqKwMAIhwgHKKgIAggC2orAwAiHCAcoqAgCyASaisDACIcIByioCALIBFqKwMAIhwgHKKgIR0gB0EEaiEHIA9BBGoiDyAJRw0ACwsgDUUNAEEAIQgDQCAdIAwgB0EDdGorAwAiHCAcoqAhHSAHQQFqIQcgCEEBaiIIIA1HDQALCyAdnyIdRGNTuVO0HFU9IB4gHkQAAAAAAAAAAGMbIh5jDQEgCkEASA0FIBUoAgAhDQJAIApFDQBBACEIIApBAUcEQCAKQf7///8HcSEIIB39FCEfQQAhCwNAIA0gC0EDdGoiByAH/QADACAf/fMB/QsDACALQQJqIgsgCEcNAAsgCCAKRg0BCwNAIA0gCEEDdGoiByAHKwMAIB2jOQMAIAhBAWoiCCAKRw0ACwsgASgCACIIQQAgASgCBCIHQQBIGw0CIAYgASgCCE4NAyAHIApHDQYCQCAKRQ0AIAggBiAHbCIHQQN0aiERQQAhD0EAIQkCQCAKQQpJDQAgB0EDdCAIaiANa0EQSQ0AIApB/v///wdxIQlBACEIA0AgESAIQQN0IgdqIAcgDWr9AAMA/QsDACAIQQJqIgggCUcNAAsgCSAKRg0BCyAKIAkiCGtBA3EiEgRAA0AgESAIQQN0IgdqIAcgDWorAwA5AwAgCEEBaiEIIA9BAWoiDyASRw0ACwsgCSAKa0F8Sw0AA0AgESAIQQN0IglqIAkgDWorAwA5AwAgESAJQQhqIgdqIAcgDWorAwA5AwAgESAJQRBqIgdqIAcgDWorAwA5AwAgESAJQRhqIgdqIAcgDWorAwA5AwAgCEEEaiIIIApHDQALCyAGIBlIBEAgBUEgaiEbIAVBLGohESAGIRIDQCABKAIAIQcgEyABKAIEIgk2AiQgEyAHIAkgEiINbEEDdGo2AiAgB0EAIAlBAEgbDQQgEyAJNgI4IBNBADYCMCATIA02AjQgEyABNgIsIA0gASgCCE4NBUEAIQhBACELIwBBIGsiDyQAIBMoAiAhCgJAIBMoAiQiECARKAIERwRAIBBBAEgNDSARIBAgEBAeIBEoAgQgEEcNDgsCQCAQQQBMDQAgESgCACEMAkAgEEEESQ0AIAwgCmtBEEkNACAQQf7///8HcSEIQQAhBwNAIAwgB0EDdCIJaiAJIApq/QADAP0LAwAgB0ECaiIHIAhHDQALIAggEEYNAQsgECAIIgdrQQNxIhIEQANAIAwgB0EDdCIJaiAJIApqKwMAOQMAIAdBAWohByALQQFqIgsgEkcNAAsLIAggEGtBfEsNAANAIAwgB0EDdCIIaiAIIApqKwMAOQMAIAwgCEEIaiIJaiAJIApqKwMAOQMAIAwgCEEQaiIJaiAJIApqKwMAOQMAIAwgCEEYaiIJaiAJIApqKwMAOQMAIAdBBGoiByAQRw0ACwsCQCAALQAwQQFGBEAgACgCCCIHQQFGBEAgACgCACIMQQBMDQIgBSgCACELIBEoAgAhFiAAKAIYIRQgACgCDCEQIAAoAiQhEkEAIQgDQEQAAAAAAAAAACEcAkAgEiAIQQJ0aiIHKAIEIgogBygCACIHTQ0AIAdBAWohCSAKIAdrQQFxBEAgECAHQQN0aisDACAWIBQgB0ECdGooAgBBA3RqKwMAokQAAAAAAAAAAKAhHCAJIQcLIAkgCkYNAANAIBAgB0EBaiIJQQN0aisDACAWIBQgCUECdGooAgBBA3RqKwMAoiAQIAdBA3RqKwMAIBYgFCAHQQJ0aigCAEEDdGorAwCiIBygoCEcIAdBAmoiByAKRw0ACwsgCyAIQQN0aiAcOQMAIAhBAWoiCCAMRw0ACwwCCyAPIBE2AhggDyARNgIIIA8gBTYCFCAPIAA2AhAgDyAPKQMQNwMAIAcgDxClAgwBCyAAIBEgEUEIaiAFEKYCCyAPQSBqJAAMAAsgAigCACIJQQAgAigCBCIKQQBIIgcbDQQgDSACKAIITg0FIAcNByAFKAIEIApHDQkgBiAaakEDdEEIaiEYAkAgCkUNACAJIAogDWxBA3RqIQsgBSgCACEMQQAhBwJAIApBBEkNACALIAwgCkEDdGpJIAkgCiAYbGogDEtxDQAgCkH+////B3EhByAd/RQhH0EAIQgDQCAMIAhBA3QiEmoiCSAJ/QADACAfIAsgEmr9AAMA/fIB/fEB/QsDACAIQQJqIgggB0cNAAsgByAKRg0BCyAHQQFyIQkgCkEBcQRAIAwgB0EDdCIIaiIHIAcrAwAgHSAIIAtqKwMAoqE5AwAgCSEHCyAJIApGDQADQCAMIAdBA3QiCGoiCSAJKwMAIB0gCCALaisDAKKhOQMAIAwgCEEIaiIIaiIJIAkrAwAgHSAIIAtqKwMAoqE5AwAgB0ECaiIHIApHDQALCyACIAUgDUEBaiISIBcQqAECQCASIBlIBEACQCAFKAIEIg5FBEBEAAAAAAAAAAAhHAwBCyAOQQBMDQkgBSgCACIUKwMAIhwgHKIhHCAOQQFGDQAgDkEBayIJQQNxIQpBASEHIA5BAmtBA08EQCAUQRhqIQwgFEEQaiELIBRBCGohCCAJQXxxIQlBACEPA0AgHCAUIAdBA3QiEGorAwAiHCAcoqAgCCAQaisDACIcIByioCALIBBqKwMAIhwgHKKgIAwgEGorAwAiHCAcoqAhHCAHQQRqIQcgD0EEaiIPIAlHDQALC0EAIQggCkUNAANAIBwgFCAHQQN0aisDACIcIByioCEcIAdBAWohByAIQQFqIgggCkcNAAsLAkAgHiAcnyIcZARAIAUgBBD5AyACIAUgEiAXEKgBIAUoAgQiDkUEQCAFKAIAIQdEAAAAAAAAAAAhHEEAIQ4MAgsgDkEATA0KIAUoAgAiBysDACIcIByiIRwCQCAOQQFGIhANACAOQQFrIglBA3EhFEEBIQggDkECa0EDTwRAIAdBGGohCiAHQRBqIQwgB0EIaiELIAlBfHEhCUEAIQ8DQCAcIAcgCEEDdCIWaisDACIcIByioCALIBZqKwMAIhwgHKKgIAwgFmorAwAiHCAcoqAgCiAWaisDACIcIByioCEcIAhBBGohCCAPQQRqIg8gCUcNAAsLQQAhCyAURQ0AA0AgHCAHIAhBA3RqKwMAIhwgHKKgIRwgCEEBaiEIIAtBAWoiCyAURw0ACwsgHJ8hHEEAIQgCQCAQDQAgDkH+////B3EhCCAc/RQhH0EAIQsDQCAHIAtBA3RqIgkgCf0AAwAgH/3zAf0LAwAgC0ECaiILIAhHDQALIAggDkcNAEQAAAAAAAAAACEcDAILA0AgByAIQQN0aiIJIAkrAwAgHKM5AwAgCEEBaiIIIA5HDQALRAAAAAAAAAAAIRwMAQsgDkEASA0KIAUoAgAhByAORQRAQQAhDgwBC0EAIQggDkEBRwRAIA5B/v///wdxIQggHP0UIR9BACELA0AgByALQQN0aiIJIAn9AAMAIB/98wH9CwMAIAtBAmoiCyAIRw0ACyAIIA5GDQELA0AgByAIQQN0aiIJIAkrAwAgHKM5AwAgCEEBaiIIIA5HDQALCyACKAIAIghBACACKAIEIgtBAEgbDQYgEiACKAIITg0HIAsgDkcNCgJAIA5BAEwNACAIIAsgEmxBA3RqIQpBACEPQQAhCQJAIA5BBEkNACALIBhsIAhqIAdrQRBJDQAgDkH+////B3EhCUEAIQgDQCAKIAhBA3QiC2ogByALav0AAwD9CwMAIAhBAmoiCCAJRw0ACyAJIA5GDQELIA4gCSIIa0EDcSIMBEADQCAKIAhBA3QiC2ogByALaisDADkDACAIQQFqIQggD0EBaiIPIAxHDQALCyAJIA5rQXxLDQADQCAKIAhBA3QiC2ogByALaisDADkDACAKIAtBCGoiCWogByAJaisDADkDACAKIAtBEGoiCWogByAJaisDADkDACAKIAtBGGoiCWogByAJaisDADkDACAIQQRqIgggDkcNAAsLIA0gAygCBCIITg0MIA0gAygCCCIJTg0MIAMoAgAgDUEDdGoiByAIIA1sQQN0aiAdOQMAIAkgEkwNDCAHIAggEmxBA3RqIBw5AwACQCAALQAwQQFGBEAgACAFIBsgFRCmAgwBCyAAKAIIIgdBAUYEQCAAKAIAIgpBAEwNASAFKAIIIQwgBSgCACEPIAAoAhghFiAAKAIMIRQgACgCJCELQQAhCQNARAAAAAAAAAAAIR0CQCALIAlBAnRqIgcoAgQiECAHKAIAIgdNDQAgB0EBaiEIIBAgB2tBAXEEQCAUIAdBA3RqKwMAIA8gFiAHQQJ0aigCAEEDdGorAwCiRAAAAAAAAAAAoCEdIAghBwsgCCAQRg0AA0AgFCAHQQFqIghBA3RqKwMAIA8gFiAIQQJ0aigCAEEDdGorAwCiIBQgB0EDdGorAwAgDyAWIAdBAnRqKAIAQQN0aisDAKIgHaCgIR0gB0ECaiIHIBBHDQALCyAMIAlBA3RqIB05AwAgCUEBaiIJIApHDQALDAELIBMgBTYCKCATIAU2AgggEyAVNgIkIBMgADYCICATIBMpAyA3AwAgByATEKUCCyABKAIAIglBACABKAIEIgpBAEgiBxsNBiANIAEoAghODQcgBw0JIAUoAgwgCkcNCwJAIApFDQAgCSAKIA1sQQN0aiELIBUoAgAhDEEAIQcCQCAKQQRJDQAgCyAMIApBA3RqSSAJIAogGGxqIAxLcQ0AIApB/v///wdxIQcgHP0UIR9BACEIA0AgDCAIQQN0Ig1qIgkgCf0AAwAgHyALIA1q/QADAP3yAf3xAf0LAwAgCEECaiIIIAdHDQALIAcgCkYNAQsgB0EBciEJIApBAXEEQCAMIAdBA3QiCGoiByAHKwMAIBwgCCALaisDAKKhOQMAIAkhBwsgCSAKRg0AA0AgDCAHQQN0IghqIgkgCSsDACAcIAggC2orAwCioTkDACAMIAhBCGoiCGoiCSAJKwMAIBwgCCALaisDAKKhOQMAIAdBAmoiByAKRw0ACwsgASAVIBIgFxCoAQJAIAUoAgwiDkUEQEQAAAAAAAAAACEdDAELIA5BAEwNCSAVKAIAIhArAwAiHCAcoiEdIA5BAUYNACAOQQFrIglBA3EhDEEBIQcgDkECa0EDTwRAIBBBGGohCyAQQRBqIQ0gEEEIaiEIIAlBfHEhCUEAIQ8DQCAdIBAgB0EDdCIKaisDACIcIByioCAIIApqKwMAIhwgHKKgIAogDWorAwAiHCAcoqAgCiALaisDACIcIByioCEdIAdBBGohByAPQQRqIg8gCUcNAAsLQQAhCCAMRQ0AA0AgHSAQIAdBA3RqKwMAIhwgHKKgIR0gB0EBaiEHIAhBAWoiCCAMRw0ACwsCQCAeIB2fIh1kBEAgFSAEEPkDIAEgFSASIBcQqAEgBSgCDCIORQRAIBUoAgAhB0QAAAAAAAAAACEdQQAhDgwCCyAOQQBMDQogFSgCACIHKwMAIhwgHKIhHQJAIA5BAUYiCg0AIA5BAWsiCUEDcSEQQQEhCCAOQQJrQQNPBEAgB0EYaiEMIAdBEGohCyAHQQhqIQ0gCUF8cSEJQQAhDwNAIB0gByAIQQN0IhRqKwMAIhwgHKKgIA0gFGorAwAiHCAcoqAgCyAUaisDACIcIByioCAMIBRqKwMAIhwgHKKgIR0gCEEEaiEIIA9BBGoiDyAJRw0ACwtBACELIBBFDQADQCAdIAcgCEEDdGorAwAiHCAcoqAhHSAIQQFqIQggC0EBaiILIBBHDQALCyAdnyEcQQAhCAJAIAoNACAOQf7///8HcSEIIBz9FCEfQQAhCwNAIAcgC0EDdGoiCSAJ/QADACAf/fMB/QsDACALQQJqIgsgCEcNAAsgCCAORw0ARAAAAAAAAAAAIR0MAgsDQCAHIAhBA3RqIgkgCSsDACAcozkDACAIQQFqIgggDkcNAAtEAAAAAAAAAAAhHQwBCyAOQQBIDQogFSgCACEHIA5FBEBBACEODAELQQAhCCAOQQFHBEAgDkH+////B3EhCCAd/RQhH0EAIQsDQCAHIAtBA3RqIgkgCf0AAwAgH/3zAf0LAwAgC0ECaiILIAhHDQALIAggDkYNAQsDQCAHIAhBA3RqIgkgCSsDACAdozkDACAIQQFqIgggDkcNAAsLIAEoAgAiCEEAIAEoAgQiDUEASBsNBiASIAEoAghODQcgDSAORw0KIA5BAEwNASAIIA0gEmxBA3RqIQxBACEPQQAhCQJAIA5BBEkNACANIBhsIAhqIAdrQRBJDQAgDkH+////B3EhCUEAIQgDQCAMIAhBA3QiDWogByANav0AAwD9CwMAIAhBAmoiCCAJRw0ACyAJIA5GDQILIA4gCSIIa0EDcSILBEADQCAMIAhBA3QiDWogByANaisDADkDACAIQQFqIQggD0EBaiIPIAtHDQALCyAJIA5rQXxLDQEDQCAMIAhBA3QiDWogByANaisDADkDACAMIA1BCGoiCWogByAJaisDADkDACAMIA1BEGoiCWogByAJaisDADkDACAMIA1BGGoiCWogByAJaisDADkDACAIQQRqIgggDkcNAAsMAQsgDSADKAIEIgdODQsgDSADKAIITg0LIAMoAgAgDUEDdGogByANbEEDdGogHTkDAAsgGkEBaiEaIBIgGUcNAAsLIBNBQGskAA8LDAELQQgQF0GfCRAtQaDjAkEEEAEAC0GoNEHkIUGyAUGpJRAAAAtB0jVBgiBB+gBByhkQAAALQfo6QbIaQZsDQZkJEAAAC0GxMkH2HUHKAEHNFRAAAAtB88UAQY8iQYYCQd8kEAAAC0GqOUHXHEHyBUGhJhAAAAtB3zlBsSFB7wJBlDoQAAALQZHCAEH+IEGVAkHfJBAAAAtBxg9B1xxB/QVBoSYQAAALxAIDA38BfAF7IwBBIGsiAyQAAkACQCABIAJyQQBOBEACQCABRQ0AIAJFDQAgAUH/////ByACbUoNAgsgACABIAJsIAEgAhAbIAAoAgQhASAAKAIIIQIgA0IANwMQIAMgAjYCDCADIAE2AgggASACckEASA0CIAAgA0EIahAyAkAgACgCCCAAKAIEbCIEQQBMDQAgAysDECEGIAAoAgAhAAJAIARBAUYEQCAAIQIMAQsgACAEQf7///8HcSIFQQN0aiECIAb9FCEHQQAhAQNAIAAgAUEDdGogB/0LAwAgAUECaiIBIAVHDQALIAQgBUYNAQsgAiAGOQMACyADQSBqJAAPC0GRwgBB/iBBlQJB3yQQAAALQQQQFyIAQYjhAjYCACAAQeDgAjYCACAAQazhAkECEAEAC0GxMkH2HUHKAEHNFRAAAAvUBwEDfwJAAkACQAJAAkAgASACckEATgRAAkACQCAALQAlQQFHDQAgASAAKAI0Rw0AIAIgACgCOEcNACADIAAoAixGDQELIAAgAjYCOCAAIAE2AjQgACADNgIsIABBgAI7ASQgAEEANgIgIAAgA0ECdkEBcSIEOgAnIAAgA0H/AXEiA0EFdiIFQQFxOgAqIAAgA0EEdiIGQQFxOgApIAAgA0EDdiIDQQFxOgAoIAQgA0EBcXENAiAGQQFxIAVBAXFxDQMgACACIAEgASACShsiAzYCPCADQQBIDQYgAEEYaiADIAMQHiAAKAI0IgMgACgCPEEAIAAtAChBAXEbIAAtACcbIgQgA3JBAEgNBAJAIANFDQAgBEUNACADQf////8HIARtSg0GCyAAIAMgBGwgAyAEEBsgACgCOCIDIAAoAjxBACAALQAqQQFxGyAALQApGyIEIANyQQBIDQQCQCADRQ0AIARFDQAgA0H/////ByAEbUoNBgsgAEEMaiADIARsIAMgBBAbIAAoAjwiA0EASA0EIAMEQCADQf////8HIANuSw0GCyAAQcgAaiADIANsIAMgAxAbIAAoAjgiAyAAKAI0IgRKBEACQCADIABB2ABqIgUoAgRGBEAgBSgCCCAERg0BCyAFEN4BIAAoAjggACgCNBDyAwsCQCAALQApQQFGBEAgACgCOCIDQQBIDQkgBUHkAGogAyADEB4MAQsgAC0AKkEBRw0AIAAoAjQiA0EASA0IIAVB5ABqIAMgAxAeCyAAKAI0IgMgACgCOCIEckEASA0FAkACQCAERQ0AIANFDQAgBEH/////ByADbUoNCAsgBUHYAGogAyAEbCAEIAMQGwwACyAAKAI0IQQgACgCOCEDCyADIARIBH8CQCAAKAI0IABByAFqIgMoAgRGBEAgACgCOCADKAIIRg0BCyADEN4BIAAoAjQgACgCOBDyAwsCQCAALQAnQQFGBEAgACgCNCIEQQBIDQkgA0HYAGogBCAEEB4MAQsgAC0AKEEBRgRAIAAoAjgiBEEASA0JIANB2ABqIAQgBBAeCwsgACgCNCEEIAAoAjgFIAMLIARGDQACQCABRQ0AIAJFDQAgAUH/////ByACbUoNBgsgAEGoAmogASACbCABIAIQGwsPC0H1LkHZI0HpBEGaJRAAAAtBnMAAQdkjQf0EQZolEAAAC0HoPkHZI0H+BEGaJRAAAAtBkcIAQf4gQZUCQd8kEAAAC0EEEBciAEGI4QI2AgAgAEHg4AI2AgAgAEGs4QJBAhABAAtB6y1B/iBBsAJB3yQQAAALgAQCAn0DfyAAIAEgAiADEKgCAkACfyAEKAIAIgcgAygCACIIRwRAQX9BASAHIAhIGwwBC0F/QQFBgX9BACAEKgIEIgUgAyoCBCIGXBsgBSAGXhsgBSAGXRsLIglBgX9GDQAgCUEATg0AIAMgBzYCACAEIAg2AgAgAyoCBCEFIAMgBCoCBDgCBCAEIAU4AgQCfyADKAIAIgQgAigCACIHRwRAQX9BASAEIAdIGwwBC0F/QQFBgX9BACADKgIEIgUgAioCBCIGXBsgBSAGXhsgBSAGXRsLIghBgX9GDQAgCEEATg0AIAIgBDYCACADIAc2AgAgAioCBCEFIAIgAyoCBDgCBCADIAU4AgQCfyACKAIAIgMgASgCACIERwRAQX9BASADIARIGwwBC0F/QQFBgX9BACACKgIEIgUgASoCBCIGXBsgBSAGXhsgBSAGXRsLIgdBgX9GDQAgB0EATg0AIAEgAzYCACACIAQ2AgAgASoCBCEFIAEgAioCBDgCBCACIAU4AgQCfyABKAIAIgIgACgCACIDRwRAQX9BASACIANIGwwBC0F/QQFBgX9BACABKgIEIgUgACoCBCIGXBsgBSAGXhsgBSAGXRsLIgRBgX9GDQAgBEEATg0AIAAgAjYCACABIAM2AgAgACoCBCEFIAAgASoCBDgCBCABIAU4AgQLC6UEAgd/An0CQAJAAkACQAJAAkAgASAAa0EDdQ4GBQUAAQIDBAsCfyABQQhrIgQoAgAiAiAAKAIAIgNHBEBBf0EBIAIgA0gbDAELQX9BAUGBf0EAIAFBBGsqAgAiCSAAKgIEIgpcGyAJIApeGyAJIApdGwsiBUGBf0YNBCAFQQBODQQgACACNgIAIAQgAzYCACAAKgIEIQkgACABQQRrIgAqAgA4AgQgACAJOAIAQQEPCyAAIABBCGogAUEIaxBOQQEPCyAAIABBCGogAEEQaiABQQhrEKgCQQEPCyAAIABBCGogAEEQaiAAQRhqIAFBCGsQgQRBAQ8LIAAgAEEIaiAAQRBqIgQQTiAAQRhqIgIgAUYNAANAAkACfyACIgMoAgAiBSAEKAIAIgJHBEBBf0EBIAIgBUobDAELQX9BAUGBf0EAIAMqAgQiCSAEKgIEIgpcGyAJIApeGyAJIApdGwsiAkGBf0YNACACQQBODQAgAygCBCIHviEJIAMhAgNAAkAgAiAEIgIpAgA3AgAgACACRgRAIAAhAgwBCwJ/IAJBCGsiBCgCACIGIAVHBEBBf0EBIAUgBkgbDAELQX9BAUGBf0EAIAJBBGsqAgAiCiAJXBsgCSAKXhsgCSAKXRsLIgZBgX9GDQAgBkEASA0BCwsgAiAHNgIEIAIgBTYCACAIQQFqIghBCEcNACADQQhqIAFGDwsgAyIEQQhqIgIgAUcNAAsLQQELugwCDH8MfSMAQRBrIgokAAJAIAEgASACaiIMTw0AA0ACQCAAKAIAKAIAIAFBDGxqIggoAgQiBSAIKAIAIgRGDQAgBSAEayILQQN1IQZBACECIAQhAwNAIAMqAgRDAAAAAFsEQCACQQFqIQIgA0EIaiIDIAVHDQELCyAAKAIEKAIAIAJqIgMgBk4EQCAGQQBMDQFBACEFQQAhAyAGQQhPBEAgBkH4////B3EhC0EAIQgDQCAEIANBA3RqIgJBgICA/AM2AgQgAkGAgID8AzYCDCACQYCAgPwDNgIUIAJBgICA/AM2AhwgAkGAgID8AzYCJCACQYCAgPwDNgIsIAJBgICA/AM2AjQgAkGAgID8AzYCPCADQQhqIQMgCEEIaiIIIAtHDQALCyAGQQdxIgJFDQEDQCAEIANBA3RqQYCAgPwDNgIEIANBAWohAyAFQQFqIgUgAkcNAAsMAQsgA0EATAR9QwAAAAAFIAQgA0EDdGpBBGsqAgALIQ8CQCACIAZIBEAgACgCCCoCACAEIANBA3RqKgIEIA+TlCAPkiESIAKzIRUgByEDAkACQANAAkACQCASIAgoAgAgAkEDdGoqAgQiD10EQCAPIBKTIQ8gAyAJSQRAIAMgDzgCACADQQRqIQMMAgsgAyAHayIFQQJ1Ig1BAWoiBEGAgICABE8NAiAFQf////8DIAkgB2siA0EBdSIJIAQgBCAJSRsgA0H8////B08bIgkEfyAJQYCAgIAETw0FIAlBAnQQEgVBAAsiDmoiAyAPOAIAIAMgDUECdGshBCAFBEAgBCAHIAX8CgAACyADQQRqIQMgDiAJQQJ0aiEJIAdFBEAgBCEHDAILIAcQESAEIQcMAQsgFUMAAIA/kiEVCyAGIAJBAWoiAkcNAQwDCwsgCiAJNgIMIAogAzYCCCAKIAc2AgQQEwALEB8ACyAKIAk2AgwgCiAHNgIEIAogAzYCCCADIAdGDQEgA0EEayoCACEPIAAoAgwiBCoCBCEQIAZBAWq3ENoDIBC7orYhGEEAIQVD//9/fyETQwAAAAAhEANAIBMhFiAQIRdDAACAPyAPIhGVIhMgE5QhFCAVIRBDAAAAACEPIAchAgNAIBAgEyACKgIAIhmMlBDVASIakiEQIBkgGpQgFJQgD5IhDyACQQRqIgIgA0cNAAsCQCAQIBiTIhSLQ6zFJzddBEAgESEPDAELIBcgESAUQwAAAABeIgIbIRAgESAWIAIbIRMCQAJAIA9DAAAAAFsNACARIBQgD5WTIg8gEF5FDQAgDyATXQ0BCyACBEAgESAXIBGTQwAAAD+UkiEPDAELIBZD//9/f1sEQCARIBGSIQ8MAQsgESAWIBGTQwAAAD+UkiEPCyAFQQFqIgVBwABHDQELC0MAAAAAIRAgCCgCACIDIQIgCCgCBCIFIANHBEADQCAQIAIqAgSSIRAgAkEIaiICIAVHDQALCyAGQQBMDQJDAACAPyAPIBAgBrKVIAQqAgiUIhAgDyAQXhuVIRFBACECIAtBCEcEQCAGQf7///8HcSEGQQAhBQNAQwAAgD8hECASIAMgAkEDdGoiBCoCBCIPXQRAIBEgDyASk4yUENUBIRALIAQgEDgCBCAEIBIgBCoCDCIPXQR9IBEgDyASk4yUENUBBUMAAIA/CzgCDCACQQJqIQIgBUECaiIFIAZHDQALCyALQQhxRQ0CQwAAgD8hDyASIAMgAkEDdGoiAioCBCIQXQRAIBEgECASk4yUENUBIQ8LIAIgDzgCBAwCCyAKIAk2AgwgCiAHNgIIIAogBzYCBAsgBkEATA0AIAgoAgAhBEEAIQVBACEDIAZBCE8EQCAGQfj///8HcSELQQAhCANAIAQgA0EDdGoiAkGAgID8AzYCBCACQYCAgPwDNgIMIAJBgICA/AM2AhQgAkGAgID8AzYCHCACQYCAgPwDNgIkIAJBgICA/AM2AiwgAkGAgID8AzYCNCACQYCAgPwDNgI8IANBCGohAyAIQQhqIgggC0cNAAsLIAZBB3EiAkUNAANAIAQgA0EDdGpBgICA/AM2AgQgA0EBaiEDIAVBAWoiBSACRw0ACwsgAUEBaiIBIAxHDQALIAdFDQAgBxARCyAKQRBqJAALnQUBDn8jAEEgayIDJAAgACgCACIHIAcoAgAoAhARAAAhByADQQA2AhwgA0IANwIUIANBADYCECADQgA3AggCQCACQQBMDQAgASACaiEOA0AgByABIAAoAgQoAgAgA0EUaiADQQhqIAcoAgAoAggRCAACQAJAAkACQAJAIAMoAhggAygCFGsiBkECdSILIAFBDGwiDyAAKAIIKAIAaiICKAIIIAIoAgAiBGtBA3VNDQAgC0GAgICAAk8NASACKAIEIAZBAXQQEiEGIARrIgUEQCAGIAQgBfwKAAALIAIgBiALQQN0ajYCCCACIAUgBmo2AgQgAiAGNgIAIARFDQAgBBARC0EAIQYgC0EATA0DA0AgBkECdCICIAMoAghqIQogAygCFCACaiENAkAgACgCCCgCACAPaiICKAIEIgQgAigCCCIISQRAIAQgDSgCADYCACAEIAoqAgA4AgQgBEEIaiEFDAELIAQgAigCACIEayIFQQN1IhBBAWoiCUGAgICAAk8NA0H/////ASAIIARrIghBAnUiDCAJIAkgDEkbIAhB+P///wdPGyIJBH8gCUGAgICAAk8NBSAJQQN0EBIFQQALIgwgBWoiCCANKAIANgIAIAggCioCADgCBCAIIBBBA3RrIQogBQRAIAogBCAF/AoAAAsgAiAMIAlBA3RqNgIIIAIgCEEIaiIFNgIEIAIgCjYCACAERQ0AIAQQEQsgAiAFNgIEIAsgBkEBaiIGRw0ACwwDCxATAAsQEwALEB8ACyABQQFqIgEgDkgNAAsgAygCCCIARQ0AIAMgADYCDCADKAIQGiAAEBELIAMoAhQiAARAIAMgADYCGCADKAIcGiAAEBELIAcEQCAHIAcoAgAoAgQRAQALIANBIGokAAspACABKAIAIQFBDBASIgAgATYCCCAAIAFBAnQ2AgQgAEGo4wA2AgAgAAvwAwICfQJ/IAAgASACIAMQqwJBf0EBQYF/QQAgBCoCACIFIAMqAgAiBlwbIAUgBl4bIAUgBl0bIgdFBEAgBCgCBCIHIAMoAgQiCEogByAISGshBwsCQCAHQYF/Rg0AIAdBAE4NACADIAU4AgAgBCAGOAIAIAMoAgQhByADIAQoAgQ2AgQgBCAHNgIEQX9BAUGBf0EAIAMqAgAiBSACKgIAIgZcGyAFIAZeGyAFIAZdGyIERQRAIAMoAgQiBCACKAIEIgdKIAQgB0hrIQQLIARBgX9GDQAgBEEATg0AIAIgBTgCACADIAY4AgAgAigCBCEEIAIgAygCBDYCBCADIAQ2AgRBf0EBQYF/QQAgAioCACIFIAEqAgAiBlwbIAUgBl4bIAUgBl0bIgNFBEAgAigCBCIDIAEoAgQiBEogAyAESGshAwsgA0GBf0YNACADQQBODQAgASAFOAIAIAIgBjgCACABKAIEIQMgASACKAIENgIEIAIgAzYCBEF/QQFBgX9BACABKgIAIgUgACoCACIGXBsgBSAGXhsgBSAGXRsiA0UEQCABKAIEIgIgACgCBCIDSiACIANIayEDCyADQYF/Rg0AIANBAE4NACAAIAU4AgAgASAGOAIAIAAoAgQhAiAAIAEoAgQ2AgQgASACNgIECwuYBAIGfwJ9AkACQAJAAkACQAJAIAEgAGtBA3UOBgUFAAECAwQLQX9BAUGBf0EAIAFBCGsiAyoCACIIIAAqAgAiCVwbIAggCV4bIAggCV0bIgJFBEAgAUEEaygCACICIAAoAgQiBEogAiAESGshAgsgAkGBf0YNBCACQQBODQQgACAIOAIAIAMgCTgCACAAKAIEIQIgACABQQRrIgAoAgA2AgQgACACNgIAQQEPCyAAIABBCGogAUEIaxA+GkEBDwsgACAAQQhqIABBEGogAUEIaxCrAkEBDwsgACAAQQhqIABBEGogAEEYaiABQQhrEIYEQQEPCyAAIABBCGogAEEQaiIEED4aIABBGGoiAiABRg0AA0BBf0EBQYF/QQAgAiIDKgIAIgggBCoCACIJXBsgCCAJXhsgCCAJXRsiAkUEQCADKAIEIgIgBCgCBCIFSiACIAVIayECCwJAIAJBgX9GDQAgAkEATg0AIAMoAgQhBSADIQIDQAJAIAIgBCICKQIANwIAIAAgAkYEQCAAIQIMAQtBf0EBQYF/QQAgAkEIayIEKgIAIgkgCFwbIAggCV4bIAggCV0bIgZFBEAgBSACQQRrKAIAIgZKIAUgBkhrIQYLIAZBgX9GDQAgBkEASA0BCwsgAiAFNgIEIAIgCDgCACAHQQFqIgdBCEcNACADQQhqIAFGDwsgAyIEQQhqIgIgAUcNAAsLQQELigQCBn8CfQJAAkACQCAAKAIEIgMgACgCCCIESQRAIAMgASoCADgCACADIAIoAgA2AgQgA0EIaiEBDAELIAMgACgCACIDayIGQQN1IghBAWoiBUGAgICAAk8NASAGQf////8BIAQgA2siBEECdSIHIAUgBSAHSRsgBEH4////B08bIgUEfyAFQYCAgIACTw0DIAVBA3QQEgVBAAsiB2oiBCABKgIAOAIAIAQgAigCADYCBCAEIAhBA3RrIQIgBgRAIAIgAyAG/AoAAAsgACAHIAVBA3RqNgIIIAAgBEEIaiIBNgIEIAAgAjYCACADRQ0AIAMQEQsgACABNgIEAkAgASAAKAIAIgVrQQN1IgBBAkgNAEF/QQFBgX9BACAFIABBAmtBAXYiBkEDdGoiAyoCACIKIAFBCGsiAioCACIJXBsgCSAKXRsgCSAKXhsiAEUEQCADKAIEIgAgAUEEaygCACIESiAAIARIayEACyAAQYF/Rg0AIABBAE4NACABQQRrKAIAIQEDQAJAIAIgAyICKQIANwIAIAZFDQBBf0EBQYF/QQAgBSAGQQFrQQF2IgZBA3RqIgMqAgAiCiAJXBsgCSAKXRsgCSAKXhsiAEUEQCADKAIEIgAgAUogACABSGshAAsgAEGBf0YNACAAQQBIDQELCyACIAE2AgQgAiAJOAIACw8LEBMACxAfAAvAAwEIfyMAQRBrIgkkACAAKAIAIgMgACgCBCIGIAlBD2pBPiAGIANrQQN1Z0EBdGtBACADIAZHG0EBEH8gACgCACEDIAAoAgQhBiABIAEoAgAiBTYCBAJAAkACQCAGIANrIgJBA3UiBCABKAIIIAVrQQJ1TQ0AIARBgICAgARPDQEgASACQQF1EBIiAjYCBCABIAI2AgAgASACIARBAnRqNgIIIAVFDQAgBRARIAAoAgQhBiAAKAIAIQMLIAMgBkcEQCABKAIEIQADQAJAIAEoAggiAiAASwRAIAAgAyoCADgCACAAQQRqIQAMAQsgACABKAIAIgVrIgBBAnUiB0EBaiIEQYCAgIAETw0DIABB/////wMgAiAFayICQQF1IgggBCAEIAhJGyACQfz///8HTxsiBAR/IARBgICAgARPDQUgBEECdBASBUEACyIIaiICIAMqAgA4AgAgAiAHQQJ0ayEHIAAEQCAHIAUgAPwKAAALIAEgCCAEQQJ0ajYCCCABIAJBBGoiADYCBCABIAc2AgAgBUUNACAFEBELIAEgADYCBCADQQhqIgMgBkcNAAsLIAlBEGokAA8LEBMACxAfAAvAAwEIfyMAQRBrIgkkACAAKAIAIgMgACgCBCIGIAlBD2pBPiAGIANrQQN1Z0EBdGtBACADIAZHG0EBEH8gACgCACEDIAAoAgQhBiABIAEoAgAiBTYCBAJAAkACQCAGIANrIgJBA3UiBCABKAIIIAVrQQJ1TQ0AIARBgICAgARPDQEgASACQQF1EBIiAjYCBCABIAI2AgAgASACIARBAnRqNgIIIAVFDQAgBRARIAAoAgQhBiAAKAIAIQMLIAMgBkcEQCABKAIEIQADQAJAIAEoAggiAiAASwRAIAAgAygCBDYCACAAQQRqIQAMAQsgACABKAIAIgVrIgBBAnUiB0EBaiIEQYCAgIAETw0DIABB/////wMgAiAFayICQQF1IgggBCAEIAhJGyACQfz///8HTxsiBAR/IARBgICAgARPDQUgBEECdBASBUEACyIIaiICIAMoAgQ2AgAgAiAHQQJ0ayEHIAAEQCAHIAUgAPwKAAALIAEgCCAEQQJ0ajYCCCABIAJBBGoiADYCBCABIAc2AgAgBUUNACAFEBELIAEgADYCBCADQQhqIgMgBkcNAAsLIAlBEGokAA8LEBMACxAfAAvyBQEIfyMAQRBrIgkkACAAKAIAIgUgACgCBCIEIAlBD2pBPiAEIAVrQQN1Z0EBdGtBACAEIAVHG0EBEH8gACgCACEFIAAoAgQhAyABIAEoAgAiBDYCBAJAAkACQAJAIAMgBWsiA0EDdSIFIAEoAgggBGtBAnVNDQAgBUGAgICABE8NASABIANBAXUQEiIGNgIEIAEgBjYCACABIAYgBUECdGo2AgggBEUNACAEEBELIAIgAigCACIENgIEAkAgBSACKAIIIARrQQJ1TQ0AIAVBgICAgARPDQIgAiADQQF1EBIiAzYCBCACIAM2AgAgAiADIAVBAnRqNgIIIARFDQAgBBARCyAAKAIAIgUgACgCBCIKRwRAA0ACQCABKAIEIgAgASgCCCIGSQRAIAAgBSgCBDYCACAAQQRqIQAMAQsgACABKAIAIgRrIgBBAnUiB0EBaiIDQYCAgIAETw0DIABB/////wMgBiAEayIGQQF1IgggAyADIAhJGyAGQfz///8HTxsiAwR/IANBgICAgARPDQYgA0ECdBASBUEACyIIaiIGIAUoAgQ2AgAgBiAHQQJ0ayEHIAAEQCAHIAQgAPwKAAALIAEgCCADQQJ0ajYCCCABIAZBBGoiADYCBCABIAc2AgAgBEUNACAEEBELIAEgADYCBAJAIAIoAgQiACACKAIIIgZJBEAgACAFKgIAOAIAIABBBGohAAwBCyAAIAIoAgAiBGsiAEECdSIHQQFqIgNBgICAgARPDQQgAEH/////AyAGIARrIgZBAXUiCCADIAMgCEkbIAZB/P///wdPGyIDBH8gA0GAgICABE8NBiADQQJ0EBIFQQALIghqIgYgBSoCADgCACAGIAdBAnRrIQcgAARAIAcgBCAA/AoAAAsgAiAIIANBAnRqNgIIIAIgBkEEaiIANgIEIAIgBzYCACAERQ0AIAQQEQsgAiAANgIEIAVBCGoiBSAKRw0ACwsgCUEQaiQADwsQEwALEBMACxAfAAvVAwEIfyMAQRBrIgokACAAKAIAIgQgACgCBCIHIApBD2pBPiAHIARrQQN1Z0EBdGtBACAEIAdHG0EBEH8gACgCACEEIAAoAgQhByABIAEoAgAiBjYCBAJAAkACQCAHIARrQQN1IgNBAWsiBUEAIAMgBU8bIgMgASgCCCAGa0ECdU0NACADQYCAgIAETw0BIAEgA0ECdCIFEBIiAzYCBCABIAM2AgAgASADIAVqNgIIIAZFDQAgBhARIAAoAgQhByAAKAIAIQQLIAQgB0cEQANAIAIgBCgCBEcEQAJAIAEoAgQiACABKAIIIgVJBEAgACAEKgIAOAIAIABBBGohAAwBCyAAIAEoAgAiBmsiAEECdSIIQQFqIgNBgICAgARPDQQgAEH/////AyAFIAZrIgVBAXUiCSADIAMgCUkbIAVB/P///wdPGyIDBH8gA0GAgICABE8NBiADQQJ0EBIFQQALIglqIgUgBCoCADgCACAFIAhBAnRrIQggAARAIAggBiAA/AoAAAsgASAJIANBAnRqNgIIIAEgBUEEaiIANgIEIAEgCDYCACAGRQ0AIAYQEQsgASAANgIECyAEQQhqIgQgB0cNAAsLIApBEGokAA8LEBMACxAfAAvhAwEJfyMAQRBrIgskACAAKAIAIgUgACgCBCIHIAtBD2pBPiAHIAVrQQN1Z0EBdGtBACAFIAdHG0EBEH8gACgCACEFIAAoAgQhByABIAEoAgAiAzYCBAJAAkACQCAHIAVrQQN1IgRBAWsiBkEAIAQgBk8bIgQgASgCCCADa0ECdU0NACAEQYCAgIAETw0BIAEgBEECdCIGEBIiBDYCBCABIAQ2AgAgASAEIAZqNgIIIANFDQAgAxARIAAoAgQhByAAKAIAIQULIAUgB0cEQANAIAIgBSgCBCIARwRAAkAgASgCBCIDIAEoAggiCEkEQCADIAA2AgAgA0EEaiEADAELIAMgASgCACIDayIEQQJ1IglBAWoiBkGAgICABE8NBAJAQf////8DIAggA2siCEEBdSIKIAYgBiAKSRsgCEH8////B08bIgZFBEBBACEIDAELIAZBgICAgARPDQYgBkECdBASIQggBSgCBCEACyAEIAhqIgogADYCACAKIAlBAnRrIQkgBARAIAkgAyAE/AoAAAsgASAIIAZBAnRqNgIIIAEgCkEEaiIANgIEIAEgCTYCACADRQ0AIAMQEQsgASAANgIECyAFQQhqIgUgB0cNAAsLIAtBEGokAA8LEBMACxAfAAuUBgEJfyMAQRBrIgskACAAKAIAIgUgACgCBCIEIAtBD2pBPiAEIAVrQQN1Z0EBdGtBACAEIAVHG0EBEH8gACgCACEFIAAoAgQhBiABIAEoAgAiBDYCBAJAAkACQAJAIAYgBWtBA3UiBUEBayIGQQAgBSAGTxsiBSABKAIIIARrQQJ1TQ0AIAVBgICAgARPDQEgASAFQQJ0IgcQEiIGNgIEIAEgBjYCACABIAYgB2o2AgggBEUNACAEEBELIAIgAigCACIENgIEAkAgBSACKAIIIARrQQJ1TQ0AIAVBgICAgARPDQIgAiAFQQJ0IgYQEiIFNgIEIAIgBTYCACACIAUgBmo2AgggBEUNACAEEBELIAAoAgAiBSAAKAIEIgxHBEADQCADIAUoAgQiAEcEQAJAIAEoAgQiBCABKAIIIghJBEAgBCAANgIAIARBBGohAAwBCyAEIAEoAgAiBGsiBkECdSIKQQFqIgdBgICAgARPDQQCQEH/////AyAIIARrIghBAXUiCSAHIAcgCUkbIAhB/P///wdPGyIHRQRAQQAhCAwBCyAHQYCAgIAETw0HIAdBAnQQEiEIIAUoAgQhAAsgBiAIaiIJIAA2AgAgCSAKQQJ0ayEKIAYEQCAKIAQgBvwKAAALIAEgCCAHQQJ0ajYCCCABIAlBBGoiADYCBCABIAo2AgAgBEUNACAEEBELIAEgADYCBAJAIAIoAgQiACACKAIIIgdJBEAgACAFKgIAOAIAIABBBGohAAwBCyAAIAIoAgAiBGsiAEECdSIIQQFqIgZBgICAgARPDQUgAEH/////AyAHIARrIgdBAXUiCSAGIAYgCUkbIAdB/P///wdPGyIGBH8gBkGAgICABE8NByAGQQJ0EBIFQQALIglqIgcgBSoCADgCACAHIAhBAnRrIQggAARAIAggBCAA/AoAAAsgAiAJIAZBAnRqNgIIIAIgB0EEaiIANgIEIAIgCDYCACAERQ0AIAQQEQsgAiAANgIECyAFQQhqIgUgDEcNAAsLIAtBEGokAA8LEBMACxATAAsQHwALrwMBBX8jAEEQayIGJAAgACgCDCIDIAAoAggiBGtBA3UhBQJAAkAgAQRAIAEgASgCADYCBCADIARGDQEgASAFEC8LIAJFDQEgAiACKAIANgIEIAMgBEYNASACIAUQLwwBCyACRQ0AIAIgAigCADYCBAsCQCAAKAIIIgMgACgCDCIERg0AIAFFBEAgAkUEQANAIAMgBCAEIANrQQN1EFIgACAAKAIMQQhrIgQ2AgwgACgCCCIDIARHDQAMAwsACwNAIAIoAgAgBUEBayIFQQJ0aiADKgIAOAIAIAMgBCAEIANrQQN1EFIgACAAKAIMQQhrIgQ2AgwgACgCCCIDIARHDQALDAELIAJFBEADQCABKAIAIAVBAWsiBUECdGogAygCBDYCACADIAQgBCADa0EDdRBSIAAgACgCDEEIayIENgIMIAAoAggiAyAERw0ADAILAAsDQCAFQQFrIgVBAnQiByABKAIAaiADKAIENgIAIAIoAgAgB2ogAyoCADgCACADIAQgBCADa0EDdRBSIAAgACgCDEEIayIENgIMIAAoAggiAyAERw0ACwsgBkEQaiQAC9cLAwl/AXsBfSMAQRBrIgwkACAAKAIMIAAoAghrQQN1QQFrIQQCQAJAAkACQCABRQ0AIAEgASgCACIGNgIEIAQgASgCCCAGa0ECdU0NACAEQYCAgIAETw0BIAEgBEECdCIFEBIiBzYCBCABIAc2AgAgASAFIAdqNgIIIAZFDQAgBhARCwJAIAJFDQAgAiACKAIAIgY2AgQgBCACKAIIIAZrQQJ1TQ0AIARBgICAgARPDQIgAiAEQQJ0IgcQEiIENgIEIAIgBDYCACACIAQgB2o2AgggBkUNACAGEBELQQAhBiAAKAIIIgQgACgCDEcEQANAAn8gBiIHQQFxRQRAQQEgBCgCBCADRg0BGgsgAQRAAkAgASgCBCIGIAEoAggiCEkEQCAGIAQoAgQ2AgAgBkEEaiEGDAELIAYgASgCACIFayIGQQJ1IglBAWoiCkGAgICABE8NBSAGQf////8DIAggBWsiCEEBdSILIAogCiALSRsgCEH8////B08bIgoEfyAKQYCAgIAETw0IIApBAnQQEgVBAAsiC2oiCCAEKAIENgIAIAggCUECdGshCSAGBEAgCSAFIAb8CgAACyABIAsgCkECdGo2AgggASAIQQRqIgY2AgQgASAJNgIAIAVFDQAgBRARCyABIAY2AgQLIAIEQAJAIAIoAgQiBiACKAIIIghJBEAgBiAEKgIAOAIAIAZBBGohBAwBCyAGIAIoAgAiBmsiBUECdSIJQQFqIgpBgICAgARPDQYgBUH/////AyAIIAZrIghBAXUiCyAKIAogC0kbIAhB/P///wdPGyIKBH8gCkGAgICABE8NCCAKQQJ0EBIFQQALIgtqIgggBCoCADgCACAIIAlBAnRrIQkgBQRAIAkgBiAF/AoAAAsgAiALIApBAnRqNgIIIAIgCEEEaiIENgIEIAIgCTYCACAGRQ0AIAYQEQsgAiAENgIECyAHCyEGIAAoAggiBCAAKAIMIgcgByAEa0EDdRBSIAAgACgCDEEIayIHNgIMIAcgACgCCCIERw0ACwsCQCABRQ0AIAEoAgAiAyABKAIEIgRGDQAgAyAEQQRrIgBPDQACQCAEQQhrIgUgA0EEaiIHIAUgB0sbQQRrIgUgAyADIAVHIgVqa0EDdiAFaiIFQRdJBEAgAyEEDAELAkAgAyAETw0AIAQgBUECdCIEa0EEayAEIAdqTw0AIAMhBAwBCyAAQQxrIQogAyAFQQFqIghB/P///wdxIgVBAnQiB2ohBCAAIAdrIQBBACEHA0AgAyAHQQJ0IglqIgv9AAIAIQ0gCyAKIAlrIgn9AAIAIA39DQwNDg8ICQoLBAUGBwABAgP9CwIAIAkgDSAN/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAHQQRqIgcgBUcNAAsgBSAIRg0BCwNAIAQoAgAhAyAEIAAoAgA2AgAgACADNgIAIARBBGoiBCAAQQRrIgBJDQALCwJAIAJFDQAgAigCACIDIAIoAgQiBEYNACADIARBBGsiAE8NAAJAIARBCGsiBSADQQRqIgcgBSAHSxtBBGsiBSADIAMgBUciBWprQQN2IAVqIgVBF0kEQCADIQQMAQsCQCADIARPDQAgBCAFQQJ0IgRrQQRrIAQgB2pPDQAgAyEEDAELIABBDGshCiADIAVBAWoiCEH8////B3EiBUECdCIHaiEEIAAgB2shAEEAIQcDQCADIAdBAnQiCWoiC/0AAgAhDSALIAogCWsiCf0AAgAgDf0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCSANIA39DQwNDg8ICQoLBAUGBwABAgP9CwIAIAdBBGoiByAFRw0ACyAFIAhGDQELA0AgBCoCACEOIAQgACoCADgCACAAIA44AgAgBEEEaiIEIABBBGsiAEkNAAsLAkAgBkEBcQ0AIAEEQCABIAEoAgRBBGs2AgQLIAJFDQAgAiACKAIEQQRrNgIECyAMQRBqJAAPCxATAAsQEwALEB8AC0UBAX8gAEGI3gA2AgAgACgCICIBBEAgACABNgIkIAAoAigaIAEQEQsgACgCECIBBEAgACABNgIUIAAoAhgaIAEQEQsgAAtEAQF/QSwQEiIBQQA2AiggAUIANwIgIAFBADYCGCABQgA3AhAgAUEAOgAMIAFBATYCCCABIAA2AgQgAUGI3gA2AgAgAQtiAQF/IABBoN0ANgIAIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEBELIAAoAhwiAQRAIAAgATYCICAAKAIkGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELIAAQEQtgAQF/IABBoN0ANgIAIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEBELIAAoAhwiAQRAIAAgATYCICAAKAIkGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELIAALjQEBAn8jAEEgayIFJAAgACgCCCEGIAUgATYCHCAFQQA2AhggBUIANwIQIAUgBjYCDCAFQQE2AgggACgCBEEBIAVBCGogAkPNzMw9ELICIAJBf0EAIAAoAgQiAEG4A2ogAEHQA2ogAyAEELMCIAUoAhAiAARAIAUgADYCFCAFKAIYGiAAEBELIAVBIGokAAsgACACIAEgASAAKAIEIgBBiANqIABBoANqIAMgBBCzAgsUACAAQQxqQQAgASgCBEH12gBGGwsMACAAELQCGiAAEBELBQBB5xkLBQBBiikLBQBBrBYL1gQBBH8gACgCDCIBBEAjAEEQayICJAAgASgC2AMiAARAIAEgADYC3AMgASgC4AMaIAAQEQsgASgCwAMiAARAIAEgADYCxAMgASgCyAMaIAAQEQsgASgCqAMiAARAIAEgADYCrAMgASgCsAMaIAAQEQsgASgCkAMiAARAIAEgADYClAMgASgCmAMaIAAQEQsgASgC+AIiAARAIAEgADYC/AIgASgCgAMaIAAQEQsgASgC4AIiAARAIAEgADYC5AIgASgC6AIaIAAQEQsgASgCyAIiAARAIAEgADYCzAIgASgC0AIaIAAQEQsgASwAtwJBAEgEQCABKAK0AhogASgCrAIQEQsgASwA9wFBAEgEQCABKAL0ARog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ACAAQQhqIgIoAgAgAEEMaiIDKAIASSEEIAFBEGokACACIAMgBBsoAgAgAEEQaiQACzQAA0AgASACRkUEQCAEIAMgASwAACIAIABBAEgbOgAAIARBAWohBCABQQFqIQEMAQsLIAELRwEBfyAAQbTVADYCACAAKAIYIgEEQCAAIAE2AhwgACgCIBogARARCyAAKAIIIgEEQCAAIAE2AgwgACgCEBogARARCyAAEBELDAAgAiABIAFBAEgbCyoAA0AgASACRkUEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgAQs9AANAIAEgAkcEQCABIAEsAAAiAEEATgR/QZCVAigCACAAQQJ0aigCAAUgAAs6AAAgAUEBaiEBDAELCyABCx4AIAFBAE4Ef0GQlQIoAgAgAUECdGooAgAFIAELwAs9AANAIAEgAkcEQCABIAEsAAAiAEEATgR/QYSJAigCACAAQQJ0aigCAAUgAAs6AAAgAUEBaiEBDAELCyABCx4AIAFBAE4Ef0GEiQIoAgAgAUECdGooAgAFIAELwAsJACAAENkCEBELNQADQCABIAJGRQRAIAQgASgCACIAIAMgAEGAAUkbOgAAIARBAWohBCABQQRqIQEMAQsLIAELDgAgASACIAFBgAFJG8ALRQEBfyAAQbTVADYCACAAKAIYIgEEQCAAIAE2AhwgACgCIBogARARCyAAKAIIIgEEQCAAIAE2AgwgACgCEBogARARCyAACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQs+AANAIAEgAkcEQCABIAEoAgAiAEH/AE0Ef0GQlQIoAgAgAEECdGooAgAFIAALNgIAIAFBBGohAQwBCwsgAQseACABQf8ATQR/QZCVAigCACABQQJ0aigCAAUgAQsLPgADQCABIAJHBEAgASABKAIAIgBB/wBNBH9BhIkCKAIAIABBAnRqKAIABSAACzYCACABQQRqIQEMAQsLIAELHgAgAUH/AE0Ef0GEiQIoAgAgAUECdGooAgAFIAELCzoAA0ACQCACIANGDQAgAigCACIAQf8ASw0AIABBAnRB4KMCaigCACABcUUNACACQQRqIQIMAQsLIAILOgADQAJAIAIgA0YNACACKAIAIgBB/wBNBEAgAEECdEHgowJqKAIAIAFxDQEL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BEAgBSgCHCECIAAQFBoFIAVBHGogBSgCDCwAABCMASAFIAUoAgxBAWo2AgwMAQsLCyAFQSBqJAAgAgujBQEDfyMAQcACayIAJAAgACACNgK4AiAAIAE2ArwCIwBBEGsiASQAIABBxAFqIgdCADcCACAHQQA2AgggAUEQaiQAIABBEGoiBiADKAIcIgE2AgAgAUGsjgNHBEAgASABKAIEQQFqNgIECyAGQdyPAxAVIgFBoKECQbqhAiAAQdABaiABKAIAKAIwEQoAGiAGEBgjAEEQayIBJAAgAEG4AWoiAkIANwIAIAJBADYCCCABQRBqJAAgAiACLQALQQd2BH8gAigCCEH/////B3FBAWsFQQoLEBkgAAJ/IAItAAtBB3YEQCACKAIADAELIAILIgE2ArQBIAAgBjYCDCAAQQA2AggDQAJAIABBvAJqIABBuAJqECQNACAAKAK0AQJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyABakYEQAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEDIAICfyACLQALQQd2BEAgAigCBAwBCyACLQALQf8AcQtBAXQQGSACIAItAAtBB3YEfyACKAIIQf////8HcUEBawVBCgsQGSAAIAMCfyACLQALQQd2BEAgAigCAAwBCyACCyIBajYCtAELAn8gAEG8AmoiBigCACIIKAIMIgMgCCgCEEYEQCAIIAgoAgAoAiQRAAAMAQsgAygCAAtBECABIABBtAFqIABBCGpBACAHIABBEGogAEEMaiAAQdABahCEAQ0AIAYQMBoMAQsLIAIgACgCtAEgAWsQGQJ/IAItAAtBB3YEQCACKAIADAELIAILECYgACAFNgIAIAAQgwNBAUcEQCAEQQQ2AgALIABBvAJqIABBuAJqECQEQCAEIAQoAgBBAnI2AgALIAAoArwCIAIQFBogBxAUGiAAQcACaiQAC9wGAgN/AX4CfyMAQfACayIAJAAgACACNgLoAiAAIAE2AuwCIABB3AFqIAMgAEHwAWogAEHsAWogAEHoAWoQ/AEjAEEQayICJAAgAEHQAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBkgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2AswB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3gFqEP8BIwBBEGsiAiQAIABBxAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAZIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgLAASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWQQAhAwNAAkACQAJAIABBjAJqIABBiAJqECUNACAAKALAAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEGIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQGSABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQGSAAIAYCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCwAELAn8gACgCjAIiBigCDCIHIAYoAhBGBEAgBiAGKAIAKAIkEQAADAELIActAAALwCAAQRdqIABBFmogAiAAQcABaiAALADfASAALADeASAAQdABaiAAQSBqIABBHGogAEEYaiAAQeABahD+AQ0AIAMNAUEAIQMgACgCwAEgAmsiB0EATA0CAkACQCACLQAAIgZBK2siCA4DAQABAAsgBkEuRg0CQQEhAyAGQTBrQf8BcUEKSQ0DDAELIAdBAUYNAgJAIAgOAwADAAMLIAItAAEiBkEuRg0BQQEhAyAGQTBrQf8BcUEJTQ0CCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAtABdBAUcNACAAKAIcIgMgAEEgamtBnwFKDQAgACADQQRqNgIcIAMgACgCGDYCAAsgACACIAAoAsABIAQQhAMgACkDACEJIAUgACkDCDcDCCAFIAk3AwAgAEHQAWogAEEgaiAAKAIcIAQQOSAAQYwCaiAAQYgCahAlBEAgBCAEKAIAQQJyNgIACyAAKAKMAiABEBQaIABB0AFqEBQaIABBkAJqJAAMAwtBASEDCyAAQYwCahAxGgwACwALC8YGAQN/An8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASAAQcABaiADIABB0AFqIABBzwFqIABBzgFqEP8BIwBBEGsiAiQAIABBtAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAZIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgKwASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB/AFqIABB+AFqECUNACAAKAKwAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEGIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQGSABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQGSAAIAYCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCsAELAn8gACgC/AEiBigCDCIHIAYoAhBGBEAgBiAGKAIAKAIkEQAADAELIActAAALwCAAQQdqIABBBmogAiAAQbABaiAALADPASAALADOASAAQcABaiAAQRBqIABBDGogAEEIaiAAQdABahD+AQ0AIAMNAUEAIQMgACgCsAEgAmsiB0EATA0CAkACQCACLQAAIgZBK2siCA4DAQABAAsgBkEuRg0CQQEhAyAGQTBrQf8BcUEKSQ0DDAELIAdBAUYNAgJAIAgOAwADAAMLIAItAAEiBkEuRg0BQQEhAyAGQTBrQf8BcUEJTQ0CCwJAAn8gAC0AywFBB3YEQCAAKALEAQwBCyAALQDLAUH/AHELRQ0AIAAtAAdBAUcNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArABIAQQhQM5AwAgAEHAAWogAEEQaiAAKAIMIAQQOSAAQfwBaiAAQfgBahAlBEAgBCAEKAIAQQJyNgIACyAAKAL8ASABEBQaIABBwAFqEBQaIABBgAJqJAAMAwtBASEDCyAAQfwBahAxGgwACwALC8YGAQN/An8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASAAQcABaiADIABB0AFqIABBzwFqIABBzgFqEP8BIwBBEGsiAiQAIABBtAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAZIAACfyABLQALQQd2BEAgASgCAAwBCyAB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fwsgAkEgaiQAC2UBAX8CQCAALQAsRQRAIAJBACACQQBKGyECA0AgAiADRg0CIAAgAS0AACAAKAIAKAI0EQMAQX9GBEAgAw8FIAFBAWohASADQQFqIQMMAQsACwALIAFBASACIAAoAiAQUSECCyACCzEAIAAgACgCACgCGBEAABogACABQeyPAxAVIgE2AiQgACABIAEoAgAoAhwRAAA6ACwLpQIBA38jAEEgayICJAACQCABQX9GBEAgAC0ANA0BIAAgACgCMCIBQX9HOgA0DAELIAAtADQhAwJAAkACQCAALQA1RQRAIANBAXENAQwDCyADQQFxIgMEQCAAKAIwIAAoAiAQqQMNAwwCCyADRQ0CCyACIAAoAjDAOgATAkACQCAAKAIkIgMgACgCKCACQRNqIAJBFGoiBCACQQxqIAJBGGogAkEgaiAEIAMoAgAoAgwRDABBAWsOAwICAAELIAAoAjAhAyACIAJBGWo2AhQgAiADOgAYCwNAIAIoAhQiAyACQRhqTQ0CIAIgA0EBayIDNgIUIAMsAAAgACgCIBCKAUF/Rw0ACwtBfyEBDAELIABBAToANCAAIAE2AjALIAJBIGokACABCwkAIABBARCqAwsZACAAKAIMIgAEQCAAIAAoAgAoAhARAQALCwkAIABBABCqAwtIACAAIAFB7I8DEBUiATYCJCAAIAEgASgCACgCGBEAADYCLCAAIAAoAiQiASABKAIAKAIcEQAAOgA1IAAoAixBCU4EQBAgAAsLHgBBgIUDEI0BQeCHAxCNAUHYhQMQjgJBuIgDEI4CCwQAQgALBwAgAEEMagsIACAAEFYQEQsTACAAIAAoAgBBDGsoAgBqELUDCxMAIAAgACgCAEEMaygCAGoQiwILEwAgACAAKAIAQQxrKAIAahCMAgsTACAAIAAoAgBBDGsoAgBqEMMBCwoAIABBCGsQjAILCgAgAEEIaxDDAQs2AQF/QSQQEiIBQQA2AiAgAUIANwIYIAFBADYCECABQgA3AgggASAANgIEIAFBtNUANgIAIAELGgAgACABIAIpAwhBACADIAEoAgAoAhARFgALCQAgABCNAhARC7ICAQF/IAAgACgCACgCGBEAABogACABQeyPAxAVIgE2AkQgAC0AYiECIAAgASABKAIAKAIcEQAAIgE6AGIgASACRwRAIABBADYCECAA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QGoiByQAIAdBADYCDCAHQgA3AgQCfyAHQRBqIgZBADYCFCAGQgA3AgwgBiADOAIIIAYgAjYCBCAGIAE2AgACQAJAAkAgBCgCBCIBIAQoAgAiBEcEQCABIARrIgFBAEgNASAGIAEQEiICNgIQIAYgAjYCDCAGIAEgAmoiCDYCFCABBEAgAiAEIAH8CgAACyAGIAg2AhALIAZBADYCICAGQgA3AhggBSgCBCIBIAUoAgAiBEcEQCABIARrIgFBAEgNAiAGIAEQEiICNgIcIAYgAjYCGCAGIAEgAmoiBTYCICABBEAgAiAEIAH8CgAACyAGIAU2AhwLIAZBADYCLCAGQgA3AiQgBygCCCIBIAcoAgQiBEcEQCABIARrIgFBAEgNAyAGIAEQEiICNgIoIAYgAjYCJCAGIAEgAmoiBTYCLCABBEAgAiAEIAH8CgAACyAGIAU2AigLIAYMAwsQEwALEBMACxATAAshASAHKAIEIgIEQCAHIAI2AgggBygCDBogAhARCyAAAn8gACgCDCICIAAoAhBJBEAgAiABEJMBQTBqDAELIABBCGogARCYAgs2AgwgASgCJCIABEAgASAANgIoIAEoAiwaIAAQEQsgASgCGCIABEAgASAANgIcIAEoAiAaIAAQEQsgASgCDCIABEAgASAANgIQIAEoAhQaIAAQEQsgB0FAayQAC/kCAQJ/IAAoAgAiAigCACIDBEAgAiADNgIEIAIoAggaIAMQESACQQA2AgggAkIANwIACyACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCABQQA2AgggAUIANwIAIAAoAgQiAigCACIDBEAgAiADNgIEIAIoAggaIAMQESACQQA2AgggAkIANwIACyACIAEoAgw2AgAgAiABKAIQNgIEIAIgASgCFDYCCCABQQA2AhQgAUIANwIMIAAoAggiAigCACIDBEAgAiADNgIEIAIoAggaIAMQESACQQA2AgggAkIANwIACyACIAEoAhg2AgAgAiABKAIcNgIEIAIgASgCIDYCCCABQQA2AiAgAUIANwIYIAAoAgwiAigCACIDBEAgAiADNgIEIAIoAggaIAMQESACQQA2AgggAkIANwIACyACIAEoAiQ2AgAgAiABKAIoNgIEIAIgASgCLDYCCCABQQA2AiwgAUIANwIkIAAoAhAgASoCMDgC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AiACIAZrQQN1EFIgACAAKAIUQQhrIgI2AhQgACgCECIGIAJHDQALCyAFQf////sHNgIIIAAoAgRBACABIAVBCGogAEEIaiIAEKkBIAAgAyAEEI8ECyAFQRBqJAALcQEDfyAAQaTMADYCACAAQRhqIQMCQCAAKAJAIgEgAEEwakYEf0EQBSABRQ0BQRQLIQIgASABKAIAIAJqKAIAEQEACwJAIAMgACgCKCIBRgR/QRAFIAFFDQFBFAshAiABIAEoAgAgAmooAgARAQALIAALugEBBH8jAEEQayIGJAAgAEEAOgAMIAAgAkEBajYCCCAAKAIQIgUgACgCFCICRwRAA0AgBSACIAIgBWtBA3UQUiAAIAAoAhRBCGsiAjYCFCAAKAIQIgUgAkcNAAsLIAAoAgQiAigCKCABQQJ0aigCACEFIAIoAhAhByACKAIMIQggBkH////7BzYCCCACQQAgByAFIAhsQQJ0aiAGQQhqIABBCGoiABCpASAAIAMgBCABEJAEIAZBEGokAAtHAQF/IABByOAANgIAIAAoAiAiAQRAIAAgATYCJCAAKAIoGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELIAAQEQtFAQF/IABByOAANgIAIAAoAiAiAQRAIAAgATYCJCAAKAIoGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELIAALRAEBf0EsEBIiAUEANgIoIAFCADcCICABQQA2AhggAUIANwIQIAFBADoADCABQQE2AgggASAANgIEIAFByOAANgIAIAELYgEBfyAAQeTfADYCACAAKAIoIgEEQCAAIAE2AiwgACgCMBogARARCyAAKAIcIgEEQCAAIAE2AiAgACgCJBogARARCyAAKAIQIgEEQCAAIAE2AhQgACgCGBogARARCyAAEBELYAEBfyAAQeTfADYCACAAKAIoIgEEQCAAIAE2AiwgACgCMBogARARCyAAKAIcIgEEQCAAIAE2AiAgACgCJBogARARCyAAKAIQIgEEQCAAIAE2AhQgACgCGBogARARCyAAC6MBAQF/IwBBEGsiBSQAAn8gAyAEckUEQCAFQQA2AgwgACgCBEEAIAEgAiAFQQxqEOQBIAUoAgwMAQsgACAAKAIgNgIkIAAoAgRBACABIAIgAEEgaiIBEOMBAkACQCADRQ0AIARFDQAgASADIAQQiwQMAQsgAwRAIAEgAxCKBAwBCyAERQ0AIAEgBBCJBAsgACgCJCAAKAIga0EDdQsgBUEQaiQAC+UBAQN/IwBBEGsiBiQAIAAoAgQiBSgCECAFKAIMIAUoAiggAUECdGooAgBsQQJ0aiEHAn8gAyAEckUEQCAGQQA2AgwgBUEAIAcgAiAGQQxqEOQBIAYoAgwiAEEBayIBQQAgACABTxsMAQsgACAAKAIgNgIkIAVBACAHIAIgAEEgaiIFEOMBAkACQCADRQ0AIARFDQAgBSADIAQgARCOBAwBCyADBEAgBSADIAEQjQQMAQsgBEUNACAFIAQgARCMBAsgACgCJCAAKAIga0EDdSIAQQFrIgFBACAAIAFPGwsgBkEQaiQAC8YBAQJ/IwBBEGsiBSQAAkAgAkUEQCADBEAgAyADKAIANgIEIARFDQIgBCAEKAIANgIEDAILIARFDQEgBCAEKAIANgIEDAELIABBADoADCAAIAI2AgggACgCECIGIAAoAhQiAkcEQANAIAYgAiACIAZrQQN1EFIgACAAKAIUQQhrIgI2AhQgACgCECIGIAJHDQALCyAFQf////sHNgIIIAAoAgRBACABIAVBCGogAEEIaiIAEKsBIAAgAyAEEI8ECyAFQRBqJAALugEBBH8jAEEQayIGJAAgAEEAOgAMIAAgAkEBajYCCCAAKAIQIgUgACgCFCICRwRAA0AgBSACIAIgBWtBA3UQUiAAIAAoAhRBCGsiAjYCFCAAKAIQIgUgAkcNAAsLIAAoAgQiAigCKCABQQJ0aigCACEFIAIoAhAhByACKAIMIQggBkH////7BzYCCCACQQAgByAFIAhsQQJ0aiAGQQhqIABBCGoiABCrASAAIAMgBCABEJAEIAZBEGokAAtHAQF/IABBiN4ANgIAIAAoAiAiAQRAIAAgATYCJCAAKAIoGiABEBELIAAoAhAiAQRAIAAgATYCFCAAKAIYGiABEBELIAAQEQuBAwEBf0GIAhASIgBCmrPmzJmz5tw/NwMoIAD9DAAAAAAAAPA/AAAAAAAA8D/9CwMYIAD9DAAAAAAAAPA/AAAAAAAA8D/9CwMIIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwMwIABBCToAwwEgAEEANgKwASAAQQA2ApgBIABBCjYCgAEgAP0MAQAAAAAAAAAQAAAAyAAAAP0LA3AgAELShdjMBDcDaCAAQQ82AmAgAP0MAAAAAAAA8D8AAAAAAAAUQP0LA1AgAEF/NgJMIABBADoASCAAQoCAgICAgID4PzcDQCAAQYsYKQAANwC4ASAAQZMYLQAAOgDAASAAQQM6AIMCIABBADoA9AEgAELvpIzUczcC7AEgAEJ/NwLkASAAQQE6ANwBIABCgICA/oOAgMA/NwLUASAAQn83AswBIABCgICA/OMDNwLEASAAQQA6AMEBIABBADoA+wEgAEEqNgLgASAAQgI3AwAgAEGDJi8AADsA+AEgAEGFJi0AADoA+gEgAAsLyMMCtwEAQYAIC7RfbG9jYWxfY29ubmVjdGl2aXR5AGluZmluaXR5AGNoZWNrU2FuaXR5AE5vdCBlbm91Z2ggbWVtb3J5AEZlYnJ1YXJ5AEphbnVhcnkASnVseQBUaHVyc2RheQBUdWVzZGF5AFdlZG5lc2RheQBTYXR1cmRheQBTdW5kYXkATW9uZGF5AEZyaWRheQBNYXkAJW0vJWQvJXkAd3gAcmVkdXgAc3RhcnRpbmcgdmVjdG9yIG5lYXIgdGhlIG51bGwgc3BhY2Ugb2YgdGhlIGlucHV0IG1hdHJpeAB1bmlxdWVfbG9jazo6bG9jazogcmVmZXJlbmNlcyBudWxsIG11dGV4AHdieAB3K2J4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAdyt4AF9fbmV4dF9wcmltZSBvdmVyZmxvdwBOb3YAVGh1AHVuc3VwcG9ydGVkIGxvY2FsZSBmb3Igc3RhbmRhcmQgaW5wdXQAQXVndXN0AE5vdCBlbm91Z2ggbWVtb3J5OiBhZGRQb2ludCBmYWlsZWQgdG8gYWxsb2NhdGUgbGlua2xpc3QAVGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQgc2hvdWxkIGhhdmUgYmxhbmsgbGluayBsaXN0AG1pbl9kaXN0AFVwZGF0ZSBHcmFwaCBieSAgUlAgZm9yZXN0AGRvdABpbnRlcm5hbElkIDwgY3VyX2VsZW1lbnRfY291bnQAbm5kZXNjZW50AG5uX2Rlc2NlbnQAVGhlIG51bWJlciBvZiBlbGVtZW50cyBleGNlZWRzIHRoZSBzcGVjaWZpZWQgbGltaXQAYXBwbHlUcmFuc3Bvc2l0aW9uT25UaGVSaWdodABQcm9kdWN0AE9jdABTYXQAaW5pdGlhbGl6YXRpb24gdmVjdG9yIGRvZXMgbm90IGhhdmUgZXhwZWN0ZWQgbnVtYmVyIG9mIHJvd3MATm90IGVub3VnaCBtZW1vcnk6IEhpZXJhcmNoaWNhbE5TVyBmYWlsZWQgdG8gYWxsb2NhdGUgbGlua2xpc3RzAG5uZGVzY2VudF9uX25laWdoYm9ycwBubmRlc2NlbnRfbl9pdGVycwBfY2hlY2tfY29tcHV0ZV9hc3NlcnRpb25zAHJlcXVlc3RlZCBudW1iZXIgb2Ygc2luZ3VsYXIgdmFsdWVzIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBzbWFsbGVyIG1hdHJpeCBkaW1lbnNpb24gZm9yIElSTEJBIGl0ZXJhdGlvbnMAZHN0LnJvd3MoKSA9PSBkc3RSb3dzICYmIGRzdC5jb2xzKCkgPT0gZHN0Q29scwBzdGFydFJvdyA+PSAwICYmIGJsb2NrUm93cyA+PSAwICYmIHN0YXJ0Um93IDw9IHhwci5yb3dzKCkgLSBibG9ja1Jvd3MgJiYgc3RhcnRDb2wgPj0gMCAmJiBibG9ja0NvbHMgPj0gMCAmJiBzdGFydENvbCA8PSB4cHIuY29scygpIC0gYmxvY2tDb2xzAGhuc3dfbl9saW5rcwBuX2Vwb2NocwB1cGRhdGVfYnlfbGVhdmVzAGFwcGx5X2dyYXBoX3VwZGF0ZXMAZ2VuZXJhdGVfZ3JhcGhfdXBkYXRlcwBubmRlc2NlbnRfbl90cmVlcwAgdHJlZXMAdHJpRmFjdG9yLnJvd3MoKSA9PSBuYlZlY3MgJiYgdHJpRmFjdG9yLmNvbHMoKSA9PSBuYlZlY3MgJiYgdmVjdG9ycy5yb3dzKCk+PW5iVmVjcwAlczolZDogJXMAQXByAFJlcGxhY2VtZW50IG9mIGRlbGV0ZWQgZWxlbWVudHMgaXMgZGlzYWJsZWQgaW4gY29uc3RydWN0b3IAdmVjdG9yAGVzc2VudGlhbFZlY3RvcgBtYWtlX2Jsb2NrX2hvdXNlaG9sZGVyX3RyaWFuZ3VsYXJfZmFjdG9yAG1vbmV5X2dldCBlcnJvcgBjYW5kIGVycm9yAGJsYXNfZGF0YV9tYXBwZXIAQmFkIHZhbHVlIG9mIHN6X2xpbmtfbGlzdF9vdGhlcgBoZWxsaW5nZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAdGhpcmRfcGFydHkvbm5kZXNjZW50L3NyYy9ubmQuY3BwAFNlcABDd2lzZUJpbmFyeU9wAEN3aXNlTnVsbGFyeU9wACVJOiVNOiVTICVwAG1peF9yYXRpbwBpbmZvAHNjYWxlQW5kQWRkVG8AcnVuAFN1bgBKdW4AUG9zc2libGUgbWVtb3J5IGNvcnJ1cHRpb24Ac3RkOjpleGNlcHRpb24AaG5zd19lZl9jb25zdHJ1Y3Rpb24AdW1hcHBwIHdhcyBub3QgY29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBwYXJhbGxlbCBvcHRpbWl6YXRpb24AY29sc1Blcm11dGF0aW9uAGNvcnJlbGF0aW9uAHJlcXVlc3RlZCBudW1iZXIgb2Ygc2luZ3VsYXIgdmFsdWVzIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIHNtYWxsZXIgbWF0cml4IGRpbWVuc2lvbgBNb24AbmFuAGV1Y2xpZGVhbgBKYW4AcmFuZG9tAEp1bABzdGQ6OmJhZF9mdW5jdGlvbl9jYWxsAEFwcmlsAExldmVsIG9mIGl0ZW0gdG8gYmUgdXBkYXRlZCBjYW5ub3QgYmUgYmlnZ2VyIHRoYW4gbWF4IGxldmVsAFRyeWluZyB0byBtYWtlIGEgbGluayBvbiBhIG5vbi1leGlzdGVudCBsZXZlbAB1bm1hcmtEZWxldGVkSW50ZXJuYWwARGlhZ29uYWwAQmxvY2sARnJpAHJlcHVsc2lvbl9zdHJlbmd0aABiYWRfYXJyYXlfbmV3X2xlbmd0aABrID49IDAgJiYgayA8IG1fbGVuZ3RoAGJhbmR3aWR0aABobnN3X2VmX3NlYXJjaABNYXJjaAB0aGlyZF9wYXJ0eS9FaWdlbi9FaWdlbi9zcmMvQ29yZS9SZWR1eC5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL3Byb2R1Y3RzL0dlbmVyYWxNYXRyaXhNYXRyaXguaAB0aGlyZF9wYXJ0eS9FaWdlbi9FaWdlbi9zcmMvQ29yZS9QZXJtdXRhdGlvbk1hdHJpeC5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL0RvdC5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL1Byb2R1Y3QuaAB0aGlyZF9wYXJ0eS9FaWdlbi9FaWdlbi9zcmMvQ29yZS9Qcm9kdWN0RXZhbHVhdG9ycy5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL0Fzc2lnbkV2YWx1YXRvci5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Ib3VzZWhvbGRlci9CbG9ja0hvdXNlaG9sZGVyLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvQ3dpc2VCaW5hcnlPcC5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL0N3aXNlTnVsbGFyeU9wLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL1NWRC9VcHBlckJpZGlhZ29uYWxpemF0aW9uLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvdXRpbC9CbGFzVXRpbC5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL3Byb2R1Y3RzL0dlbmVyYWxCbG9ja1BhbmVsS2VybmVsLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvRGlhZ29uYWwuaAB0aGlyZF9wYXJ0eS9FaWdlbi9FaWdlbi9zcmMvQ29yZS9CbG9jay5oAHRoaXJkX3BhcnR5L2huc3dsaWIvaG5zd2xpYi9obnN3YWxnLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvVHJhbnNwb3NlLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvUGxhaW5PYmplY3RCYXNlLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvRGVuc2VDb2VmZnNCYXNlLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL0NvcmUvTWFwQmFzZS5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Db3JlL0RlbnNlQmFzZS5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9TVkQvU1ZEQmFzZS5oAHRoaXJkX3BhcnR5L0VpZ2VuL0VpZ2VuL3NyYy9Ib3VzZWhvbGRlci9Ib3VzZWhvbGRlclNlcXVlbmNlLmgAdGhpcmRfcGFydHkvRWlnZW4vRWlnZW4vc3JjL1FSL0NvbFBpdkhvdXNlaG9sZGVyUVIuaAB0aGlyZF9wYXJ0eS9FaWdlbi9FaWdlbi9zcmMvU1ZEL0phY29iaVNWRC5oAEF1ZwB0ZXJtaW5hdGluZwBiYXNpY19zdHJpbmcAaGFtbWluZwBpbmYAVHJ5aW5nIHRvIGNvbm5lY3QgYW4gZWxlbWVudCB0byBpdHNlbGYAJS4wTGYAJUxmAHJlc2l6ZQB0cnVlAFR1ZQBjb21wdXRlAGxlYXJuaW5nX3JhdGUAbmVnYXRpdmVfc2FtcGxlX3JhdGUAYWxsb2NhdGUAZmFsc2UATWFwQmFzZQBKdW5lAG5vbmUAY29zaW5lAHZwdHJlZQBkaWNlAGphY2NhcmQAa25uX21ldGhvZABpbml0aWFsaXplX21ldGhvZABMYWJlbCBub3QgZm91bmQAbm5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAcmVzaXplX2lmX2FsbG93ZWQAZGlzdGFuY2UtYmFzZWQgc2VhcmNoZXMgbm90IHN1cHBvcnRlZABsb2NhbGUgbm90IHN1cHBvcnRlZABUaGUgcmVxdWVzdGVkIHRvIHVuZGVsZXRlIGVsZW1lbnQgaXMgbm90IGRlbGV0ZWQAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAHRocmVhZCBjb25zdHJ1Y3RvciBmYWlsZWQAX190aHJlYWRfc3BlY2lmaWNfcHRyIGNvbnN0cnVjdGlvbiBmYWlsZWQAdGhyZWFkOjpqb2luIGZhaWxlZABtdXRleCBsb2NrIGZhaWxlZABjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWQAIHVwZGF0ZXMgYXBwbGllZABubmRlc2NlbnRfc2VlZABXZWQAc3ByZWFkACVZLSVtLSVkAHN0ZDo6YmFkX2FsbG9jAFNob3VsZCBiZSBub3QgYmUgbW9yZSB0aGFuIE1fIGNhbmRpZGF0ZXMgcmV0dXJuZWQgYnkgdGhlIGhldXJpc3RpYwBJbnZhbGlkIG1ldHJpYwBEZWMAd2IAcmIARmViAGFiAHcrYgByK2IAYStiAHJ3YQBvcGVyYXRvcltdAFsAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAbWF0cml4VgBob3VzZWhvbGRlclYAbWF0cml4VQBob3VzZWhvbGRlclUAJUg6JU06JVMAbWF0cml4UVIAaG91c2Vob2xkZXJRAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBJTkYAQwBjYXRjaGluZyBhIGNsYXNzIHdpdGhvdXQgYW4gb2JqZWN0PwA+AHRyZWVfaW5pdD0AY3NyX2RhdGE9Q1NSTWF0cml4PGZsb2F0PihuX3Jvd3M9AGRhdGE9TWF0cml4PGZsb2F0PihuX3Jvd3M9AG5fbmVpZ2hib3JzPQBuX2l0ZXJzPQAsIG5fY29scz0AbWF4X2NhbmRpZGF0ZXM9AGFuZ3VsYXJfdHJlZXM9AG5fdHJlZXM9AG5fdGhyZWFkcz0AcHJ1bmluZ19kZWdyZWVfbXVsdGlwbGllcj0AYWxnb3JpdGhtPQBsZWFmX3NpemU9AGlzX3NwYXJzZT0AdmVyYm9zZT0Ac2VlZD0AcF9tZXRyaWM9AHBydW5pbmdfcHJvYj0AZGVsdGE9ADAxMjM0NTY3ODkAQy5VVEYtOABpbmNyPT0xACgoU2l6ZUF0Q29tcGlsZVRpbWUgPT0gRHluYW1pYyAmJiAoTWF4U2l6ZUF0Q29tcGlsZVRpbWU9PUR5bmFtaWMgfHwgc2l6ZTw9TWF4U2l6ZUF0Q29tcGlsZVRpbWUpKSB8fCBTaXplQXRDb21waWxlVGltZSA9PSBzaXplKSAmJiBzaXplPj0wAHJvd3MgPj0gMCAmJiBjb2xzID49IDAAdmVjU2l6ZSA+PSAwAGlkeDEgPj0gMABpZHgwID49IDAAd2FybmluZzogTSBwYXJhbWV0ZXIgZXhjZWVkcyAxMDAwMCB3aGljaCBtYXkgbGVhZCB0byBhZHZlcnNlIGVmZmVjdHMuACBlZGdlcyBmb3IgdGhlIHNlYXJjaCBncmFwaC4AICAgICAgICAgQ2FwIHRvIDEwMDAwIHdpbGwgYmUgYXBwbGllZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3NpbmcuAE5OIGRlc2NlbnQgZG9uZS4AVGhlIG1vZGVsIHdhcyB0cmFpbmVkIHVzaW5nIGEgc3BhcnNlIG1hdHJpeC4gQXBwbGljYXRpb25zIHVzaW5nIGEgZGVuc2UgbWF0cml4IGFyZSBub3Qgc3VwcG9ydGVkLgBDYW4ndCB1c2UgYWRkUG9pbnQgdG8gdXBkYXRlIGRlbGV0ZWQgZWxlbWVudHMgaWYgcmVwbGFjZW1lbnQgb2YgZGVsZXRlZCBlbGVtZW50cyBpcyBlbmFibGVkLgAtAHcrAHIrAGErAHJvd3MgPj0gMCAmJiAoUm93c0F0Q29tcGlsZVRpbWUgPT0gRHluYW1pYyB8fCBSb3dzQXRDb21waWxlVGltZSA9PSByb3dzKSAmJiBjb2xzID49IDAgJiYgKENvbHNBdENvbXBpbGVUaW1lID09IER5bmFtaWMgfHwgQ29sc0F0Q29tcGlsZVRpbWUgPT0gY29scykAKG51bGwpACgoIVBhbmVsTW9kZSkgJiYgc3RyaWRlPT0wICYmIG9mZnNldD09MCkgfHwgKFBhbmVsTW9kZSAmJiBzdHJpZGU+PWRlcHRoICYmIG9mZnNldDw9c3RyaWRlKQAoZGF0YVB0ciA9PSAwKSB8fCAoIHJvd3MgPj0gMCAmJiAoUm93c0F0Q29tcGlsZVRpbWUgPT0gRHluYW1pYyB8fCBSb3dzQXRDb21waWxlVGltZSA9PSByb3dzKSAmJiBjb2xzID49IDAgJiYgKENvbHNBdENvbXBpbGVUaW1lID09IER5bmFtaWMgfHwgQ29sc0F0Q29tcGlsZVRpbWUgPT0gY29scykpAChpPj0wKSAmJiAoICgoQmxvY2tSb3dzPT0xKSAmJiAoQmxvY2tDb2xzPT1YcHJUeXBlOjpDb2xzQXRDb21waWxlVGltZSkgJiYgaTx4cHIucm93cygpKSB8fCgoQmxvY2tSb3dzPT1YcHJUeXBlOjpSb3dzQXRDb21waWxlVGltZSkgJiYgKEJsb2NrQ29scz09MSkgJiYgaTx4cHIuY29scygpKSkAY3VycmVudF9ncmFwaC5uaGVhcHMoKSA9PSBkYXRhLm5yb3dzKCkAYV9pbmRleCA8PSBtX21hdHJpeC5jb2xzKCkgJiYgLWFfaW5kZXggPD0gbV9tYXRyaXgucm93cygpAGRhdGEubnJvd3MoKSA9PSBuZXdfY2FuZGlkYXRlX25laWdoYm9ycy5uaGVhcHMoKQBkYXRhLm5yb3dzKCkgPT0gb2xkX2NhbmRpZGF0ZV9uZWlnaGJvcnMubmhlYXBzKCkAZHN0LnJvd3MoKT09YV9saHMucm93cygpICYmIGRzdC5jb2xzKCk9PWFfcmhzLmNvbHMoKQBhTGhzLnJvd3MoKSA9PSBhUmhzLnJvd3MoKSAmJiBhTGhzLmNvbHMoKSA9PSBhUmhzLmNvbHMoKQBkc3Qucm93cygpID09IHNyYy5yb3dzKCkgJiYgZHN0LmNvbHMoKSA9PSBzcmMuY29scygpAHJvdyA+PSAwICYmIHJvdyA8IHJvd3MoKSAmJiBjb2wgPj0gMCAmJiBjb2wgPCBjb2xzKCkAb3BlcmF0b3IoKQBpPj0wICYmIGo+PTAgJiYgaTxzaXplKCkgJiYgajxzaXplKCkAc2l6ZSgpID09IG90aGVyLnNpemUoKQBpbmRleCA+PSAwICYmIGluZGV4IDwgc2l6ZSgpACUAdGhpcy0+cm93cygpPjAgJiYgdGhpcy0+Y29scygpPjAgJiYgInlvdSBhcmUgdXNpbmcgYW4gZW1wdHkgbWF0cml4IgBsaHMuY29scygpID09IHJocy5yb3dzKCkgJiYgImludmFsaWQgbWF0cml4IHByb2R1Y3QiICYmICJpZiB5b3Ugd2FudGVkIGEgY29lZmYtd2lzZSBvciBhIGRvdCBwcm9kdWN0IHVzZSB0aGUgcmVzcGVjdGl2ZSBleHBsaWNpdCBmdW5jdGlvbnMiACggKChpbnRlcm5hbDo6VUludFB0cihtX2RhdGEpICUgaW50ZXJuYWw6OnRyYWl0czxEZXJpdmVkPjo6QWxpZ25tZW50KSA9PSAwKSB8fCAoY29scygpICogcm93cygpICogbWluSW5uZXJTdHJpZGUgKiBzaXplb2YoU2NhbGFyKSkgPCBpbnRlcm5hbDo6dHJhaXRzPERlcml2ZWQ+OjpBbGlnbm1lbnQgKSAmJiAiZGF0YSBpcyBub3QgYWxpZ25lZCIAIShtX2NvbXB1dGVGdWxsViAmJiBtX2NvbXB1dGVUaGluVikgJiYgIlNWREJhc2U6IHlvdSBjYW4ndCBhc2sgZm9yIGJvdGggZnVsbCBhbmQgdGhpbiBWIgAhKG1fY29tcHV0ZUZ1bGxWICYmIG1fY29tcHV0ZVRoaW5WKSAmJiAiSmFjb2JpU1ZEOiB5b3UgY2FuJ3QgYXNrIGZvciBib3RoIGZ1bGwgYW5kIHRoaW4gViIAIShtX2NvbXB1dGVGdWxsVSAmJiBtX2NvbXB1dGVUaGluVSkgJiYgIlNWREJhc2U6IHlvdSBjYW4ndCBhc2sgZm9yIGJvdGggZnVsbCBhbmQgdGhpbiBVIgAhKG1fY29tcHV0ZUZ1bGxVICYmIG1fY29tcHV0ZVRoaW5VKSAmJiAiSmFjb2JpU1ZEOiB5b3UgY2FuJ3QgYXNrIGZvciBib3RoIGZ1bGwgYW5kIHRoaW4gVSIAY29tcHV0ZVYoKSAmJiAiVGhpcyBTVkQgZGVjb21wb3NpdGlvbiBkaWRuJ3QgY29tcHV0ZSBWLiBEaWQgeW91IGFzayBmb3IgaXQ/IgBjb21wdXRlVSgpICYmICJUaGlzIFNWRCBkZWNvbXBvc2l0aW9uIGRpZG4ndCBjb21wdXRlIFUuIERpZCB5b3UgYXNrIGZvciBpdD8iACghKFJvd3NBdENvbXBpbGVUaW1lIT1EeW5hbWljKSB8fCAocm93cz09Um93c0F0Q29tcGlsZVRpbWUpKSAmJiAoIShDb2xzQXRDb21waWxlVGltZSE9RHluYW1pYykgfHwgKGNvbHM9PUNvbHNBdENvbXBpbGVUaW1lKSkgJiYgKCEoUm93c0F0Q29tcGlsZVRpbWU9PUR5bmFtaWMgJiYgTWF4Um93c0F0Q29tcGlsZVRpbWUhPUR5bmFtaWMpIHx8IChyb3dzPD1NYXhSb3dzQXRDb21waWxlVGltZSkpICYmICghKENvbHNBdENvbXBpbGVUaW1lPT1EeW5hbWljICYmIE1heENvbHNBdENvbXBpbGVUaW1lIT1EeW5hbWljKSB8fCAoY29sczw9TWF4Q29sc0F0Q29tcGlsZVRpbWUpKSAmJiByb3dzPj0wICYmIGNvbHM+PTAgJiYgIkludmFsaWQgc2l6ZXMgd2hlbiByZXNpemluZyBhIG1hdHJpeCBvciBhcnJheS4iAHJvd3MgPj0gY29scyAmJiAiVXBwZXJCaWRpYWdvbmFsaXphdGlvbiBpcyBvbmx5IGZvciBBcmljZXMgc2F0aXNmeWluZyByb3dzPj1jb2xzLiIAcm93cyA9PSB0aGlzLT5yb3dzKCkgJiYgY29scyA9PSB0aGlzLT5jb2xzKCkgJiYgIkRlbnNlQmFzZTo6cmVzaXplKCkgZG9lcyBub3QgYWN0dWFsbHkgYWxsb3cgdG8gcmVzaXplLiIAbV9pc0luaXRpYWxpemVkICYmICJVcHBlckJpZGlhZ29uYWxpemF0aW9uIGlzIG5vdCBpbml0aWFsaXplZC4iAG1faXNJbml0aWFsaXplZCAmJiAiQ29sUGl2SG91c2Vob2xkZXJRUiBpcyBub3QgaW5pdGlhbGl6ZWQuIgBtX2lzSW5pdGlhbGl6ZWQgJiYgIlNWRCBpcyBub3QgaW5pdGlhbGl6ZWQuIgAoIWNoZWNrX3RyYW5zcG9zZV9hbGlhc2luZ19ydW5fdGltZV9zZWxlY3RvciA8dHlwZW5hbWUgRGVyaXZlZDo6U2NhbGFyLGJsYXNfdHJhaXRzPERlcml2ZWQ+OjpJc1RyYW5zcG9zZWQsT3RoZXJEZXJpdmVkPiA6OnJ1bihleHRyYWN0X2RhdGEoZHN0KSwgb3RoZXIpKSAmJiAiYWxpYXNpbmcgZGV0ZWN0ZWQgZHVyaW5nIHRyYW5zcG9zaXRpb24sIHVzZSB0cmFuc3Bvc2VJblBsYWNlKCkgIiAib3IgZXZhbHVhdGUgdGhlIHJocyBpbnRvIGEgdGVtcG9yYXJ5IHVzaW5nIC5ldmFsKCkiAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAE5OIGRlc2NlbnQgZm9yIABTdG9wcGluZyB0aHJlc2hvbGQgbWV0IC0tIGV4aXRpbmcgYWZ0ZXIgACB0byAATWVyZ2luZyBwcnVuZWQgZ3JhcGggd2l0aCBpdHMgdHJhbnNwb3NlIHJlc3VsdHMgaW4gAEZvcndhcmQgZ3JhcGggcHJ1bmluZyByZWR1Y2VkIGVkZ2VzIGZyb20gAEJ1aWxkaW5nIFJQIGZvcmVzdCB3aXRoIABdIAAlRiAlVCAAICAvICAAICUNACwKACkKACksCgkATk5EZXNjZW50KAoJAAkJAAAAAAAAMCYAAAsAAAAMAAAADQAAAKivAAA8JgAAgCYAAE4xM2tubmNvbGxlX2huc3cxMUhuc3dCdWlsZGVySU44a25uY29sbGUxMlNpbXBsZU1hdHJpeElpaWZFRWZmRUUAAAAAgK8AAIgmAABOOGtubmNvbGxlN0J1aWxkZXJJTlNfMTJTaW1wbGVNYXRyaXhJaWlmRUVmRUUAAAAAAAAA1CYAAA4AAAAPAAAAEAAAABEAAAASAAAAqK8AAOAmAAAIJwAATjEza25uY29sbGVfaG5zdzEySG5zd1ByZWJ1aWx0SWlpZmZFRQAAAICvAAAQJwAATjhrbm5jb2xsZThQcmVidWlsdElpaWZFRQAAAAAAAABIJwAAEwAAABQAAAAVAAAAFgAAABcAAACorwAAVCcAAGgnAABON2huc3dsaWI3TDJTcGFjZUUAAICvAABwJwAATjdobnN3bGliMTRTcGFjZUludGVyZmFjZUlmRUUAAAAAAAAArCcAABgAAAAZAAAAGgAAABsAAAAcAAAAqK8AALgnAADgqwAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE43aG5zd2xpYjE0U3BhY2VJbnRlcmZhY2VJZkVFTlNfMTBzaGFyZWRfcHRySVMzX0UyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTM19TM19FRU5TXzlhbGxvY2F0b3JJUzNfRUVFRQBOU3QzX18yMTBzaGFyZWRfcHRySU43aG5zd2xpYjE0U3BhY2VJbnRlcmZhY2VJZkVFRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMzX1MzX0VFAAAAAAAAAADMKAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAqK8AANgoAACIKQAATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWlpOMTNrbm5jb2xsZV9obnN3MTJIbnN3UHJlYnVpbHRJaWlmZkVDMUlOOGtubmNvbGxlMTJTaW1wbGVNYXRyaXhJaWlmRUVFRVJLVF9SS05TMl8xMUhuc3dPcHRpb25zSWlmRUVFTktVbHZFMF9jbEV2RVVsZkVfTlNfOWFsbG9jYXRvcklTSF9FRUZmZkVFRQAAAACArwAAkCkAAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZmZkVFRQAAAICvAAC8KQAAWlpOMTNrbm5jb2xsZV9obnN3MTJIbnN3UHJlYnVpbHRJaWlmZkVDMUlOOGtubmNvbGxlMTJTaW1wbGVNYXRyaXhJaWlmRUVFRVJLVF9SS05TXzExSG5zd09wdGlvbnNJaWZFRUVOS1VsdkUwX2NsRXZFVWxmRV8AAAAAAFQqAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAACorwAAYCoAAIAqAABON2huc3dsaWIxNUhpZXJhcmNoaWNhbE5TV0lmRUUAAICvAACIKgAATjdobnN3bGliMThBbGdvcml0aG1JbnRlcmZhY2VJZkVFAAAAAAAAANAqAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAqK8AANwqAAAEKwAATjEza25uY29sbGVfaG5zdzEySG5zd1NlYXJjaGVySWlpZmZFRQAAAICvAAAMKwAATjhrbm5jb2xsZThTZWFyY2hlcklpZkVFAAAAAAAAAAA8KwAAMwAAADQAAAA1AAAAqK8AAEgrAACAJgAATjE4a25uY29sbGVfbm5kZXNjZW50MTZOTkRlc2NlbnRCdWlsZGVyRQAAAAAAAAAAkCsAADYAAAA3AAAAOAAAADkAAAA6AAAAqK8AAJwrAAAIJwAATjE4a25uY29sbGVfbm5kZXNjZW50MTdOTkRlc2NlbnRQcmVidWlsdEUAAAAAAAAA5CsAABgAAAA7AAAAPAAAAD0AAAA+AAAAqK8AAPArAADgqwAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE45bm5kZXNjZW50Nk1hdHJpeElmRUVOU18xMHNoYXJlZF9wdHJJUzNfRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMzX1MzX0VFTlNfOWFsbG9jYXRvcklTM19FRUVFAE5TdDNfXzIxMHNoYXJlZF9wdHJJTjlubmRlc2NlbnQ2TWF0cml4SWZFRUUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTM19TM19FRQAAAAAAAOQsAAAYAAAAPwAAAEAAAABBAAAAQgAAAKivAADwLAAA4KsAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBOOW5uZGVzY2VudDlOTkRlc2NlbnRFTlNfMTBzaGFyZWRfcHRySVMyX0UyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTMl9TMl9FRU5TXzlhbGxvY2F0b3JJUzJfRUVFRQBOU3QzX18yMTBzaGFyZWRfcHRySU45bm5kZXNjZW50OU5ORGVzY2VudEVFMjdfX3NoYXJlZF9wdHJfZGVmYXVsdF9kZWxldGVJUzJfUzJfRUUAAAAAAADsLQAAQwAAAEQAAABFAAAARgAAADAAAAAxAAAAMgAAAKivAAD4LQAABCsAAE4xOGtubmNvbGxlX25uZGVzY2VudDE3Tk5EZXNjZW50U2VhcmNoZXJFAAAAAAAAADguAABHAAAASAAAAEkAAACorwAARC4AAIAmAABOOGtubmNvbGxlMTNWcHRyZWVCdWlsZGVySTI4SGFsZlNxdWFyZWRFdWNsaWRlYW5EaXN0YW5jZU5TXzEyU2ltcGxlTWF0cml4SWlpZkVFZkVFAAAAAAAAtC4AAEoAAABLAAAATAAAAE0AAABOAAAAqK8AAMAuAAAIJwAATjhrbm5jb2xsZTE0VnB0cmVlUHJlYnVpbHRJMjhIYWxmU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlaWlmZkVFAAAAAAAkLwAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAKivAAAwLwAABCsAAE44a25uY29sbGUxNFZwdHJlZVNlYXJjaGVySTI4SGFsZlNxdWFyZWRFdWNsaWRlYW5EaXN0YW5jZWlpZmZFRQAAAAAAhC8AAEcAAABWAAAAVwAAAKivAACQLwAAgCYAAE44a25uY29sbGUxM1ZwdHJlZUJ1aWxkZXJJTlNfMTdFdWNsaWRlYW5EaXN0YW5jZUVOU18xMlNpbXBsZU1hdHJpeElpaWZFRWZFRQAAAAAA+C8AAFgAAABZAAAAWgAAAFsAAABcAAAAqK8AAAQwAAAIJwAATjhrbm5jb2xsZTE0VnB0cmVlUHJlYnVpbHRJTlNfMTdFdWNsaWRlYW5EaXN0YW5jZUVpaWZmRUUAAAAAAAAAAGQwAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAqK8AAHAwAAAEKwAATjhrbm5jb2xsZTE0VnB0cmVlU2VhcmNoZXJJTlNfMTdFdWNsaWRlYW5EaXN0YW5jZUVpaWZmRUUAAAAAAAAAANgwAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAACorwAA5DAAAFgxAABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laMjN1bWFwX2NvbnRleHRfY3JlYXRlX2YzMkUzJF8wTlNfOWFsbG9jYXRvcklTMl9FRUZQTjdobnN3bGliMTRTcGFjZUludGVyZmFjZUlmRUVpRUVFAAAAAICvAABgMQAATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRlBON2huc3dsaWIxNFNwYWNlSW50ZXJmYWNlSWZFRWlFRUUAAAAAAAC8MQAAbQAAAG4AAABvAAAAFgAAAHAAAACorwAAyDEAAGgnAAAzMkhOU1dIYWxmU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlSWZFAAAAgK8AAPgxAABaMjN1bWFwX2NvbnRleHRfY3JlYXRlX2YzMkUzJF8wAAAAAAA0MgAAcQAAAHIAAABzAAAAdAAAAHUAAACorwAAQDIAAGQyAAAxMVVNQVBDb250ZXh0SU42dW1hcHBwNlN0YXR1c0lpZkVFRQCArwAAbDIAADE1VU1BUENvbnRleHRCYXNlAAAAAAAAAKwyAABkAAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAACorwAAuDIAAFgxAABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laMjJrbm5fY29udGV4dF9jcmVhdGVfZjMyRTMkXzBOU185YWxsb2NhdG9ySVMyX0VFRlBON2huc3dsaWIxNFNwYWNlSW50ZXJmYWNlSWZFRWlFRUUAgK8AADAzAABaMjJrbm5fY29udGV4dF9jcmVhdGVfZjMyRTMkXzAAAAAAAABoMwAAfgAAAH8AAACAAAAAgQAAAKivAAB0MwAAnDMAADEwS05OQ29udGV4dElOOGtubmNvbGxlOFByZWJ1aWx0SWlpZkVFRQCArwAApDMAADE0S05OQ29udGV4dEJhc2UAQcDnAAvXFQMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0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//+Sv///AAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAAExDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAEGQggILQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHhggILIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBm4MCCwEMAEGngwILFRMAAAAAEwAAAAAJDAAAAAAADAAADABB1YMCCwEQAEHhgwILFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBj4QCCwESAEGbhAILHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBB0oQCCw4aAAAAGhoaAAAAAAAACQBBg4UCCwEUAEGPhQILFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBvYUCCwEWAEHJhQILWBUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgAAAACA3igAgMhNAACndgAANJ4AgBLHAICf7gAAfhcBgFxAAYDpZwEAyJABAFW4AS4AQbCGAgvWAlN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdABTdW5kYXkATW9uZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFRodXJzZGF5AEZyaWRheQBTYXR1cmRheQBKYW4ARmViAE1hcgBBcHIATWF5AEp1bgBKdWwAQXVnAFNlcABPY3QATm92AERlYwBKYW51YXJ5AEZlYnJ1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QZnbAgsBBABBptsCC0QB/wH//////wABIAAEAIAAAAj//wH/Af////////8B/wb/B/8I/wn//////7wCvAIBAP//AQABAP//AAD//////////wBB+tsCCwEUAEGa3AILHv//AQAK////////////Af8B/wAAAAAAAAH/Af8B/wBBytwCC0gB/wAAAAAAAAH/Af8BAAAAAQAAAAH//////wAAAAAB////AAAAAP////////////8oAAr//////wEACv////8A//////////8AQfbdAgveBQH/Af///wEA//////////////////8K//////8M/w3/AACorwAAJK8AAMCxAABOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAACorwAAVK8AABivAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAAAAAAASK8AAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAAAAAAAMivAAD9AQAABQIAAP8BAAAAAgAAAQIAAAYCAAAHAgAACAIAAKivAADUrwAASK8AAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAAJLAAAP0BAAAJAgAA/wEAAAACAAABAgAACgIAAAsCAAAMAgAAqK8AADCwAABIrwAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAACssAAAAgAAAA0CAAAOAgAAAAAAAMiwAAACAAAADwIAABACAAAAAAAAlLAAAAIAAAARAgAAEgIAAICvAACcsAAAU3Q5ZXhjZXB0aW9uAAAAAKivAAC4sAAAlLAAAFN0OWJhZF9hbGxvYwAAAACorwAA1LAAAKywAABTdDIwYmFkX2FycmF5X25ld19sZW5ndGgAAAAAAAAAABixAAABAAAAEwIAABQCAAAAAAAAoLEAAAQAAAAVAgAAFgIAAKivAAAksQAAlLAAAFN0MTFsb2dpY19lcnJvcgAAAAAASLEAAAEAAAAXAgAAFAIAAKivAABUsQAAGLEAAFN0MTZpbnZhbGlkX2FyZ3VtZW50AAAAAAAAAACAsQAAAQAAABgCAAAUAgAAqK8AAIyxAAAYsQAAU3QxMmxlbmd0aF9lcnJvcgAAAACorwAArLEAAJSwAABTdDEzcnVudGltZV9lcnJvcgAAAICvAADIsQAAU3Q5dHlwZV9pbmZvAEHZ4wILCM4BAAAAAAAJAEHs4wILAYcAQYDkAgsShgAAAAAAAACEAAAAKLkAAAAEAEGs5AILBP////8AQfDkAgsBBQBB/OQCCwHcAEGU5QILDoUAAADdAAAAOL0AAAAEAEGs5QILAQEAQbzlAgsF/////woAQYDmAgsJcLIAAAAAAAAFAEGU5gILAYcAQazmAgsKhQAAAIQAAABAwQBBxOYCCwECAEHU5gILCP//////////AEGY5wILHgizAAAlbS8lZC8leQAAAAglSDolTTolUwAAAAj8AQ==";function ie(n){if(c)return new Uint8Array(c);var F=Z(n);if(F)return F;throw"both async and sync fetching of the wasm failed"}async function LA(n){return ie(n)}async function AA(n,F){try{var K=await LA(n),W=await WebAssembly.instantiate(K,F);return W}catch(iA){d(`failed to asynchronously prepare wasm: ${iA}`),_A(iA)}}async function hA(n,F,K){return AA(F,K)}function V(){return{a:fI}}async function fA(){function n(QA,uA){return ve=QA.exports,f=ve.r,T(),P(ve.s),YA(),ve}nA();function F(QA){return n(QA.instance)}var K=V();if(I.instantiateWasm)try{return I.instantiateWasm(K,n)}catch(QA){d(`Module.instantiateWasm callback failed with error: ${QA}`),t(QA)}try{var W=await hA(c,PA,K),iA=F(W);return iA}catch(QA){return t(QA),Promise.reject(QA)}}var bA=n=>{for(;n.length>0;)n.shift()(I)};I.noExitRuntime;var NA=typeof TextDecoder<"u"?new TextDecoder:void 0,pA=(n,F=0,K=NaN)=>{for(var W=F+K,iA=F;n[iA]&&!(iA>=W);)++iA;if(iA-F>16&&n.buffer&&NA)return NA.decode(n.subarray(F,iA));for(var QA="";F>10,56320|Ke&1023)}}return QA},kA=(n,F)=>n?pA(D,n,F):"",MA=(n,F,K,W)=>_A(`Assertion failed: ${kA(n)}, at: `+[F?kA(F):"unknown filename",K,W?kA(W):"unknown function"]);class xA{constructor(F){this.excPtr=F,this.ptr=F-24}set_type(F){y[this.ptr+4>>2]=F}get_type(){return y[this.ptr+4>>2]}set_destructor(F){y[this.ptr+8>>2]=F}get_destructor(){return y[this.ptr+8>>2]}set_caught(F){F=F?1:0,u[this.ptr+12]=F}get_caught(){return u[this.ptr+12]!=0}set_rethrown(F){F=F?1:0,u[this.ptr+13]=F}get_rethrown(){return u[this.ptr+13]!=0}init(F,K){this.set_adjusted_ptr(0),this.set_type(F),this.set_destructor(K)}set_adjusted_ptr(F){y[this.ptr+16>>2]=F}get_adjusted_ptr(){return y[this.ptr+16>>2]}}var vA=0,ge=(n,F,K)=>{var W=new xA(n);throw W.init(F,K),vA=n,vA},SA=()=>{var n=h[+xe.varargs>>2];return xe.varargs+=4,n},re=SA,HA={isAbs:n=>n.charAt(0)==="/",splitPath:n=>{var F=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return F.exec(n).slice(1)},normalizeArray:(n,F)=>{for(var K=0,W=n.length-1;W>=0;W--){var iA=n[W];iA==="."?n.splice(W,1):iA===".."?(n.splice(W,1),K++):K&&(n.splice(W,1),K--)}if(F)for(;K;K--)n.unshift("..");return n},normalize:n=>{var F=HA.isAbs(n),K=n.substr(-1)==="/";return n=HA.normalizeArray(n.split("/").filter(W=>!!W),!F).join("/"),!n&&!F&&(n="."),n&&K&&(n+="/"),(F?"/":"")+n},dirname:n=>{var F=HA.splitPath(n),K=F[0],W=F[1];return!K&&!W?".":(W&&(W=W.substr(0,W.length-1)),K+W)},basename:n=>n&&n.match(/([^\/]+|\/)\/*$/)[1],join:(...n)=>HA.normalize(n.join("/")),join2:(n,F)=>HA.normalize(n+"/"+F)},zA=()=>n=>crypto.getRandomValues(n),Be=n=>{(Be=zA())(n)},Ae={resolve:(...n)=>{for(var F="",K=!1,W=n.length-1;W>=-1&&!K;W--){var iA=W>=0?n[W]:J.cwd();if(typeof iA!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!iA)return"";F=iA+"/"+F,K=HA.isAbs(iA)}return F=HA.normalizeArray(F.split("/").filter(QA=>!!QA),!K).join("/"),(K?"/":"")+F||"."},relative:(n,F)=>{n=Ae.resolve(n).substr(1),F=Ae.resolve(F).substr(1);function K(Ke){for(var aA=0;aA=0&&Ke[R]==="";R--);return aA>R?[]:Ke.slice(aA,R-aA+1)}for(var W=K(n.split("/")),iA=K(F.split("/")),QA=Math.min(W.length,iA.length),uA=QA,RA=0;RA{for(var F=0,K=0;K=55296&&W<=57343?(F+=4,++K):F+=3}return F},Ne=(n,F,K,W)=>{if(!(W>0))return 0;for(var iA=K,QA=K+W-1,uA=0;uA=55296&&RA<=57343){var Ce=n.charCodeAt(++uA);RA=65536+((RA&1023)<<10)|Ce&1023}if(RA<=127){if(K>=QA)break;F[K++]=RA}else if(RA<=2047){if(K+1>=QA)break;F[K++]=192|RA>>6,F[K++]=128|RA&63}else if(RA<=65535){if(K+2>=QA)break;F[K++]=224|RA>>12,F[K++]=128|RA>>6&63,F[K++]=128|RA&63}else{if(K+3>=QA)break;F[K++]=240|RA>>18,F[K++]=128|RA>>12&63,F[K++]=128|RA>>6&63,F[K++]=128|RA&63}}return F[K]=0,K-iA};function Pe(n,F,K){var W=se(n)+1,iA=new Array(W),QA=Ne(n,iA,0,iA.length);return iA.length=QA,iA}var pe=()=>{if(!oe.length){var n=null;if(typeof window<"u"&&typeof window.prompt=="function"&&(n=window.prompt("Input: "),n!==null&&(n+=` `)),!n)return null;oe=Pe(n)}return oe.shift()},tg={ttys:[],init(){},shutdown(){},register(n,F){tg.ttys[n]={input:[],output:[],ops:F},J.registerDevice(n,tg.stream_ops)},stream_ops:{open(n){var F=tg.ttys[n.node.rdev];if(!F)throw new J.ErrnoError(43);n.tty=F,n.seekable=!1},close(n){n.tty.ops.fsync(n.tty)},fsync(n){n.tty.ops.fsync(n.tty)},read(n,F,K,W,iA){if(!n.tty||!n.tty.ops.get_char)throw new J.ErrnoError(60);for(var QA=0,uA=0;uA0&&(r(pA(n.output)),n.output=[])},ioctl_tcgets(n){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(n,F,K){return 0},ioctl_tiocgwinsz(n){return[24,80]}},default_tty1_ops:{put_char(n,F){F===null||F===10?(d(pA(n.output)),n.output=[]):F!=0&&n.output.push(F)},fsync(n){n.output&&n.output.length>0&&(d(pA(n.output)),n.output=[])}}},Og=(n,F)=>Math.ceil(n/F)*F,xg=n=>{_A()},De={ops_table:null,mount(n){return De.createNode(null,"/",16895,0)},createNode(n,F,K,W){if(J.isBlkdev(K)||J.isFIFO(K))throw new J.ErrnoError(63);De.ops_table||={dir:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr,lookup:De.node_ops.lookup,mknod:De.node_ops.mknod,rename:De.node_ops.rename,unlink:De.node_ops.unlink,rmdir:De.node_ops.rmdir,readdir:De.node_ops.readdir,symlink:De.node_ops.symlink},stream:{llseek:De.stream_ops.llseek}},file:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr},stream:{llseek:De.stream_ops.llseek,read:De.stream_ops.read,write:De.stream_ops.write,allocate:De.stream_ops.allocate,mmap:De.stream_ops.mmap,msync:De.stream_ops.msync}},link:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr,readlink:De.node_ops.readlink},stream:{}},chrdev:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr},stream:J.chrdev_stream_ops}};var iA=J.createNode(n,F,K,W);return J.isDir(iA.mode)?(iA.node_ops=De.ops_table.dir.node,iA.stream_ops=De.ops_table.dir.stream,iA.contents={}):J.isFile(iA.mode)?(iA.node_ops=De.ops_table.file.node,iA.stream_ops=De.ops_table.file.stream,iA.usedBytes=0,iA.contents=null):J.isLink(iA.mode)?(iA.node_ops=De.ops_table.link.node,iA.stream_ops=De.ops_table.link.stream):J.isChrdev(iA.mode)&&(iA.node_ops=De.ops_table.chrdev.node,iA.stream_ops=De.ops_table.chrdev.stream),iA.atime=iA.mtime=iA.ctime=Date.now(),n&&(n.contents[F]=iA,n.atime=n.mtime=n.ctime=iA.atime),iA},getFileDataAsTypedArray(n){return n.contents?n.contents.subarray?n.contents.subarray(0,n.usedBytes):new Uint8Array(n.contents):new Uint8Array(0)},expandFileStorage(n,F){var K=n.contents?n.contents.length:0;if(!(K>=F)){var W=1024*1024;F=Math.max(F,K*(K>>0),K!=0&&(F=Math.max(F,256));var iA=n.contents;n.contents=new Uint8Array(F),n.usedBytes>0&&n.contents.set(iA.subarray(0,n.usedBytes),0)}},resizeFileStorage(n,F){if(n.usedBytes!=F)if(F==0)n.contents=null,n.usedBytes=0;else{var K=n.contents;n.contents=new Uint8Array(F),K&&n.contents.set(K.subarray(0,Math.min(F,n.usedBytes))),n.usedBytes=F}},node_ops:{getattr(n){var F={};return F.dev=J.isChrdev(n.mode)?n.id:1,F.ino=n.id,F.mode=n.mode,F.nlink=1,F.uid=0,F.gid=0,F.rdev=n.rdev,J.isDir(n.mode)?F.size=4096:J.isFile(n.mode)?F.size=n.usedBytes:J.isLink(n.mode)?F.size=n.link.length:F.size=0,F.atime=new Date(n.atime),F.mtime=new Date(n.mtime),F.ctime=new Date(n.ctime),F.blksize=4096,F.blocks=Math.ceil(F.size/F.blksize),F},setattr(n,F){for(const K of["mode","atime","mtime","ctime"])F[K]!=null&&(n[K]=F[K]);F.size!==void 0&&De.resizeFileStorage(n,F.size)},lookup(n,F){throw De.doesNotExistError},mknod(n,F,K,W){return De.createNode(n,F,K,W)},rename(n,F,K){var W;try{W=J.lookupNode(F,K)}catch{}if(W){if(J.isDir(n.mode))for(var iA in W.contents)throw new J.ErrnoError(55);J.hashRemoveNode(W)}delete n.parent.contents[n.name],F.contents[K]=n,n.name=K,F.ctime=F.mtime=n.parent.ctime=n.parent.mtime=Date.now()},unlink(n,F){delete n.contents[F],n.ctime=n.mtime=Date.now()},rmdir(n,F){var K=J.lookupNode(n,F);for(var W in K.contents)throw new J.ErrnoError(55);delete n.contents[F],n.ctime=n.mtime=Date.now()},readdir(n){return[".","..",...Object.keys(n.contents)]},symlink(n,F,K){var W=De.createNode(n,F,41471,0);return W.link=K,W},readlink(n){if(!J.isLink(n.mode))throw new J.ErrnoError(28);return n.link}},stream_ops:{read(n,F,K,W,iA){var QA=n.node.contents;if(iA>=n.node.usedBytes)return 0;var uA=Math.min(n.node.usedBytes-iA,W);if(uA>8&&QA.subarray)F.set(QA.subarray(iA,iA+uA),K);else for(var RA=0;RA0||K+F{var F=await Q(n);return new Uint8Array(F)},kg=(n,F,K,W,iA,QA)=>{J.createDataFile(n,F,K,W,iA,QA)},bI=I.preloadPlugins||[],xI=(n,F,K,W)=>{typeof Browser<"u"&&Browser.init();var iA=!1;return bI.forEach(QA=>{iA||QA.canHandle(F)&&(QA.handle(n,F,K,W),iA=!0)}),iA},pI=(n,F,K,W,iA,QA,uA,RA,Ce,Ke)=>{var aA=F?Ae.resolve(HA.join2(n,F)):n;function R(H){function $(oA){Ke?.(),RA||kg(n,F,oA,W,iA,Ce),QA?.(),YA()}xI(H,aA,$,()=>{uA?.(),YA()})||$(H)}nA(),typeof K=="string"?gg(K).then(R,uA):R(K)},yI=n=>{var F={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},K=F[n];if(typeof K>"u")throw new Error(`Unknown file open mode: ${n}`);return K},de=(n,F)=>{var K=0;return n&&(K|=365),F&&(K|=146),K},J={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{name="ErrnoError";constructor(n){this.errno=n}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(n){this.node=n}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(n){this.shared.flags=n}get position(){return this.shared.position}set position(n){this.shared.position=n}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(n,F,K,W){n||(n=this),this.parent=n,this.mount=n.mount,this.id=J.nextInode++,this.name=F,this.mode=K,this.rdev=W,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(n){n?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(n){n?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return J.isDir(this.mode)}get isDevice(){return J.isChrdev(this.mode)}},lookupPath(n,F={}){if(!n)throw new J.ErrnoError(44);F.follow_mount??=!0,HA.isAbs(n)||(n=J.cwd()+"/"+n);A:for(var K=0;K<40;K++){for(var W=n.split("/").filter(Ke=>!!Ke),iA=J.root,QA="/",uA=0;uA>>0)%J.nameTable.length},hashAddNode(n){var F=J.hashName(n.parent.id,n.name);n.name_next=J.nameTable[F],J.nameTable[F]=n},hashRemoveNode(n){var F=J.hashName(n.parent.id,n.name);if(J.nameTable[F]===n)J.nameTable[F]=n.name_next;else for(var K=J.nameTable[F];K;){if(K.name_next===n){K.name_next=n.name_next;break}K=K.name_next}},lookupNode(n,F){var K=J.mayLookup(n);if(K)throw new J.ErrnoError(K);for(var W=J.hashName(n.id,F),iA=J.nameTable[W];iA;iA=iA.name_next){var QA=iA.name;if(iA.parent.id===n.id&&QA===F)return iA}return J.lookup(n,F)},createNode(n,F,K,W){var iA=new J.FSNode(n,F,K,W);return J.hashAddNode(iA),iA},destroyNode(n){J.hashRemoveNode(n)},isRoot(n){return n===n.parent},isMountpoint(n){return!!n.mounted},isFile(n){return(n&61440)===32768},isDir(n){return(n&61440)===16384},isLink(n){return(n&61440)===40960},isChrdev(n){return(n&61440)===8192},isBlkdev(n){return(n&61440)===24576},isFIFO(n){return(n&61440)===4096},isSocket(n){return(n&49152)===49152},flagsToPermissionString(n){var F=["r","w","rw"][n&3];return n&512&&(F+="w"),F},nodePermissions(n,F){return J.ignorePermissions?0:F.includes("r")&&!(n.mode&292)||F.includes("w")&&!(n.mode&146)||F.includes("x")&&!(n.mode&73)?2:0},mayLookup(n){if(!J.isDir(n.mode))return 54;var F=J.nodePermissions(n,"x");return F||(n.node_ops.lookup?0:2)},mayCreate(n,F){if(!J.isDir(n.mode))return 54;try{var K=J.lookupNode(n,F);return 20}catch{}return J.nodePermissions(n,"wx")},mayDelete(n,F,K){var W;try{W=J.lookupNode(n,F)}catch(QA){return QA.errno}var iA=J.nodePermissions(n,"wx");if(iA)return iA;if(K){if(!J.isDir(W.mode))return 54;if(J.isRoot(W)||J.getPath(W)===J.cwd())return 10}else if(J.isDir(W.mode))return 31;return 0},mayOpen(n,F){return n?J.isLink(n.mode)?32:J.isDir(n.mode)&&(J.flagsToPermissionString(F)!=="r"||F&576)?31:J.nodePermissions(n,J.flagsToPermissionString(F)):44},checkOpExists(n,F){if(!n)throw new J.ErrnoError(F);return n},MAX_OPEN_FDS:4096,nextfd(){for(var n=0;n<=J.MAX_OPEN_FDS;n++)if(!J.streams[n])return n;throw new J.ErrnoError(33)},getStreamChecked(n){var F=J.getStream(n);if(!F)throw new J.ErrnoError(8);return F},getStream:n=>J.streams[n],createStream(n,F=-1){return n=Object.assign(new J.FSStream,n),F==-1&&(F=J.nextfd()),n.fd=F,J.streams[F]=n,n},closeStream(n){J.streams[n]=null},dupStream(n,F=-1){var K=J.createStream(n,F);return K.stream_ops?.dup?.(K),K},chrdev_stream_ops:{open(n){var F=J.getDevice(n.node.rdev);n.stream_ops=F.stream_ops,n.stream_ops.open?.(n)},llseek(){throw new J.ErrnoError(70)}},major:n=>n>>8,minor:n=>n&255,makedev:(n,F)=>n<<8|F,registerDevice(n,F){J.devices[n]={stream_ops:F}},getDevice:n=>J.devices[n],getMounts(n){for(var F=[],K=[n];K.length;){var W=K.pop();F.push(W),K.push(...W.mounts)}return F},syncfs(n,F){typeof n=="function"&&(F=n,n=!1),J.syncFSRequests++,J.syncFSRequests>1&&d(`warning: ${J.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var K=J.getMounts(J.root.mount),W=0;function iA(uA){return J.syncFSRequests--,F(uA)}function QA(uA){if(uA)return QA.errored?void 0:(QA.errored=!0,iA(uA));++W>=K.length&&iA(null)}K.forEach(uA=>{if(!uA.type.syncfs)return QA(null);uA.type.syncfs(uA,n,QA)})},mount(n,F,K){var W=K==="/",iA=!K,QA;if(W&&J.root)throw new J.ErrnoError(10);if(!W&&!iA){var uA=J.lookupPath(K,{follow_mount:!1});if(K=uA.path,QA=uA.node,J.isMountpoint(QA))throw new J.ErrnoError(10);if(!J.isDir(QA.mode))throw new J.ErrnoError(54)}var RA={type:n,opts:F,mountpoint:K,mounts:[]},Ce=n.mount(RA);return Ce.mount=RA,RA.root=Ce,W?J.root=Ce:QA&&(QA.mounted=RA,QA.mount&&QA.mount.mounts.push(RA)),Ce},unmount(n){var F=J.lookupPath(n,{follow_mount:!1});if(!J.isMountpoint(F.node))throw new J.ErrnoError(28);var K=F.node,W=K.mounted,iA=J.getMounts(W);Object.keys(J.nameTable).forEach(uA=>{for(var RA=J.nameTable[uA];RA;){var Ce=RA.name_next;iA.includes(RA.mount)&&J.destroyNode(RA),RA=Ce}}),K.mounted=null;var QA=K.mount.mounts.indexOf(W);K.mount.mounts.splice(QA,1)},lookup(n,F){return n.node_ops.lookup(n,F)},mknod(n,F,K){var W=J.lookupPath(n,{parent:!0}),iA=W.node,QA=HA.basename(n);if(!QA)throw new J.ErrnoError(28);if(QA==="."||QA==="..")throw new J.ErrnoError(20);var uA=J.mayCreate(iA,QA);if(uA)throw new J.ErrnoError(uA);if(!iA.node_ops.mknod)throw new J.ErrnoError(63);return iA.node_ops.mknod(iA,QA,F,K)},statfs(n){return J.statfsNode(J.lookupPath(n,{follow:!0}).node)},statfsStream(n){return J.statfsNode(n.node)},statfsNode(n){var F={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:J.nextInode,ffree:J.nextInode-1,fsid:42,flags:2,namelen:255};return n.node_ops.statfs&&Object.assign(F,n.node_ops.statfs(n.mount.opts.root)),F},create(n,F=438){return F&=4095,F|=32768,J.mknod(n,F,0)},mkdir(n,F=511){return F&=1023,F|=16384,J.mknod(n,F,0)},mkdirTree(n,F){for(var K=n.split("/"),W="",iA=0;iA"u"&&(K=F,F=438),F|=8192,J.mknod(n,F,K)},symlink(n,F){if(!Ae.resolve(n))throw new J.ErrnoError(44);var K=J.lookupPath(F,{parent:!0}),W=K.node;if(!W)throw new J.ErrnoError(44);var iA=HA.basename(F),QA=J.mayCreate(W,iA);if(QA)throw new J.ErrnoError(QA);if(!W.node_ops.symlink)throw new J.ErrnoError(63);return W.node_ops.symlink(W,iA,n)},rename(n,F){var K=HA.dirname(n),W=HA.dirname(F),iA=HA.basename(n),QA=HA.basename(F),uA,RA,Ce;if(uA=J.lookupPath(n,{parent:!0}),RA=uA.node,uA=J.lookupPath(F,{parent:!0}),Ce=uA.node,!RA||!Ce)throw new J.ErrnoError(44);if(RA.mount!==Ce.mount)throw new J.ErrnoError(75);var Ke=J.lookupNode(RA,iA),aA=Ae.relative(n,W);if(aA.charAt(0)!==".")throw new J.ErrnoError(28);if(aA=Ae.relative(F,K),aA.charAt(0)!==".")throw new J.ErrnoError(55);var R;try{R=J.lookupNode(Ce,QA)}catch{}if(Ke!==R){var H=J.isDir(Ke.mode),$=J.mayDelete(RA,iA,H);if($)throw new J.ErrnoError($);if($=R?J.mayDelete(Ce,QA,H):J.mayCreate(Ce,QA),$)throw new J.ErrnoError($);if(!RA.node_ops.rename)throw new J.ErrnoError(63);if(J.isMountpoint(Ke)||R&&J.isMountpoint(R))throw new J.ErrnoError(10);if(Ce!==RA&&($=J.nodePermissions(RA,"w"),$))throw new J.ErrnoError($);J.hashRemoveNode(Ke);try{RA.node_ops.rename(Ke,Ce,QA),Ke.parent=Ce}catch(oA){throw oA}finally{J.hashAddNode(Ke)}}},rmdir(n){var F=J.lookupPath(n,{parent:!0}),K=F.node,W=HA.basename(n),iA=J.lookupNode(K,W),QA=J.mayDelete(K,W,!0);if(QA)throw new J.ErrnoError(QA);if(!K.node_ops.rmdir)throw new J.ErrnoError(63);if(J.isMountpoint(iA))throw new J.ErrnoError(10);K.node_ops.rmdir(K,W),J.destroyNode(iA)},readdir(n){var F=J.lookupPath(n,{follow:!0}),K=F.node,W=J.checkOpExists(K.node_ops.readdir,54);return W(K)},unlink(n){var F=J.lookupPath(n,{parent:!0}),K=F.node;if(!K)throw new J.ErrnoError(44);var W=HA.basename(n),iA=J.lookupNode(K,W),QA=J.mayDelete(K,W,!1);if(QA)throw new J.ErrnoError(QA);if(!K.node_ops.unlink)throw new J.ErrnoError(63);if(J.isMountpoint(iA))throw new J.ErrnoError(10);K.node_ops.unlink(K,W),J.destroyNode(iA)},readlink(n){var F=J.lookupPath(n),K=F.node;if(!K)throw new J.ErrnoError(44);if(!K.node_ops.readlink)throw new J.ErrnoError(28);return K.node_ops.readlink(K)},stat(n,F){var K=J.lookupPath(n,{follow:!F}),W=K.node,iA=J.checkOpExists(W.node_ops.getattr,63);return iA(W)},lstat(n){return J.stat(n,!0)},chmod(n,F,K){var W;if(typeof n=="string"){var iA=J.lookupPath(n,{follow:!K});W=iA.node}else W=n;var QA=J.checkOpExists(W.node_ops.setattr,63);QA(W,{mode:F&4095|W.mode&-4096,ctime:Date.now(),dontFollow:K})},lchmod(n,F){J.chmod(n,F,!0)},fchmod(n,F){var K=J.getStreamChecked(n);J.chmod(K.node,F)},chown(n,F,K,W){var iA;if(typeof n=="string"){var QA=J.lookupPath(n,{follow:!W});iA=QA.node}else iA=n;var uA=J.checkOpExists(iA.node_ops.setattr,63);uA(iA,{timestamp:Date.now(),dontFollow:W})},lchown(n,F,K){J.chown(n,F,K,!0)},fchown(n,F,K){var W=J.getStreamChecked(n);J.chown(W.node,F,K)},truncate(n,F){if(F<0)throw new J.ErrnoError(28);var K;if(typeof n=="string"){var W=J.lookupPath(n,{follow:!0});K=W.node}else K=n;if(J.isDir(K.mode))throw new J.ErrnoError(31);if(!J.isFile(K.mode))throw new J.ErrnoError(28);var iA=J.nodePermissions(K,"w");if(iA)throw new J.ErrnoError(iA);var QA=J.checkOpExists(K.node_ops.setattr,63);QA(K,{size:F,timestamp:Date.now()})},ftruncate(n,F){var K=J.getStreamChecked(n);if((K.flags&2097155)===0)throw new J.ErrnoError(28);J.truncate(K.node,F)},utime(n,F,K){var W=J.lookupPath(n,{follow:!0}),iA=W.node,QA=J.checkOpExists(iA.node_ops.setattr,63);QA(iA,{atime:F,mtime:K})},open(n,F,K=438){if(n==="")throw new J.ErrnoError(44);F=typeof F=="string"?yI(F):F,F&64?K=K&4095|32768:K=0;var W,iA;if(typeof n=="object")W=n;else{iA=n.endsWith("/");var QA=J.lookupPath(n,{follow:!(F&131072),noent_okay:!0});W=QA.node,n=QA.path}var uA=!1;if(F&64)if(W){if(F&128)throw new J.ErrnoError(20)}else{if(iA)throw new J.ErrnoError(31);W=J.mknod(n,K|511,0),uA=!0}if(!W)throw new J.ErrnoError(44);if(J.isChrdev(W.mode)&&(F&=-513),F&65536&&!J.isDir(W.mode))throw new J.ErrnoError(54);if(!uA){var RA=J.mayOpen(W,F);if(RA)throw new J.ErrnoError(RA)}F&512&&!uA&&J.truncate(W,0),F&=-131713;var Ce=J.createStream({node:W,path:J.getPath(W),flags:F,seekable:!0,position:0,stream_ops:W.stream_ops,ungotten:[],error:!1});return Ce.stream_ops.open&&Ce.stream_ops.open(Ce),uA&&J.chmod(W,K&511),I.logReadFiles&&!(F&1)&&(n in J.readFiles||(J.readFiles[n]=1)),Ce},close(n){if(J.isClosed(n))throw new J.ErrnoError(8);n.getdents&&(n.getdents=null);try{n.stream_ops.close&&n.stream_ops.close(n)}catch(F){throw F}finally{J.closeStream(n.fd)}n.fd=null},isClosed(n){return n.fd===null},llseek(n,F,K){if(J.isClosed(n))throw new J.ErrnoError(8);if(!n.seekable||!n.stream_ops.llseek)throw new J.ErrnoError(70);if(K!=0&&K!=1&&K!=2)throw new J.ErrnoError(28);return n.position=n.stream_ops.llseek(n,F,K),n.ungotten=[],n.position},read(n,F,K,W,iA){if(W<0||iA<0)throw new J.ErrnoError(28);if(J.isClosed(n))throw new J.ErrnoError(8);if((n.flags&2097155)===1)throw new J.ErrnoError(8);if(J.isDir(n.node.mode))throw new J.ErrnoError(31);if(!n.stream_ops.read)throw new J.ErrnoError(28);var QA=typeof iA<"u";if(!QA)iA=n.position;else if(!n.seekable)throw new J.ErrnoError(70);var uA=n.stream_ops.read(n,F,K,W,iA);return QA||(n.position+=uA),uA},write(n,F,K,W,iA,QA){if(W<0||iA<0)throw new J.ErrnoError(28);if(J.isClosed(n))throw new J.ErrnoError(8);if((n.flags&2097155)===0)throw new J.ErrnoError(8);if(J.isDir(n.node.mode))throw new J.ErrnoError(31);if(!n.stream_ops.write)throw new J.ErrnoError(28);n.seekable&&n.flags&1024&&J.llseek(n,0,2);var uA=typeof iA<"u";if(!uA)iA=n.position;else if(!n.seekable)throw new J.ErrnoError(70);var RA=n.stream_ops.write(n,F,K,W,iA,QA);return uA||(n.position+=RA),RA},allocate(n,F,K){if(J.isClosed(n))throw new J.ErrnoError(8);if(F<0||K<=0)throw new J.ErrnoError(28);if((n.flags&2097155)===0)throw new J.ErrnoError(8);if(!J.isFile(n.node.mode)&&!J.isDir(n.node.mode))throw new J.ErrnoError(43);if(!n.stream_ops.allocate)throw new J.ErrnoError(138);n.stream_ops.allocate(n,F,K)},mmap(n,F,K,W,iA){if((W&2)!==0&&(iA&2)===0&&(n.flags&2097155)!==2)throw new J.ErrnoError(2);if((n.flags&2097155)===1)throw new J.ErrnoError(2);if(!n.stream_ops.mmap)throw new J.ErrnoError(43);if(!F)throw new J.ErrnoError(28);return n.stream_ops.mmap(n,F,K,W,iA)},msync(n,F,K,W,iA){return n.stream_ops.msync?n.stream_ops.msync(n,F,K,W,iA):0},ioctl(n,F,K){if(!n.stream_ops.ioctl)throw new J.ErrnoError(59);return n.stream_ops.ioctl(n,F,K)},readFile(n,F={}){if(F.flags=F.flags||0,F.encoding=F.encoding||"binary",F.encoding!=="utf8"&&F.encoding!=="binary")throw new Error(`Invalid encoding type "${F.encoding}"`);var K,W=J.open(n,F.flags),iA=J.stat(n),QA=iA.size,uA=new Uint8Array(QA);return J.read(W,uA,0,QA,0),F.encoding==="utf8"?K=pA(uA):F.encoding==="binary"&&(K=uA),J.close(W),K},writeFile(n,F,K={}){K.flags=K.flags||577;var W=J.open(n,K.flags,K.mode);if(typeof F=="string"){var iA=new Uint8Array(se(F)+1),QA=Ne(F,iA,0,iA.length);J.write(W,iA,0,QA,void 0,K.canOwn)}else if(ArrayBuffer.isView(F))J.write(W,F,0,F.byteLength,void 0,K.canOwn);else throw new Error("Unsupported data type");J.close(W)},cwd:()=>J.currentPath,chdir(n){var F=J.lookupPath(n,{follow:!0});if(F.node===null)throw new J.ErrnoError(44);if(!J.isDir(F.node.mode))throw new J.ErrnoError(54);var K=J.nodePermissions(F.node,"x");if(K)throw new J.ErrnoError(K);J.currentPath=F.path},createDefaultDirectories(){J.mkdir("/tmp"),J.mkdir("/home"),J.mkdir("/home/web_user")},createDefaultDevices(){J.mkdir("/dev"),J.registerDevice(J.makedev(1,3),{read:()=>0,write:(W,iA,QA,uA,RA)=>uA,llseek:()=>0}),J.mkdev("/dev/null",J.makedev(1,3)),tg.register(J.makedev(5,0),tg.default_tty_ops),tg.register(J.makedev(6,0),tg.default_tty1_ops),J.mkdev("/dev/tty",J.makedev(5,0)),J.mkdev("/dev/tty1",J.makedev(6,0));var n=new Uint8Array(1024),F=0,K=()=>(F===0&&(Be(n),F=n.byteLength),n[--F]);J.createDevice("/dev","random",K),J.createDevice("/dev","urandom",K),J.mkdir("/dev/shm"),J.mkdir("/dev/shm/tmp")},createSpecialDirectories(){J.mkdir("/proc");var n=J.mkdir("/proc/self");J.mkdir("/proc/self/fd"),J.mount({mount(){var F=J.createNode(n,"fd",16895,73);return F.stream_ops={llseek:De.stream_ops.llseek},F.node_ops={lookup(K,W){var iA=+W,QA=J.getStreamChecked(iA),uA={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>QA.path},id:iA+1};return uA.parent=uA,uA},readdir(){return Array.from(J.streams.entries()).filter(([K,W])=>W).map(([K,W])=>K.toString())}},F}},{},"/proc/self/fd")},createStandardStreams(n,F,K){n?J.createDevice("/dev","stdin",n):J.symlink("/dev/tty","/dev/stdin"),F?J.createDevice("/dev","stdout",null,F):J.symlink("/dev/tty","/dev/stdout"),K?J.createDevice("/dev","stderr",null,K):J.symlink("/dev/tty1","/dev/stderr"),J.open("/dev/stdin",0),J.open("/dev/stdout",1),J.open("/dev/stderr",1)},staticInit(){J.nameTable=new Array(4096),J.mount(De,{},"/"),J.createDefaultDirectories(),J.createDefaultDevices(),J.createSpecialDirectories(),J.filesystems={MEMFS:De}},init(n,F,K){J.initialized=!0,n??=I.stdin,F??=I.stdout,K??=I.stderr,J.createStandardStreams(n,F,K)},quit(){J.initialized=!1;for(var n=0;nthis.length-1||$<0)){var oA=$%this.chunkSize,DA=$/this.chunkSize|0;return this.getter(DA)[oA]}}setDataGetter($){this.getter=$}cacheLength(){var $=new XMLHttpRequest;if($.open("HEAD",K,!1),$.send(null),!($.status>=200&&$.status<300||$.status===304))throw new Error("Couldn't load "+K+". Status: "+$.status);var oA=Number($.getResponseHeader("Content-length")),DA,GA=(DA=$.getResponseHeader("Accept-Ranges"))&&DA==="bytes",jA=(DA=$.getResponseHeader("Content-Encoding"))&&DA==="gzip",XA=1024*1024;GA||(XA=oA);var ZA=(fe,me)=>{if(fe>me)throw new Error("invalid range ("+fe+", "+me+") or no bytes requested!");if(me>oA-1)throw new Error("only "+oA+" bytes available! programmer error!");var Ye=new XMLHttpRequest;if(Ye.open("GET",K,!1),oA!==XA&&Ye.setRequestHeader("Range","bytes="+fe+"-"+me),Ye.responseType="arraybuffer",Ye.overrideMimeType&&Ye.overrideMimeType("text/plain; charset=x-user-defined"),Ye.send(null),!(Ye.status>=200&&Ye.status<300||Ye.status===304))throw new Error("Couldn't load "+K+". Status: "+Ye.status);return Ye.response!==void 0?new Uint8Array(Ye.response||[]):Pe(Ye.responseText||"")},$A=this;$A.setDataGetter(fe=>{var me=fe*XA,Ye=(fe+1)*XA-1;if(Ye=Math.min(Ye,oA-1),typeof $A.chunks[fe]>"u"&&($A.chunks[fe]=ZA(me,Ye)),typeof $A.chunks[fe]>"u")throw new Error("doXHR failed!");return $A.chunks[fe]}),(jA||!oA)&&(XA=oA=1,oA=this.getter(0).length,XA=oA,r("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=oA,this._chunkSize=XA,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var uA,RA}else var RA={isDevice:!1,url:K};var Ce=J.createFile(n,F,RA,W,iA);RA.contents?Ce.contents=RA.contents:RA.url&&(Ce.contents=null,Ce.url=RA.url),Object.defineProperties(Ce,{usedBytes:{get:function(){return this.contents.length}}});var Ke={},aA=Object.keys(Ce.stream_ops);aA.forEach(H=>{var $=Ce.stream_ops[H];Ke[H]=(...oA)=>(J.forceLoadFile(Ce),$(...oA))});function R(H,$,oA,DA,GA){var jA=H.node.contents;if(GA>=jA.length)return 0;var XA=Math.min(jA.length-GA,DA);if(jA.slice)for(var ZA=0;ZA(J.forceLoadFile(Ce),R(H,$,oA,DA,GA)),Ke.mmap=(H,$,oA,DA,GA)=>{J.forceLoadFile(Ce);var jA=xg();if(!jA)throw new J.ErrnoError(48);return R(H,u,jA,$,oA),{ptr:jA,allocated:!0}},Ce.stream_ops=Ke,Ce}},xe={DEFAULT_POLLMASK:5,calculateAt(n,F,K){if(HA.isAbs(F))return F;var W;if(n===-100)W=J.cwd();else{var iA=xe.getStreamFromFD(n);W=iA.path}if(F.length==0){if(!K)throw new J.ErrnoError(44);return W}return W+"/"+F},writeStat(n,F){h[n>>2]=F.dev,h[n+4>>2]=F.mode,y[n+8>>2]=F.nlink,h[n+12>>2]=F.uid,h[n+16>>2]=F.gid,h[n+20>>2]=F.rdev,M[n+24>>3]=BigInt(F.size),h[n+32>>2]=4096,h[n+36>>2]=F.blocks;var K=F.atime.getTime(),W=F.mtime.getTime(),iA=F.ctime.getTime();return M[n+40>>3]=BigInt(Math.floor(K/1e3)),y[n+48>>2]=K%1e3*1e3*1e3,M[n+56>>3]=BigInt(Math.floor(W/1e3)),y[n+64>>2]=W%1e3*1e3*1e3,M[n+72>>3]=BigInt(Math.floor(iA/1e3)),y[n+80>>2]=iA%1e3*1e3*1e3,M[n+88>>3]=BigInt(F.ino),0},writeStatFs(n,F){h[n+4>>2]=F.bsize,h[n+40>>2]=F.bsize,h[n+8>>2]=F.blocks,h[n+12>>2]=F.bfree,h[n+16>>2]=F.bavail,h[n+20>>2]=F.files,h[n+24>>2]=F.ffree,h[n+28>>2]=F.fsid,h[n+44>>2]=F.flags,h[n+36>>2]=F.namelen},doMsync(n,F,K,W,iA){if(!J.isFile(F.node.mode))throw new J.ErrnoError(43);if(W&2)return 0;var QA=D.slice(n,n+K);J.msync(F,QA,iA,K,W)},getStreamFromFD(n){var F=J.getStreamChecked(n);return F},varargs:void 0,getStr(n){var F=kA(n);return F}};function ke(n,F,K){xe.varargs=K;try{var W=xe.getStreamFromFD(n);switch(F){case 0:{var iA=SA();if(iA<0)return-28;for(;J.streams[iA];)iA++;var QA;return QA=J.dupStream(W,iA),QA.fd}case 1:case 2:return 0;case 3:return W.flags;case 4:{var iA=SA();return W.flags|=iA,0}case 12:{var iA=re(),uA=0;return G[iA+uA>>1]=2,0}case 13:case 14:return 0}return-28}catch(RA){if(typeof J>"u"||RA.name!=="ErrnoError")throw RA;return-RA.errno}}function EI(n,F,K){xe.varargs=K;try{var W=xe.getStreamFromFD(n);switch(F){case 21509:return W.tty?0:-59;case 21505:{if(!W.tty)return-59;if(W.tty.ops.ioctl_tcgets){var iA=W.tty.ops.ioctl_tcgets(W),QA=re();h[QA>>2]=iA.c_iflag||0,h[QA+4>>2]=iA.c_oflag||0,h[QA+8>>2]=iA.c_cflag||0,h[QA+12>>2]=iA.c_lflag||0;for(var uA=0;uA<32;uA++)u[QA+uA+17]=iA.c_cc[uA]||0;return 0}return 0}case 21510:case 21511:case 21512:return W.tty?0:-59;case 21506:case 21507:case 21508:{if(!W.tty)return-59;if(W.tty.ops.ioctl_tcsets){for(var QA=re(),RA=h[QA>>2],Ce=h[QA+4>>2],Ke=h[QA+8>>2],aA=h[QA+12>>2],R=[],uA=0;uA<32;uA++)R.push(u[QA+uA+17]);return W.tty.ops.ioctl_tcsets(W.tty,F,{c_iflag:RA,c_oflag:Ce,c_cflag:Ke,c_lflag:aA,c_cc:R})}return 0}case 21519:{if(!W.tty)return-59;var QA=re();return h[QA>>2]=0,0}case 21520:return W.tty?-28:-59;case 21531:{var QA=re();return J.ioctl(W,F,QA)}case 21523:{if(!W.tty)return-59;if(W.tty.ops.ioctl_tiocgwinsz){var H=W.tty.ops.ioctl_tiocgwinsz(W.tty),QA=re();G[QA>>1]=H[0],G[QA+2>>1]=H[1]}return 0}case 21524:return W.tty?0:-59;case 21515:return W.tty?0:-59;default:return-28}}catch($){if(typeof J>"u"||$.name!=="ErrnoError")throw $;return-$.errno}}function N(n,F,K,W){xe.varargs=W;try{F=xe.getStr(F),F=xe.calculateAt(n,F);var iA=W?SA():0;return J.open(F,K,iA).fd}catch(QA){if(typeof J>"u"||QA.name!=="ErrnoError")throw QA;return-QA.errno}}var gA=()=>_A(""),O=n=>n%4===0&&(n%100!==0||n%400===0),IA=[0,31,60,91,121,152,182,213,244,274,305,335],rA=[0,31,59,90,120,151,181,212,243,273,304,334],yA=n=>{var F=O(n.getFullYear()),K=F?IA:rA,W=K[n.getMonth()]+n.getDate()-1;return W},JA=9007199254740992,ae=-9007199254740992,Ee=n=>nJA?NaN:Number(n);function Ie(n,F){n=Ee(n);var K=new Date(n*1e3);h[F>>2]=K.getSeconds(),h[F+4>>2]=K.getMinutes(),h[F+8>>2]=K.getHours(),h[F+12>>2]=K.getDate(),h[F+16>>2]=K.getMonth(),h[F+20>>2]=K.getFullYear()-1900,h[F+24>>2]=K.getDay();var W=yA(K)|0;h[F+28>>2]=W,h[F+36>>2]=-(K.getTimezoneOffset()*60);var iA=new Date(K.getFullYear(),0,1),QA=new Date(K.getFullYear(),6,1).getTimezoneOffset(),uA=iA.getTimezoneOffset(),RA=(QA!=uA&&K.getTimezoneOffset()==Math.min(uA,QA))|0;h[F+32>>2]=RA}var Se=(n,F,K)=>Ne(n,D,F,K),Te=(n,F,K,W)=>{var iA=new Date().getFullYear(),QA=new Date(iA,0,1),uA=new Date(iA,6,1),RA=QA.getTimezoneOffset(),Ce=uA.getTimezoneOffset(),Ke=Math.max(RA,Ce);y[n>>2]=Ke*60,h[F>>2]=+(RA!=Ce);var aA=$=>{var oA=$>=0?"-":"+",DA=Math.abs($),GA=String(Math.floor(DA/60)).padStart(2,"0"),jA=String(DA%60).padStart(2,"0");return`UTC${oA}${GA}${jA}`},R=aA(RA),H=aA(Ce);Ceperformance.now(),je=()=>Date.now(),lg=n=>n>=0&&n<=3;function Wg(n,F,K){if(!lg(n))return 28;var W;n===0?W=je():W=wg();var iA=Math.round(W*1e3*1e3);return M[K>>3]=BigInt(iA),0}var Ig=()=>2147483648,pg=()=>Ig(),iI=n=>{var F=f.buffer,K=(n-F.byteLength+65535)/65536|0;try{return f.grow(K),T(),1}catch{}},cg=n=>{var F=D.length;n>>>=0;var K=Ig();if(n>K)return!1;for(var W=1;W<=4;W*=2){var iA=F*(1+.2/W);iA=Math.min(iA,n+100663296);var QA=Math.min(K,Og(Math.max(n,iA),65536)),uA=iI(QA);if(uA)return!0}return!1},Zg={},oI=()=>s||"./this.program",mg=()=>{if(!mg.strings){var n=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",F={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:n,_:oI()};for(var K in Zg)Zg[K]===void 0?delete F[K]:F[K]=Zg[K];var W=[];for(var K in F)W.push(`${K}=${F[K]}`);mg.strings=W}return mg.strings},nI=(n,F)=>{for(var K=0;K{var K=0;return mg().forEach((W,iA)=>{var QA=F+K;y[n+iA*4>>2]=QA,nI(W,QA),K+=W.length+1}),0},ag=(n,F)=>{var K=mg();y[n>>2]=K.length;var W=0;return K.forEach(iA=>W+=iA.length+1),y[F>>2]=W,0};function jg(n){try{var F=xe.getStreamFromFD(n);return J.close(F),0}catch(K){if(typeof J>"u"||K.name!=="ErrnoError")throw K;return K.errno}}var dg=(n,F,K,W)=>{for(var iA=0,QA=0;QA>2],RA=y[F+4>>2];F+=8;var Ce=J.read(n,u,uA,RA,W);if(Ce<0)return-1;if(iA+=Ce,Ce>2]=QA,0}catch(uA){if(typeof J>"u"||uA.name!=="ErrnoError")throw uA;return uA.errno}}function tI(n,F,K,W){F=Ee(F);try{if(isNaN(F))return 61;var iA=xe.getStreamFromFD(n);return J.llseek(iA,F,K),M[W>>3]=BigInt(iA.position),iA.getdents&&F===0&&K===0&&(iA.getdents=null),0}catch(QA){if(typeof J>"u"||QA.name!=="ErrnoError")throw QA;return QA.errno}}var lI=(n,F,K,W)=>{for(var iA=0,QA=0;QA>2],RA=y[F+4>>2];F+=8;var Ce=J.write(n,u,uA,RA,W);if(Ce<0)return-1;if(iA+=Ce,Ce>2]=QA,0}catch(uA){if(typeof J>"u"||uA.name!=="ErrnoError")throw uA;return uA.errno}}J.createPreloadedFile=pI,J.staticInit(),De.doesNotExistError=new J.ErrnoError(44),De.doesNotExistError.stack="";var fI={a:MA,b:ge,c:ke,f:EI,g:N,h:gA,k:Ie,l:Te,i:Wg,m:pg,j:cg,n:CI,o:ag,d:jg,p:Mg,q:tI,e:AI},ve=await fA();ve.s,I._umap_options_create=ve.t,I._umap_options_destroy=ve.u,I._umap_options_number=ve.w,I._umap_options_string=ve.x,I._umap_context_create_f32=ve.y,I._umap_context_run=ve.z,I._umap_context_n_epochs=ve.A,I._umap_context_epoch=ve.B,I._umap_context_destroy=ve.C,I._knn_options_create=ve.D,I._knn_options_destroy=ve.E,I._knn_options_number=ve.F,I._knn_options_string=ve.G,I._knn_context_create_f32=ve.H,I._knn_context_query_by_index=ve.I,I._knn_context_query_by_vector=ve.J,I._knn_context_destroy=ve.K,I._memory_allocate=ve.L,I._memory_free=ve.M;function qA(){if(z>0){v=qA;return}if(BA(),z>0){v=qA;return}function n(){I.calledRun=!0,!k&&(sA(),i(I),I.onRuntimeInitialized?.(),cA())}I.setStatus?(I.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>I.setStatus(""),1),n()},1)):n()}if(I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return qA(),e=C,e}})();async function Jp(){const A=await Up(),g={memory_allocate:A._memory_allocate,memory_free:A._memory_free,memory_size:()=>A.HEAP32.length/4,u8_array:(e,I)=>A.HEAPU8.subarray(e,e+I),f32_array:(e,I)=>A.HEAPF32.subarray(e/4,e/4+I),i32_array:(e,I)=>A.HEAP32.subarray(e/4,e/4+I)};for(let e in A)e.startsWith("_")&&(g[e.substring(1)]=A[e]);return g}let bp=Jp();function xp(A,g,e,I){const t=A.memory_allocate(128),C=t,o=t+64;function s(B,Q){const a=new TextEncoder().encode(Q);if(a.length+1>64)throw new Error("invalid parameter "+Q);const r=A.u8_array(B,64);r.fill(0),r.set(a),r[r.length-1]=0}for(const B in I){let Q=B.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase();s(C,Q);const a=I[B];if(typeof a=="number"){if(e.number(g,C,a)!=0)throw new Error("invalid parameter "+B)}else if(typeof a=="string"){if(s(o,a),e.string(g,C,o)!=0)throw new Error("invalid parameter "+B)}else throw new Error("invalid parameter "+B)}A.memory_free(C)}async function Tp(A,g,e,I,i={}){const t=await bp,C=t.memory_allocate(A*g*4),o=t.memory_allocate(A*e*4),s=t.umap_options_create();xp(t,s,{number:t.umap_options_number,string:t.umap_options_string},i),t.f32_array(C,A*g).set(I,0);let B=t.umap_context_create_f32(A,g,e,C,o,s);t.umap_options_destroy(s);function Q(){if(B==null)throw new Error("use after destroy")}return{get epoch(){return Q(),t.umap_context_epoch(B)},get nEpochs(){return Q(),t.umap_context_n_epochs(B)},get count(){return A},get outputDim(){return e},get inputDim(){return g},get embedding(){return Q(),t.f32_array(o,A*e)},run(a){Q(),t.umap_context_run(B,a??0)},destroy(){B!=null&&(t.umap_context_destroy(B),t.memory_free(C),t.memory_free(o),B=null)}}}const eC=new Map,pi=[],Yp=(A,g,e)=>{if(g&&typeof g.init=="function"&&typeof g.createInferenceSessionHandler=="function"){const I=eC.get(A);if(I===void 0)eC.set(A,{backend:g,priority:e});else{if(I.priority>e)return;if(I.priority===e&&I.backend!==g)throw new Error(`cannot register backend "${A}" using priority ${e}`)}if(e>=0){const i=pi.indexOf(A);i!==-1&&pi.splice(i,1);for(let t=0;t{const g=eC.get(A);if(!g)return"backend not found.";if(g.initialized)return g.backend;if(g.aborted)return g.error;{const e=!!g.initPromise;try{return e||(g.initPromise=g.backend.init(A)),await g.initPromise,g.initialized=!0,g.backend}catch(I){return e||(g.error=`${I}`,g.aborted=!0),g.error}finally{delete g.initPromise}}},Pp=async A=>{const g=A.executionProviders||[],e=g.map(s=>typeof s=="string"?s:s.name),I=e.length===0?pi:e;let i;const t=[],C=new Set;for(const s of I){const B=await Hp(s);typeof B=="string"?t.push({name:s,err:B}):(i||(i=B),i===B&&C.add(s))}if(!i)throw new Error(`no available backend found. ERR: ${t.map(s=>`[${s.name}] ${s.err}`).join(", ")}`);for(const{name:s,err:B}of t)e.includes(s)&&console.warn(`removing requested execution provider "${s}" from session options because it is not available: ${B}`);const o=g.filter(s=>C.has(typeof s=="string"?s:s.name));return[i,new Proxy(A,{get:(s,B)=>B==="executionProviders"?o:Reflect.get(s,B)})]},vp="1.21.0";let ll="warning";const KI={wasm:{},webgl:{},webgpu:{},versions:{common:vp},set logLevel(A){if(A!==void 0){if(typeof A!="string"||["verbose","info","warning","error","fatal"].indexOf(A)===-1)throw new Error(`Unsupported logging level: ${A}`);ll=A}},get logLevel(){return ll}};Object.defineProperty(KI,"logLevel",{enumerable:!0});const qp=KI,Op=(A,g)=>{const e=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);e.width=A.dims[3],e.height=A.dims[2];const I=e.getContext("2d");if(I!=null){let i,t;g?.tensorLayout!==void 0&&g.tensorLayout==="NHWC"?(i=A.dims[2],t=A.dims[3]):(i=A.dims[3],t=A.dims[2]);const C=g?.format!==void 0?g.format:"RGB",o=g?.norm;let s,B;o===void 0||o.mean===void 0?s=[255,255,255,255]:typeof o.mean=="number"?s=[o.mean,o.mean,o.mean,o.mean]:(s=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(s[3]=o.mean[3])),o===void 0||o.bias===void 0?B=[0,0,0,0]:typeof o.bias=="number"?B=[o.bias,o.bias,o.bias,o.bias]:(B=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(B[3]=o.bias[3]));const Q=t*i;let a=0,r=Q,d=Q*2,c=-1;C==="RGBA"?(a=0,r=Q,d=Q*2,c=Q*3):C==="RGB"?(a=0,r=Q,d=Q*2):C==="RBG"&&(a=0,d=Q,r=Q*2);for(let f=0;f{const e=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");let I;if(e!=null){let i,t,C;g?.tensorLayout!==void 0&&g.tensorLayout==="NHWC"?(i=A.dims[2],t=A.dims[1],C=A.dims[3]):(i=A.dims[3],t=A.dims[2],C=A.dims[1]);const o=g!==void 0&&g.format!==void 0?g.format:"RGB",s=g?.norm;let B,Q;s===void 0||s.mean===void 0?B=[255,255,255,255]:typeof s.mean=="number"?B=[s.mean,s.mean,s.mean,s.mean]:(B=[s.mean[0],s.mean[1],s.mean[2],255],s.mean[3]!==void 0&&(B[3]=s.mean[3])),s===void 0||s.bias===void 0?Q=[0,0,0,0]:typeof s.bias=="number"?Q=[s.bias,s.bias,s.bias,s.bias]:(Q=[s.bias[0],s.bias[1],s.bias[2],0],s.bias[3]!==void 0&&(Q[3]=s.bias[3]));const a=t*i;if(g!==void 0&&(g.format!==void 0&&C===4&&g.format!=="RGBA"||C===3&&g.format!=="RGB"&&g.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");const r=4;let d=0,c=1,f=2,k=3,u=0,D=a,G=a*2,h=-1;o==="RGBA"?(u=0,D=a,G=a*2,h=a*3):o==="RGB"?(u=0,D=a,G=a*2):o==="RBG"&&(u=0,G=a,D=a*2),I=e.createImageData(i,t);for(let y=0;y{if(A===void 0)throw new Error("Image buffer must be defined");if(g.height===void 0||g.width===void 0)throw new Error("Image height and width must be defined");if(g.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");const{height:e,width:I}=g,i=g.norm??{mean:255,bias:0};let t,C;typeof i.mean=="number"?t=[i.mean,i.mean,i.mean,i.mean]:t=[i.mean[0],i.mean[1],i.mean[2],i.mean[3]??255],typeof i.bias=="number"?C=[i.bias,i.bias,i.bias,i.bias]:C=[i.bias[0],i.bias[1],i.bias[2],i.bias[3]??0];const o=g.format!==void 0?g.format:"RGBA",s=g.tensorFormat!==void 0&&g.tensorFormat!==void 0?g.tensorFormat:"RGB",B=e*I,Q=s==="RGBA"?new Float32Array(B*4):new Float32Array(B*3);let a=4,r=0,d=1,c=2,f=3,k=0,u=B,D=B*2,G=-1;o==="RGB"&&(a=3,r=0,d=1,c=2,f=-1),s==="RGBA"?G=B*3:s==="RBG"?(k=0,D=B,u=B*2):s==="BGR"&&(D=0,u=B,k=B*2);for(let y=0;y{const e=typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement,I=typeof ImageData<"u"&&A instanceof ImageData,i=typeof ImageBitmap<"u"&&A instanceof ImageBitmap,t=typeof A=="string";let C,o=g??{};const s=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},B=Q=>typeof HTMLCanvasElement<"u"&&Q instanceof HTMLCanvasElement||Q instanceof OffscreenCanvas?Q.getContext("2d"):null;if(e){const Q=s();Q.width=A.width,Q.height=A.height;const a=B(Q);if(a!=null){let r=A.height,d=A.width;if(g!==void 0&&g.resizedHeight!==void 0&&g.resizedWidth!==void 0&&(r=g.resizedHeight,d=g.resizedWidth),g!==void 0){if(o=g,g.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=r,o.width=d}else o.tensorFormat="RGBA",o.height=r,o.width=d;a.drawImage(A,0,0),C=a.getImageData(0,0,d,r).data}else throw new Error("Can not access image data")}else if(I){let Q,a;if(g!==void 0&&g.resizedWidth!==void 0&&g.resizedHeight!==void 0?(Q=g.resizedHeight,a=g.resizedWidth):(Q=A.height,a=A.width),g!==void 0&&(o=g),o.format="RGBA",o.height=Q,o.width=a,g!==void 0){const r=s();r.width=a,r.height=Q;const d=B(r);if(d!=null)d.putImageData(A,0,0),C=d.getImageData(0,0,a,Q).data;else throw new Error("Can not access image data")}else C=A.data}else if(i){if(g===void 0)throw new Error("Please provide image config with format for Imagebitmap");const Q=s();Q.width=A.width,Q.height=A.height;const a=B(Q);if(a!=null){const r=A.height,d=A.width;return a.drawImage(A,0,0,d,r),C=a.getImageData(0,0,d,r).data,o.height=r,o.width=d,Gs(C,o)}else throw new Error("Can not access image data")}else{if(t)return new Promise((Q,a)=>{const r=s(),d=B(r);if(!A||!d)return a();const c=new Image;c.crossOrigin="Anonymous",c.src=A,c.onload=()=>{r.width=c.width,r.height=c.height,d.drawImage(c,0,0,r.width,r.height);const f=d.getImageData(0,0,r.width,r.height);o.height=r.height,o.width=r.width,Q(Gs(f.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(C!==void 0)return Gs(C,o);throw new Error("Input data provided is not supported - aborted tensor creation")},Vp=(A,g)=>{const{width:e,height:I,download:i,dispose:t}=g,C=[1,I,e,4];return new DI({location:"texture",type:"float32",texture:A,dims:C,download:i,dispose:t})},zp=(A,g)=>{const{dataType:e,dims:I,download:i,dispose:t}=g;return new DI({location:"gpu-buffer",type:e??"float32",gpuBuffer:A,dims:I,download:i,dispose:t})},$p=(A,g)=>{const{dataType:e,dims:I,download:i,dispose:t}=g;return new DI({location:"ml-tensor",type:e??"float32",mlTensor:A,dims:I,download:i,dispose:t})},Xp=(A,g,e)=>new DI({location:"cpu-pinned",type:A,data:g,dims:e??[g.length]}),At=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),gC=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]);let cl=!1;const Zp=()=>{if(!cl){cl=!0;const A=typeof BigInt64Array<"u"&&BigInt64Array.from,g=typeof BigUint64Array<"u"&&BigUint64Array.from,e=globalThis.Float16Array,I=typeof e<"u"&&e.from;A&&(At.set("int64",BigInt64Array),gC.set(BigInt64Array,"int64")),g&&(At.set("uint64",BigUint64Array),gC.set(BigUint64Array,"uint64")),I?(At.set("float16",e),gC.set(e,"float16")):At.set("float16",Uint16Array)}},Ay=A=>{let g=1;for(let e=0;e{switch(A.location){case"cpu":return new DI(A.type,A.data,g);case"cpu-pinned":return new DI({location:"cpu-pinned",data:A.data,type:A.type,dims:g});case"texture":return new DI({location:"texture",texture:A.texture,type:A.type,dims:g});case"gpu-buffer":return new DI({location:"gpu-buffer",gpuBuffer:A.gpuBuffer,type:A.type,dims:g});case"ml-tensor":return new DI({location:"ml-tensor",mlTensor:A.mlTensor,type:A.type,dims:g});default:throw new Error(`tensorReshape: tensor location ${A.location} is not supported`)}};let DI=class{constructor(g,e,I){Zp();let i,t;if(typeof g=="object"&&"location"in g)switch(this.dataLocation=g.location,i=g.type,t=g.dims,g.location){case"cpu-pinned":{const o=At.get(i);if(!o)throw new TypeError(`unsupported type "${i}" to create tensor from pinned buffer`);if(!(g.data instanceof o))throw new TypeError(`buffer should be of type ${o.name}`);this.cpuData=g.data;break}case"texture":{if(i!=="float32")throw new TypeError(`unsupported type "${i}" to create tensor from texture`);this.gpuTextureData=g.texture,this.downloader=g.download,this.disposer=g.dispose;break}case"gpu-buffer":{if(i!=="float32"&&i!=="float16"&&i!=="int32"&&i!=="int64"&&i!=="uint32"&&i!=="uint8"&&i!=="bool"&&i!=="uint4"&&i!=="int4")throw new TypeError(`unsupported type "${i}" to create tensor from gpu buffer`);this.gpuBufferData=g.gpuBuffer,this.downloader=g.download,this.disposer=g.dispose;break}case"ml-tensor":{if(i!=="float32"&&i!=="float16"&&i!=="int32"&&i!=="int64"&&i!=="uint32"&&i!=="uint64"&&i!=="int8"&&i!=="uint8"&&i!=="bool"&&i!=="uint4"&&i!=="int4")throw new TypeError(`unsupported type "${i}" to create tensor from MLTensor`);this.mlTensorData=g.mlTensor,this.downloader=g.download,this.disposer=g.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let o,s;if(typeof g=="string")if(i=g,s=I,g==="string"){if(!Array.isArray(e))throw new TypeError("A string tensor's data must be a string array.");o=e}else{const B=At.get(g);if(B===void 0)throw new TypeError(`Unsupported tensor type: ${g}.`);if(Array.isArray(e)){if(g==="float16"&&B===Uint16Array||g==="uint4"||g==="int4")throw new TypeError(`Creating a ${g} tensor from number array is not supported. Please use ${B.name} as data.`);g==="uint64"||g==="int64"?o=B.from(e,BigInt):o=B.from(e)}else if(e instanceof B)o=e;else if(e instanceof Uint8ClampedArray)if(g==="uint8")o=Uint8Array.from(e);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(g==="float16"&&e instanceof Uint16Array&&B!==Uint16Array)o=new globalThis.Float16Array(e.buffer,e.byteOffset,e.length);else throw new TypeError(`A ${i} tensor's data must be type of ${B}`)}else if(s=e,Array.isArray(g)){if(g.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");const B=typeof g[0];if(B==="string")i="string",o=g;else if(B==="boolean")i="bool",o=Uint8Array.from(g);else throw new TypeError(`Invalid element type of data array: ${B}.`)}else if(g instanceof Uint8ClampedArray)i="uint8",o=Uint8Array.from(g);else{const B=gC.get(g.constructor);if(B===void 0)throw new TypeError(`Unsupported type for tensor data: ${g.constructor}.`);i=B,o=g}if(s===void 0)s=[o.length];else if(!Array.isArray(s))throw new TypeError("A tensor's dims must be a number array");t=s,this.cpuData=o,this.dataLocation="cpu"}const C=Ay(t);if(this.cpuData&&C!==this.cpuData.length&&!((i==="uint4"||i==="int4")&&Math.ceil(C/2)===this.cpuData.length))throw new Error(`Tensor's size(${C}) does not match data length(${this.cpuData.length}).`);this.type=i,this.dims=t,this.size=C}static async fromImage(g,e){return jp(g,e)}static fromTexture(g,e){return Vp(g,e)}static fromGpuBuffer(g,e){return zp(g,e)}static fromMLTensor(g,e){return $p(g,e)}static fromPinnedBuffer(g,e,I){return Xp(g,e,I)}toDataURL(g){return Op(this,g)}toImageData(g){return Wp(this,g)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(g){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;const e=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=e,g&&this.disposer&&(this.disposer(),this.disposer=void 0),e}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(g){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return ey(this,g)}};const Xi=DI,Zh=(A,g)=>{(typeof KI.trace>"u"?!KI.wasm.trace:!KI.trace)||console.timeStamp(`${A}::ORT::${g}`)},Au=(A,g)=>{const e=new Error().stack?.split(/\r\n|\r|\n/g)||[];let I=!1;for(let i=0;i{(typeof KI.trace>"u"?!KI.wasm.trace:!KI.trace)||Au("BEGIN",A)},LB=A=>{(typeof KI.trace>"u"?!KI.wasm.trace:!KI.trace)||Au("END",A)};let gy=class eu{constructor(g){this.handler=g}async run(g,e,I){kB();const i={};let t={};if(typeof g!="object"||g===null||g instanceof Xi||Array.isArray(g))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let C=!0;if(typeof e=="object"){if(e===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(e instanceof Xi)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(e)){if(e.length===0)throw new TypeError("'fetches' cannot be an empty array.");C=!1;for(const B of e){if(typeof B!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(B)===-1)throw new RangeError(`'fetches' contains invalid output name: ${B}.`);i[B]=null}if(typeof I=="object"&&I!==null)t=I;else if(typeof I<"u")throw new TypeError("'options' must be an object.")}else{let B=!1;const Q=Object.getOwnPropertyNames(e);for(const a of this.outputNames)if(Q.indexOf(a)!==-1){const r=e[a];(r===null||r instanceof Xi)&&(B=!0,C=!1,i[a]=r)}if(B){if(typeof I=="object"&&I!==null)t=I;else if(typeof I<"u")throw new TypeError("'options' must be an object.")}else t=e}}else if(typeof e<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(const B of this.inputNames)if(typeof g[B]>"u")throw new Error(`input '${B}' is missing in 'feeds'.`);if(C)for(const B of this.outputNames)i[B]=null;const o=await this.handler.run(g,i,t),s={};for(const B in o)if(Object.hasOwnProperty.call(o,B)){const Q=o[B];Q instanceof Xi?s[B]=Q:s[B]=new Xi(Q.type,Q.data,Q.dims)}return LB(),s}async release(){return this.handler.dispose()}static async create(g,e,I,i){kB();let t,C={};if(typeof g=="string"){if(t=g,typeof e=="object"&&e!==null)C=e;else if(typeof e<"u")throw new TypeError("'options' must be an object.")}else if(g instanceof Uint8Array){if(t=g,typeof e=="object"&&e!==null)C=e;else if(typeof e<"u")throw new TypeError("'options' must be an object.")}else if(g instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&g instanceof SharedArrayBuffer){const Q=g;let a=0,r=g.byteLength;if(typeof e=="object"&&e!==null)C=e;else if(typeof e=="number"){if(a=e,!Number.isSafeInteger(a))throw new RangeError("'byteOffset' must be an integer.");if(a<0||a>=Q.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${Q.byteLength}).`);if(r=g.byteLength-a,typeof I=="number"){if(r=I,!Number.isSafeInteger(r))throw new RangeError("'byteLength' must be an integer.");if(r<=0||a+r>Q.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${Q.byteLength-a}].`);if(typeof i=="object"&&i!==null)C=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else if(typeof I<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof e<"u")throw new TypeError("'options' must be an object.");t=new Uint8Array(Q,a,r)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");const[o,s]=await Pp(C),B=await o.createInferenceSessionHandler(t,s);return LB(),new eu(B)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}};const Iy=gy;var iy=Object.freeze({__proto__:null,InferenceSession:Iy,TRACE:Zh,TRACE_FUNC_BEGIN:kB,TRACE_FUNC_END:LB,Tensor:Xi,env:qp,registerBackend:Yp});/*! * ONNX Runtime Web v1.22.0-dev.20250409-89f8206ba4 * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */var $B=Object.defineProperty,ty=Object.getOwnPropertyDescriptor,oy=Object.getOwnPropertyNames,Cy=Object.prototype.hasOwnProperty,sy=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(g,e)=>(typeof require<"u"?require:g)[e]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),VA=(A,g)=>()=>(A&&(g=A(A=0)),g),it=(A,g)=>{for(var e in g)$B(A,e,{get:g[e],enumerable:!0})},By=(A,g,e,I)=>{if(g&&typeof g=="object"||typeof g=="function")for(let i of oy(g))!Cy.call(A,i)&&i!==e&&$B(A,i,{get:()=>g[i],enumerable:!(I=ty(g,i))||I.enumerable});return A},Ot=A=>By($B({},"__esModule",{value:!0}),A),_t,Ai,mi,dl,gu,Iu=VA(()=>{_t=new Map,Ai=[],mi=(A,g,e)=>{if(g&&typeof g.init=="function"&&typeof g.createInferenceSessionHandler=="function"){let I=_t.get(A);if(I===void 0)_t.set(A,{backend:g,priority:e});else{if(I.priority>e)return;if(I.priority===e&&I.backend!==g)throw new Error(`cannot register backend "${A}" using priority ${e}`)}if(e>=0){let i=Ai.indexOf(A);i!==-1&&Ai.splice(i,1);for(let t=0;t{let g=_t.get(A);if(!g)return"backend not found.";if(g.initialized)return g.backend;if(g.aborted)return g.error;{let e=!!g.initPromise;try{return e||(g.initPromise=g.backend.init(A)),await g.initPromise,g.initialized=!0,g.backend}catch(I){return e||(g.error=`${I}`,g.aborted=!0),g.error}finally{delete g.initPromise}}},gu=async A=>{let g=A.executionProviders||[],e=g.map(s=>typeof s=="string"?s:s.name),I=e.length===0?Ai:e,i,t=[],C=new Set;for(let s of I){let B=await dl(s);typeof B=="string"?t.push({name:s,err:B}):(i||(i=B),i===B&&C.add(s))}if(!i)throw new Error(`no available backend found. ERR: ${t.map(s=>`[${s.name}] ${s.err}`).join(", ")}`);for(let{name:s,err:B}of t)e.includes(s)&&console.warn(`removing requested execution provider "${s}" from session options because it is not available: ${B}`);let o=g.filter(s=>C.has(typeof s=="string"?s:s.name));return[i,new Proxy(A,{get:(s,B)=>B==="executionProviders"?o:Reflect.get(s,B)})]}}),ry=VA(()=>{Iu()}),iu,ay=VA(()=>{iu="1.22.0-dev.20250409-89f8206ba4"}),ks,uI,tu=VA(()=>{ay(),ks="warning",uI={wasm:{},webgl:{},webgpu:{},versions:{common:iu},set logLevel(A){if(A!==void 0){if(typeof A!="string"||["verbose","info","warning","error","fatal"].indexOf(A)===-1)throw new Error(`Unsupported logging level: ${A}`);ks=A}},get logLevel(){return ks}},Object.defineProperty(uI,"logLevel",{enumerable:!0})}),rg,Qy=VA(()=>{tu(),rg=uI}),ou,Cu,Ey=VA(()=>{ou=(A,g)=>{let e=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);e.width=A.dims[3],e.height=A.dims[2];let I=e.getContext("2d");if(I!=null){let i,t;g?.tensorLayout!==void 0&&g.tensorLayout==="NHWC"?(i=A.dims[2],t=A.dims[3]):(i=A.dims[3],t=A.dims[2]);let C=g?.format!==void 0?g.format:"RGB",o=g?.norm,s,B;o===void 0||o.mean===void 0?s=[255,255,255,255]:typeof o.mean=="number"?s=[o.mean,o.mean,o.mean,o.mean]:(s=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(s[3]=o.mean[3])),o===void 0||o.bias===void 0?B=[0,0,0,0]:typeof o.bias=="number"?B=[o.bias,o.bias,o.bias,o.bias]:(B=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(B[3]=o.bias[3]));let Q=t*i,a=0,r=Q,d=Q*2,c=-1;C==="RGBA"?(a=0,r=Q,d=Q*2,c=Q*3):C==="RGB"?(a=0,r=Q,d=Q*2):C==="RBG"&&(a=0,d=Q,r=Q*2);for(let f=0;f{let e=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),I;if(e!=null){let i,t,C;g?.tensorLayout!==void 0&&g.tensorLayout==="NHWC"?(i=A.dims[2],t=A.dims[1],C=A.dims[3]):(i=A.dims[3],t=A.dims[2],C=A.dims[1]);let o=g!==void 0&&g.format!==void 0?g.format:"RGB",s=g?.norm,B,Q;s===void 0||s.mean===void 0?B=[255,255,255,255]:typeof s.mean=="number"?B=[s.mean,s.mean,s.mean,s.mean]:(B=[s.mean[0],s.mean[1],s.mean[2],255],s.mean[3]!==void 0&&(B[3]=s.mean[3])),s===void 0||s.bias===void 0?Q=[0,0,0,0]:typeof s.bias=="number"?Q=[s.bias,s.bias,s.bias,s.bias]:(Q=[s.bias[0],s.bias[1],s.bias[2],0],s.bias[3]!==void 0&&(Q[3]=s.bias[3]));let a=t*i;if(g!==void 0&&(g.format!==void 0&&C===4&&g.format!=="RGBA"||C===3&&g.format!=="RGB"&&g.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let r=4,d=0,c=1,f=2,k=3,u=0,D=a,G=a*2,h=-1;o==="RGBA"?(u=0,D=a,G=a*2,h=a*3):o==="RGB"?(u=0,D=a,G=a*2):o==="RBG"&&(u=0,G=a,D=a*2),I=e.createImageData(i,t);for(let y=0;y{XB(),Yo=(A,g)=>{if(A===void 0)throw new Error("Image buffer must be defined");if(g.height===void 0||g.width===void 0)throw new Error("Image height and width must be defined");if(g.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:e,width:I}=g,i=g.norm??{mean:255,bias:0},t,C;typeof i.mean=="number"?t=[i.mean,i.mean,i.mean,i.mean]:t=[i.mean[0],i.mean[1],i.mean[2],i.mean[3]??255],typeof i.bias=="number"?C=[i.bias,i.bias,i.bias,i.bias]:C=[i.bias[0],i.bias[1],i.bias[2],i.bias[3]??0];let o=g.format!==void 0?g.format:"RGBA",s=g.tensorFormat!==void 0&&g.tensorFormat!==void 0?g.tensorFormat:"RGB",B=e*I,Q=s==="RGBA"?new Float32Array(B*4):new Float32Array(B*3),a=4,r=0,d=1,c=2,f=3,k=0,u=B,D=B*2,G=-1;o==="RGB"&&(a=3,r=0,d=1,c=2,f=-1),s==="RGBA"?G=B*3:s==="RBG"?(k=0,D=B,u=B*2):s==="BGR"&&(D=0,u=B,k=B*2);for(let h=0;h{let e=typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement,I=typeof ImageData<"u"&&A instanceof ImageData,i=typeof ImageBitmap<"u"&&A instanceof ImageBitmap,t=typeof A=="string",C,o=g??{},s=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},B=Q=>typeof HTMLCanvasElement<"u"&&Q instanceof HTMLCanvasElement||Q instanceof OffscreenCanvas?Q.getContext("2d"):null;if(e){let Q=s();Q.width=A.width,Q.height=A.height;let a=B(Q);if(a!=null){let r=A.height,d=A.width;if(g!==void 0&&g.resizedHeight!==void 0&&g.resizedWidth!==void 0&&(r=g.resizedHeight,d=g.resizedWidth),g!==void 0){if(o=g,g.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=r,o.width=d}else o.tensorFormat="RGBA",o.height=r,o.width=d;a.drawImage(A,0,0),C=a.getImageData(0,0,d,r).data}else throw new Error("Can not access image data")}else if(I){let Q,a;if(g!==void 0&&g.resizedWidth!==void 0&&g.resizedHeight!==void 0?(Q=g.resizedHeight,a=g.resizedWidth):(Q=A.height,a=A.width),g!==void 0&&(o=g),o.format="RGBA",o.height=Q,o.width=a,g!==void 0){let r=s();r.width=a,r.height=Q;let d=B(r);if(d!=null)d.putImageData(A,0,0),C=d.getImageData(0,0,a,Q).data;else throw new Error("Can not access image data")}else C=A.data}else if(i){if(g===void 0)throw new Error("Please provide image config with format for Imagebitmap");let Q=s();Q.width=A.width,Q.height=A.height;let a=B(Q);if(a!=null){let r=A.height,d=A.width;return a.drawImage(A,0,0,d,r),C=a.getImageData(0,0,d,r).data,o.height=r,o.width=d,Yo(C,o)}else throw new Error("Can not access image data")}else{if(t)return new Promise((Q,a)=>{let r=s(),d=B(r);if(!A||!d)return a();let c=new Image;c.crossOrigin="Anonymous",c.src=A,c.onload=()=>{r.width=c.width,r.height=c.height,d.drawImage(c,0,0,r.width,r.height);let f=d.getImageData(0,0,r.width,r.height);o.height=r.height,o.width=r.width,Q(Yo(f.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(C!==void 0)return Yo(C,o);throw new Error("Input data provided is not supported - aborted tensor creation")},Bu=(A,g)=>{let{width:e,height:I,download:i,dispose:t}=g,C=[1,I,e,4];return new aI({location:"texture",type:"float32",texture:A,dims:C,download:i,dispose:t})},ru=(A,g)=>{let{dataType:e,dims:I,download:i,dispose:t}=g;return new aI({location:"gpu-buffer",type:e??"float32",gpuBuffer:A,dims:I,download:i,dispose:t})},au=(A,g)=>{let{dataType:e,dims:I,download:i,dispose:t}=g;return new aI({location:"ml-tensor",type:e??"float32",mlTensor:A,dims:I,download:i,dispose:t})},Qu=(A,g,e)=>new aI({location:"cpu-pinned",type:A,data:g,dims:e??[g.length]})}),yi,Yt,Ls,Eu,ly=VA(()=>{yi=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),Yt=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),Ls=!1,Eu=()=>{if(!Ls){Ls=!0;let A=typeof BigInt64Array<"u"&&BigInt64Array.from,g=typeof BigUint64Array<"u"&&BigUint64Array.from,e=globalThis.Float16Array,I=typeof e<"u"&&e.from;A&&(yi.set("int64",BigInt64Array),Yt.set(BigInt64Array,"int64")),g&&(yi.set("uint64",BigUint64Array),Yt.set(BigUint64Array,"uint64")),I?(yi.set("float16",e),Yt.set(e,"float16")):yi.set("float16",Uint16Array)}}}),nu,lu,cy=VA(()=>{XB(),nu=A=>{let g=1;for(let e=0;e{switch(A.location){case"cpu":return new aI(A.type,A.data,g);case"cpu-pinned":return new aI({location:"cpu-pinned",data:A.data,type:A.type,dims:g});case"texture":return new aI({location:"texture",texture:A.texture,type:A.type,dims:g});case"gpu-buffer":return new aI({location:"gpu-buffer",gpuBuffer:A.gpuBuffer,type:A.type,dims:g});case"ml-tensor":return new aI({location:"ml-tensor",mlTensor:A.mlTensor,type:A.type,dims:g});default:throw new Error(`tensorReshape: tensor location ${A.location} is not supported`)}}}),aI,XB=VA(()=>{Ey(),ny(),ly(),cy(),aI=class{constructor(A,g,e){Eu();let I,i;if(typeof A=="object"&&"location"in A)switch(this.dataLocation=A.location,I=A.type,i=A.dims,A.location){case"cpu-pinned":{let C=yi.get(I);if(!C)throw new TypeError(`unsupported type "${I}" to create tensor from pinned buffer`);if(!(A.data instanceof C))throw new TypeError(`buffer should be of type ${C.name}`);this.cpuData=A.data;break}case"texture":{if(I!=="float32")throw new TypeError(`unsupported type "${I}" to create tensor from texture`);this.gpuTextureData=A.texture,this.downloader=A.download,this.disposer=A.dispose;break}case"gpu-buffer":{if(I!=="float32"&&I!=="float16"&&I!=="int32"&&I!=="int64"&&I!=="uint32"&&I!=="uint8"&&I!=="bool"&&I!=="uint4"&&I!=="int4")throw new TypeError(`unsupported type "${I}" to create tensor from gpu buffer`);this.gpuBufferData=A.gpuBuffer,this.downloader=A.download,this.disposer=A.dispose;break}case"ml-tensor":{if(I!=="float32"&&I!=="float16"&&I!=="int32"&&I!=="int64"&&I!=="uint32"&&I!=="uint64"&&I!=="int8"&&I!=="uint8"&&I!=="bool"&&I!=="uint4"&&I!=="int4")throw new TypeError(`unsupported type "${I}" to create tensor from MLTensor`);this.mlTensorData=A.mlTensor,this.downloader=A.download,this.disposer=A.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let C,o;if(typeof A=="string")if(I=A,o=e,A==="string"){if(!Array.isArray(g))throw new TypeError("A string tensor's data must be a string array.");C=g}else{let s=yi.get(A);if(s===void 0)throw new TypeError(`Unsupported tensor type: ${A}.`);if(Array.isArray(g)){if(A==="float16"&&s===Uint16Array||A==="uint4"||A==="int4")throw new TypeError(`Creating a ${A} tensor from number array is not supported. Please use ${s.name} as data.`);A==="uint64"||A==="int64"?C=s.from(g,BigInt):C=s.from(g)}else if(g instanceof s)C=g;else if(g instanceof Uint8ClampedArray)if(A==="uint8")C=Uint8Array.from(g);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(A==="float16"&&g instanceof Uint16Array&&s!==Uint16Array)C=new globalThis.Float16Array(g.buffer,g.byteOffset,g.length);else throw new TypeError(`A ${I} tensor's data must be type of ${s}`)}else if(o=g,Array.isArray(A)){if(A.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let s=typeof A[0];if(s==="string")I="string",C=A;else if(s==="boolean")I="bool",C=Uint8Array.from(A);else throw new TypeError(`Invalid element type of data array: ${s}.`)}else if(A instanceof Uint8ClampedArray)I="uint8",C=Uint8Array.from(A);else{let s=Yt.get(A.constructor);if(s===void 0)throw new TypeError(`Unsupported type for tensor data: ${A.constructor}.`);I=s,C=A}if(o===void 0)o=[C.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");i=o,this.cpuData=C,this.dataLocation="cpu"}let t=nu(i);if(this.cpuData&&t!==this.cpuData.length&&!((I==="uint4"||I==="int4")&&Math.ceil(t/2)===this.cpuData.length))throw new Error(`Tensor's size(${t}) does not match data length(${this.cpuData.length}).`);this.type=I,this.dims=i,this.size=t}static async fromImage(A,g){return su(A,g)}static fromTexture(A,g){return Bu(A,g)}static fromGpuBuffer(A,g){return ru(A,g)}static fromMLTensor(A,g){return au(A,g)}static fromPinnedBuffer(A,g,e){return Qu(A,g,e)}toDataURL(A){return ou(this,A)}toImageData(A){return Cu(this,A)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(A){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let g=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=g,A&&this.disposer&&(this.disposer(),this.disposer=void 0),g}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(A){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return lu(this,A)}}}),LI,cu=VA(()=>{XB(),LI=aI}),Wt,Ks,UI,wI,du=VA(()=>{tu(),Wt=(A,g)=>{(typeof uI.trace>"u"?!uI.wasm.trace:!uI.trace)||console.timeStamp(`${A}::ORT::${g}`)},Ks=(A,g)=>{let e=new Error().stack?.split(/\r\n|\r|\n/g)||[],I=!1;for(let i=0;i{(typeof uI.trace>"u"?!uI.wasm.trace:!uI.trace)||Ks("BEGIN",A)},wI=A=>{(typeof uI.trace>"u"?!uI.wasm.trace:!uI.trace)||Ks("END",A)}}),hu,dy=VA(()=>{Iu(),cu(),du(),hu=class uu{constructor(g){this.handler=g}async run(g,e,I){UI();let i={},t={};if(typeof g!="object"||g===null||g instanceof LI||Array.isArray(g))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let C=!0;if(typeof e=="object"){if(e===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(e instanceof LI)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(e)){if(e.length===0)throw new TypeError("'fetches' cannot be an empty array.");C=!1;for(let B of e){if(typeof B!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(B)===-1)throw new RangeError(`'fetches' contains invalid output name: ${B}.`);i[B]=null}if(typeof I=="object"&&I!==null)t=I;else if(typeof I<"u")throw new TypeError("'options' must be an object.")}else{let B=!1,Q=Object.getOwnPropertyNames(e);for(let a of this.outputNames)if(Q.indexOf(a)!==-1){let r=e[a];(r===null||r instanceof LI)&&(B=!0,C=!1,i[a]=r)}if(B){if(typeof I=="object"&&I!==null)t=I;else if(typeof I<"u")throw new TypeError("'options' must be an object.")}else t=e}}else if(typeof e<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let B of this.inputNames)if(typeof g[B]>"u")throw new Error(`input '${B}' is missing in 'feeds'.`);if(C)for(let B of this.outputNames)i[B]=null;let o=await this.handler.run(g,i,t),s={};for(let B in o)if(Object.hasOwnProperty.call(o,B)){let Q=o[B];Q instanceof LI?s[B]=Q:s[B]=new LI(Q.type,Q.data,Q.dims)}return wI(),s}async release(){return this.handler.dispose()}static async create(g,e,I,i){UI();let t,C={};if(typeof g=="string"){if(t=g,typeof e=="object"&&e!==null)C=e;else if(typeof e<"u")throw new TypeError("'options' must be an object.")}else if(g instanceof Uint8Array){if(t=g,typeof e=="object"&&e!==null)C=e;else if(typeof e<"u")throw new TypeError("'options' must be an object.")}else if(g instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&g instanceof SharedArrayBuffer){let Q=g,a=0,r=g.byteLength;if(typeof e=="object"&&e!==null)C=e;else if(typeof e=="number"){if(a=e,!Number.isSafeInteger(a))throw new RangeError("'byteOffset' must be an integer.");if(a<0||a>=Q.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${Q.byteLength}).`);if(r=g.byteLength-a,typeof I=="number"){if(r=I,!Number.isSafeInteger(r))throw new RangeError("'byteLength' must be an integer.");if(r<=0||a+r>Q.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${Q.byteLength-a}].`);if(typeof i=="object"&&i!==null)C=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else if(typeof I<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof e<"u")throw new TypeError("'options' must be an object.");t=new Uint8Array(Q,a,r)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[o,s]=await gu(C),B=await o.createInferenceSessionHandler(t,s);return wI(),new uu(B)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),ZB,hy=VA(()=>{dy(),ZB=hu}),uy=VA(()=>{}),Dy=VA(()=>{}),wy=VA(()=>{}),py=VA(()=>{}),Du={};it(Du,{InferenceSession:()=>ZB,TRACE:()=>Wt,TRACE_FUNC_BEGIN:()=>UI,TRACE_FUNC_END:()=>wI,Tensor:()=>LI,env:()=>rg,registerBackend:()=>mi});var JI=VA(()=>{ry(),Qy(),hy(),cu(),uy(),Dy(),du(),wy(),py()}),Ar=VA(()=>{}),wu={};it(wu,{default:()=>pu});var Us,Js,pu,yy=VA(()=>{F0(),Ni(),er(),Us="ort-wasm-proxy-worker",Js=globalThis.self?.name===Us,Js&&(self.onmessage=A=>{let{type:g,in:e}=A.data;try{switch(g){case"init-wasm":gr(e.wasm).then(()=>{Dr(e).then(()=>{postMessage({type:g})},I=>{postMessage({type:g,err:I})})},I=>{postMessage({type:g,err:I})});break;case"init-ep":{let{epName:I,env:i}=e;wr(i,I).then(()=>{postMessage({type:g})},t=>{postMessage({type:g,err:t})});break}case"copy-from":{let{buffer:I}=e,i=aC(I);postMessage({type:g,out:i});break}case"create":{let{model:I,options:i}=e;pr(I,i).then(t=>{postMessage({type:g,out:t})},t=>{postMessage({type:g,err:t})});break}case"release":yr(e),postMessage({type:g});break;case"run":{let{sessionId:I,inputIndices:i,inputs:t,outputIndices:C,options:o}=e;fr(I,i,t,C,new Array(C.length).fill(null),o).then(s=>{s.some(B=>B[3]!=="cpu")?postMessage({type:g,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:g,out:s},Mr([...t,...s]))},s=>{postMessage({type:g,err:s})});break}case"end-profiling":mr(e),postMessage({type:g});break;default:}}catch(I){postMessage({type:g,err:I})}}),pu=Js?null:A=>new Worker(A??rI,{type:"module",name:Us})}),yu={};it(yu,{default:()=>fu});var bs,xs,fu,hl,fy=VA(()=>{xs=(bs=import.meta.url,async function(A={}){var g,e,I=A,i=new Promise((E,S)=>{g=E,e=S}),t=typeof window=="object",C=typeof WorkerGlobalScope<"u",o=C&&self.name?.startsWith("em-pthread");I.mountExternalData=(E,S)=>{E.startsWith("./")&&(E=E.substring(2)),(I.Eb||(I.Eb=new Map)).set(E,S)},I.unmountExternalData=()=>{delete I.Eb};var s=globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,pc:!0}).buffer.constructor;let B=E=>async(...S)=>{try{if(I.Fb)throw Error("Session already started");let L=I.Fb={dc:S[0],errors:[]},Y=await E(...S);if(I.Fb!==L)throw Error("Session mismatch");I.Jb?.flush();let j=L.errors;if(0KA),0{if(E==="webgpu"){[I.Jb,I.Ub,I.Yb,I.Kb,I.Xb,I.jb,I.Zb,I.ac,I.Vb,I.Wb,I.$b]=S;let L=I.Jb;I.jsepRegisterBuffer=(Y,j,lA,KA)=>L.registerBuffer(Y,j,lA,KA),I.jsepGetBuffer=Y=>L.getBuffer(Y),I.jsepCreateDownloader=(Y,j,lA)=>L.createDownloader(Y,j,lA),I.jsepOnCreateSession=Y=>{L.onCreateSession(Y)},I.jsepOnReleaseSession=Y=>{L.onReleaseSession(Y)},I.jsepOnRunStart=Y=>L.onRunStart(Y),I.bc=(Y,j)=>{L.upload(Y,j)}}else if(E==="webnn"){let L=S[0];[I.nc,I.Nb,I.webnnEnsureTensor,I.Ob,I.webnnDownloadTensor]=S.slice(1),I.webnnReleaseTensorId=I.Nb,I.webnnUploadTensor=I.Ob,I.webnnOnRunStart=Y=>L.onRunStart(Y),I.webnnOnRunEnd=L.onRunEnd.bind(L),I.webnnRegisterMLContext=(Y,j)=>{L.registerMLContext(Y,j)},I.webnnOnReleaseSession=Y=>{L.onReleaseSession(Y)},I.webnnCreateMLTensorDownloader=(Y,j)=>L.createMLTensorDownloader(Y,j),I.webnnRegisterMLTensor=(Y,j,lA,KA)=>L.registerMLTensor(Y,j,lA,KA),I.webnnCreateMLContext=Y=>L.createMLContext(Y),I.webnnRegisterMLConstant=(Y,j,lA,KA,OA,te)=>L.registerMLConstant(Y,j,lA,KA,OA,I.Eb,te),I.webnnRegisterGraphInput=L.registerGraphInput.bind(L),I.webnnIsGraphInput=L.isGraphInput.bind(L),I.webnnCreateTemporaryTensor=L.createTemporaryTensor.bind(L),I.webnnIsInt64Supported=L.isInt64Supported.bind(L)}};let Q=()=>{let E=(S,L,Y)=>(...j)=>{let lA=ig,KA=L?.();j=S(...j);let OA=L?.();return KA!==OA&&(S=OA,Y(KA),L=Y=null),ig!=lA?new Promise((te,ne)=>{Fg={resolve:te,reject:ne}}):j};(()=>{for(let S of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])I[S]=E(I[S],()=>I[S],L=>I[S]=L)})(),B!==void 0&&(I._OrtRun=B(I._OrtRun),I._OrtRunWithBinding=B(I._OrtRunWithBinding)),Q=void 0};I.asyncInit=()=>{Q?.()};var a,r,d=Object.assign({},I),c=(E,S)=>{throw S},f="";(t||C)&&(C?f=self.location.href:typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),bs&&(f=bs),f=f.startsWith("blob:")?"":f.slice(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1),C&&(r=E=>{var S=new XMLHttpRequest;return S.open("GET",E,!1),S.responseType="arraybuffer",S.send(null),new Uint8Array(S.response)}),a=async E=>{if(cA(E))return new Promise((L,Y)=>{var j=new XMLHttpRequest;j.open("GET",E,!0),j.responseType="arraybuffer",j.onload=()=>{j.status==200||j.status==0&&j.response?L(j.response):Y(j.status)},j.onerror=Y,j.send(null)});var S=await fetch(E,{credentials:"same-origin"});if(S.ok)return S.arrayBuffer();throw Error(S.status+" : "+S.url)});var k=console.log.bind(console),u=console.error.bind(console),D=k,G=u;Object.assign(I,d),d=null;var h,y,M,m,_,x,b,X,Z,T,CA,eA,tA,BA=I.wasmBinary,sA=!1,cA=E=>E.startsWith("file://");function dA(){return h.buffer!=m.buffer&&LA(),m}function P(){return h.buffer!=m.buffer&&LA(),_}function U(){return h.buffer!=m.buffer&&LA(),x}function z(){return h.buffer!=m.buffer&&LA(),b}function v(){return h.buffer!=m.buffer&&LA(),X}function nA(){return h.buffer!=m.buffer&&LA(),Z}function YA(){return h.buffer!=m.buffer&&LA(),T}function _A(){return h.buffer!=m.buffer&&LA(),tA}if(o){let E=function(S){try{var L=S.data,Y=L.Bb;if(Y==="load"){let j=[];self.onmessage=lA=>j.push(lA),self.startWorker=()=>{postMessage({Bb:"loaded"});for(let lA of j)E(lA);self.onmessage=E};for(let lA of L.Rb)I[lA]&&!I[lA].proxy||(I[lA]=(...KA)=>{postMessage({Bb:"callHandler",Qb:lA,args:KA})},lA=="print"&&(D=I[lA]),lA=="printErr"&&(G=I[lA]));h=L.kc,LA(),PA(L.lc)}else if(Y==="run"){gg(L.Ab),ai(L.Ab,0,0,1,0,0),Og(),$(L.Ab),ie||(si(),ie=!0);try{kg(L.fc,L.Hb)}catch(j){if(j!="unwind")throw j}}else L.target!=="setimmediate"&&(Y==="checkMailbox"?ie&&oA():Y&&(G(`worker: received unknown command ${Y}`),G(L)))}catch(j){throw wt(),j}};var PA,ie=!1;G=function(...S){S=S.join(" "),console.error(S)},self.alert=function(...S){postMessage({Bb:"alert",text:S.join(" "),ic:Bi()})},self.onunhandledrejection=S=>{throw S.reason||S},self.onmessage=E}function LA(){var E=h.buffer;I.HEAP8=m=new Int8Array(E),I.HEAP16=x=new Int16Array(E),I.HEAPU8=_=new Uint8Array(E),I.HEAPU16=b=new Uint16Array(E),I.HEAP32=X=new Int32Array(E),I.HEAPU32=Z=new Uint32Array(E),I.HEAPF32=T=new Float32Array(E),I.HEAPF64=tA=new Float64Array(E),I.HEAP64=CA=new BigInt64Array(E),I.HEAPU64=eA=new BigUint64Array(E)}function AA(){o?startWorker(I):ue.Ca()}o||(h=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),LA());var hA,V=0,fA=null;function bA(){if(--V==0&&fA){var E=fA;fA=null,E()}}function NA(E){throw G(E="Aborted("+E+")"),sA=!0,E=new WebAssembly.RuntimeError(E+". Build with -sASSERTIONS for more info."),e(E),E}function pA(){return{a:{L:xA,Aa:MA,b:xI,$:yI,A:ke,pa:EI,X:O,Z:IA,qa:rA,na:yA,ga:JA,ma:ae,J:Ee,Y:Ie,V:Se,oa:Te,W:wg,va:Wg,E:oI,Q:nI,O:AI,D:ve,u:qA,r:n,P:F,z:Ke,R:aA,ja:R,T:DA,aa:jA,M:XA,F:ZA,ia:$,sa:$A,t:Ye,Ba:Lg,w:mI,o:dI,l:Sg,c:jg,n:$g,j:zt,v:$t,p:Xt,f:Zt,s:Ao,m:jI,e:eo,k:go,i:Io,g:io,d:to,da:VI,ea:oo,fa:Co,ba:Gi,ca:st,N:rt,xa:at,ua:Qt,h:lt,C:ct,G:ki,ta:so,x:Bo,ra:ro,U:ao,q:Bt,y:Qo,K:Eo,S:no,za:lo,ya:Ki,ka:TI,la:dt,_:oe,B:co,I:ht,ha:ho,H:bi,a:h,wa:Be}}}var kA={829644:(E,S,L,Y,j)=>{if(I===void 0||!I.Eb)return 1;if((E=xe(Number(E>>>0))).startsWith("./")&&(E=E.substring(2)),!(E=I.Eb.get(E)))return 2;if(S=Number(S>>>0),L=Number(L>>>0),Y=Number(Y>>>0),S+L>E.byteLength)return 3;try{let lA=E.subarray(S,S+L);switch(j){case 0:P().set(lA,Y>>>0);break;case 1:I.mc?I.mc(Y,lA):I.bc(Y,lA);break;default:return 4}return 0}catch{return 4}},830468:(E,S,L)=>{I.Ob(E,P().subarray(S>>>0,S+L>>>0))},830532:()=>I.nc(),830574:E=>{I.Nb(E)},830611:()=>{I.Vb()},830642:()=>{I.Wb()},830671:()=>{I.$b()},830696:E=>I.Ub(E),830729:E=>I.Yb(E),830761:(E,S,L)=>{I.Kb(Number(E),Number(S),Number(L),!0)},830824:(E,S,L)=>{I.Kb(Number(E),Number(S),Number(L))},830881:()=>typeof wasmOffsetConverter<"u",830938:E=>{I.jb("Abs",E,void 0)},830989:E=>{I.jb("Neg",E,void 0)},831040:E=>{I.jb("Floor",E,void 0)},831093:E=>{I.jb("Ceil",E,void 0)},831145:E=>{I.jb("Reciprocal",E,void 0)},831203:E=>{I.jb("Sqrt",E,void 0)},831255:E=>{I.jb("Exp",E,void 0)},831306:E=>{I.jb("Erf",E,void 0)},831357:E=>{I.jb("Sigmoid",E,void 0)},831412:(E,S,L)=>{I.jb("HardSigmoid",E,{alpha:S,beta:L})},831491:E=>{I.jb("Log",E,void 0)},831542:E=>{I.jb("Sin",E,void 0)},831593:E=>{I.jb("Cos",E,void 0)},831644:E=>{I.jb("Tan",E,void 0)},831695:E=>{I.jb("Asin",E,void 0)},831747:E=>{I.jb("Acos",E,void 0)},831799:E=>{I.jb("Atan",E,void 0)},831851:E=>{I.jb("Sinh",E,void 0)},831903:E=>{I.jb("Cosh",E,void 0)},831955:E=>{I.jb("Asinh",E,void 0)},832008:E=>{I.jb("Acosh",E,void 0)},832061:E=>{I.jb("Atanh",E,void 0)},832114:E=>{I.jb("Tanh",E,void 0)},832166:E=>{I.jb("Not",E,void 0)},832217:(E,S,L)=>{I.jb("Clip",E,{min:S,max:L})},832286:E=>{I.jb("Clip",E,void 0)},832338:(E,S)=>{I.jb("Elu",E,{alpha:S})},832396:E=>{I.jb("Gelu",E,void 0)},832448:E=>{I.jb("Relu",E,void 0)},832500:(E,S)=>{I.jb("LeakyRelu",E,{alpha:S})},832564:(E,S)=>{I.jb("ThresholdedRelu",E,{alpha:S})},832634:(E,S)=>{I.jb("Cast",E,{to:S})},832692:E=>{I.jb("Add",E,void 0)},832743:E=>{I.jb("Sub",E,void 0)},832794:E=>{I.jb("Mul",E,void 0)},832845:E=>{I.jb("Div",E,void 0)},832896:E=>{I.jb("Pow",E,void 0)},832947:E=>{I.jb("Equal",E,void 0)},833e3:E=>{I.jb("Greater",E,void 0)},833055:E=>{I.jb("GreaterOrEqual",E,void 0)},833117:E=>{I.jb("Less",E,void 0)},833169:E=>{I.jb("LessOrEqual",E,void 0)},833228:(E,S,L,Y,j)=>{I.jb("ReduceMean",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},833403:(E,S,L,Y,j)=>{I.jb("ReduceMax",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},833577:(E,S,L,Y,j)=>{I.jb("ReduceMin",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},833751:(E,S,L,Y,j)=>{I.jb("ReduceProd",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},833926:(E,S,L,Y,j)=>{I.jb("ReduceSum",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834100:(E,S,L,Y,j)=>{I.jb("ReduceL1",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834273:(E,S,L,Y,j)=>{I.jb("ReduceL2",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834446:(E,S,L,Y,j)=>{I.jb("ReduceLogSum",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834623:(E,S,L,Y,j)=>{I.jb("ReduceSumSquare",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834803:(E,S,L,Y,j)=>{I.jb("ReduceLogSumExp",E,{keepDims:!!S,noopWithEmptyAxes:!!L,axes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},834983:E=>{I.jb("Where",E,void 0)},835036:(E,S,L)=>{I.jb("Transpose",E,{perm:S?Array.from(v().subarray(Number(S)>>>0,Number(L)>>>0)):[]})},835160:(E,S,L,Y)=>{I.jb("DepthToSpace",E,{blocksize:S,mode:xe(L),format:Y?"NHWC":"NCHW"})},835293:(E,S,L,Y)=>{I.jb("DepthToSpace",E,{blocksize:S,mode:xe(L),format:Y?"NHWC":"NCHW"})},835426:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug,YI)=>{I.jb("ConvTranspose",E,{format:te?"NHWC":"NCHW",autoPad:S,dilations:[L],group:Y,kernelShape:[j],pads:[lA,KA],strides:[OA],wIsConst:()=>!!dA()[ne>>>0],outputPadding:Re?Array.from(v().subarray(Number(Re)>>>0,Number(qe)>>>0)):[],outputShape:Xe?Array.from(v().subarray(Number(Xe)>>>0,Number(Ug)>>>0)):[],activation:xe(YI)})},835859:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("ConvTranspose",E,{format:OA?"NHWC":"NCHW",autoPad:S,dilations:Array.from(v().subarray(Number(L)>>>0,2+(Number(L)>>>0)>>>0)),group:Y,kernelShape:Array.from(v().subarray(Number(j)>>>0,2+(Number(j)>>>0)>>>0)),pads:Array.from(v().subarray(Number(lA)>>>0,4+(Number(lA)>>>0)>>>0)),strides:Array.from(v().subarray(Number(KA)>>>0,2+(Number(KA)>>>0)>>>0)),wIsConst:()=>!!dA()[te>>>0],outputPadding:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],outputShape:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[],activation:xe(Ug)})},836520:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug,YI)=>{I.jb("ConvTranspose",E,{format:te?"NHWC":"NCHW",autoPad:S,dilations:[L],group:Y,kernelShape:[j],pads:[lA,KA],strides:[OA],wIsConst:()=>!!dA()[ne>>>0],outputPadding:Re?Array.from(v().subarray(Number(Re)>>>0,Number(qe)>>>0)):[],outputShape:Xe?Array.from(v().subarray(Number(Xe)>>>0,Number(Ug)>>>0)):[],activation:xe(YI)})},836953:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("ConvTranspose",E,{format:OA?"NHWC":"NCHW",autoPad:S,dilations:Array.from(v().subarray(Number(L)>>>0,2+(Number(L)>>>0)>>>0)),group:Y,kernelShape:Array.from(v().subarray(Number(j)>>>0,2+(Number(j)>>>0)>>>0)),pads:Array.from(v().subarray(Number(lA)>>>0,4+(Number(lA)>>>0)>>>0)),strides:Array.from(v().subarray(Number(KA)>>>0,2+(Number(KA)>>>0)>>>0)),wIsConst:()=>!!dA()[te>>>0],outputPadding:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],outputShape:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[],activation:xe(Ug)})},837614:(E,S)=>{I.jb("GlobalAveragePool",E,{format:S?"NHWC":"NCHW"})},837705:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("AveragePool",E,{format:Ug?"NHWC":"NCHW",auto_pad:S,ceil_mode:L,count_include_pad:Y,storage_order:j,dilations:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[],kernel_shape:OA?Array.from(v().subarray(Number(OA)>>>0,Number(te)>>>0)):[],pads:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],strides:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[]})},838184:(E,S)=>{I.jb("GlobalAveragePool",E,{format:S?"NHWC":"NCHW"})},838275:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("AveragePool",E,{format:Ug?"NHWC":"NCHW",auto_pad:S,ceil_mode:L,count_include_pad:Y,storage_order:j,dilations:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[],kernel_shape:OA?Array.from(v().subarray(Number(OA)>>>0,Number(te)>>>0)):[],pads:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],strides:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[]})},838754:(E,S)=>{I.jb("GlobalMaxPool",E,{format:S?"NHWC":"NCHW"})},838841:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("MaxPool",E,{format:Ug?"NHWC":"NCHW",auto_pad:S,ceil_mode:L,count_include_pad:Y,storage_order:j,dilations:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[],kernel_shape:OA?Array.from(v().subarray(Number(OA)>>>0,Number(te)>>>0)):[],pads:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],strides:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[]})},839316:(E,S)=>{I.jb("GlobalMaxPool",E,{format:S?"NHWC":"NCHW"})},839403:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug)=>{I.jb("MaxPool",E,{format:Ug?"NHWC":"NCHW",auto_pad:S,ceil_mode:L,count_include_pad:Y,storage_order:j,dilations:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[],kernel_shape:OA?Array.from(v().subarray(Number(OA)>>>0,Number(te)>>>0)):[],pads:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],strides:qe?Array.from(v().subarray(Number(qe)>>>0,Number(Xe)>>>0)):[]})},839878:(E,S,L,Y,j)=>{I.jb("Gemm",E,{alpha:S,beta:L,transA:Y,transB:j})},839982:E=>{I.jb("MatMul",E,void 0)},840036:(E,S,L,Y)=>{I.jb("ArgMax",E,{keepDims:!!S,selectLastIndex:!!L,axis:Y})},840144:(E,S,L,Y)=>{I.jb("ArgMin",E,{keepDims:!!S,selectLastIndex:!!L,axis:Y})},840252:(E,S)=>{I.jb("Softmax",E,{axis:S})},840315:(E,S)=>{I.jb("Concat",E,{axis:S})},840375:(E,S,L,Y,j)=>{I.jb("Split",E,{axis:S,numOutputs:L,splitSizes:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},840531:E=>{I.jb("Expand",E,void 0)},840585:(E,S)=>{I.jb("Gather",E,{axis:Number(S)})},840656:(E,S)=>{I.jb("GatherElements",E,{axis:Number(S)})},840735:(E,S)=>{I.jb("GatherND",E,{batch_dims:Number(S)})},840814:(E,S,L,Y,j,lA,KA,OA,te,ne,Re)=>{I.jb("Resize",E,{antialias:S,axes:L?Array.from(v().subarray(Number(L)>>>0,Number(Y)>>>0)):[],coordinateTransformMode:xe(j),cubicCoeffA:lA,excludeOutside:KA,extrapolationValue:OA,keepAspectRatioPolicy:xe(te),mode:xe(ne),nearestMode:xe(Re)})},841176:(E,S,L,Y,j,lA,KA)=>{I.jb("Slice",E,{starts:S?Array.from(v().subarray(Number(S)>>>0,Number(L)>>>0)):[],ends:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[],axes:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[]})},841440:E=>{I.jb("Tile",E,void 0)},841492:(E,S,L)=>{I.jb("InstanceNormalization",E,{epsilon:S,format:L?"NHWC":"NCHW"})},841606:(E,S,L)=>{I.jb("InstanceNormalization",E,{epsilon:S,format:L?"NHWC":"NCHW"})},841720:E=>{I.jb("Range",E,void 0)},841773:(E,S)=>{I.jb("Einsum",E,{equation:xe(S)})},841854:(E,S,L,Y,j)=>{I.jb("Pad",E,{mode:S,value:L,pads:Y?Array.from(v().subarray(Number(Y)>>>0,Number(j)>>>0)):[]})},841997:(E,S,L,Y,j,lA)=>{I.jb("BatchNormalization",E,{epsilon:S,momentum:L,spatial:!!j,trainingMode:!!Y,format:lA?"NHWC":"NCHW"})},842166:(E,S,L,Y,j,lA)=>{I.jb("BatchNormalization",E,{epsilon:S,momentum:L,spatial:!!j,trainingMode:!!Y,format:lA?"NHWC":"NCHW"})},842335:(E,S,L)=>{I.jb("CumSum",E,{exclusive:Number(S),reverse:Number(L)})},842432:(E,S,L)=>{I.jb("DequantizeLinear",E,{axis:S,blockSize:L})},842522:(E,S,L,Y,j)=>{I.jb("GridSample",E,{align_corners:S,mode:xe(L),padding_mode:xe(Y),format:j?"NHWC":"NCHW"})},842692:(E,S,L,Y,j)=>{I.jb("GridSample",E,{align_corners:S,mode:xe(L),padding_mode:xe(Y),format:j?"NHWC":"NCHW"})},842862:(E,S)=>{I.jb("ScatterND",E,{reduction:xe(S)})},842947:(E,S,L,Y,j,lA,KA,OA,te)=>{I.jb("Attention",E,{numHeads:S,isUnidirectional:L,maskFilterValue:Y,scale:j,doRotary:lA,qkvHiddenSizes:KA?Array.from(v().subarray(Number(OA)>>>0,Number(OA)+KA>>>0)):[],pastPresentShareBuffer:!!te})},843219:E=>{I.jb("BiasAdd",E,void 0)},843274:E=>{I.jb("BiasSplitGelu",E,void 0)},843335:E=>{I.jb("FastGelu",E,void 0)},843391:(E,S,L,Y,j,lA,KA,OA,te,ne,Re,qe,Xe,Ug,YI,wo)=>{I.jb("Conv",E,{format:qe?"NHWC":"NCHW",auto_pad:S,dilations:L?Array.from(v().subarray(Number(L)>>>0,Number(Y)>>>0)):[],group:j,kernel_shape:lA?Array.from(v().subarray(Number(lA)>>>0,Number(KA)>>>0)):[],pads:OA?Array.from(v().subarray(Number(OA)>>>0,Number(te)>>>0)):[],strides:ne?Array.from(v().subarray(Number(ne)>>>0,Number(Re)>>>0)):[],w_is_const:()=>!!dA()[Number(Xe)>>>0],activation:xe(Ug),activation_params:YI?Array.from(YA().subarray(Number(YI)>>>0,Number(wo)>>>0)):[]})},843975:E=>{I.jb("Gelu",E,void 0)},844027:(E,S,L,Y,j,lA,KA,OA,te)=>{I.jb("GroupQueryAttention",E,{numHeads:S,kvNumHeads:L,scale:Y,softcap:j,doRotary:lA,rotaryInterleaved:KA,smoothSoftmax:OA,localWindowSize:te})},844244:(E,S,L,Y)=>{I.jb("LayerNormalization",E,{axis:S,epsilon:L,simplified:!!Y})},844355:(E,S,L,Y)=>{I.jb("LayerNormalization",E,{axis:S,epsilon:L,simplified:!!Y})},844466:(E,S,L,Y,j,lA)=>{I.jb("MatMulNBits",E,{k:S,n:L,accuracyLevel:Y,bits:j,blockSize:lA})},844593:(E,S,L,Y,j,lA)=>{I.jb("MultiHeadAttention",E,{numHeads:S,isUnidirectional:L,maskFilterValue:Y,scale:j,doRotary:lA})},844752:(E,S)=>{I.jb("QuickGelu",E,{alpha:S})},844816:(E,S,L,Y,j)=>{I.jb("RotaryEmbedding",E,{interleaved:!!S,numHeads:L,rotaryEmbeddingDim:Y,scale:j})},844955:(E,S,L)=>{I.jb("SkipLayerNormalization",E,{epsilon:S,simplified:!!L})},845057:(E,S,L)=>{I.jb("SkipLayerNormalization",E,{epsilon:S,simplified:!!L})},845159:(E,S,L,Y)=>{I.jb("GatherBlockQuantized",E,{gatherAxis:S,quantizeAxis:L,blockSize:Y})},845280:E=>{I.Zb(E)},845314:(E,S)=>I.ac(Number(E),Number(S),I.Fb.dc,I.Fb.errors)};function MA(E,S,L){return zg(async()=>{await I.Xb(Number(E),Number(S),Number(L))})}function xA(){return typeof wasmOffsetConverter<"u"}class vA{name="ExitStatus";constructor(S){this.message=`Program terminated with exit(${S})`,this.status=S}}var ge=E=>{E.terminate(),E.onmessage=()=>{}},SA=[],re=E=>{se.length==0&&(De(),xg(se[0]));var S=se.pop();if(!S)return 6;Ne.push(S),pe[E.Ab]=S,S.Ab=E.Ab;var L={Bb:"run",fc:E.ec,Hb:E.Hb,Ab:E.Ab};return S.postMessage(L,E.Mb),0},HA=0,zA=(E,S,...L)=>{for(var Y=2*L.length,j=Hi(),lA=Ei(8*Y),KA=lA>>>3,OA=0;OA>>0]=te)}return E=pt(E,0,Y,lA,S),Qi(j),E};function Be(E){if(o)return zA(0,1,E);if(M=E,!(0{if(M=E,o)throw Ae(E),"unwind";Be(E)},se=[],Ne=[],Pe=[],pe={},tg=E=>{var S=E.Ab;delete pe[S],se.push(E),Ne.splice(Ne.indexOf(E),1),E.Ab=0,xi(S)};function Og(){Pe.forEach(E=>E())}var xg=E=>new Promise(S=>{E.onmessage=j=>{var lA=(j=j.data).Bb;if(j.Gb&&j.Gb!=Bi()){var KA=pe[j.Gb];KA?KA.postMessage(j,j.Mb):G(`Internal error! Worker sent a message "${lA}" to target pthread ${j.Gb}, but that thread no longer exists!`)}else lA==="checkMailbox"?oA():lA==="spawnThread"?re(j):lA==="cleanupThread"?tg(pe[j.hc]):lA==="loaded"?(E.loaded=!0,S(E)):lA==="alert"?alert(`Thread ${j.ic}: ${j.text}`):j.target==="setimmediate"?E.postMessage(j):lA==="callHandler"?I[j.Qb](...j.args):lA&&G(`worker sent an unknown command ${lA}`)},E.onerror=j=>{throw G(`worker sent an error! ${j.filename}:${j.lineno}: ${j.message}`),j};var L,Y=[];for(L of[])I.propertyIsEnumerable(L)&&Y.push(L);E.postMessage({Bb:"load",Rb:Y,kc:h,lc:y})});function De(){var E=new Worker((()=>{let S=URL;return import.meta.url>"file:"&&import.meta.url<"file;"?new S("ort.bundle.min.mjs",import.meta.url):new URL(import.meta.url)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});se.push(E)}var gg=E=>{LA();var S=nA()[E+52>>>2>>>0];E=nA()[E+56>>>2>>>0],ft(S,S-E),Qi(S)},kg=(E,S)=>{HA=0,E=mt(E,S),0>>=0);throw S>>>=0,L>>>=0,nA()[Y.Ib+16>>>2>>>0]=0,nA()[Y.Ib+4>>>2>>>0]=S,nA()[Y.Ib+8>>>2>>>0]=L,E}function pI(E,S,L,Y){return o?zA(2,1,E,S,L,Y):yI(E,S,L,Y)}function yI(E,S,L,Y){if(E>>>=0,L>>>=0,Y>>>=0,s===void 0)return 6;var j=[];return o&&j.length===0?pI(E,S>>>=0,L,Y):(E={ec:L,Ab:E,Hb:Y,Mb:j},o?(E.Bb="spawnThread",postMessage(E,j),0):re(E))}var de=typeof TextDecoder<"u"?new TextDecoder:void 0,J=(E,S=0,L=NaN)=>{var Y=(S>>>=0)+L;for(L=S;E[L]&&!(L>=Y);)++L;if(16(j=(240&j)==224?(15&j)<<12|lA<<6|KA:(7&j)<<18|lA<<12|KA<<6|63&E[S++])?Y+=String.fromCharCode(j):(j-=65536,Y+=String.fromCharCode(55296|j>>10,56320|1023&j))}}else Y+=String.fromCharCode(j)}return Y},xe=(E,S)=>(E>>>=0)?J(P(),E,S):"";function ke(E,S,L){return o?zA(3,1,E,S,L):0}function EI(E,S){if(o)return zA(4,1,E,S)}var N=E=>{for(var S=0,L=0;L=Y?S++:2047>=Y?S+=2:55296<=Y&&57343>=Y?(S+=4,++L):S+=3}return S},gA=(E,S,L)=>{var Y=P();if(S>>>=0,0=KA&&(KA=65536+((1023&KA)<<10)|1023&E.charCodeAt(++lA)),127>=KA){if(S>=L)break;Y[S++>>>0]=KA}else{if(2047>=KA){if(S+1>=L)break;Y[S++>>>0]=192|KA>>6}else{if(65535>=KA){if(S+2>=L)break;Y[S++>>>0]=224|KA>>12}else{if(S+3>=L)break;Y[S++>>>0]=240|KA>>18,Y[S++>>>0]=128|KA>>12&63}Y[S++>>>0]=128|KA>>6&63}Y[S++>>>0]=128|63&KA}}Y[S>>>0]=0,E=S-j}else E=0;return E};function O(E,S){if(o)return zA(5,1,E,S)}function IA(E,S,L){if(o)return zA(6,1,E,S,L)}function rA(E,S,L){return o?zA(7,1,E,S,L):0}function yA(E,S){if(o)return zA(8,1,E,S)}function JA(E,S,L){if(o)return zA(9,1,E,S,L)}function ae(E,S,L,Y){if(o)return zA(10,1,E,S,L,Y)}function Ee(E,S,L,Y){if(o)return zA(11,1,E,S,L,Y)}function Ie(E,S,L,Y){if(o)return zA(12,1,E,S,L,Y)}function Se(E){if(o)return zA(13,1,E)}function Te(E,S){if(o)return zA(14,1,E,S)}function wg(E,S,L){if(o)return zA(15,1,E,S,L)}var je,lg,Wg=()=>NA(""),Ig=E=>{for(var S="";P()[E>>>0];)S+=je[P()[E++>>>0]];return S},pg={},iI={};function cg(E,S,L={}){return function(Y,j,lA={}){var KA=j.name;if(!Y)throw new lg(`type "${KA}" must have a positive integer typeid pointer`);if(iI.hasOwnProperty(Y)){if(lA.Sb)return;throw new lg(`Cannot register type '${KA}' twice`)}iI[Y]=j,pg.hasOwnProperty(Y)&&(j=pg[Y],delete pg[Y],j.forEach(OA=>OA()))}(E,S,L)}var Zg=(E,S,L)=>{switch(S){case 1:return L?Y=>dA()[Y>>>0]:Y=>P()[Y>>>0];case 2:return L?Y=>U()[Y>>>1>>>0]:Y=>z()[Y>>>1>>>0];case 4:return L?Y=>v()[Y>>>2>>>0]:Y=>nA()[Y>>>2>>>0];case 8:return L?Y=>CA[Y>>>3]:Y=>eA[Y>>>3];default:throw new TypeError(`invalid integer width (${S}): ${E}`)}};function oI(E,S,L){L>>>=0,cg(E>>>=0,{name:S=Ig(S>>>0),fromWireType:Y=>Y,toWireType:function(Y,j){if(typeof j!="bigint"&&typeof j!="number")throw j=j===null?"null":(Y=typeof j)=="object"||Y==="array"||Y==="function"?j.toString():""+j,new TypeError(`Cannot convert "${j}" to ${this.name}`);return typeof j=="number"&&(j=BigInt(j)),j},Cb:mg,readValueFromPointer:Zg(S,L,S.indexOf("u")==-1),Db:null})}var mg=8;function nI(E,S,L,Y){cg(E>>>=0,{name:S=Ig(S>>>0),fromWireType:function(j){return!!j},toWireType:function(j,lA){return lA?L:Y},Cb:mg,readValueFromPointer:function(j){return this.fromWireType(P()[j>>>0])},Db:null})}var CI=[],ag=[];function jg(E){9<(E>>>=0)&&--ag[E+1]==0&&(ag[E]=void 0,CI.push(E))}var dg=E=>{if(!E)throw new lg("Cannot use deleted val. handle = "+E);return ag[E]},Mg=E=>{switch(E){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let S=CI.pop()||ag.length;return ag[S]=E,ag[S+1]=1,S}};function tI(E){return this.fromWireType(nA()[E>>>2>>>0])}var lI={name:"emscripten::val",fromWireType:E=>{var S=dg(E);return jg(E),S},toWireType:(E,S)=>Mg(S),Cb:mg,readValueFromPointer:tI,Db:null};function AI(E){return cg(E>>>0,lI)}var fI=(E,S)=>{switch(S){case 4:return function(L){return this.fromWireType(YA()[L>>>2>>>0])};case 8:return function(L){return this.fromWireType(_A()[L>>>3>>>0])};default:throw new TypeError(`invalid float width (${S}): ${E}`)}};function ve(E,S,L){L>>>=0,cg(E>>>=0,{name:S=Ig(S>>>0),fromWireType:Y=>Y,toWireType:(Y,j)=>j,Cb:mg,readValueFromPointer:fI(S,L),Db:null})}function qA(E,S,L,Y,j){if(E>>>=0,L>>>=0,S=Ig(S>>>0),j===-1&&(j=4294967295),j=OA=>OA,Y===0){var lA=32-8*L;j=OA=>OA<>>lA}var KA=S.includes("unsigned")?function(OA,te){return te>>>0}:function(OA,te){return te};cg(E,{name:S,fromWireType:j,toWireType:KA,Cb:mg,readValueFromPointer:Zg(S,L,Y!==0),Db:null})}function n(E,S,L){function Y(lA){var KA=nA()[lA>>>2>>>0];return lA=nA()[lA+4>>>2>>>0],new j(dA().buffer,lA,KA)}var j=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][S];cg(E>>>=0,{name:L=Ig(L>>>0),fromWireType:Y,Cb:mg,readValueFromPointer:Y},{Sb:!0})}function F(E,S){cg(E>>>=0,{name:S=Ig(S>>>0),fromWireType:function(L){for(var Y,j=nA()[L>>>2>>>0],lA=L+4,KA=lA,OA=0;OA<=j;++OA){var te=lA+OA;OA!=j&&P()[te>>>0]!=0||(KA=xe(KA,te-KA),Y===void 0?Y=KA:(Y+="\0",Y+=KA),KA=te+1)}return BI(L),Y},toWireType:function(L,Y){Y instanceof ArrayBuffer&&(Y=new Uint8Array(Y));var j=typeof Y=="string";if(!(j||Y instanceof Uint8Array||Y instanceof Uint8ClampedArray||Y instanceof Int8Array))throw new lg("Cannot pass non-string to std::string");var lA=j?N(Y):Y.length,KA=ri(4+lA+1),OA=KA+4;if(nA()[KA>>>2>>>0]=lA,j)gA(Y,OA,lA+1);else if(j)for(j=0;j>>0]=te}else for(j=0;j>>0]=Y[j];return L!==null&&L.push(BI,KA),KA},Cb:mg,readValueFromPointer:tI,Db(L){BI(L)}})}var K=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,W=(E,S)=>{for(var L=E>>1,Y=L+S/2;!(L>=Y)&&z()[L>>>0];)++L;if(32<(L<<=1)-E&&K)return K.decode(P().slice(E,L));for(L="",Y=0;!(Y>=S/2);++Y){var j=U()[E+2*Y>>>1>>>0];if(j==0)break;L+=String.fromCharCode(j)}return L},iA=(E,S,L)=>{if(L??=2147483647,2>L)return 0;var Y=S;L=(L-=2)<2*E.length?L/2:E.length;for(var j=0;j>>1>>>0]=lA,S+=2}return U()[S>>>1>>>0]=0,S-Y},QA=E=>2*E.length,uA=(E,S)=>{for(var L=0,Y="";!(L>=S/4);){var j=v()[E+4*L>>>2>>>0];if(j==0)break;++L,65536<=j?(j-=65536,Y+=String.fromCharCode(55296|j>>10,56320|1023&j)):Y+=String.fromCharCode(j)}return Y},RA=(E,S,L)=>{if(S>>>=0,L??=2147483647,4>L)return 0;var Y=S;L=Y+L-4;for(var j=0;j=lA&&(lA=65536+((1023&lA)<<10)|1023&E.charCodeAt(++j)),v()[S>>>2>>>0]=lA,(S+=4)+4>L)break}return v()[S>>>2>>>0]=0,S-Y},Ce=E=>{for(var S=0,L=0;L=Y&&++L,S+=4}return S};function Ke(E,S,L){if(E>>>=0,S>>>=0,L=Ig(L>>>=0),S===2)var Y=W,j=iA,lA=QA,KA=OA=>z()[OA>>>1>>>0];else S===4&&(Y=uA,j=RA,lA=Ce,KA=OA=>nA()[OA>>>2>>>0]);cg(E,{name:L,fromWireType:OA=>{for(var te,ne=nA()[OA>>>2>>>0],Re=OA+4,qe=0;qe<=ne;++qe){var Xe=OA+4+qe*S;qe!=ne&&KA(Xe)!=0||(Re=Y(Re,Xe-Re),te===void 0?te=Re:(te+="\0",te+=Re),Re=Xe+S)}return BI(OA),te},toWireType:(OA,te)=>{if(typeof te!="string")throw new lg(`Cannot pass non-string to C++ string type ${L}`);var ne=lA(te),Re=ri(4+ne+S);return nA()[Re>>>2>>>0]=ne/S,j(te,Re+4,ne+S),OA!==null&&OA.push(BI,Re),Re},Cb:mg,readValueFromPointer:tI,Db(OA){BI(OA)}})}function aA(E,S){cg(E>>>=0,{Tb:!0,name:S=Ig(S>>>0),Cb:0,fromWireType:()=>{},toWireType:()=>{}})}function R(E){ai(E>>>0,!C,1,!t,131072,!1),Og()}var H=E=>{if(!sA)try{if(E(),!(0>>=0,typeof Atomics.jc=="function"&&(Atomics.jc(v(),E>>>2,E).value.then(oA),E+=128,Atomics.store(v(),E>>>2,1))}var oA=()=>{var E=Bi();E&&($(E),H(Yi))};function DA(E,S){(E>>>=0)==S>>>0?setTimeout(oA):o?postMessage({Gb:E,Bb:"checkMailbox"}):(E=pe[E])&&E.postMessage({Bb:"checkMailbox"})}var GA=[];function jA(E,S,L,Y,j){for(S>>>=0,Y/=2,GA.length=Y,L=j>>>0>>>3,j=0;j>>0];return(S?kA[S]:Do[E])(...GA)}var XA=()=>{HA=0};function ZA(E){E>>>=0,o?postMessage({Bb:"cleanupThread",hc:E}):tg(pe[E])}function $A(E){}var fe=(E,S)=>{var L=iI[E];if(L===void 0)throw E=Dt(E),L=Ig(E),BI(E),new lg(`${S} has unknown type ${L}`);return L},me=(E,S,L)=>{var Y=[];return E=E.toWireType(Y,L),Y.length&&(nA()[S>>>2>>>0]=Mg(Y)),E};function Ye(E,S,L){return S>>>=0,L>>>=0,E=dg(E>>>0),S=fe(S,"emval::as"),me(S,L,E)}function Lg(E,S){return S>>>=0,E=dg(E>>>0),(S=fe(S,"emval::as")).toWireType(null,E)}var og=E=>{try{E()}catch(S){NA(S)}},ng=0,ig=null,eI=0,cI=[],Pg={},sI={},Qg=0,Fg=null,Vg=[];function zg(E){return function(S){if(!sA){if(ng===0){var L=!1,Y=!1;S((j=0)=>{if(!sA&&(eI=j,L=!0,Y)){ng=2,og(()=>Ft(ig)),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.resume(),j=!1;try{var lA=function(){var te=v()[ig+8>>>2>>>0];return te=ue[sI[te]],--HA,te()}()}catch(te){lA=te,j=!0}var KA=!1;if(!ig){var OA=Fg;OA&&(Fg=null,(j?OA.reject:OA.resolve)(lA),KA=!0)}if(j&&!KA)throw lA}}),Y=!0,L||(ng=1,ig=function(){var j=ri(65548),lA=j+12;nA()[j>>>2>>>0]=lA,nA()[j+4>>>2>>>0]=lA+65536,lA=cI[0];var KA=Pg[lA];return KA===void 0&&(KA=Qg++,Pg[lA]=KA,sI[KA]=lA),lA=KA,v()[j+8>>>2>>>0]=lA,j}(),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.pause(),og(()=>Pi(ig)))}else ng===2?(ng=0,og(vi),BI(ig),ig=null,Vg.forEach(H)):NA(`invalid state: ${ng}`);return eI}}(S=>{E().then(S)})}function mI(E){return E>>>=0,zg(async()=>{var S=await dg(E);return Mg(S)})}var Rg=[];function dI(E,S,L,Y){return L>>>=0,Y>>>=0,(E=Rg[E>>>0])(null,S=dg(S>>>0),L,Y)}var Kg={},Bg=E=>{var S=Kg[E];return S===void 0?Ig(E):S};function Sg(E,S,L,Y,j){return L>>>=0,Y>>>=0,j>>>=0,(E=Rg[E>>>0])(S=dg(S>>>0),S[L=Bg(L)],Y,j)}var yg=()=>typeof globalThis=="object"?globalThis:Function("return this")();function $g(E){return(E>>>=0)==0?Mg(yg()):(E=Bg(E),Mg(yg()[E]))}var WI=E=>{var S=Rg.length;return Rg.push(E),S},_i=(E,S)=>{for(var L=Array(E),Y=0;Y>>2>>>0],"parameter "+Y);return L},PI=(E,S)=>Object.defineProperty(S,"name",{value:E});function zt(E,S,L){var Y=(S=_i(E,S>>>0)).shift();E--;var j=`return function (obj, func, destructorsRef, args) { `,lA=0,KA=[];L===0&&KA.push("obj");for(var OA=["retType"],te=[Y],ne=0;neRe.name).join(", ")}) => ${Y.name}>`,WI(PI(L,E))}function $t(E){return E=Bg(E>>>0),Mg(I[E])}function Xt(E,S){return S>>>=0,E=dg(E>>>0),S=dg(S),Mg(E[S])}function Zt(E){9<(E>>>=0)&&(ag[E+1]+=1)}function Ao(){return Mg([])}function jI(E){E=dg(E>>>0);for(var S=Array(E.length),L=0;L>>0))}function go(){return Mg({})}function Io(E){for(var S=dg(E>>>=0);S.length;){var L=S.pop();S.pop()(L)}jg(E)}function io(E,S,L){S>>>=0,L>>>=0,E=dg(E>>>0),S=dg(S),L=dg(L),E[S]=L}function to(E,S){return S>>>=0,E=(E=fe(E>>>0,"_emval_take_value")).readValueFromPointer(S),Mg(E)}function VI(E,S){E=-9007199254740992>E||9007199254740992>>=0,E=new Date(1e3*E),v()[S>>>2>>>0]=E.getUTCSeconds(),v()[S+4>>>2>>>0]=E.getUTCMinutes(),v()[S+8>>>2>>>0]=E.getUTCHours(),v()[S+12>>>2>>>0]=E.getUTCDate(),v()[S+16>>>2>>>0]=E.getUTCMonth(),v()[S+20>>>2>>>0]=E.getUTCFullYear()-1900,v()[S+24>>>2>>>0]=E.getUTCDay(),E=(E.getTime()-Date.UTC(E.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,v()[S+28>>>2>>>0]=E}var tt=E=>E%4==0&&(E%100!=0||E%400==0),ot=[0,31,60,91,121,152,182,213,244,274,305,335],Ct=[0,31,59,90,120,151,181,212,243,273,304,334];function oo(E,S){E=-9007199254740992>E||9007199254740992>>=0,E=new Date(1e3*E),v()[S>>>2>>>0]=E.getSeconds(),v()[S+4>>>2>>>0]=E.getMinutes(),v()[S+8>>>2>>>0]=E.getHours(),v()[S+12>>>2>>>0]=E.getDate(),v()[S+16>>>2>>>0]=E.getMonth(),v()[S+20>>>2>>>0]=E.getFullYear()-1900,v()[S+24>>>2>>>0]=E.getDay();var L=(tt(E.getFullYear())?ot:Ct)[E.getMonth()]+E.getDate()-1|0;v()[S+28>>>2>>>0]=L,v()[S+36>>>2>>>0]=-60*E.getTimezoneOffset(),L=new Date(E.getFullYear(),6,1).getTimezoneOffset();var Y=new Date(E.getFullYear(),0,1).getTimezoneOffset();E=0|(L!=Y&&E.getTimezoneOffset()==Math.min(Y,L)),v()[S+32>>>2>>>0]=E}function Co(E){E>>>=0;var S=new Date(v()[E+20>>>2>>>0]+1900,v()[E+16>>>2>>>0],v()[E+12>>>2>>>0],v()[E+8>>>2>>>0],v()[E+4>>>2>>>0],v()[E>>>2>>>0],0),L=v()[E+32>>>2>>>0],Y=S.getTimezoneOffset(),j=new Date(S.getFullYear(),6,1).getTimezoneOffset(),lA=new Date(S.getFullYear(),0,1).getTimezoneOffset(),KA=Math.min(lA,j);return 0>L?v()[E+32>>>2>>>0]=+(j!=lA&&KA==Y):0>>2>>>0]=S.getDay(),L=(tt(S.getFullYear())?ot:Ct)[S.getMonth()]+S.getDate()-1|0,v()[E+28>>>2>>>0]=L,v()[E>>>2>>>0]=S.getSeconds(),v()[E+4>>>2>>>0]=S.getMinutes(),v()[E+8>>>2>>>0]=S.getHours(),v()[E+12>>>2>>>0]=S.getDate(),v()[E+16>>>2>>>0]=S.getMonth(),v()[E+20>>>2>>>0]=S.getYear(),E=S.getTime(),BigInt(isNaN(E)?-1:E/1e3)}function Gi(E,S,L,Y,j,lA,KA){return o?zA(16,1,E,S,L,Y,j,lA,KA):-52}function st(E,S,L,Y,j,lA){if(o)return zA(17,1,E,S,L,Y,j,lA)}var zI={},Bt=()=>performance.timeOrigin+performance.now();function rt(E,S){if(o)return zA(18,1,E,S);if(zI[E]&&(clearTimeout(zI[E].id),delete zI[E]),!S)return 0;var L=setTimeout(()=>{delete zI[E],H(()=>yt(E,performance.timeOrigin+performance.now()))},S);return zI[E]={id:L,qc:S},0}function at(E,S,L,Y){E>>>=0,S>>>=0,L>>>=0,Y>>>=0;var j=new Date().getFullYear(),lA=new Date(j,0,1).getTimezoneOffset();j=new Date(j,6,1).getTimezoneOffset();var KA=Math.max(lA,j);nA()[E>>>2>>>0]=60*KA,v()[S>>>2>>>0]=+(lA!=j),E=(S=OA=>{var te=Math.abs(OA);return`UTC${0<=OA?"-":"+"}${String(Math.floor(te/60)).padStart(2,"0")}${String(te%60).padStart(2,"0")}`})(lA),S=S(j),jDate.now();function Qt(E,S,L){return 0<=E&&3>=E?(E===0?E=Date.now():E=performance.timeOrigin+performance.now(),CA[L>>>0>>>3]=BigInt(Math.round(1e6*E)),0):28}var Et=[],nt=(E,S)=>{Et.length=0;for(var L;L=P()[E++>>>0];){var Y=L!=105;S+=(Y&=L!=112)&&S%8?4:0,Et.push(L==112?nA()[S>>>2>>>0]:L==106?CA[S>>>3]:L==105?v()[S>>>2>>>0]:_A()[S>>>3>>>0]),S+=Y?8:4}return Et};function lt(E,S,L){return E>>>=0,S=nt(S>>>0,L>>>0),kA[E](...S)}function ct(E,S,L){return E>>>=0,S=nt(S>>>0,L>>>0),kA[E](...S)}var ki=()=>{};function Bo(E,S){return G(xe(E>>>0,S>>>0))}var ro=()=>{throw HA+=1,"unwind"};function ao(){return 4294901760}var Qo=()=>navigator.hardwareConcurrency;function Eo(){return NA("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"),0}function no(E){E>>>=0;var S=P().length;if(E<=S||4294901760=L;L*=2){var Y=S*(1+.2/L);Y=Math.min(Y,E+100663296);A:{Y=(Math.min(4294901760,65536*Math.ceil(Math.max(E,Y)/65536))-h.buffer.byteLength+65535)/65536|0;try{h.grow(Y),LA();var j=1;break A}catch{}j=void 0}if(j)return!0}return!1}var ti=()=>(NA("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0),$I={},Li=E=>{E.forEach(S=>{ti()})};function lo(){var E=Error().stack.toString().split(` `);return E[0]=="Error"&&E.shift(),Li(E),$I.Lb=ti(),$I.cc=E,$I.Lb}function Ki(E,S,L){if(E>>>=0,S>>>=0,$I.Lb==E)var Y=$I.cc;else(Y=Error().stack.toString().split(` `))[0]=="Error"&&Y.shift(),Li(Y);for(var j=3;Y[j]&&ti()!=E;)++j;for(E=0;E>>2>>>0]=ti();return E}var oi,Ui={},Ji=()=>{if(!oi){var E,S={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"};for(E in Ui)Ui[E]===void 0?delete S[E]:S[E]=Ui[E];var L=[];for(E in S)L.push(`${E}=${S[E]}`);oi=L}return oi};function TI(E,S){if(o)return zA(19,1,E,S);E>>>=0,S>>>=0;var L=0;return Ji().forEach((Y,j)=>{var lA=S+L;for(j=nA()[E+4*j>>>2>>>0]=lA,lA=0;lA>>0]=Y.charCodeAt(lA);dA()[j>>>0]=0,L+=Y.length+1}),0}function dt(E,S){if(o)return zA(20,1,E,S);E>>>=0,S>>>=0;var L=Ji();nA()[E>>>2>>>0]=L.length;var Y=0;return L.forEach(j=>Y+=j.length+1),nA()[S>>>2>>>0]=Y,0}function co(E){return o?zA(21,1,E):52}function ht(E,S,L,Y){return o?zA(22,1,E,S,L,Y):52}function ho(E,S,L,Y){return o?zA(23,1,E,S,L,Y):70}var uo=[null,[],[]];function bi(E,S,L,Y){if(o)return zA(24,1,E,S,L,Y);S>>>=0,L>>>=0,Y>>>=0;for(var j=0,lA=0;lA>>2>>>0],OA=nA()[S+4>>>2>>>0];S+=8;for(var te=0;te>>0],Re=uo[E];ne===0||ne===10?((E===1?D:G)(J(Re)),Re.length=0):Re.push(ne)}j+=OA}return nA()[Y>>>2>>>0]=j,0}o||function(){for(var E=I.numThreads-1;E--;)De();SA.unshift(()=>{V++,function(S){o?S():Promise.all(se.map(xg)).then(S)}(()=>bA())})}();for(var ut=Array(256),Ci=0;256>Ci;++Ci)ut[Ci]=String.fromCharCode(Ci);je=ut,lg=I.BindingError=class extends Error{constructor(E){super(E),this.name="BindingError"}},I.InternalError=class extends Error{constructor(E){super(E),this.name="InternalError"}},ag.push(0,1,void 0,1,null,1,!0,1,!1,1),I.count_emval_handles=()=>ag.length/2-5-CI.length;var ue,Do=[Be,Ae,pI,ke,EI,O,IA,rA,yA,JA,ae,Ee,Ie,Se,Te,wg,Gi,st,rt,TI,dt,co,ht,ho,bi];(async function(){function E(Y,j){return ue=Y.exports,ue=function(){var lA=ue,KA={};for(let[OA,te]of Object.entries(lA))KA[OA]=typeof te=="function"?(...ne)=>{cI.push(OA);try{return te(...ne)}finally{sA||(cI.pop(),ig&&ng===1&&cI.length===0&&(ng=0,HA+=1,og(Mt),typeof Fibers<"u"&&Fibers.rc()))}}:te;return KA}(),ue=function(){var lA=ue,KA=te=>ne=>te(ne)>>>0,OA=te=>()=>te()>>>0;return(lA=Object.assign({},lA)).Da=KA(lA.Da),lA.fb=OA(lA.fb),lA.hb=KA(lA.hb),lA.tb=KA(lA.tb),lA.ub=OA(lA.ub),lA.__cxa_get_exception_ptr=KA(lA.__cxa_get_exception_ptr),lA}(),Pe.push(ue.ib),y=j,bA(),ue}V++;var S=pA();if(I.instantiateWasm)return new Promise(Y=>{I.instantiateWasm(S,(j,lA)=>{E(j,lA),Y(j.exports)})});if(o)return new Promise(Y=>{PA=j=>{var lA=new WebAssembly.Instance(j,pA());Y(E(lA,j))}});hA??=I.locateFile?I.locateFile?I.locateFile("ort-wasm-simd-threaded.jsep.wasm",f):f+"ort-wasm-simd-threaded.jsep.wasm":new URL(""+new URL("ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",import.meta.url).href,import.meta.url).href;try{var L=await async function(Y){var j=hA;if(!BA&&typeof WebAssembly.instantiateStreaming=="function"&&!cA(j))try{var lA=fetch(j,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(lA,Y)}catch(KA){G(`wasm streaming compile failed: ${KA}`),G("falling back to ArrayBuffer instantiation")}return async function(KA,OA){try{var te=await async function(ne){if(!BA)try{var Re=await a(ne);return new Uint8Array(Re)}catch{}if(ne==hA&&BA)ne=new Uint8Array(BA);else{if(!r)throw"both async and sync fetching of the wasm failed";ne=r(ne)}return ne}(KA);return await WebAssembly.instantiate(te,OA)}catch(ne){G(`failed to asynchronously prepare wasm: ${ne}`),NA(ne)}}(j,Y)}(S);return E(L.instance,L.module)}catch(Y){return e(Y),Promise.reject(Y)}})();var Dt=E=>(Dt=ue.Da)(E),si=()=>(si=ue.Ea)();I._OrtInit=(E,S)=>(I._OrtInit=ue.Fa)(E,S),I._OrtGetLastError=(E,S)=>(I._OrtGetLastError=ue.Ga)(E,S),I._OrtCreateSessionOptions=(E,S,L,Y,j,lA,KA,OA,te,ne)=>(I._OrtCreateSessionOptions=ue.Ha)(E,S,L,Y,j,lA,KA,OA,te,ne),I._OrtAppendExecutionProvider=(E,S,L,Y,j)=>(I._OrtAppendExecutionProvider=ue.Ia)(E,S,L,Y,j),I._OrtAddFreeDimensionOverride=(E,S,L)=>(I._OrtAddFreeDimensionOverride=ue.Ja)(E,S,L),I._OrtAddSessionConfigEntry=(E,S,L)=>(I._OrtAddSessionConfigEntry=ue.Ka)(E,S,L),I._OrtReleaseSessionOptions=E=>(I._OrtReleaseSessionOptions=ue.La)(E),I._OrtCreateSession=(E,S,L)=>(I._OrtCreateSession=ue.Ma)(E,S,L),I._OrtReleaseSession=E=>(I._OrtReleaseSession=ue.Na)(E),I._OrtGetInputOutputCount=(E,S,L)=>(I._OrtGetInputOutputCount=ue.Oa)(E,S,L),I._OrtGetInputOutputMetadata=(E,S,L,Y)=>(I._OrtGetInputOutputMetadata=ue.Pa)(E,S,L,Y),I._OrtFree=E=>(I._OrtFree=ue.Qa)(E),I._OrtCreateTensor=(E,S,L,Y,j,lA)=>(I._OrtCreateTensor=ue.Ra)(E,S,L,Y,j,lA),I._OrtGetTensorData=(E,S,L,Y,j)=>(I._OrtGetTensorData=ue.Sa)(E,S,L,Y,j),I._OrtReleaseTensor=E=>(I._OrtReleaseTensor=ue.Ta)(E),I._OrtCreateRunOptions=(E,S,L,Y)=>(I._OrtCreateRunOptions=ue.Ua)(E,S,L,Y),I._OrtAddRunConfigEntry=(E,S,L)=>(I._OrtAddRunConfigEntry=ue.Va)(E,S,L),I._OrtReleaseRunOptions=E=>(I._OrtReleaseRunOptions=ue.Wa)(E),I._OrtCreateBinding=E=>(I._OrtCreateBinding=ue.Xa)(E),I._OrtBindInput=(E,S,L)=>(I._OrtBindInput=ue.Ya)(E,S,L),I._OrtBindOutput=(E,S,L,Y)=>(I._OrtBindOutput=ue.Za)(E,S,L,Y),I._OrtClearBoundOutputs=E=>(I._OrtClearBoundOutputs=ue._a)(E),I._OrtReleaseBinding=E=>(I._OrtReleaseBinding=ue.$a)(E),I._OrtRunWithBinding=(E,S,L,Y,j)=>(I._OrtRunWithBinding=ue.ab)(E,S,L,Y,j),I._OrtRun=(E,S,L,Y,j,lA,KA,OA)=>(I._OrtRun=ue.bb)(E,S,L,Y,j,lA,KA,OA),I._OrtEndProfiling=E=>(I._OrtEndProfiling=ue.cb)(E),I._JsepOutput=(E,S,L)=>(I._JsepOutput=ue.db)(E,S,L),I._JsepGetNodeName=E=>(I._JsepGetNodeName=ue.eb)(E);var Bi=()=>(Bi=ue.fb)(),BI=I._free=E=>(BI=I._free=ue.gb)(E),ri=I._malloc=E=>(ri=I._malloc=ue.hb)(E),ai=(E,S,L,Y,j,lA)=>(ai=ue.kb)(E,S,L,Y,j,lA),wt=()=>(wt=ue.lb)(),pt=(E,S,L,Y,j)=>(pt=ue.mb)(E,S,L,Y,j),xi=E=>(xi=ue.nb)(E),Ti=E=>(Ti=ue.ob)(E),yt=(E,S)=>(yt=ue.pb)(E,S),Yi=()=>(Yi=ue.qb)(),ft=(E,S)=>(ft=ue.rb)(E,S),Qi=E=>(Qi=ue.sb)(E),Ei=E=>(Ei=ue.tb)(E),Hi=()=>(Hi=ue.ub)(),mt=I.dynCall_ii=(E,S)=>(mt=I.dynCall_ii=ue.vb)(E,S),Pi=E=>(Pi=ue.wb)(E),Mt=()=>(Mt=ue.xb)(),Ft=E=>(Ft=ue.yb)(E),vi=()=>(vi=ue.zb)();return I.stackSave=()=>Hi(),I.stackRestore=E=>Qi(E),I.stackAlloc=E=>Ei(E),I.setValue=function(E,S,L="i8"){switch(L.endsWith("*")&&(L="*"),L){case"i1":case"i8":dA()[E>>>0]=S;break;case"i16":U()[E>>>1>>>0]=S;break;case"i32":v()[E>>>2>>>0]=S;break;case"i64":CA[E>>>3]=BigInt(S);break;case"float":YA()[E>>>2>>>0]=S;break;case"double":_A()[E>>>3>>>0]=S;break;case"*":nA()[E>>>2>>>0]=S;break;default:NA(`invalid type for setValue: ${L}`)}},I.getValue=function(E,S="i8"){switch(S.endsWith("*")&&(S="*"),S){case"i1":case"i8":return dA()[E>>>0];case"i16":return U()[E>>>1>>>0];case"i32":return v()[E>>>2>>>0];case"i64":return CA[E>>>3];case"float":return YA()[E>>>2>>>0];case"double":return _A()[E>>>3>>>0];case"*":return nA()[E>>>2>>>0];default:NA(`invalid type for getValue: ${S}`)}},I.UTF8ToString=xe,I.stringToUTF8=gA,I.lengthBytesUTF8=N,function E(){if(0{Ar(),Ts=typeof location>"u"?void 0:location.origin,KB=import.meta.url>"file:"&&import.meta.url<"file;",ul=()=>{{if(KB){let A=URL;return new URL(new A("ort.bundle.min.mjs",import.meta.url).href,Ts).href}return import.meta.url}},rI=ul(),mu=()=>{if(rI&&!rI.startsWith("blob:"))return rI.substring(0,rI.lastIndexOf("/")+1)},Ho=(A,g)=>{try{let e=g??rI;return(e?new URL(A,e):new URL(A)).origin===Ts}catch{return!1}},Dl=(A,g)=>{let e=g??rI;try{return(e?new URL(A,e):new URL(A)).href}catch{return}},wl=(A,g)=>`${g??"./"}${A}`,Ys=async A=>{let g=await(await fetch(A,{credentials:"same-origin"})).blob();return URL.createObjectURL(g)},pl=async A=>(await import(A)).default,Hs=(yy(),Ot(wu)).default,Mu=async()=>{if(!rI)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if(Ho(rI))return[void 0,Hs()];let A=await Ys(rI);return[A,Hs(A)]},Ps=(fy(),Ot(yu)).default,Fu=async(A,g,e)=>{if(!A&&!g&&Ps&&rI&&Ho(rI))return[void 0,Ps];{let I="ort-wasm-simd-threaded.jsep.mjs",i=A??Dl(I,g),t=e&&i&&!Ho(i,g),C=t?await Ys(i):i??wl(I,g);return[t?C:void 0,await pl(C)]}}}),vs,Po,Gt,qs,yl,fl,ml,gr,sg,Ni=VA(()=>{er(),Po=!1,Gt=!1,qs=!1,yl=()=>{if(typeof SharedArrayBuffer>"u")return!1;try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},fl=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},ml=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},gr=async A=>{if(Po)return Promise.resolve();if(Gt)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(qs)throw new Error("previous call to 'initializeWebAssembly()' failed.");Gt=!0;let g=A.initTimeout,e=A.numThreads;if(A.simd!==!1){if(A.simd==="relaxed"){if(!ml())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!fl())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let I=yl();e>1&&!I&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),A.numThreads=e=1);let i=A.wasmPaths,t=typeof i=="string"?i:void 0,C=i?.mjs,o=C?.href??C,s=i?.wasm,B=s?.href??s,Q=A.wasmBinary,[a,r]=await Fu(o,t,e>1),d=!1,c=[];if(g>0&&c.push(new Promise(f=>{setTimeout(()=>{d=!0,f()},g)})),c.push(new Promise((f,k)=>{let u={numThreads:e};if(Q)u.wasmBinary=Q;else if(B||t)u.locateFile=D=>B??t+D;else if(o&&o.indexOf("blob:")!==0)u.locateFile=D=>new URL(D,o).href;else if(a){let D=mu();D&&(u.locateFile=G=>D+G)}r(u).then(D=>{Gt=!1,Po=!0,vs=D,f(),a&&URL.revokeObjectURL(a)},D=>{Gt=!1,qs=!0,k(D)})})),await Promise.race(c),d)throw new Error(`WebAssembly backend initializing failed due to timeout: ${g}ms`)},sg=()=>{if(Po&&vs)return vs;throw new Error("WebAssembly is not initialized yet.")}}),kI,tC,eg,Ir=VA(()=>{Ni(),kI=(A,g)=>{let e=sg(),I=e.lengthBytesUTF8(A)+1,i=e._malloc(I);return e.stringToUTF8(A,i,I),g.push(i),i},tC=(A,g,e,I)=>{if(typeof A=="object"&&A!==null){if(e.has(A))throw new Error("Circular reference in options");e.add(A)}Object.entries(A).forEach(([i,t])=>{let C=g?g+i:i;if(typeof t=="object")tC(t,C+".",e,I);else if(typeof t=="string"||typeof t=="number")I(C,t.toString());else if(typeof t=="boolean")I(C,t?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof t}`)})},eg=A=>{let g=sg(),e=g.stackSave();try{let I=g.PTR_SIZE,i=g.stackAlloc(2*I);g._OrtGetLastError(i,i+I);let t=Number(g.getValue(i,I===4?"i32":"i64")),C=g.getValue(i+I,"*"),o=C?g.UTF8ToString(C):"";throw new Error(`${A} ERROR_CODE: ${t}, ERROR_MESSAGE: ${o}`)}finally{g.stackRestore(e)}}}),Su,my=VA(()=>{Ni(),Ir(),Su=A=>{let g=sg(),e=0,I=[],i=A||{};try{if(A?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof A.logSeverityLevel!="number"||!Number.isInteger(A.logSeverityLevel)||A.logSeverityLevel<0||A.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${A.logSeverityLevel}`);if(A?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof A.logVerbosityLevel!="number"||!Number.isInteger(A.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${A.logVerbosityLevel}`);A?.terminate===void 0&&(i.terminate=!1);let t=0;return A?.tag!==void 0&&(t=kI(A.tag,I)),e=g._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,t),e===0&&eg("Can't create run options."),A?.extra!==void 0&&tC(A.extra,"",new WeakSet,(C,o)=>{let s=kI(C,I),B=kI(o,I);g._OrtAddRunConfigEntry(e,s,B)!==0&&eg(`Can't set a run config entry: ${C} - ${o}.`)}),[e,I]}catch(t){throw e!==0&&g._OrtReleaseRunOptions(e),I.forEach(C=>g._free(C)),t}}}),Ml,Fl,Sl,kt,Nl,Nu,My=VA(()=>{Ni(),Ir(),Ml=A=>{switch(A){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${A}`)}},Fl=A=>{switch(A){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${A}`)}},Sl=A=>{A.extra||(A.extra={}),A.extra.session||(A.extra.session={});let g=A.extra.session;g.use_ort_model_bytes_directly||(g.use_ort_model_bytes_directly="1"),A.executionProviders&&A.executionProviders.some(e=>(typeof e=="string"?e:e.name)==="webgpu")&&(A.enableMemPattern=!1)},kt=(A,g,e,I)=>{let i=kI(g,I),t=kI(e,I);sg()._OrtAddSessionConfigEntry(A,i,t)!==0&&eg(`Can't set a session config entry: ${g} - ${e}.`)},Nl=async(A,g,e)=>{for(let I of g){let i=typeof I=="string"?I:I.name,t=[];switch(i){case"webnn":if(i="WEBNN",typeof I!="string"){let Q=I?.deviceType;Q&&kt(A,"deviceType",Q,e)}break;case"webgpu":if(i="JS",typeof I!="string"){let Q=I;if(Q?.preferredLayout){if(Q.preferredLayout!=="NCHW"&&Q.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${Q.preferredLayout}`);kt(A,"preferredLayout",Q.preferredLayout,e)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${i}`)}let C=kI(i,e),o=t.length,s=0,B=0;if(o>0){s=sg()._malloc(o*sg().PTR_SIZE),e.push(s),B=sg()._malloc(o*sg().PTR_SIZE),e.push(B);for(let Q=0;Q{let g=sg(),e=0,I=[],i=A||{};Sl(i);try{let t=Ml(i.graphOptimizationLevel??"all"),C=Fl(i.executionMode??"sequential"),o=typeof i.logId=="string"?kI(i.logId,I):0,s=i.logSeverityLevel??2;if(!Number.isInteger(s)||s<0||s>4)throw new Error(`log serverity level is not valid: ${s}`);let B=i.logVerbosityLevel??0;if(!Number.isInteger(B)||B<0||B>4)throw new Error(`log verbosity level is not valid: ${B}`);let Q=typeof i.optimizedModelFilePath=="string"?kI(i.optimizedModelFilePath,I):0;if(e=g._OrtCreateSessionOptions(t,!!i.enableCpuMemArena,!!i.enableMemPattern,C,!!i.enableProfiling,0,o,s,B,Q),e===0&&eg("Can't create session options."),i.executionProviders&&await Nl(e,i.executionProviders,I),i.enableGraphCapture!==void 0){if(typeof i.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${i.enableGraphCapture}`);kt(e,"enableGraphCapture",i.enableGraphCapture.toString(),I)}if(i.freeDimensionOverrides)for(let[a,r]of Object.entries(i.freeDimensionOverrides)){if(typeof a!="string")throw new Error(`free dimension override name must be a string: ${a}`);if(typeof r!="number"||!Number.isInteger(r)||r<0)throw new Error(`free dimension override value must be a non-negative integer: ${r}`);let d=kI(a,I);g._OrtAddFreeDimensionOverride(e,d,r)!==0&&eg(`Can't set a free dimension override: ${a} - ${r}.`)}return i.extra!==void 0&&tC(i.extra,"",new WeakSet,(a,r)=>{kt(e,a,r,I)}),[e,I]}catch(t){throw e!==0&&g._OrtReleaseSessionOptions(e)!==0&&eg("Can't release session options."),I.forEach(C=>g._free(C)),t}}}),Zi,qI,fi,ir,oC,tr,or,UB,Fe=VA(()=>{Zi=A=>{switch(A){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw new Error(`unsupported data type: ${A}`)}},qI=A=>{switch(A){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw new Error(`unsupported data type: ${A}`)}},fi=(A,g)=>{let e=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][A],I=typeof g=="number"?g:g.reduce((i,t)=>i*t,1);return e>0?Math.ceil(I*e):void 0},ir=A=>{switch(A){case"float16":return typeof Float16Array<"u"&&Float16Array.from?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${A}`)}},oC=A=>{switch(A){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${A}`)}},tr=A=>A==="float32"||A==="float16"||A==="int32"||A==="int64"||A==="uint32"||A==="uint8"||A==="bool"||A==="uint4"||A==="int4",or=A=>A==="float32"||A==="float16"||A==="int32"||A==="int64"||A==="uint32"||A==="uint64"||A==="int8"||A==="uint8"||A==="bool"||A==="uint4"||A==="int4",UB=A=>{switch(A){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw new Error(`unsupported data location: ${A}`)}}}),Cr,Ru=VA(()=>{Ar(),Cr=async A=>{if(typeof A=="string"){let g=await fetch(A);if(!g.ok)throw new Error(`failed to load external data file: ${A}`);let e=g.headers.get("Content-Length"),I=e?parseInt(e,10):0;if(I<1073741824)return new Uint8Array(await g.arrayBuffer());{if(!g.body)throw new Error(`failed to load external data file: ${A}, no response body.`);let i=g.body.getReader(),t;try{t=new ArrayBuffer(I)}catch(o){if(o instanceof RangeError){let s=Math.ceil(I/65536);t=new WebAssembly.Memory({initial:s,maximum:s}).buffer}else throw o}let C=0;for(;;){let{done:o,value:s}=await i.read();if(o)break;let B=s.byteLength;new Uint8Array(t,C,B).set(s),C+=B}return new Uint8Array(t,0,I)}}else return A instanceof Blob?new Uint8Array(await A.arrayBuffer()):A instanceof Uint8Array?A:new Uint8Array(A)}}),Rl,_l,Gl,kl,sr,Ll,Oe,OI=VA(()=>{Fe(),Rl=["V","I","W","E","F"],_l=(A,g)=>{console.log(`[${Rl[A]},${new Date().toISOString()}]${g}`)},sr=(A,g)=>{Gl=A,kl=g},Ll=(A,g)=>{let e=oC(A),I=oC(Gl);e>=I&&_l(e,typeof g=="function"?g():g)},Oe=(...A)=>{kl&&Ll(...A)}}),Kl,gt,FA,CC,_u,Gu,ku,Le=VA(()=>{Kl=class{static calcMatMulShape(A,g){return A[1]!==g[0]?void 0:[A[0],g[1]]}},gt=class{static calcShape(A,g,e=!1){let I=A.length,i=g.length;if(I===0)return g;if(i===0)return A;let t=Math.max(A.length,g.length),C=new Array(t);if(e){if(I<2||i<2)return;let o=Kl.calcMatMulShape([A[I-2],A[I-1]],[g[i-2],g[i-1]]);if(o===void 0)return;[C[t-2],C[t-1]]=o}for(let o=e?3:1;o<=t;o++){let s=I-o<0?1:A[I-o],B=i-o<0?1:g[i-o];if(s!==B&&s>1&&B>1)return;let Q=Math.max(s,B);if(s&&B)C[t-o]=Math.max(s,B);else{if(Q>1)return;C[t-o]=0}}return C}static isValidBroadcast(A,g){let e=A.length,I=g.length;if(e>I)return!1;for(let i=1;i<=e;i++)if(A[e-i]!==1&&A[e-i]!==g[I-i])return!1;return!0}},FA=class IC{static size(g){return IC.getSizeFromDimensionRange(g,0,g.length)}static convertShape(g,e=4){let I=g.length;if(I===0)return[];let i=new Array(I),t=I-1;for(;t>=0;){if(g[t]%e===0){i[t]=g[t]/e;break}if(e%g[t]!==0)throw new Error("cannot convert shape");i[t]=1,e/=g[t],t--}for(t--;t>=0;t--)i[t]=g[t];return i}static sizeFromDimension(g,e){if(e<0||e>g.length)throw new Error(`invalid dimension of ${e} for sizeFromDimension as Tensor has ${g.length} dimensions.`);return IC.getSizeFromDimensionRange(g,e,g.length)}static sizeToDimension(g,e){if(e<0||e>g.length)throw new Error(`invalid dimension of ${e} for sizeToDimension as Tensor has ${g.length} dimensions.`);return IC.getSizeFromDimensionRange(g,0,e)}static getSizeFromDimensionRange(g,e,I){let i=1;for(let t=e;t=0;--i)I[i]=I[i+1]*g[i+1];return I}static normalizeAxis(g,e){if(g<-e&&g>=e)throw new Error("unsupported axis for this operation.");return g<0?g+e:g}static normalizeAxes(g,e){return g.map(I=>this.normalizeAxis(I,e??g.length))}static sortBasedOnPerm(g,e){return e?e.map(I=>g[I]):g.slice().reverse()}static padShape(g,e){let I=g.length;return g.map((i,t)=>i+e[t]+e[t+I])}static areEqual(g,e){return g.length!==e.length?!1:g.every((I,i)=>I===e[i])}},CC=class Ht{static adjustPoolAttributes(g,e,I,i,t,C){if(!g&&I.length!==e.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(g)for(let o=0;o=I.length?I.push(e[o+2]):I[o]=e[o+2];for(let o=0;o=I[o]||C[o+I.length]>=I[o])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(g,e,I,i,t,C,o){if(o){if(t.length!==2*(g.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(e.length!==g.length-2)throw new Error("length of strides should be the length of data dimensions");if(i.length!==g.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let s=0;s{Fe(),Br=(A,g)=>new(ir(g))(A)}),JB,Os,Ul,Ws,Jl,js,Vs,zs,bl,Ku,Fy=VA(()=>{OI(),JB=(A,g=!0)=>{if(A.byteLength%8!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 8 (BigInt).");let e=A.byteLength/8,I=new BigInt64Array(A.buffer,A.byteOffset,e),i=new Int32Array(e);for(let t=0;t2147483647n||C<-2147483648n)throw new Error(`Overflow occurred when converting BigInt to Int32 at index ${t}: ${C}`);i[t]=Number(C)}return g?new Uint8Array(i.buffer):i},Os=(A,g=!0)=>{if(A.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (Int32).");let e=A.byteLength/4,I=new Int32Array(A.buffer,A.byteOffset,e),i=BigInt64Array.from(I,BigInt);return g?new Uint8Array(i.buffer):i},Ul=1,Ws=()=>Ul++,Jl=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),js=(A,g)=>{let e=Jl.get(A);if(!e)throw new Error("Unsupported data type.");return g.length>0?Math.ceil(g.reduce((I,i)=>I*i)*e/8):0},Vs=class{constructor(A){this.shouldConvertInt64toInt32=!1,this.isInt64ToInt32Converted=!1;let{sessionId:g,context:e,tensor:I,dataType:i,shape:t,shouldConvertInt64toInt32:C=!1}=A;this.sessionId=g,this.mlContext=e,this.mlTensor=I,this.dataType=i,this.tensorShape=t,this.shouldConvertInt64toInt32=C}get tensor(){return this.mlTensor}get type(){return this.dataType}get shape(){return this.tensorShape}get byteLength(){return js(this.dataType,this.tensorShape)}destroy(){Oe("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(A){this.mlContext.writeTensor(this.mlTensor,A)}async read(A,g){if(A){let e=await this.mlContext.readTensor(this.mlTensor),I=Os(new Uint8Array(e));if(g){(g instanceof ArrayBuffer?new Uint8Array(g):new Uint8Array(g.buffer,g.byteOffset,g.byteLength)).set(I);return}else return I.buffer}else return g?this.mlContext.readTensor(this.mlTensor,g):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(A,g,e){return this.mlContext===A&&this.dataType===g&&this.tensorShape.length===e.length&&this.tensorShape.every((I,i)=>I===e[i])}setIsInt64ToInt32Converted(A){this.isInt64ToInt32Converted=A}},zs=class{constructor(A,g){this.tensorManager=A,this.wrapper=g}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(A,g,e,I){let i=g,t=this.tensorManager.getMLContext(A),C=i==="int64"&&!t.opSupportLimits().input.dataTypes.includes("int64");if(C&&(i="int32",Oe("verbose",()=>"[WebNN] TensorIdTracker.ensureTensor: convert dataType from int64 to int32")),this.wrapper){if(this.wrapper.canReuseTensor(t,i,e))return this.wrapper.tensor;if(I){if(this.wrapper.byteLength!==js(i,e))throw new Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(A,i,e,o,!0,!0,C),I&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(A){let g=A;if(this.wrapper)if(this.wrapper.shouldConvertInt64toInt32&&(g=JB(A,!0),this.wrapper.setIsInt64ToInt32Converted(!0)),g.byteLength===this.wrapper.byteLength){this.wrapper.write(g);return}else Oe("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor();this.activeUpload?this.activeUpload.set(g):this.activeUpload=new Uint8Array(g)}async download(A){if(this.activeUpload){let g=this.wrapper?.isInt64ToInt32Converted?Os(this.activeUpload):this.activeUpload;if(A){A instanceof ArrayBuffer?new Uint8Array(A).set(g):new Uint8Array(A.buffer,A.byteOffset,A.byteLength).set(g);return}else return g.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return A?this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32,A):this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32)}},bl=class{constructor(A){this.backend=A,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(A){let g=this.backend.getMLContext(A);if(!g)throw new Error("MLContext not found for session.");return g}reserveTensorId(){let A=Ws();return this.tensorTrackersById.set(A,new zs(this)),A}releaseTensorId(A){let g=this.tensorTrackersById.get(A);g&&(this.tensorTrackersById.delete(A),g.tensorWrapper&&this.releaseTensor(g.tensorWrapper))}async ensureTensor(A,g,e,I,i){Oe("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${g}, dataType: ${e}, shape: ${I}, copyOld: ${i}}`);let t=this.tensorTrackersById.get(g);if(!t)throw new Error("Tensor not found.");return t.ensureTensor(A,e,I,i)}upload(A,g){let e=this.tensorTrackersById.get(A);if(!e)throw new Error("Tensor not found.");e.upload(g)}async download(A,g){Oe("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${A}, dstBuffer: ${g?.byteLength}}`);let e=this.tensorTrackersById.get(A);if(!e)throw new Error("Tensor not found.");return e.download(g)}releaseTensorsForSession(A){for(let g of this.freeTensors)g.sessionId===A&&g.destroy();this.freeTensors=this.freeTensors.filter(g=>g.sessionId!==A)}registerTensor(A,g,e,I){let i=this.getMLContext(A),t=Ws(),C=new Vs({sessionId:A,context:i,tensor:g,dataType:e,shape:I});return this.tensorTrackersById.set(t,new zs(this,C)),this.externalTensors.add(C),t}async getCachedTensor(A,g,e,I,i,t,C=!1){let o=this.getMLContext(A);for(let[B,Q]of this.freeTensors.entries())if(Q.canReuseTensor(o,g,e)){Oe("verbose",()=>`[WebNN] Reusing tensor {dataType: ${g}, shape: ${e}}`);let a=this.freeTensors.splice(B,1)[0];return a.sessionId=A,a}Oe("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${g}, shape: ${e}}`);let s=await o.createTensor({dataType:g,shape:e,dimensions:e,usage:I,writable:i,readable:t});return new Vs({sessionId:A,context:o,tensor:s,dataType:g,shape:e,shouldConvertInt64toInt32:C})}releaseTensor(A){this.externalTensors.has(A)&&this.externalTensors.delete(A),this.freeTensors.push(A)}},Ku=(...A)=>new bl(...A)}),vo,xl,Uu,Sy=VA(()=>{Fe(),Ni(),Lu(),Fy(),OI(),vo=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),xl=(A,g)=>{if(A===g)return!0;if(A===void 0||g===void 0)return!1;let e=Object.keys(A).sort(),I=Object.keys(g).sort();return e.length===I.length&&e.every((i,t)=>i===I[t]&&A[i]===g[i])},Uu=class{constructor(A){this.tensorManager=Ku(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.temporaryGraphInputs=[],this.temporarySessionTensorIds=new Map,sr(A.logLevel,!!A.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(A){Oe("verbose",()=>`[WebNN] onRunStart {sessionId: ${A}}`),this.activeSessionId=A}onRunEnd(A){Oe("verbose",()=>`[WebNN] onRunEnd {sessionId: ${A}}`);let g=this.temporarySessionTensorIds.get(A);if(g){for(let e of g)Oe("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e);this.temporarySessionTensorIds.delete(A),this.activeSessionId=void 0}}async createMLContext(A){if(A instanceof GPUDevice){let e=this.mlContextCache.findIndex(I=>I.gpuDevice===A);if(e!==-1)return this.mlContextCache[e].mlContext;{let I=await navigator.ml.createContext(A);return this.mlContextCache.push({gpuDevice:A,mlContext:I}),I}}else if(A===void 0){let e=this.mlContextCache.findIndex(I=>I.options===void 0&&I.gpuDevice===void 0);if(e!==-1)return this.mlContextCache[e].mlContext;{let I=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:I}),I}}let g=this.mlContextCache.findIndex(e=>xl(e.options,A));if(g!==-1)return this.mlContextCache[g].mlContext;{let e=await navigator.ml.createContext(A);return this.mlContextCache.push({options:A,mlContext:e}),e}}registerMLContext(A,g){this.mlContextBySessionId.set(A,g);let e=this.sessionIdsByMLContext.get(g);e||(e=new Set,this.sessionIdsByMLContext.set(g,e)),e.add(A),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(A,this.temporaryGraphInputs),this.temporaryGraphInputs=[])}onReleaseSession(A){this.sessionGraphInputs.delete(A);let g=this.mlContextBySessionId.get(A);if(!g)return;this.tensorManager.releaseTensorsForSession(A),this.mlContextBySessionId.delete(A);let e=this.sessionIdsByMLContext.get(g);if(e.delete(A),e.size===0){this.sessionIdsByMLContext.delete(g);let I=this.mlContextCache.findIndex(i=>i.mlContext===g);I!==-1&&this.mlContextCache.splice(I,1)}}getMLContext(A){return this.mlContextBySessionId.get(A)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(A){Oe("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${A}}`),this.tensorManager.releaseTensorId(A)}async ensureTensor(A,g,e,I,i){let t=vo.get(e);if(!t)throw new Error(`Unsupported ONNX data type: ${e}`);return this.tensorManager.ensureTensor(A??this.currentSessionId,g,t,I,i)}async createTemporaryTensor(A,g,e){Oe("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${g}, shape: ${e}}`);let I=vo.get(g);if(!I)throw new Error(`Unsupported ONNX data type: ${g}`);let i=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(A,i,I,e,!1);let t=this.temporarySessionTensorIds.get(A);return t?t.push(i):this.temporarySessionTensorIds.set(A,[i]),i}uploadTensor(A,g){if(!sg().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");Oe("verbose",()=>`[WebNN] uploadTensor {tensorId: ${A}, data: ${g.byteLength}}`),this.tensorManager.upload(A,g)}async downloadTensor(A,g){return this.tensorManager.download(A,g)}createMLTensorDownloader(A,g){return async()=>{let e=await this.tensorManager.download(A);return Br(e,g)}}registerMLTensor(A,g,e,I){let i=vo.get(e);if(!i)throw new Error(`Unsupported ONNX data type: ${e}`);let t=this.tensorManager.registerTensor(A,g,i,I);return Oe("verbose",()=>`[WebNN] registerMLTensor {tensor: ${g}, dataType: ${i}, dimensions: ${I}} -> {tensorId: ${t}}`),t}registerMLConstant(A,g,e,I,i,t,C=!1){if(!t)throw new Error("External mounted files are not available.");let o=A;A.startsWith("./")&&(o=A.substring(2));let s=t.get(o);if(!s)throw new Error(`File with name ${o} not found in preloaded files.`);if(g+e>s.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let B=s.slice(g,g+e).buffer,Q;switch(i.dataType){case"float32":Q=new Float32Array(B);break;case"float16":Q=typeof Float16Array<"u"&&Float16Array.from?new Float16Array(B):new Uint16Array(B);break;case"int32":Q=new Int32Array(B);break;case"uint32":Q=new Uint32Array(B);break;case"int64":C?(Q=JB(new Uint8Array(B),!1),i.dataType="int32"):Q=new BigInt64Array(B);break;case"uint64":Q=new BigUint64Array(B);break;case"int8":Q=new Int8Array(B);break;case"int4":case"uint4":case"uint8":Q=new Uint8Array(B);break;default:throw new Error(`Unsupported data type: ${i.dataType} in creating WebNN Constant from external data.`)}return Oe("verbose",()=>`[WebNN] registerMLConstant {dataType: ${i.dataType}, shape: ${i.shape}}} ${C?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),I.constant(i,Q)}registerGraphInput(A){this.temporaryGraphInputs.push(A)}isGraphInput(A,g){let e=this.sessionGraphInputs.get(A);return e?e.includes(g):!1}isInt64Supported(A){return!!this.mlContextBySessionId.get(A)?.opSupportLimits().input.dataTypes.includes("int64")}flush(){}}}),rr=VA(()=>{}),$s,qo,Oo,Tl,Yl,Xs,bB,Hl,Ju,Ny=VA(()=>{OI(),rr(),$s=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),qo=[],Oo=A=>Math.ceil(Number(A)/16)*16,Tl=A=>{for(let g=0;gYl++,bB=async(A,g,e,I)=>{let i=Oo(e),t=A.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let C=A.getCommandEncoder();A.endComputePass(),C.copyBufferToBuffer(g,0,t,0,i),A.flush(),await t.mapAsync(GPUMapMode.READ);let o=t.getMappedRange();if(I){let s=I();return s.set(new Uint8Array(o,0,e)),s}else return new Uint8Array(o.slice(0,e))}finally{t.destroy()}},Hl=class{constructor(A){this.backend=A,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[g]of $s)qo.push(g),this.freeBuffers.set(g,[]),this.freeUniformBuffers.set(g,[]);this.sessionCount=0}upload(A,g){let e=g.buffer,I=g.byteOffset,i=g.byteLength,t=Oo(i),C=this.storageCache.get(A);if(!C)throw new Error("gpu data for uploading does not exist");if(Number(C.originalSize)!==i)throw new Error(`inconsistent data size. gpu data size=${C.originalSize}, data size=${i}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:t,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),s=o.getMappedRange();new Uint8Array(s).set(new Uint8Array(e,I,i)),o.unmap();let B=this.backend.device.createCommandEncoder();B.copyBufferToBuffer(o,0,C.gpuData.buffer,0,t),this.backend.device.queue.submit([B.finish()]),o.destroy(),Oe("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${A})`)}memcpy(A,g){let e=this.storageCache.get(A);if(!e)throw new Error("source gpu data for memcpy does not exist");let I=this.storageCache.get(g);if(!I)throw new Error("destination gpu data for memcpy does not exist");if(e.originalSize!==I.originalSize)throw new Error("inconsistent source and destination gpu data size");let i=Oo(e.originalSize),t=this.backend.getCommandEncoder();this.backend.endComputePass(),t.copyBufferToBuffer(e.gpuData.buffer,0,I.gpuData.buffer,0,i)}registerExternalBuffer(A,g,e){let I;if(e){if(I=e[0],A===e[1])return Oe("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${g}) => id=${I}, buffer is the same, skip.`),I;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet. Please use the previous external buffer!`)}else I=Xs();return this.storageCache.set(I,{gpuData:{id:I,type:0,buffer:A},originalSize:g}),Oe("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${g}) => id=${I}, registered.`),I}unregisterExternalBuffer(A){A!==void 0&&(this.storageCache.delete(A),Oe("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${A}`))}create(A,g=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let e=Tl(A),I,i=(g&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,t=(g&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(i||t){let o=(i?this.freeBuffers:this.freeUniformBuffers).get(e);o?o.length>0?I=o.pop():I=this.backend.device.createBuffer({size:e,usage:g}):I=this.backend.device.createBuffer({size:e,usage:g})}else I=this.backend.device.createBuffer({size:e,usage:g});let C={id:Xs(),type:0,buffer:I};return this.storageCache.set(C.id,{gpuData:C,originalSize:Number(A)}),Oe("verbose",()=>`[WebGPU] GpuDataManager.create(size=${A}) => id=${C.id}`),C}get(A){return this.storageCache.get(A)?.gpuData}release(A){let g=typeof A=="bigint"?Number(A):A,e=this.storageCache.get(g);if(!e){if(this.storageCache.size===0)return 0;throw new Error("releasing data does not exist")}return Oe("verbose",()=>`[WebGPU] GpuDataManager.release(id=${g}), gpuDataId=${e.gpuData.id}`),this.storageCache.delete(g),this.buffersPending.push(e.gpuData.buffer),e.originalSize}async download(A,g){let e=this.storageCache.get(Number(A));if(!e)throw new Error("data does not exist");await bB(this.backend,e.gpuData.buffer,e.originalSize,g)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus==="default"){for(let A of this.buffersPending){let g=$s.get(A.size);if((A.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let e=this.freeBuffers.get(A.size)||[];g===void 0||e.length>=g?A.destroy():e.push(A)}else if((A.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let e=this.freeUniformBuffers.get(A.size)||[];g===void 0||e.length>=g?A.destroy():e.push(A)}else A.destroy()}this.buffersPending=[]}else{let A=this.capturedPendingBuffers.get(this.backend.currentSessionId);A||(A=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,A));for(let g of this.buffersPending)A.push(g);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(A=>{A.forEach(g=>{g.destroy()})}),this.freeUniformBuffers.forEach(A=>{A.forEach(g=>{g.destroy()})}),this.storageCache.forEach(A=>{A.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(A=>{A.forEach(g=>{g.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(A){let g=this.capturedPendingBuffers.get(A);g&&(g.forEach(e=>{e.destroy()}),this.capturedPendingBuffers.delete(A)),this.sessionCount-=1,this.sessionCount===0&&(Oe("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(e=>{e.gpuData.buffer.destroy()}),this.storageCache=new Map)}},Ju=(...A)=>new Hl(...A)}),Pl,$e,fg=VA(()=>{Pl=class{constructor(A){Object.assign(this,A)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(A=>`${this[A]}`).join(";")),this.key}},$e=A=>new Pl(A)}),It,Wo,Hg,Xg,he,Dg,xB,et,Ii,ce,Lt,UA,le,bu,ar,vl,xu,Je=VA(()=>{Fe(),Le(),It=64,Wo=(A,g)=>{if(g===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(A)){case 10:return g>1?`vec${g}`:"f16";case 1:return g>1?`vec${g}`:"f32";case 6:return g>1?`vec${g}`:"i32";case 12:return g>1?`vec${g}`:"u32";case 7:if(g>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(g>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(g!==4)throw new Error("bool must be vec4");return["u32","vec4"];case 22:return"i32";case 21:return"u32";default:throw new Error(`Unknown data type: ${A}`)}},Hg=(A,g=1)=>{let e=Wo(A,g);return typeof e=="string"?e:e[0]},Xg=(A,g=1)=>{let e=Wo(A,g);return typeof e=="string"?e:e[1]},he=(...A)=>{let g=[];return A.forEach(e=>{e.length!==0&&g.push({type:12,data:e},{type:12,data:FA.computeStrides(e)})}),g},Dg=A=>A%4===0?4:A%2===0?2:1,xB=(A="f32",g,e="0")=>!g||g===1?`${A}(${e})`:`vec${g}<${A}>(${e})`,et=(A,g,e)=>A==="f32"?e:g===1?`f32(${e})`:`vec${g}(${e})`,Ii=(A,g)=>g===4?`(${A}.x + ${A}.y + ${A}.z + ${A}.w)`:g===2?`(${A}.x + ${A}.y)`:g===3?`(${A}.x + ${A}.y + ${A}.z)`:A,ce=(A,g,e,I)=>A.startsWith("uniforms.")&&e>4?typeof g=="string"?I==="f16"?`${A}[(${g}) / 8][(${g}) % 8 / 4][(${g}) % 8 % 4]`:`${A}[(${g}) / 4][(${g}) % 4]`:I==="f16"?`${A}[${Math.floor(g/8)}][${Math.floor(g%8/4)}][${g%8%4}]`:`${A}[${Math.floor(g/4)}][${g%4}]`:e>1?`${A}[${g}]`:A,Lt=(A,g,e,I,i)=>{let t=typeof e=="number",C=t?e:e.length,o=[...new Array(C).keys()],s=C<2?"u32":C<=4?`vec${C}`:`array`,B=Wo(g,i),Q=typeof B=="string"?B:B[1],a=typeof B=="string"?B:B[0],r={indices:s,value:Q,storage:a,tensor:g},d=P=>typeof P=="string"?P:`${P}u`,c={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},f=t?"uniforms.":"",k=`${f}${A}_shape`,u=`${f}${A}_strides`,D="";for(let P=0;P ${r.indices} { var indices: ${r.indices}; var current = offset; ${D} return indices; }`,h=P=>(c.offsetToIndices=!0,C<2?P:`o2i_${A}(${P})`),y=[];if(C>=2)for(let P=C-1;P>=0;P--)y.push(`${ce(u,P,C)} * (indices[${P}])`);let M=C<2?"":` fn i2o_${A}(indices: ${r.indices}) -> u32 { return ${y.join("+")}; }`,m=P=>(c.indicesToOffset=!0,C<2?P:`i2o_${A}(${P})`),_=(...P)=>C===0?"0u":`${r.indices}(${P.map(d).join(",")})`,x=(P,U)=>C<2?`${P}`:`${ce(P,U,C)}`,b=(P,U,z)=>C<2?`${P}=${z};`:`${ce(P,U,C)}=${z};`,X={},Z=(P,U)=>{c.broadcastedIndicesToOffset=!0;let z=`${U.name}broadcastedIndicesTo${A}Offset`;if(z in X)return`${z}(${P})`;let v=[];for(let nA=C-1;nA>=0;nA--){let YA=U.indicesGet("outputIndices",nA+U.rank-C);v.push(`${x(u,nA)} * (${YA} % ${x(k,nA)})`)}return X[z]=`fn ${z}(outputIndices: ${U.type.indices}) -> u32 { return ${v.length>0?v.join("+"):"0u"}; }`,`${z}(${P})`},T=(P,U)=>(()=>{if(r.storage===r.value)return`${A}[${P}]=${U};`;if(r.storage==="vec2"&&r.value==="i32")return`${A}[${P}]=vec2(u32(${U}), select(0u, 0xFFFFFFFFu, ${U} < 0));`;if(r.storage==="vec2"&&r.value==="u32")return`${A}[${P}]=vec2(u32(${U}), 0u);`;if(r.storage==="u32"&&r.value==="vec4")return`${A}[${P}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${U}));`;throw new Error(`not supported combination of storage type ${r.storage} and value type ${r.value} yet`)})(),CA=P=>(()=>{if(r.storage===r.value)return`${A}[${P}]`;if(r.storage==="vec2"&&r.value==="i32")return`i32(${A}[${P}].x)`;if(r.storage==="vec2"&&r.value==="u32")return`u32(${A}[${P}].x)`;if(r.storage==="u32"&&r.value==="vec4")return`vec4(bool(${A}[${P}] & 0xFFu), bool(${A}[${P}] & 0xFF00u), bool(${A}[${P}] & 0xFF0000u), bool(${A}[${P}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${r.storage} and value type ${r.value} yet`)})(),eA=C<2?"":` fn get_${A}ByIndices(indices: ${r.indices}) -> ${Q} { return ${CA(`i2o_${A}(indices)`)}; }`,tA=C<2?"":(()=>{let P=o.map(z=>`d${z}: u32`).join(", "),U=o.map(z=>`d${z}`).join(", ");return` fn get_${A}(${P}) -> ${Q} { return get_${A}ByIndices(${_(U)}); }`})(),BA=(...P)=>{if(P.length!==C)throw new Error(`indices length must be ${C}`);let U=P.map(d).join(",");return C===0?CA("0u"):C===1?CA(U[0]):(c.get=!0,c.getByIndices=!0,c.indicesToOffset=!0,`get_${A}(${U})`)},sA=P=>C<2?CA(P):(c.getByIndices=!0,c.indicesToOffset=!0,`get_${A}ByIndices(${P})`),cA=C<2?"":` fn set_${A}ByIndices(indices: ${r.indices}, value: ${Q}) { ${T(`i2o_${A}(indices)`,"value")} }`,dA=C<2?"":(()=>{let P=o.map(z=>`d${z}: u32`).join(", "),U=o.map(z=>`d${z}`).join(", ");return` fn set_${A}(${P}, value: ${Q}) { set_${A}ByIndices(${_(U)}, value); }`})();return{impl:()=>{let P=[],U=!1;return c.offsetToIndices&&(P.push(G),U=!0),c.indicesToOffset&&(P.push(M),U=!0),c.broadcastedIndicesToOffset&&(Object.values(X).forEach(z=>P.push(z)),U=!0),c.set&&(P.push(dA),U=!0),c.setByIndices&&(P.push(cA),U=!0),c.get&&(P.push(tA),U=!0),c.getByIndices&&(P.push(eA),U=!0),!t&&U&&P.unshift(`const ${k} = ${r.indices}(${e.join(",")});`,`const ${u} = ${r.indices}(${FA.computeStrides(e).join(",")});`),P.join(` `)},type:r,offsetToIndices:h,indicesToOffset:m,broadcastedIndicesToOffset:Z,indices:_,indicesGet:x,indicesSet:b,set:(...P)=>{if(P.length!==C+1)throw new Error(`indices length must be ${C}`);let U=P[C];if(typeof U!="string")throw new Error("value must be string");let z=P.slice(0,C).map(d).join(",");return C===0?T("0u",U):C===1?T(z[0],U):(c.set=!0,c.setByIndices=!0,c.indicesToOffset=!0,`set_${A}(${z}, ${U})`)},setByOffset:T,setByIndices:(P,U)=>C<2?T(P,U):(c.setByIndices=!0,c.indicesToOffset=!0,`set_${A}ByIndices(${P}, ${U});`),get:BA,getByOffset:CA,getByIndices:sA,usage:I,name:A,strides:u,shape:k,rank:C}},UA=(A,g,e,I=1)=>Lt(A,g,e,"input",I),le=(A,g,e,I=1)=>Lt(A,g,e,"output",I),bu=(A,g,e)=>Lt(A,g,e,"atomicOutput",1),ar=(A,g,e,I=1)=>Lt(A,g,e,"internal",I),vl=class{constructor(A,g){this.normalizedDispatchGroup=A,this.limits=g,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(A){return`if (global_idx >= ${typeof A=="number"?`${A}u`:A}) { return; }`}mainStart(A=It){let g=typeof A=="number"?A:A[0],e=typeof A=="number"?1:A[1],I=typeof A=="number"?1:A[2];if(g>this.limits.maxComputeWorkgroupSizeX||e>this.limits.maxComputeWorkgroupSizeY||I>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${g}, ${e}, ${I}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(g*e*I>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${g}, ${e}, ${I}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let i=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,t=i?`@builtin(global_invocation_id) global_id : vec3, @builtin(workgroup_id) workgroup_id : vec3, @builtin(local_invocation_index) local_idx : u32, @builtin(local_invocation_id) local_id : vec3`:`@builtin(global_invocation_id) global_id : vec3, @builtin(local_invocation_id) local_id : vec3, @builtin(local_invocation_index) local_idx : u32, @builtin(workgroup_id) workgroup_id : vec3, @builtin(num_workgroups) num_workgroups : vec3`,C=i?`let global_idx = global_id.x; let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] + workgroup_id.y * num_workgroups[0] + workgroup_id.x; let global_idx = workgroup_index * ${g*e*I}u + local_idx;`;return`@compute @workgroup_size(${g}, ${e}, ${I}) fn main(${t}) { ${C} `}appendVariableUniforms(A){A.rank!==0&&(A.shape.startsWith("uniforms.")&&this.uniforms.push({name:A.shape.replace("uniforms.",""),type:"u32",length:A.rank}),A.strides.startsWith("uniforms.")&&this.uniforms.push({name:A.strides.replace("uniforms.",""),type:"u32",length:A.rank}))}declareVariable(A,g){if(A.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(A),this.appendVariableUniforms(A);let e=A.usage==="input"?"read":"read_write",I=A.usage==="atomicOutput"?"atomic":A.type.storage;return`@group(0) @binding(${g}) var ${A.name}: array<${I}>;`}declareVariables(...A){return A.map(g=>this.declareVariable(g,this.variableIndex++)).join(` `)}registerInternalVariable(A){if(A.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(A),this.appendVariableUniforms(A)}registerInternalVariables(...A){return A.forEach(g=>this.registerInternalVariable(g)),this}registerUniform(A,g,e=1){return this.uniforms.push({name:A,type:g,length:e}),this}registerUniforms(A){return this.uniforms=this.uniforms.concat(A),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let A=[];for(let{name:g,type:e,length:I}of this.uniforms)if(I&&I>4)e==="f16"?A.push(`@align(16) ${g}:array, ${Math.ceil(I/8)}>`):A.push(`${g}:array, ${Math.ceil(I/4)}>`);else{let i=I==null||I===1?e:`vec${I}<${e}>`;A.push(`${g}:${i}`)}return` struct Uniforms { ${A.join(", ")} }; @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(A=>A.impl()).join(` `)+this.internalVariables.map(A=>A.impl()).join(` `)}get variablesInfo(){if(this.uniforms.length===0)return;let A=g=>[12,10,1,6][["u32","f16","f32","i32"].indexOf(g)];return this.uniforms.map(g=>[A(g.type),g.length??1])}},xu=(A,g)=>new vl(A,g)}),ql,Zs,Ol,Wl,jl,Vl,QI,Tu,Yu,ii=VA(()=>{Fe(),Le(),fg(),Je(),ql=(A,g)=>{if(!A||A.length!==1)throw new Error("Transpose requires 1 input.");if(g.length!==0&&g.length!==A[0].dims.length)throw new Error(`perm size ${g.length} does not match input rank ${A[0].dims.length}`)},Zs=(A,g)=>g.length!==0?g:[...new Array(A).keys()].reverse(),Ol=(A,g)=>FA.sortBasedOnPerm(A,Zs(A.length,g)),Wl=(A,g,e,I)=>{let i=`fn perm(i: ${I.type.indices}) -> ${e.type.indices} { var a: ${e.type.indices};`;for(let t=0;t{let e=[],I=[];for(let i=0;i{let e=0;for(let I=0;I{let e=A.dataType,I=A.dims.length,i=Zs(I,g),t=Ol(A.dims,i),C=A.dims,o=t,s=I<2||Vl(i,A.dims),B;if(s)return B=c=>{let f=UA("input",e,C,4),k=le("output",e,o,4);return` ${c.registerUniform("output_size","u32").declareVariables(f,k)} ${c.mainStart()} ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} output[global_idx] = input[global_idx]; }`},{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let c=FA.size(t);return{outputs:[{dims:t,dataType:A.dataType}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:[{type:12,data:Math.ceil(c/4)}]}},getShaderSource:B};let{newShape:Q,newPerm:a}=jl(A.dims,i),r=FA.areEqual(a,[2,3,1]),d=FA.areEqual(a,[3,1,2]);if(Q.length===2||r||d){C=r?[Q[0],Q[1]*Q[2]]:d?[Q[0]*Q[1],Q[2]]:Q,o=[C[1],C[0]];let c=16;return B=f=>{let k=UA("a",e,C.length),u=le("output",e,o.length);return` ${f.registerUniform("output_size","u32").declareVariables(k,u)} var tile : array, ${c}>; ${f.mainStart([c,c,1])} let stride = (uniforms.output_shape[1] - 1) / ${c} + 1; let workgroup_id_x = workgroup_index % stride; let workgroup_id_y = workgroup_index / stride; let input_col = workgroup_id_y * ${c}u + local_id.x; let input_row = workgroup_id_x * ${c}u + local_id.y; if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) { tile[local_id.y][local_id.x] = ${k.getByIndices(`${k.type.indices}(input_row, input_col)`)}; } workgroupBarrier(); let output_col = workgroup_id_x * ${c}u + local_id.x; let output_row = workgroup_id_y * ${c}u + local_id.y; if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) { ${u.setByIndices(`${u.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")} } }`},{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let f=FA.size(t);return{outputs:[{dims:t,dataType:A.dataType}],dispatchGroup:{x:Math.ceil(o[1]/c),y:Math.ceil(o[0]/c)},programUniforms:[{type:12,data:f},...he(C,o)]}},getShaderSource:B}}return B=c=>{let f=UA("a",e,C.length),k=le("output",e,o.length);return` ${c.registerUniform("output_size","u32").declareVariables(f,k)} ${Wl(i,I,f,k)} ${c.mainStart()} ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let indices = ${k.offsetToIndices("global_idx")}; let aIndices = perm(indices); ${k.setByOffset("global_idx",f.getByIndices("aIndices"))} }`},{name:"Transpose",shaderCache:{hint:`${g}`,inputDependencies:["rank"]},getRunData:()=>{let c=FA.size(t);return{outputs:[{dims:t,dataType:A.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},...he(C,o)]}},getShaderSource:B}},Tu=(A,g)=>{ql(A.inputs,g.perm),A.compute(QI(A.inputs[0],g.perm))},Yu=A=>$e({perm:A.perm})}),zl,$l,Xl,Zl,Ac,ec,gc,Ic,ic,tc,SI,Hu,Pu,vu,qu,Ou,Wu,ju,Vu,zu,$u,Ry=VA(()=>{Fe(),Le(),Je(),Qr(),ii(),zl={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},$l={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},Xl={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},Zl={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},Ac=(A,g)=>{let e=[];for(let I=g-A;I{let e=[],I=A.length;for(let t=0;tA[t]);return[e,i]},gc=(A,g)=>{let e=A.length+g.length,I=[],i=0;for(let t=0;t{for(let e=0;e{let e=[];if(!Ic(A,g)){for(let I=0;Ie.push(I))}return e},tc=(A,g,e,I,i,t,C)=>{let o=e[0].dims,s=FA.size(t),B=FA.size(C),Q=UA("_A",e[0].dataType,o),a=le("output",i,t),r=64;s===1&&(r=256);let d=` var aBestValues : array; `,c=f=>` ${f.registerUniform("reduceSize","u32").declareVariables(Q,a)} ${d} fn DIV_CEIL(a : u32, b : u32) -> u32 { return ((a - 1u) / b + 1u); } ${f.mainStart(r)} let outputIndex = global_idx / ${r}; let offset = outputIndex * uniforms.reduceSize; var bestValue = f32(${Xl[I]}); let Length = uniforms.reduceSize; for (var k = local_idx; k < Length; k = k + ${r}) { let candidate = f32(${Q.getByOffset("offset + k")}); bestValue = ${zl[I]}; } aBestValues[local_idx] = bestValue; workgroupBarrier(); var reduceSize = min(Length, ${r}u); for (var currentSize = reduceSize / 2u; reduceSize > 1u; currentSize = reduceSize / 2u) { let interval = DIV_CEIL(reduceSize, 2u); if (local_idx < currentSize) { let candidate = aBestValues[local_idx + interval]; bestValue = ${$l[I]}; aBestValues[local_idx] = bestValue; } reduceSize = interval; workgroupBarrier(); } if (local_idx == 0u) { ${a.setByOffset("outputIndex",`${I==="mean"?`${a.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${a.type.storage}(${Zl[I]})`}`)}; } }`;return{name:A,shaderCache:{hint:`${g};${r}`,inputDependencies:["type"]},getShaderSource:c,getRunData:()=>({outputs:[{dims:t,dataType:i}],dispatchGroup:{x:s},programUniforms:[{type:12,data:B}]})}},SI=(A,g,e,I)=>{let i=A.inputs.length===1?e:TB(A.inputs,e),t=i.axes;t.length===0&&!i.noopWithEmptyAxes&&(t=A.inputs[0].dims.map((d,c)=>c));let C=FA.normalizeAxes(t,A.inputs[0].dims.length),o=C,s=A.inputs[0],B=ic(o,A.inputs[0].dims.length);B.length>0&&(s=A.compute(QI(A.inputs[0],B),{inputs:[0],outputs:[-1]})[0],o=Ac(o.length,s.dims.length));let[Q,a]=ec(s.dims,o),r=Q;i.keepDims&&(r=gc(Q,C)),A.compute(tc(g,i.cacheKey,[s],I,A.inputs[0].dataType,r,a),{inputs:[s]})},Hu=(A,g)=>{SI(A,"ReduceMeanShared",g,"mean")},Pu=(A,g)=>{SI(A,"ReduceL1Shared",g,"l1")},vu=(A,g)=>{SI(A,"ReduceL2Shared",g,"l2")},qu=(A,g)=>{SI(A,"ReduceLogSumExpShared",g,"logSumExp")},Ou=(A,g)=>{SI(A,"ReduceMaxShared",g,"max")},Wu=(A,g)=>{SI(A,"ReduceMinShared",g,"min")},ju=(A,g)=>{SI(A,"ReduceProdShared",g,"prod")},Vu=(A,g)=>{SI(A,"ReduceSumShared",g,"sum")},zu=(A,g)=>{SI(A,"ReduceSumSquareShared",g,"sumSquare")},$u=(A,g)=>{SI(A,"ReduceLogSumShared",g,"logSum")}}),NI,oc,sC,TB,RI,Cc,sc,Bc,rc,ac,Qc,Ec,nc,lc,cc,_I,Xu,Zu,AD,eD,gD,ID,iD,tD,oD,CD,Qr=VA(()=>{Fe(),Le(),fg(),Je(),Ry(),NI=A=>{if(!A||A.length===0||A.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(A.length===2&&A[1].dims.length!==1)throw new Error("Invalid axes input dims.")},oc=A=>["","",`var value = ${A.getByIndices("input_indices")};`,""],sC=(A,g,e,I,i,t,C=!1,o=!1)=>{let s=[],B=e[0].dims,Q=B.length,a=FA.normalizeAxes(i,Q),r=!o&&a.length===0;B.forEach((f,k)=>{r||a.indexOf(k)>=0?C&&s.push(1):s.push(f)});let d=s.length,c=FA.size(s);return{name:A,shaderCache:g,getShaderSource:f=>{let k=[],u=UA("_A",e[0].dataType,Q),D=le("output",t,d),G=I(u,D,a),h=G[2];for(let y=0,M=0;y=0?(C&&M++,h=`for(var j${y}: u32 = 0; j${y} < ${B[y]}; j${y}++) { ${G[2].includes("last_index")?`let last_index = j${y};`:""} ${u.indicesSet("input_indices",y,`j${y}`)} ${h} }`):(k.push(`${u.indicesSet("input_indices",y,D.indicesGet("output_indices",M))};`),M++);return` ${f.registerUniform("output_size","u32").declareVariables(u,D)} ${f.mainStart()} ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} var input_indices: ${u.type.indices}; let output_indices = ${D.offsetToIndices("global_idx")}; ${k.join(` `)} ${G[0]} // init ops for reduce max/min ${G[1]} ${h} ${G[3]} ${G.length===4?D.setByOffset("global_idx","value"):G.slice(4).join(` `)} }`},getRunData:()=>({outputs:[{dims:s,dataType:t}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},...he(B,s)]})}},TB=(A,g)=>{let e=[];return A[1].dims[0]>0&&A[1].getBigInt64Array().forEach(I=>e.push(Number(I))),$e({axes:e,keepDims:g.keepDims,noopWithEmptyAxes:g.noopWithEmptyAxes})},RI=(A,g,e,I)=>{let i=A.inputs,t=i.length===1?e:TB(i,e);A.compute(sC(g,{hint:t.cacheKey,inputDependencies:["rank"]},[i[0]],t.noopWithEmptyAxes&&t.axes.length===0?oc:I,t.axes,i[0].dataType,t.keepDims,t.noopWithEmptyAxes),{inputs:[0]})},Cc=(A,g)=>{NI(A.inputs),RI(A,"ReduceLogSum",g,(e,I)=>[`var value = ${I.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,"value = log(value);"])},sc=(A,g)=>{NI(A.inputs),RI(A,"ReduceL1",g,(e,I)=>[`var value = ${I.type.storage}(0);`,"",`value += abs(${e.getByIndices("input_indices")});`,""])},Bc=(A,g)=>{NI(A.inputs),RI(A,"ReduceL2",g,(e,I)=>[`var t = ${I.type.value}(0); var value = ${I.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},rc=(A,g)=>{NI(A.inputs),RI(A,"ReduceLogSumExp",g,(e,I)=>[`var value = ${I.type.storage}(0);`,"",`value += exp(${e.getByIndices("input_indices")});`,"value = log(value);"])},ac=(A,g)=>{NI(A.inputs),RI(A,"ReduceMax",g,(e,I,i)=>{let t=[];for(let C=0;C=0||i.length===0)&&t.push(e.indicesSet("input_indices",C,0));return[`${t.join(` `)}`,`var value = ${e.getByIndices("input_indices")};`,`value = max(value, ${e.getByIndices("input_indices")});`,""]})},Qc=(A,g)=>{NI(A.inputs),RI(A,"ReduceMean",g,(e,I,i)=>{let t=1;for(let C=0;C=0||i.length===0)&&(t*=A.inputs[0].dims[C]);return["var sum = f32(0);","",`sum += f32(${e.getByIndices("input_indices")});`,`let value = ${I.type.value}(sum / ${t});`]})},Ec=(A,g)=>{NI(A.inputs),RI(A,"ReduceMin",g,(e,I,i)=>{let t=[];for(let C=0;C=0||i.length===0)&&t.push(`input_indices[${C}] = 0;`);return[`${t.join(` `)}`,`var value = ${e.getByIndices("input_indices")};`,`value = min(value, ${e.getByIndices("input_indices")});`,""]})},nc=(A,g)=>{NI(A.inputs),RI(A,"ReduceProd",g,(e,I)=>[`var value = ${I.type.storage}(1);`,"",`value *= ${e.getByIndices("input_indices")};`,""])},lc=(A,g)=>{NI(A.inputs),RI(A,"ReduceSum",g,(e,I)=>[`var value = ${I.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,""])},cc=(A,g)=>{NI(A.inputs),RI(A,"ReduceSumSquare",g,(e,I)=>[`var t = ${I.type.value}(0); var value = ${I.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += t * t;`,""])},_I=(A,g,e)=>{if(g.length===0)return e;let I=1,i=1;for(let t=0;t1024},Xu=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?Qc(A,g):Hu(A,g)},Zu=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?sc(A,g):Pu(A,g)},AD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?Bc(A,g):vu(A,g)},eD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?rc(A,g):qu(A,g)},gD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?ac(A,g):Ou(A,g)},ID=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?Ec(A,g):Wu(A,g)},iD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?nc(A,g):ju(A,g)},tD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?lc(A,g):Vu(A,g)},oD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?cc(A,g):zu(A,g)},CD=(A,g)=>{_I(A.inputs[0].dims,g.axes,g.noopWithEmptyAxes)?Cc(A,g):$u(A,g)}}),AB,sD,BD,YB,_y=VA(()=>{Fe(),fg(),Qr(),AB=A=>{if(!A||A.length===0||A.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(A[0].dataType!==1)throw new Error("Invalid input type.")},sD=(A,g)=>{AB(A.inputs);let e=(I,i,t)=>{let C=[];for(let o=0;o=0||t.length===0)&&C.push(`input_indices[${o}] = 0;`);return[`${C.join(` `)}`,`var value = ${I.getByIndices("input_indices")}; var best_index : i32 = 0;`,`if (${I.getByIndices("input_indices")} ${g.selectLastIndex>0?"<=":"<"} value) { value = ${I.getByIndices("input_indices")}; best_index = i32(last_index); }`,"",i.setByOffset("global_idx","best_index")]};A.compute(sC("ArgMin",{hint:g.cacheKey,inputDependencies:["rank"]},[A.inputs[0]],e,[g.axis],7,g.keepDims),{inputs:[0]})},BD=(A,g)=>{AB(A.inputs);let e=(I,i,t)=>{let C=[];for(let o=0;o=0||t.length===0)&&C.push(`input_indices[${o}] = 0;`);return[`${C.join(` `)}`,`var value = ${I.getByIndices("input_indices")}; var best_index : i32 = 0;`,`if (${I.getByIndices("input_indices")} ${g.selectLastIndex>0?">=":">"} value) { value = ${I.getByIndices("input_indices")}; best_index = i32(last_index); }`,"",i.setByOffset("global_idx","best_index")]};A.compute(sC("argMax",{hint:g.cacheKey,inputDependencies:["rank"]},[A.inputs[0]],e,[g.axis],7,g.keepDims),{inputs:[0]})},YB=A=>$e(A)}),dc,jo,hc,uc,Dc,jt,wc,rD,Er=VA(()=>{Fe(),Le(),rr(),Je(),dc=(A,g)=>{let e=A[0],I=A[1],i=A[2],t=A[3],C=A[4],o=A[5];if(C&&o)throw new Error("Attention cannot have both past and attention_bias");if(e.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let s=e.dims[0],B=e.dims[1],Q=e.dims[2];if(i.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(I.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(I.dims[0]!==Q)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(i.dims[0]!==I.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let a=i.dims[0]/3,r=a,d=r;if(g.qkvHiddenSizes.length>0){if(g.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let G of g.qkvHiddenSizes)if(G%g.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");a=g.qkvHiddenSizes[0],r=g.qkvHiddenSizes[1],d=g.qkvHiddenSizes[2]}let c=B;if(a!==r)throw new Error("qkv_hidden_sizes first element should be same as the second");if(i.dims[0]!==a+r+d)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let f=0;if(C){if(r!==d)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(C.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(C.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(C.dims[1]!==s)throw new Error('Input "past" second dimension must be batch_size');if(C.dims[2]!==g.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(C.dims[4]!==r/g.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');g.pastPresentShareBuffer||(f=C.dims[3])}let k=c+f,u=-1,D=0;if(t)throw new Error("Mask not supported");if(C)throw new Error("past is not supported");if(o){if(o.dims.length!==4)throw new Error('Input "attention_bias" must have 4 dimensions');if(o.dims[0]!==s||o.dims[1]!==g.numHeads||o.dims[2]!==B||o.dims[3]!==k)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:s,sequenceLength:B,pastSequenceLength:f,kvSequenceLength:c,totalSequenceLength:k,maxSequenceLength:u,inputHiddenSize:Q,hiddenSize:a,vHiddenSize:d,headSize:Math.floor(a/g.numHeads),vHeadSize:Math.floor(d/g.numHeads),numHeads:g.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:g.maskFilterValue,maskType:D,scale:g.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},jo=(A,g,e)=>g&&A?` let total_sequence_length_input = u32(${g.getByOffset("0")}); let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length); let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input; let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input; total_sequence_length = u32(${A?.getByOffset("batchIdx")}) + 1; var past_sequence_length: u32 = 0; if (is_first_prompt == false) { past_sequence_length = total_sequence_length - sequence_length; } `:` ${e?"let past_sequence_length = uniforms.past_sequence_length":""}; let present_sequence_length = total_sequence_length; `,hc=(A,g,e,I,i,t,C,o)=>{let s=Dg(C?1:t),B=64,Q=t/s;Q{let D=le("x",A.dataType,A.dims,s),G=[D],h=C?UA("seq_lens",C.dataType,C.dims):void 0;h&&G.push(h);let y=o?UA("total_sequence_length_input",o.dataType,o.dims):void 0;y&&G.push(y);let M=Xg(A.dataType),m=[{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}];return` var thread_max: array; var thread_sum: array; ${u.registerUniforms(m).declareVariables(...G)} ${u.mainStart([B,1,1])} let batchIdx = workgroup_id.z / uniforms.num_heads; let headIdx = workgroup_id.z % uniforms.num_heads; let sequence_length = uniforms.sequence_length; var total_sequence_length = uniforms.total_sequence_length; ${jo(h,y,!1)} let local_offset = local_idx * uniforms.elements_per_thread; let offset = (global_idx / ${B}) * uniforms.total_sequence_length + local_offset; let seq_causal_length = ${C?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"}; var thread_max_vector = ${c}(-3.402823e+38f); for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { thread_max_vector = max(${c}(x[offset + i]), thread_max_vector); } thread_max[local_idx] = ${(()=>{switch(s){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw new Error(`Unsupported components: ${s}`)}})()}; workgroupBarrier(); var max_value = f32(-3.402823e+38f); for (var i = 0u; i < ${B}; i++) { max_value = max(thread_max[i], max_value); } var sum_vector = ${c}(0); for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { sum_vector += exp(${c}(x[offset + i]) - max_value); } thread_sum[local_idx] = ${(()=>{switch(s){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw new Error(`Unsupported components: ${s}`)}})()}; workgroupBarrier(); var sum: f32 = 0; for (var i = 0u; i < ${B}; i++) { sum += thread_sum[i]; } if (sum == 0) { for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { x[offset + i] = ${D.type.value}(${M}(1.0) / ${M}(seq_causal_length)); } } else { for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { var f32input = ${c}(x[offset + i]); x[offset + i] = ${D.type.value}(exp(f32input - max_value) / sum); } } ${C?` for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) { x[offset + total_seq_id] = ${D.type.value}(${M}(0)); }`:""}; }`};return{name:"AttentionProbsSoftmax",shaderCache:{hint:`${B};${d};${s}`,inputDependencies:f},getShaderSource:k,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:i,z:g*e},programUniforms:r})}},uc=(A,g,e,I,i,t,C,o,s)=>{let B=C+t.kvSequenceLength,Q=[t.batchSize,t.numHeads,t.sequenceLength,B],a=A>1&&I,r=t.kvNumHeads?t.kvNumHeads:t.numHeads,d=a?[t.batchSize,r,B,t.headSize]:void 0,c=t.nReps?t.nReps:1,f=t.scale===0?1/Math.sqrt(t.headSize):t.scale,k=Dg(t.headSize),u=t.headSize/k,D=12,G={x:Math.ceil(B/D),y:Math.ceil(t.sequenceLength/D),z:t.batchSize*t.numHeads},h=[{type:12,data:t.sequenceLength},{type:12,data:u},{type:12,data:B},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:1,data:f},{type:12,data:C},{type:12,data:t.kvSequenceLength},{type:12,data:c}],y=a&&I&&FA.size(I.dims)>0,M=["type","type"];y&&M.push("type"),i&&M.push("type"),o&&M.push("type"),s&&M.push("type");let m=[{dims:Q,dataType:g.dataType,gpuDataType:0}];a&&m.push({dims:d,dataType:g.dataType,gpuDataType:0});let _=x=>{let b=UA("q",g.dataType,g.dims,k),X=UA("key",e.dataType,e.dims,k),Z=[b,X];if(y){let cA=UA("past_key",I.dataType,I.dims,k);Z.push(cA)}i&&Z.push(UA("attention_bias",i.dataType,i.dims));let T=o?UA("seq_lens",o.dataType,o.dims):void 0;T&&Z.push(T);let CA=s?UA("total_sequence_length_input",s.dataType,s.dims):void 0;CA&&Z.push(CA);let eA=le("output",g.dataType,Q),tA=[eA];a&&tA.push(le("present_key",g.dataType,d,k));let BA=Xg(1,k),sA=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` const TILE_SIZE = ${D}u; var tileQ: array<${b.type.storage}, ${D*D}>; var tileK: array<${b.type.storage}, ${D*D}>; ${x.registerUniforms(sA).declareVariables(...Z,...tA)} ${x.mainStart([D,D,1])} // x holds the N and y holds the M let headIdx = workgroup_id.z % uniforms.num_heads; let kvHeadIdx = ${c===1?"headIdx":"headIdx / uniforms.n_reps"}; let kv_num_heads = ${c===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; let batchIdx = workgroup_id.z / uniforms.num_heads; let m = workgroup_id.y * TILE_SIZE; let n = workgroup_id.x * TILE_SIZE; let sequence_length = uniforms.M; var total_sequence_length = uniforms.N; ${jo(T,CA,!0)} let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; ${y&&a?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""}; let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K; ${a?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""} var value = ${BA}(0); for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) { tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x]; } if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) { var idx = TILE_SIZE * local_id.y + local_id.x; ${y&&a?` if (n + local_id.y < past_sequence_length) { tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x]; }`:` if (n + local_id.y < uniforms.kv_sequence_length) { tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; }`} ${a?`if (n + local_id.y < present_sequence_length) { present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx]; }`:""} } workgroupBarrier(); for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) { value += ${BA}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]); } workgroupBarrier(); } if (global_id.y < uniforms.M && global_id.x < total_sequence_length) { let headOffset = workgroup_id.z * uniforms.M * uniforms.N; let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x; var sum: f32 = ${(()=>{switch(k){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw new Error(`Unsupported components: ${k}`)}})()}; output[outputIdx] = ${eA.type.value} (sum * uniforms.alpha) + ${i?"attention_bias[outputIdx]":"0.0"}; } }`};return{name:"AttentionProbs",shaderCache:{hint:`${k};${i!==void 0};${I!==void 0};${A}`,inputDependencies:M},getRunData:()=>({outputs:m,dispatchGroup:G,programUniforms:h}),getShaderSource:_}},Dc=(A,g,e,I,i,t,C=void 0,o=void 0)=>{let s=t+i.kvSequenceLength,B=i.nReps?i.nReps:1,Q=i.vHiddenSize*B,a=A>1&&I,r=i.kvNumHeads?i.kvNumHeads:i.numHeads,d=a?[i.batchSize,r,s,i.headSize]:void 0,c=[i.batchSize,i.sequenceLength,Q],f=12,k={x:Math.ceil(i.vHeadSize/f),y:Math.ceil(i.sequenceLength/f),z:i.batchSize*i.numHeads},u=[{type:12,data:i.sequenceLength},{type:12,data:s},{type:12,data:i.vHeadSize},{type:12,data:i.numHeads},{type:12,data:i.headSize},{type:12,data:Q},{type:12,data:t},{type:12,data:i.kvSequenceLength},{type:12,data:B}],D=a&&I&&FA.size(I.dims)>0,G=["type","type"];D&&G.push("type"),C&&G.push("type"),o&&G.push("type");let h=[{dims:c,dataType:g.dataType,gpuDataType:0}];a&&h.push({dims:d,dataType:g.dataType,gpuDataType:0});let y=M=>{let m=UA("probs",g.dataType,g.dims),_=UA("v",e.dataType,e.dims),x=[m,_];D&&x.push(UA("past_value",I.dataType,I.dims));let b=C?UA("seq_lens",C.dataType,C.dims):void 0;C&&x.push(b);let X=o?UA("total_sequence_length_input",o.dataType,o.dims):void 0;o&&x.push(X);let Z=[le("output",g.dataType,c)];a&&Z.push(le("present_value",g.dataType,d));let T=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return` const TILE_SIZE = ${f}u; var tileQ: array<${m.type.value}, ${f*f}>; var tileV: array<${m.type.value}, ${f*f}>; ${M.registerUniforms(T).declareVariables(...x,...Z)} ${M.mainStart([f,f,1])} let headIdx = workgroup_id.z % uniforms.num_heads; let batchIdx = workgroup_id.z / uniforms.num_heads; let kvHeadIdx = ${B===1?"headIdx":"headIdx / uniforms.n_reps"}; let kv_num_heads = ${B===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; let m = global_id.y; let n = global_id.x; let sequence_length = uniforms.M; var total_sequence_length = uniforms.K; ${jo(b,X,!0)} let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch ${D&&a?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""}; let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n; ${a?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""} var value = ${m.type.storage}(0); for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { if (m < uniforms.M && w + local_id.x < uniforms.K) { tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x]; } if (n < uniforms.N && w + local_id.y < uniforms.K) { var idx = TILE_SIZE * local_id.y + local_id.x; ${D&&a?` if (w + local_id.y < past_sequence_length) { tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N]; } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N]; } `:` if (w + local_id.y < uniforms.kv_sequence_length) { tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N]; }`} ${a?` if (w + local_id.y < present_sequence_length) { present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx]; }`:""} } workgroupBarrier(); for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) { value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x]; } workgroupBarrier(); } // we need to transpose output from BNSH_v to BSND_v if (m < uniforms.M && n < uniforms.N) { let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size + headIdx * uniforms.N + n; output[outputIdx] = value; } }`};return{name:"AttentionScore",shaderCache:{hint:`${I!==void 0};${A}`,inputDependencies:G},getRunData:()=>({outputs:h,dispatchGroup:k,programUniforms:u}),getShaderSource:y}},jt=(A,g,e,I,i,t,C,o,s,B,Q=void 0,a=void 0)=>{let r=Math.min(A.outputCount,1+(C?1:0)+(o?1:0)),d=r>1?B.pastSequenceLength:0,c=d+B.kvSequenceLength,f=s&&FA.size(s.dims)>0?s:void 0,k=[g,e];r>1&&C&&FA.size(C.dims)>0&&k.push(C),f&&k.push(f),Q&&k.push(Q),a&&k.push(a);let u=A.compute(uc(r,g,e,C,f,B,d,Q,a),{inputs:k,outputs:r>1?[-1,1]:[-1]})[0];A.compute(hc(u,B.batchSize,B.numHeads,d,B.sequenceLength,c,Q,a),{inputs:Q&&a?[u,Q,a]:[u],outputs:[]});let D=[u,I];r>1&&o&&FA.size(o.dims)>0&&D.push(o),Q&&D.push(Q),a&&D.push(a),A.compute(Dc(r,u,I,o,B,d,Q,a),{inputs:D,outputs:r>1?[0,2]:[0]})},wc=(A,g)=>{let e=[g.batchSize,g.numHeads,g.sequenceLength,g.headSize],I=g.sequenceLength,i=g.inputHiddenSize,t=g.headSize,C=12,o={x:Math.ceil(g.headSize/C),y:Math.ceil(g.sequenceLength/C),z:g.batchSize*g.numHeads},s=[A.inputs[0],A.inputs[1],A.inputs[2]],B=[{type:12,data:I},{type:12,data:i},{type:12,data:t},{type:12,data:g.numHeads},{type:12,data:g.headSize},{type:12,data:g.hiddenSize},{type:12,data:g.hiddenSize+g.hiddenSize+g.vHiddenSize}],Q=a=>{let r=le("output_q",s[0].dataType,e),d=le("output_k",s[0].dataType,e),c=le("output_v",s[0].dataType,e),f=UA("input",s[0].dataType,s[0].dims),k=UA("weight",s[1].dataType,s[1].dims),u=UA("bias",s[2].dataType,s[2].dims),D=f.type.storage,G=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return` const TILE_SIZE = ${C}u; var tileInput: array<${D}, ${C*C}>; var tileWeightQ: array<${D}, ${C*C}>; var tileWeightK: array<${D}, ${C*C}>; var tileWeightV: array<${D}, ${C*C}>; ${a.registerUniforms(G).declareVariables(f,k,u,r,d,c)} ${a.mainStart([C,C,1])} let batchIndex = workgroup_id.z / uniforms.num_heads; let headNumber = workgroup_id.z % uniforms.num_heads; let m = global_id.y; let n = global_id.x; let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K; let biasOffsetQ = headNumber * uniforms.head_size; let biasOffsetK = uniforms.hidden_size + biasOffsetQ; let biasOffsetV = uniforms.hidden_size + biasOffsetK; var valueQ = ${D}(0); var valueK = ${D}(0); var valueV = ${D}(0); for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { if (m < uniforms.M && w + local_id.x < uniforms.K) { tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x]; } if (n < uniforms.N && w + local_id.y < uniforms.K) { let offset = n + (w + local_id.y) * uniforms.ldb; tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset]; tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset]; tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset]; } workgroupBarrier(); for (var k: u32 = 0u; k({outputs:[{dims:e,dataType:A.inputs[0].dataType,gpuDataType:0},{dims:e,dataType:A.inputs[0].dataType,gpuDataType:0},{dims:e,dataType:A.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:B}),getShaderSource:Q},{inputs:s,outputs:[-1,-1,-1]})},rD=(A,g)=>{let e=dc(A.inputs,g),[I,i,t]=wc(A,e);return jt(A,I,i,t,A.inputs[4],void 0,void 0,void 0,A.inputs[5],e)}}),pc,yc,fc,aD,Gy=VA(()=>{JI(),Fe(),Le(),fg(),Je(),pc=(A,g)=>{if(!A||A.length!==5)throw new Error("BatchNormalization requires 5 inputs");let e=(I,i,t)=>{let C=i.length;if(C!==I.length)throw new Error(`${t}: num dimensions != ${C}`);i.forEach((o,s)=>{if(o!==I[s])throw new Error(`${t}: dim[${s}] do not match`)})};if(A[0].dims.length>1){let I=g.format==="NHWC"?g.spatial?A[0].dims.slice(-1):A[0].dims.slice(-1).concat(A[0].dims.slice(1,A[0].dims.length-1)):A[0].dims.slice(1,g.spatial?2:void 0);e(A[1].dims,I,"Invalid input scale"),e(A[2].dims,I,"Invalid input B"),e(A[3].dims,I,"Invalid input mean"),e(A[4].dims,I,"Invalid input var")}else e(A[1].dims,[1],"Invalid input scale"),e(A[2].dims,[1],"Invalid input B"),e(A[3].dims,[1],"Invalid input mean"),e(A[4].dims,[1],"Invalid input var")},yc=(A,g)=>{let{epsilon:e,spatial:I,format:i}=g,t=A[0].dims,C=I?Dg(t[t.length-1]):1,o=i==="NHWC"&&t.length>1?C:1,s=FA.size(t)/C,B=I,Q=B?t.length:t,a=UA("x",A[0].dataType,A[0].dims,C),r=UA("scale",A[1].dataType,A[1].dims,o),d=UA("bias",A[2].dataType,A[2].dims,o),c=UA("inputMean",A[3].dataType,A[3].dims,o),f=UA("inputVar",A[4].dataType,A[4].dims,o),k=le("y",A[0].dataType,Q,C),u=()=>{let G="";if(I)G=`let cOffset = ${t.length===1?"0u":i==="NHWC"?`outputIndices[${t.length-1}] / ${C}`:"outputIndices[1]"};`;else if(i==="NCHW")G=` ${k.indicesSet("outputIndices","0","0")} let cOffset = ${k.indicesToOffset("outputIndices")};`;else{G=`var cIndices = ${r.type.indices}(0); cIndices[0] = outputIndices[${t.length-1}];`;for(let h=1;h` const epsilon = ${e}; ${G.registerUniform("outputSize","u32").declareVariables(a,r,d,c,f,k)} ${G.mainStart()} ${G.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} var outputIndices = ${k.offsetToIndices(`global_idx * ${C}`)}; ${u()} let scale = ${r.getByOffset("cOffset")}; let bias = ${d.getByOffset("cOffset")}; let inputMean = ${c.getByOffset("cOffset")}; let inputVar = ${f.getByOffset("cOffset")}; let x = ${a.getByOffset("global_idx")}; let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias; ${k.setByOffset("global_idx","value")} }`;return{name:"BatchNormalization",shaderCache:{hint:`${g.epsilon}_${g.format}_${I}_${C}`,inputDependencies:B?["rank","type","type","type","type"]:void 0},getShaderSource:D,getRunData:()=>({outputs:[{dims:A[0].dims,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:B?[{type:12,data:s},...he(t)]:[{type:12,data:s}]})}},fc=A=>$e(A),aD=(A,g)=>{let{inputs:e,outputCount:I}=A,i=fc({...g,outputCount:I});if(rg.webgpu.validateInputContent&&pc(e,i),g.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");A.compute(yc(e,i))}}),mc,Mc,QD,ky=VA(()=>{Le(),Je(),mc=A=>{if(A[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(A[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(A[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(A[0].dims[2]!==A[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Mc=A=>{let g=A[0].dims,e=A[0].dims[2],I=FA.size(g)/4,i=A[0].dataType,t=UA("input",i,g,4),C=UA("bias",i,[e],4),o=UA("residual",i,g,4),s=le("output",i,g,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:g,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(I/64)}}),getShaderSource:B=>` const channels = ${e}u / 4; ${B.declareVariables(t,C,o,s)} ${B.mainStart()} ${B.guardAgainstOutOfBoundsWorkgroupSizes(I)} let value = ${t.getByOffset("global_idx")} + ${C.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")}; ${s.setByOffset("global_idx","value")} }`}},QD=A=>{mc(A.inputs),A.compute(Mc(A.inputs))}}),Fc,Ve,ED,nD,lD,cD,dD,hD,uD,DD,wD,Sc,pD,yD,fD,mD,Pt,MD,iC,FD,SD,ND,RD,_D,GD,kD,LD,KD,UD,JD,bD,xD,TD,YD,HD,eB,PD,HB,PB,vD,qD,OD,Nc,Rc,WD,nr=VA(()=>{Fe(),Le(),fg(),Je(),Fc=(A,g,e,I,i,t,C)=>{let o=Math.ceil(g/4),s="";typeof i=="string"?s=`${i}(a)`:s=i("a");let B=UA("inputData",e,[o],4),Q=le("outputData",I,[o],4),a=[{name:"vec_size",type:"u32"}];return C&&a.push(...C),` ${A.registerUniforms(a).declareVariables(B,Q)} ${t??""} ${A.mainStart()} ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} let a = ${B.getByOffset("global_idx")}; ${Q.setByOffset("global_idx",s)} }`},Ve=(A,g,e,I,i,t=A.dataType,C,o)=>{let s=[{type:12,data:Math.ceil(FA.size(A.dims)/4)}];return C&&s.push(...C),{name:g,shaderCache:{hint:i,inputDependencies:["type"]},getShaderSource:B=>Fc(B,FA.size(A.dims),A.dataType,t,e,I,o),getRunData:B=>({outputs:[{dims:A.dims,dataType:t}],dispatchGroup:{x:Math.ceil(FA.size(B[0].dims)/64/4)},programUniforms:s})}},ED=A=>{A.compute(Ve(A.inputs[0],"Abs","abs"))},nD=A=>{A.compute(Ve(A.inputs[0],"Acos","acos"))},lD=A=>{A.compute(Ve(A.inputs[0],"Acosh","acosh"))},cD=A=>{A.compute(Ve(A.inputs[0],"Asin","asin"))},dD=A=>{A.compute(Ve(A.inputs[0],"Asinh","asinh"))},hD=A=>{A.compute(Ve(A.inputs[0],"Atan","atan"))},uD=A=>{A.compute(Ve(A.inputs[0],"Atanh","atanh"))},DD=A=>$e(A),wD=(A,g)=>{let e;switch(g.to){case 10:e="vec4";break;case 1:e="vec4";break;case 12:e="vec4";break;case 6:e="vec4";break;case 9:e="vec4";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${g.to}`)}A.compute(Ve(A.inputs[0],"Cast",e,void 0,g.cacheKey,g.to))},Sc=A=>{let g,e,I=A.length>=2&&A[1].data!==0,i=A.length>=3&&A[2].data!==0;switch(A[0].dataType){case 1:g=I?A[1].getFloat32Array()[0]:-34028234663852886e22,e=i?A[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:g=I?A[1].getUint16Array()[0]:64511,e=i?A[2].getUint16Array()[0]:31743;break;default:throw new Error("Unsupport data type")}return $e({min:g,max:e})},pD=(A,g)=>{let e=g||Sc(A.inputs),I=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"Clip",i=>`clamp(${i}, vec4<${I}>(uniforms.min), vec4<${I}>(uniforms.max))`,void 0,e.cacheKey,void 0,[{type:A.inputs[0].dataType,data:e.min},{type:A.inputs[0].dataType,data:e.max}],[{name:"min",type:I},{name:"max",type:I}]),{inputs:[0]})},yD=A=>{A.compute(Ve(A.inputs[0],"Ceil","ceil"))},fD=A=>{A.compute(Ve(A.inputs[0],"Cos","cos"))},mD=A=>{A.compute(Ve(A.inputs[0],"Cosh","cosh"))},Pt=A=>$e(A),MD=(A,g)=>{let e=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"Elu",I=>`elu_vf32(${I})`,` const elu_alpha_ = ${e}(${g.alpha}); fn elu_f32(a: ${e}) -> ${e} { return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0); } fn elu_vf32(v: vec4<${e}>) -> vec4<${e}> { return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w)); }`,g.cacheKey))},iC=(A="f32")=>` const r0: ${A} = 0.3275911; const r1: ${A} = 0.254829592; const r2: ${A} = -0.284496736; const r3: ${A} = 1.421413741; const r4: ${A} = -1.453152027; const r5: ${A} = 1.061405429; fn erf_vf32(v: vec4<${A}>) -> vec4<${A}> { let absv = abs(v); let x = 1.0 / (1.0 + r0 * absv); return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv)); }`,FD=A=>{let g=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"Erf",e=>`erf_vf32(${e})`,iC(g)))},SD=A=>{A.compute(Ve(A.inputs[0],"Exp","exp"))},ND=A=>{A.compute(Ve(A.inputs[0],"Floor","floor"))},RD=A=>{let g=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"Gelu",e=>`0.5 * ${e} * (1.0 + erf_vf32(${e} * 0.7071067811865475))`,iC(g)))},_D=(A,g)=>{let e=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"LeakyRelu",I=>`select(leaky_relu_alpha_ * ${I}, ${I}, ${I} >= vec4<${e}>(0.0))`,`const leaky_relu_alpha_ = ${e}(${g.alpha});`,g.cacheKey))},GD=A=>{A.compute(Ve(A.inputs[0],"Not",g=>`!${g}`))},kD=A=>{A.compute(Ve(A.inputs[0],"Neg",g=>`-${g}`))},LD=A=>{A.compute(Ve(A.inputs[0],"Reciprocal",g=>`1.0/${g}`))},KD=A=>{let g=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"Relu",e=>`select(vec4<${g}>(0.0), ${e}, ${e} > vec4<${g}>(0.0))`))},UD=A=>{A.compute(Ve(A.inputs[0],"Sigmoid",g=>`(1.0 / (1.0 + exp(-${g})))`))},JD=A=>$e(A),bD=(A,g)=>{let e=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"HardSigmoid",I=>`max(vec4<${e}>(0.0), min(vec4<${e}>(1.0), ${g.alpha} * ${I} + vec4<${e}>(${g.beta})))`,void 0,g.cacheKey))},xD=A=>{A.compute(Ve(A.inputs[0],"Sin","sin"))},TD=A=>{A.compute(Ve(A.inputs[0],"Sinh","sinh"))},YD=A=>{A.compute(Ve(A.inputs[0],"Sqrt","sqrt"))},HD=A=>{A.compute(Ve(A.inputs[0],"Tan","tan"))},eB=A=>`sign(${A}) * (1 - exp(-2 * abs(${A}))) / (1 + exp(-2 * abs(${A})))`,PD=A=>{A.compute(Ve(A.inputs[0],"Tanh",eB))},HB=(A="f32")=>` const fast_gelu_a: ${A} = 0.5; const fast_gelu_b: ${A} = 0.7978845608028654; const fast_gelu_c: ${A} = 0.035677408136300125; fn tanh_v(v: vec4<${A}>) -> vec4<${A}> { return ${eB("v")}; } `,PB=A=>`(fast_gelu_a + fast_gelu_a * tanh_v(${A} * (fast_gelu_c * ${A} * ${A} + fast_gelu_b))) * ${A}`,vD=A=>{let g=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"FastGelu",PB,HB(g),void 0,A.inputs[0].dataType))},qD=(A,g)=>{let e=Xg(A.inputs[0].dataType);return A.compute(Ve(A.inputs[0],"ThresholdedRelu",I=>`select(vec4<${e}>(0.0), ${I}, ${I} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${e}>(${g.alpha});`,g.cacheKey)),0},OD=A=>{A.compute(Ve(A.inputs[0],"Log","log"))},Nc=(A,g)=>` const alpha = vec4<${A}>(${g}); const one = ${A}(1.0); const zero = ${A}(0.0); fn quick_gelu_impl(x: vec4<${A}>) -> vec4<${A}> { let v = x *alpha; var x1 : vec4<${A}>; for (var i = 0; i < 4; i = i + 1) { if (v[i] >= zero) { x1[i] = one / (one + exp(-v[i])); } else { x1[i] = one - one / (one + exp(v[i])); } } return x * x1; } `,Rc=A=>`quick_gelu_impl(${A})`,WD=(A,g)=>{let e=Xg(A.inputs[0].dataType);A.compute(Ve(A.inputs[0],"QuickGelu",Rc,Nc(e,g.alpha),g.cacheKey,A.inputs[0].dataType))}}),_c,Gc,jD,Ly=VA(()=>{Le(),Je(),nr(),_c=A=>{if(A[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(A[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(A[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(A[0].dims[2]!==A[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Gc=A=>{let g=A[0].dims.slice();g[2]=g[2]/2;let e=UA("input",A[0].dataType,A[0].dims,4),I=UA("bias",A[0].dataType,[A[0].dims[2]],4),i=le("output",A[0].dataType,g,4),t=FA.size(g)/4,C=Hg(A[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:g,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(t/64)}}),getShaderSource:o=>` const M_SQRT2 = sqrt(2.0); const halfChannels = ${A[0].dims[2]/4/2}u; ${o.declareVariables(e,I,i)} ${iC(C)} ${o.mainStart()} ${o.guardAgainstOutOfBoundsWorkgroupSizes(t)} let biasIdx = global_idx % halfChannels; let batchIndex = global_idx / halfChannels; let inputOffset = biasIdx + batchIndex * halfChannels * 2; let valueLeft = input[inputOffset] + bias[biasIdx]; let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels]; let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1); ${i.setByOffset("global_idx","valueLeft * geluRight")} }`}},jD=A=>{_c(A.inputs),A.compute(Gc(A.inputs))}}),kc,Lc,GI,VD,zD,$D,XD,ZD,Aw,ew,gw,Iw,iw,Ky=VA(()=>{Fe(),Le(),Je(),kc=(A,g,e,I,i,t,C,o,s,B,Q,a)=>{let r,d;typeof o=="string"?r=d=(D,G)=>`${o}((${D}),(${G}))`:typeof o=="function"?r=d=o:(r=o.scalar,d=o.vector);let c=le("outputData",Q,I.length,4),f=UA("aData",s,g.length,4),k=UA("bData",B,e.length,4),u;if(i)if(t){let D=FA.size(g)===1,G=FA.size(e)===1,h=g.length>0&&g[g.length-1]%4===0,y=e.length>0&&e[e.length-1]%4===0;D||G?u=c.setByOffset("global_idx",d(D?`${f.type.value}(${f.getByOffset("0")}.x)`:f.getByOffset("global_idx"),G?`${k.type.value}(${k.getByOffset("0")}.x)`:k.getByOffset("global_idx"))):u=` let outputIndices = ${c.offsetToIndices("global_idx * 4u")}; let offsetA = ${f.broadcastedIndicesToOffset("outputIndices",c)}; let offsetB = ${k.broadcastedIndicesToOffset("outputIndices",c)}; ${c.setByOffset("global_idx",d(C||h?f.getByOffset("offsetA / 4u"):`${f.type.value}(${f.getByOffset("offsetA / 4u")}[offsetA % 4u])`,C||y?k.getByOffset("offsetB / 4u"):`${k.type.value}(${k.getByOffset("offsetB / 4u")}[offsetB % 4u])`))} `}else u=c.setByOffset("global_idx",d(f.getByOffset("global_idx"),k.getByOffset("global_idx")));else{if(!t)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let D=(G,h,y="")=>{let M=`aData[indexA${h}][componentA${h}]`,m=`bData[indexB${h}][componentB${h}]`;return` let outputIndices${h} = ${c.offsetToIndices(`global_idx * 4u + ${h}u`)}; let offsetA${h} = ${f.broadcastedIndicesToOffset(`outputIndices${h}`,c)}; let offsetB${h} = ${k.broadcastedIndicesToOffset(`outputIndices${h}`,c)}; let indexA${h} = offsetA${h} / 4u; let indexB${h} = offsetB${h} / 4u; let componentA${h} = offsetA${h} % 4u; let componentB${h} = offsetB${h} % 4u; ${G}[${h}] = ${y}(${r(M,m)}); `};Q===9?u=` var data = vec4(0); ${D("data",0,"u32")} ${D("data",1,"u32")} ${D("data",2,"u32")} ${D("data",3,"u32")} outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:u=` ${D("outputData[global_idx]",0)} ${D("outputData[global_idx]",1)} ${D("outputData[global_idx]",2)} ${D("outputData[global_idx]",3)} `}return` ${A.registerUniform("vec_size","u32").declareVariables(f,k,c)} ${a??""} ${A.mainStart()} ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} ${u} }`},Lc=(A,g,e,I,i,t,C=e.dataType)=>{let o=e.dims.map(f=>Number(f)??1),s=I.dims.map(f=>Number(f)??1),B=!FA.areEqual(o,s),Q=o,a=FA.size(o),r=!1,d=!1,c=[B];if(B){let f=gt.calcShape(o,s,!1);if(!f)throw new Error("Can't perform binary op on the given tensors");Q=f.slice(),a=FA.size(Q);let k=FA.size(o)===1,u=FA.size(s)===1,D=o.length>0&&o[o.length-1]%4===0,G=s.length>0&&s[s.length-1]%4===0;c.push(k),c.push(u),c.push(D),c.push(G);let h=1;for(let y=1;yf.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:f=>kc(f,o,s,Q,r,B,d,i,e.dataType,I.dataType,C,t),getRunData:()=>({outputs:[{dims:Q,dataType:C}],dispatchGroup:{x:Math.ceil(a/64/4)},programUniforms:[{type:12,data:Math.ceil(FA.size(Q)/4)},...he(o,s,Q)]})}},GI=(A,g,e,I,i,t)=>{A.compute(Lc(g,i??"",A.inputs[0],A.inputs[1],e,I,t))},VD=A=>{GI(A,"Add",(g,e)=>`${g}+${e}`)},zD=A=>{GI(A,"Div",(g,e)=>`${g}/${e}`)},$D=A=>{GI(A,"Equal",{scalar:(g,e)=>`u32(${g}==${e})`,vector:(g,e)=>`vec4(${g}==${e})`},void 0,void 0,9)},XD=A=>{GI(A,"Mul",(g,e)=>`${g}*${e}`)},ZD=A=>{let g=UA("input",A.inputs[0].dataType,A.inputs[0].dims).type.value;GI(A,"Pow",{scalar:(e,I)=>`pow_custom(${e},${I})`,vector:(e,I)=>`pow_vector_custom(${e},${I})`},` fn pow_custom(a : ${g}, b : ${g}) -> ${g} { if (b == ${g}(0.0)) { return ${g}(1.0); } else if (a < ${g}(0.0) && f32(b) != floor(f32(b))) { return ${g}(pow(f32(a), f32(b))); // NaN } return select(sign(a), ${g}(1.0), round(f32(abs(b) % ${g}(2.0))) != 1.0) * ${g}(${g==="i32"?"round":""}(pow(f32(abs(a)), f32(b)))); } fn pow_vector_custom(a : vec4<${g}>, b : vec4<${g}>) -> vec4<${g}> { // TODO: implement vectorized pow return vec4<${g}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w)); } `)},Aw=A=>{GI(A,"Sub",(g,e)=>`${g}-${e}`)},ew=A=>{GI(A,"Greater",{scalar:(g,e)=>`u32(${g}>${e})`,vector:(g,e)=>`vec4(${g}>${e})`},void 0,void 0,9)},gw=A=>{GI(A,"Less",{scalar:(g,e)=>`u32(${g}<${e})`,vector:(g,e)=>`vec4(${g}<${e})`},void 0,void 0,9)},Iw=A=>{GI(A,"GreaterOrEqual",{scalar:(g,e)=>`u32(${g}>=${e})`,vector:(g,e)=>`vec4(${g}>=${e})`},void 0,void 0,9)},iw=A=>{GI(A,"LessOrEqual",{scalar:(g,e)=>`u32(${g}<=${e})`,vector:(g,e)=>`vec4(${g}<=${e})`},void 0,void 0,9)}}),Kc,Uc,Jc,bc,tw,ow,Uy=VA(()=>{Fe(),Le(),fg(),Je(),Kc=(A,g)=>{if(!A||A.length<1)throw new Error("too few inputs");let e=0,I=A[e],i=I.dataType,t=I.dims.length;A.forEach((C,o)=>{if(o!==e){if(C.dataType!==i)throw new Error("input tensors should be one type");if(C.dims.length!==t)throw new Error("input tensors should have the same shape");C.dims.forEach((s,B)=>{if(B!==g&&s!==I.dims[B])throw new Error("non concat dimensions must match")})}})},Uc=(A,g)=>` fn calculateInputIndex(index: u32) -> u32 { let sizeInConcatAxis = array(${g}); for (var i: u32 = 0u; i < ${A}; i += 1u ) { if (index < sizeInConcatAxis[i]) { return i; } } return ${A}u; }`,Jc=(A,g)=>{let e=A.length,I=[];for(let i=0;i{let i=FA.size(e),t=new Array(A.length),C=new Array(A.length),o=0,s=[],B=[],Q=[{type:12,data:i}];for(let f=0;f`uniforms.sizeInConcatAxis${f}`).join(","),c=f=>` ${(()=>{f.registerUniform("outputSize","u32");for(let k=0;k(${d}); ${r} -= sizeInConcatAxis[inputIndex - 1u]; } ${Jc(C,a)} }`;return{name:"Concat",shaderCache:{hint:`${g}`,inputDependencies:s},getRunData:()=>({outputs:[{dims:e,dataType:I}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:Q}),getShaderSource:c}},tw=(A,g)=>{let e=A.inputs,I=e[0].dims,i=FA.normalizeAxis(g.axis,I.length);Kc(e,i);let t=I.slice();t[i]=e.reduce((o,s)=>o+(s.dims.length>i?s.dims[i]:0),0);let C=e.filter(o=>FA.size(o.dims)>0);A.compute(bc(C,i,t,e[0].dataType),{inputs:C})},ow=A=>$e({axis:A.axis})}),Mi,Fi,Si,lr,Ri=VA(()=>{Fe(),Le(),Mi=(A,g,e="f32")=>{switch(A.activation){case"Relu":return`value = max(value, ${g}(0.0));`;case"Sigmoid":return`value = (${g}(1.0) / (${g}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${g}(${e}(uniforms.clip_min)), ${g}(${e}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${g}(0.0), min(${g}(1.0), ${e}(uniforms.alpha) * value + ${e}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${e}(uniforms.alpha) * value, value, value >= ${g}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value)); value = sign(value) * (1.0 - e2x) / (1.0 + e2x); `;case"":return"";default:throw new Error(`Unsupported activation ${A.activation}`)}},Fi=(A,g)=>{A.activation==="Clip"?g.push({type:1,data:A.clipMax},{type:1,data:A.clipMin}):A.activation==="HardSigmoid"?g.push({type:1,data:A.alpha},{type:1,data:A.beta}):A.activation==="LeakyRelu"&&g.push({type:1,data:A.alpha})},Si=(A,g)=>{A.activation==="Clip"?g.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):A.activation==="HardSigmoid"?g.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):A.activation==="LeakyRelu"&&g.push({name:"alpha",type:"f32"})},lr=A=>{let g=A?.activation||"";if(g==="HardSigmoid"){let[e,I]=A?.activation_params||[.2,.5];return{activation:g,alpha:e,beta:I}}else if(g==="Clip"){let[e,I]=A?.activation_params||[Gu,ku];return{activation:g,clipMax:I,clipMin:e}}else if(g==="LeakyRelu"){let[e]=A?.activation_params||[.01];return{activation:g,alpha:e}}return{activation:g}}}),vg,Cw,cr=VA(()=>{vg=(A,g)=>{switch(A){case 1:return g;case 2:return`vec2<${g}>`;case 3:return`vec3<${g}>`;case 4:return`vec4<${g}>`;default:throw new Error(`${A}-component is not supported.`)}},Cw=A=>` ${A?"value = value + getBiasByOutputCoords(coords);":""} `}),sw,Jy=VA(()=>{sw=A=>` fn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 { return dot(coords, vec4( shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1)); } fn getOutputIndexFromCoords(coords : vec4) -> i32 { return dot(coords, vec4( i32(${A}.x), i32(${A}.y), i32(${A}.z), 1)); } `}),qt,dr,hr=VA(()=>{Fe(),Le(),Je(),Ri(),qt=(A,g,e,I,i)=>{let t=I-e;return` ${Array.from({length:e}).map((C,o)=>` if (${ce(g.shape,o,g.rank)} != 1) { ${g.indicesSet(A,o,ce(i,o+t,I))} } else { ${g.indicesSet(A,o,0)} }`).join("")} `},dr=(A,g,e,I,i=!1,t)=>{let C=A[0].dims,o=A[1].dims,s=C[C.length-2],B=o[o.length-1],Q=C[C.length-1],a=Dg(B),r=Dg(Q),d=Dg(s),c=FA.size(e)/a/d,f=A.length>2,k=I?I.slice(0,-2):e.slice(0,-2),u=[FA.size(k),s,B],D=[{type:12,data:c},{type:12,data:s},{type:12,data:B},{type:12,data:Q}];Fi(g,D),D.push(...he(k,C,o)),f&&D.push(...he(A[2].dims)),D.push(...he(u));let G=h=>{let y=ar("batch_dims",A[0].dataType,k.length),M=UA("a",A[0].dataType,C.length,r),m=UA("b",A[1].dataType,o.length,a),_=le("output",A[0].dataType,u.length,a),x=Hg(_.type.tensor),b=Mi(g,_.type.value,x),X=[M,m],Z="";if(f){let eA=i?a:1;X.push(UA("bias",A[2].dataType,A[2].dims.length,eA)),Z=`${i?`value += bias[col / ${eA}];`:`value += ${_.type.value}(bias[row + i]);`}`}let T=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];Si(g,T);let CA=()=>{let eA=`var a_data: ${M.type.value};`;for(let tA=0;tA; for (var k: u32 = 0u; k < uniforms.K; k = k + ${r}) { ${CA()} } for (var i = 0u; i < ${d}u; i++) { var value = values[i]; ${Z} ${b} let cur_indices = ${_.type.indices}(batch, row + i, col); let offset = ${_.indicesToOffset("cur_indices")}; ${_.setByOffset(`offset / ${a}`,"value")}; } } `};return{name:"MatMulNaive",shaderCache:{hint:`${g.activation};${a};${r};${d};${i}`,inputDependencies:f?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:t?t(e):e,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:D}),getShaderSource:G}}}),xc,Tc,vB,gB,Yc,qB,Hc,BC,ur=VA(()=>{Fe(),Le(),Je(),Ri(),hr(),cr(),xc=(A,g)=>A?` mm_Asub[inputRow][inputCol] = mm_readA(batch, kStart + inputRow, globalRowStart / innerElementSize + inputCol${g?", batchIndices":""}); `:` mm_Asub[inputRow][inputCol] = mm_readA(batch, globalRow + innerRow, kStart / innerElementSize + inputCol${g?", batchIndices":""}); `,Tc=(A,g)=>A?` let ACached0 = mm_Asub[k * innerElementSize][localRow]; let ACached1 = mm_Asub[k * innerElementSize + 1][localRow]; let ACached2 = mm_Asub[k * innerElementSize + 2][localRow]; ${g===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"} for (var i = 0; i < rowPerThread; i = i + 1) { acc[i] = BCached0 * ACached0[i] + acc[i]; acc[i] = BCached1 * ACached1[i] + acc[i]; acc[i] = BCached2 * ACached2[i] + acc[i]; ${g===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"} }`:` for (var i = 0; i < rowPerThread; i = i + 1) { let ACached = mm_Asub[tileRow + i][k]; acc[i] = BCached0 * ACached.x + acc[i]; acc[i] = BCached1 * ACached.y + acc[i]; acc[i] = BCached2 * ACached.z + acc[i]; ${g===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"} }`,vB=(A,g,e="f32",I,i=!1,t=32,C=!1,o=32)=>{let s=g[1]*A[1],B=g[0]*A[0],Q=i?s:t,a=i?t:s,r=Q/g[0],d=t/g[1];if(!((i&&r===4&&A[1]===4||!i&&(r===3||r===4))&&Q%g[0]===0&&t%g[1]===0&&A[0]===4))throw new Error(`If transposeA ${i} is true, innerElementSize ${r} and workPerThread[1] ${A[1]} must be 4. Otherwise, innerElementSize ${r} must be 3 or 4. tileAWidth ${Q} must be divisible by workgroupSize[0]${g[0]}. tileInner ${t} must be divisible by workgroupSize[1] ${g[1]}. colPerThread ${A[0]} must be 4.`);return` var mm_Asub: array, ${Q/r}>, ${a}>; var mm_Bsub: array, ${B/A[0]}>, ${t}>; const rowPerThread = ${A[1]}; const colPerThread = ${A[0]}; const innerElementSize = ${r}; const tileInner = ${t}; @compute @workgroup_size(${g[0]}, ${g[1]}, ${g[2]}) fn main(@builtin(local_invocation_id) localId : vec3, @builtin(global_invocation_id) globalId : vec3, @builtin(workgroup_id) workgroupId : vec3) { let localRow = i32(localId.y); let tileRow = localRow * rowPerThread; let tileCol = i32(localId.x); let globalRow =i32(globalId.y) * rowPerThread; let globalCol = i32(globalId.x); let batch = ${C?"0":"i32(globalId.z)"}; ${I?`let batchIndices = ${I.offsetToIndices("u32(batch)")};`:""} let globalRowStart = i32(workgroupId.y) * ${s}; let num_tiles = ${C?`${Math.ceil(o/t)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; var kStart = ${C?`i32(globalId.z) * ${o}`:"0"}; var acc: array, rowPerThread>; // Loop over shared dimension. let tileRowB = localRow * ${d}; for (var t = 0; t < num_tiles; t = t + 1) { // Load one tile of A into local memory. for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { let inputRow = tileRow + innerRow; let inputCol = tileCol; ${xc(i,I)} } // Load one tile of B into local memory. for (var innerRow = 0; innerRow < ${d}; innerRow = innerRow + 1) { let inputRow = tileRowB + innerRow; let inputCol = tileCol; mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${I?", batchIndices":""}); } kStart = kStart + tileInner; workgroupBarrier(); // Compute acc values for a single thread. for (var k = 0; k < tileInner / innerElementSize; k = k + 1) { let BCached0 = mm_Bsub[k * innerElementSize][tileCol]; let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol]; let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol]; ${r===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"} ${Tc(i,r)} } workgroupBarrier(); } for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]); } }`},gB=(A,g)=>A?` mm_Asub[inputRow][inputCol] = mm_readA(batch, kStart + inputRow, globalRowStart + inputCol${g?", batchIndices":""}); `:` mm_Asub[inputRow][inputCol] = mm_readA(batch, globalRowStart + inputRow, kStart + inputCol${g?", batchIndices":""}); `,Yc=A=>A?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",qB=(A,g,e="f32",I,i=!1,t=32,C=!1,o=32,s=!1)=>{let B=A[1]*g[1],Q=A[0]*g[0],a=i?B:t,r=i?t:B;if(!(r%g[1]===0&&a%g[0]===0&&t%g[1]===0))throw new Error(`tileAHight ${r} must be divisible by workgroupSize[1]${g[1]}, tileAWidth ${a} must be divisible by workgroupSize[0]${g[0]}, tileInner ${t} must be divisible by workgroupSize[1]${g[1]}`);let d=r/g[1],c=a/g[0],f=t/g[1],k=s?` let localRow = i32(localId.y); let localCol = i32(localId.x); let globalRowStart = i32(workgroupId.y) * ${B}; let globalColStart = i32(workgroupId.x) * ${Q}; // Loop over shared dimension. for (var t = 0; t < num_tiles; t = t + 1) { // Load one tile of A into local memory. for (var inputRow = localRow; inputRow < ${r}; inputRow = inputRow + ${g[1]}) { for (var inputCol = localCol; inputCol < ${a}; inputCol = inputCol + ${g[0]}) { ${gB(i,I)} } } // Load one tile of B into local memory. for (var inputRow = localRow; inputRow < ${t}; inputRow = inputRow + ${g[1]}) { for (var inputCol = localCol; inputCol < ${Q}; inputCol = inputCol + ${g[0]}) { mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalColStart + inputCol${I?", batchIndices":""}); } } kStart = kStart + tileInner; workgroupBarrier(); // Compute acc values for a single thread. var BCached : array<${e}, colPerThread>; for (var k = 0; k < tileInner; k = k + 1) { for (var inner = 0; inner < colPerThread; inner = inner + 1) { BCached[inner] = mm_Bsub[k][localCol + inner * ${g[0]}]; } for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { let ACached = ${i?`mm_Asub[k][localRow + innerRow * ${g[1]}];`:`mm_Asub[localRow + innerRow * ${g[1]}][k];`} for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; } } } workgroupBarrier(); } for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { let gRow = globalRowStart + localRow + innerRow * ${g[1]}; for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { let gCol = globalColStart + localCol + innerCol * ${g[0]}; mm_write(batch, gRow, gCol, acc[innerRow][innerCol]); } } `:` let tileRow = i32(localId.y) * rowPerThread; let tileCol = i32(localId.x) * colPerThread; let globalRow = i32(globalId.y) * rowPerThread; let globalCol = i32(globalId.x) * colPerThread; let globalRowStart = i32(workgroupId.y) * ${B}; let tileRowA = i32(localId.y) * ${d}; let tileColA = i32(localId.x) * ${c}; let tileRowB = i32(localId.y) * ${f}; // Loop over shared dimension. for (var t = 0; t < num_tiles; t = t + 1) { // Load one tile of A into local memory. for (var innerRow = 0; innerRow < ${d}; innerRow = innerRow + 1) { for (var innerCol = 0; innerCol < ${c}; innerCol = innerCol + 1) { let inputRow = tileRowA + innerRow; let inputCol = tileColA + innerCol; ${gB(i,I)} } } // Load one tile of B into local memory. for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) { for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { let inputRow = tileRowB + innerRow; let inputCol = tileCol + innerCol; mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol + innerCol${I?", batchIndices":""}); } } kStart = kStart + tileInner; workgroupBarrier(); // Compute acc values for a single thread. var BCached : array<${e}, colPerThread>; for (var k = 0; k < tileInner; k = k + 1) { for (var inner = 0; inner < colPerThread; inner = inner + 1) { BCached[inner] = mm_Bsub[k][tileCol + inner]; } for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { ${Yc(i)} for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; } } } workgroupBarrier(); } for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { mm_write(batch, globalRow + innerRow, globalCol + innerCol, acc[innerRow][innerCol]); } } `;return` var mm_Asub : array, ${r}>; var mm_Bsub : array, ${t}>; const rowPerThread = ${A[1]}; const colPerThread = ${A[0]}; const tileInner = ${t}; @compute @workgroup_size(${g[0]}, ${g[1]}, ${g[2]}) fn main(@builtin(local_invocation_id) localId : vec3, @builtin(global_invocation_id) globalId : vec3, @builtin(workgroup_id) workgroupId : vec3) { let batch = ${C?"0":"i32(globalId.z)"}; ${I?`let batchIndices = ${I.offsetToIndices("u32(batch)")};`:""} let num_tiles = ${C?`${Math.ceil(o/t)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; var kStart = ${C?`i32(globalId.z) * ${o}`:"0"}; var acc : array, rowPerThread>; ${k} } `},Hc=(A,g,e,I,i=!1)=>{let[t,C,o,s]=I,B=Hg(I[0].type.tensor);return` fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${t.type.indices}) -> ${vg(A,B)} { var value = ${vg(A,B)}(0.0); let col = colIn * ${A}; if(row < uniforms.dim_a_outer && col < uniforms.dim_inner) { var aIndices: ${C.type.indices}; ${qt("aIndices",C,C.rank-2,t.rank,"batchIndices")} ${C.indicesSet("aIndices",C.rank-2,"u32(row)")} ${C.indicesSet("aIndices",C.rank-1,"u32(colIn)")} value = ${C.getByIndices("aIndices")}; } return value; } fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${t.type.indices}) -> ${vg(A,B)} { var value = ${vg(A,B)}(0.0); let col = colIn * ${A}; if(row < uniforms.dim_inner && col < uniforms.dim_b_outer) { var bIndices: ${o.type.indices}; ${qt("bIndices",o,o.rank-2,t.rank,"batchIndices")} ${o.indicesSet("bIndices",o.rank-2,"u32(row)")} ${o.indicesSet("bIndices",o.rank-1,"u32(colIn)")} value = ${o.getByIndices("bIndices")}; } return value; } fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${vg(A,B)}) { let col = colIn * ${A}; if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) { var value = valueIn; let coords = vec3(batch, row, colIn); ${g?`value = value + ${i?"bias[colIn]":`${vg(A,B)}(bias[row])`};`:""} ${e} ${s.setByIndices("vec3(coords)","value")} } } `},BC=(A,g,e,I,i=!1,t)=>{let C=A[0].dims,o=A[1].dims,s=C.slice(0,-2),B=o.slice(0,-2),Q=I?I.slice(0,-2):e.slice(0,-2),a=FA.size(Q),r=C[C.length-2],d=C[C.length-1],c=o[o.length-1],f=d%4===0&&c%4===0,k=r<=8?[4,1,1]:[4,4,1],u=[8,8,1],D=[Math.ceil(c/u[0]/k[0]),Math.ceil(r/u[1]/k[1]),Math.ceil(a/u[2]/k[2])],G=f?4:1,h=[...s,r,d/G],y=h.length,M=[...B,d,c/G],m=M.length,_=[a,r,c/G],x=[{type:6,data:r},{type:6,data:c},{type:6,data:d}];Fi(g,x),x.push(...he(Q,h,M));let b=["rank","rank"],X=A.length>2;X&&(x.push(...he(A[2].dims)),b.push("rank")),x.push(...he(_));let Z=T=>{let CA=Q.length,eA=ar("batchDims",A[0].dataType,CA,1),tA=Hg(A[0].dataType),BA=UA("a",A[0].dataType,y,G),sA=UA("b",A[1].dataType,m,G),cA=le("result",A[0].dataType,_.length,G),dA=[BA,sA];if(X){let nA=i?G:1;dA.push(UA("bias",A[2].dataType,A[2].dims.length,nA))}let P=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];Si(g,P);let U=Hg(cA.type.tensor),z=Mi(g,cA.type.value,U),v=Hc(G,X,z,[eA,BA,sA,cA],i);return` ${T.registerUniforms(P).registerInternalVariables(eA).declareVariables(...dA,cA)} ${v} ${f?vB(k,u,tA,eA):qB(k,u,tA,eA)} `};return{name:"MatMul",shaderCache:{hint:`${k};${g.activation};${f};${i}`,inputDependencies:b},getRunData:()=>({outputs:[{dims:t?t(e):e,dataType:A[0].dataType}],dispatchGroup:{x:D[0],y:D[1],z:D[2]},programUniforms:x}),getShaderSource:Z}}}),Pc,Bw,by=VA(()=>{Fe(),OI(),Je(),Ri(),cr(),Jy(),ur(),Pc=(A,g,e,I,i=!1,t,C=4,o=4,s=4,B="f32")=>{let Q=x=>{switch(x){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${B}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${x} is not supported.`)}},a=x=>{switch(x){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${x} is not supported.`)}},r=A?` let coord = vec4(batch, xRow, xCol, xCh); `:` let coord = vec4(batch, xCh, xRow, xCol); `,d=A?` let coords = vec4( batch, row / outWidth, row % outWidth, col); `:` let coords = vec4( batch, row, col / outWidth, col % outWidth); `,c=A?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",f=A?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",k=A?"row":"col",u=A?"col":"row",D=` let inChannels = i32(uniforms.w_shape[2]); let outWidth = ${A?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; let outRow = ${k} / outWidth; let outCol = ${k} % outWidth; let WRow = ${u} / (i32(uniforms.w_shape[1]) * inChannels); let WCol = ${u} / inChannels % i32(uniforms.w_shape[1]); let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0]; let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1]; let xCh = ${u} % inChannels; var resData = ${vg(C,B)}(0.0); // The bounds checking is always needed since we use it to pad zero for // the 'same' padding type. if (xRow >= 0 && xRow < ${c} && xCol >= 0 && xCol < ${f}) { ${r} let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape)); ${Q(C)} } return resData;`,G=A?g&&I?` let col = colIn * ${C}; ${D}`:` let col = colIn * ${C}; if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) { ${D} } return ${vg(C,B)}(0.0);`:I&&e?` let col = colIn * ${C}; ${D}`:` let col = colIn * ${C}; if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { ${D} } return ${vg(C,B)}(0.0);`,h=A?I&&e?a(o):` let col = colIn * ${o}; if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { ${a(o)} } return ${vg(o,B)}(0.0);`:` let col = colIn * ${o}; if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) { ${a(o)} } return ${vg(o,B)}(0.0);`,y=vg(s,B),M=vg(A?C:o,B),m=vg(A?o:C,B),_=Mi(t,y,B);return` fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${M} { ${A?G:h} } fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${m} { ${A?h:G} } fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${y}) { let col = colIn * ${s}; if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) { var value = valueIn; let outWidth = ${A?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; ${d} ${Cw(i)} ${_} setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value); } }`},Bw=(A,g,e,I,i,t,C,o,s)=>{let B=g.format==="NHWC",Q=B?A[0].dims[3]:A[0].dims[1],a=e[0],r=B?e[2]:e[3],d=B?e[1]:e[2],c=B?e[3]:e[1],f=B&&(Q%4===0||Q%3===0)&&c%4===0,k=B?c:r*d,u=B?r*d:c,D=[8,8,1],G=I<=8?[4,1,1]:[4,4,1],h=[Math.ceil(k/D[0]/G[0]),Math.ceil(u/D[1]/G[1]),Math.ceil(a/D[2]/G[2])];Oe("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${h}`);let y=f?B&&Q%4!==0?3:4:1,M=D[1]*G[1],m=D[0]*G[0],_=Math.max(D[0]*y,D[1]),x=I%M===0,b=i%m===0,X=t%_===0,Z=f?[y,4,4]:[1,1,1],T=[{type:6,data:I},{type:6,data:i},{type:6,data:t},{type:6,data:[g.pads[0],g.pads[1]]},{type:6,data:g.strides},{type:6,data:g.dilations}];Fi(g,T),T.push(...he(A[0].dims,A[1].dims));let CA=["rank","rank"];C&&(T.push(...he(A[2].dims)),CA.push("rank")),T.push(...he(e));let eA=tA=>{let BA=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];Si(g,BA);let sA=f?4:1,cA=Hg(A[0].dataType),dA=` fn setOutputAtIndex(flatIndex : i32, value : ${f?`vec4<${cA}>`:cA}) { result[flatIndex] = ${f?`vec4<${cA}>`:cA}(value); } fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${f?`vec4<${cA}>`:cA}) { let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3)); setOutputAtIndex(flatIndex ${f?"/ 4":""}, value); }`,P=UA("x",A[0].dataType,A[0].dims.length,y===3?1:y),U=UA("w",A[1].dataType,A[1].dims.length,sA),z=[P,U],v=le("result",A[0].dataType,e.length,sA);if(C){let nA=UA("bias",A[2].dataType,A[2].dims.length,sA);z.push(nA),dA+=` fn getBiasByOutputCoords(coords : vec4) -> ${f?`vec4<${cA}>`:cA} { return bias[coords.${B?"w":"y"}${f?"/ 4":""}]; }`}return` ${sw("uniforms.result_strides")} //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4, // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2, // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 }; ${tA.registerUniforms(BA).declareVariables(...z,v)} ${dA} ${Pc(B,x,b,X,C,g,Z[0],Z[1],Z[2],cA)} ${f?vB(G,D,cA,void 0,!B,_):qB(G,D,cA,void 0,!B,_,!1,void 0,o)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${g.cacheKey};${y};${f};${x};${b};${X};${M};${m};${_}`,inputDependencies:CA},getRunData:()=>({outputs:[{dims:s?s(e):e,dataType:A[0].dataType}],dispatchGroup:{x:h[0],y:h[1],z:h[2]},programUniforms:T}),getShaderSource:eA}}}),vc,IB,Kt,qc,iB,Oc,rw,aw,xy=VA(()=>{Fe(),OI(),Le(),Je(),Ri(),cr(),vc=A=>{let g=1;for(let e=0;etypeof A=="number"?[A,A,A]:A,Kt=(A,g)=>g<=1?A:A+(A-1)*(g-1),qc=(A,g,e,I=1)=>{let i=Kt(g,I);return Math.floor((A[0]*(e-1)-e+i)/2)},iB=(A,g,e,I,i)=>{i==null&&(i=qc(A,g[0],I[0]));let t=[0,0,0,e];for(let C=0;C<3;C++)A[C]+2*i>=g[C]&&(t[C]=Math.trunc((A[C]-g[C]+2*i)/I[C]+1));return t},Oc=(A,g,e,I,i,t,C,o,s,B)=>{let Q,a,r,d;if(A==="VALID"&&(A=0),typeof A=="number"){Q={top:A,bottom:A,left:A,right:A,front:A,back:A};let c=iB([g,e,I,1],[o,s,B],1,[i,t,C],A);a=c[0],r=c[1],d=c[2]}else if(Array.isArray(A)){if(!A.every((f,k,u)=>f===u[0]))throw Error(`Unsupported padding parameter: ${A}`);Q={top:A[0],bottom:A[1],left:A[2],right:A[3],front:A[4],back:A[5]};let c=iB([g,e,I,1],[o,s,B],1,[i,t,C],A[0]);a=c[0],r=c[1],d=c[2]}else if(A==="SAME_UPPER"){a=Math.ceil(g/i),r=Math.ceil(e/t),d=Math.ceil(I/C);let c=(a-1)*i+o-g,f=(r-1)*t+s-e,k=(d-1)*C+B-I,u=Math.floor(c/2),D=c-u,G=Math.floor(f/2),h=f-G,y=Math.floor(k/2),M=k-y;Q={top:G,bottom:h,left:y,right:M,front:u,back:D}}else throw Error(`Unknown padding parameter: ${A}`);return{padInfo:Q,outDepth:a,outHeight:r,outWidth:d}},rw=(A,g,e,I,i,t=!1,C="channelsLast")=>{let o,s,B,Q,a;if(C==="channelsLast")[o,s,B,Q,a]=A;else if(C==="channelsFirst")[o,a,s,B,Q]=A;else throw new Error(`Unknown dataFormat ${C}`);let[r,,d,c,f]=g,[k,u,D]=IB(e),[G,h,y]=IB(I),M=Kt(d,G),m=Kt(c,h),_=Kt(f,y),{padInfo:x,outDepth:b,outHeight:X,outWidth:Z}=Oc(i,s,B,Q,k,u,D,M,m,_),T=t?r*a:r,CA=[0,0,0,0,0];return C==="channelsFirst"?CA=[o,T,b,X,Z]:C==="channelsLast"&&(CA=[o,b,X,Z,T]),{batchSize:o,dataFormat:C,inDepth:s,inHeight:B,inWidth:Q,inChannels:a,outDepth:b,outHeight:X,outWidth:Z,outChannels:T,padInfo:x,strideDepth:k,strideHeight:u,strideWidth:D,filterDepth:d,filterHeight:c,filterWidth:f,effectiveFilterDepth:M,effectiveFilterHeight:m,effectiveFilterWidth:_,dilationDepth:G,dilationHeight:h,dilationWidth:y,inShape:A,outShape:CA,filterShape:g}},aw=(A,g,e,I,i,t)=>{let C=t==="channelsLast";C?A[0].dims[3]:A[0].dims[1];let o=[64,1,1],s={x:e.map((k,u)=>u)},B=[Math.ceil(vc(s.x.map(k=>e[k]))/o[0]),1,1];Oe("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${B}`);let Q=1,a=FA.size(e),r=[{type:12,data:a},{type:12,data:I},{type:12,data:i},{type:12,data:g.strides},{type:12,data:g.dilations}];Fi(g,r),r.push(...he(A[0].dims,A[1].dims));let d=["rank","rank"],c=A.length===3;c&&(r.push(...he(A[2].dims)),d.push("rank")),r.push(...he(e));let f=k=>{let u=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:I.length},{name:"pads",type:"u32",length:i.length},{name:"strides",type:"u32",length:g.strides.length},{name:"dilations",type:"u32",length:g.dilations.length}];Si(g,u);let D=1,G=Hg(A[0].dataType),h=UA("x",A[0].dataType,A[0].dims.length,Q),y=UA("W",A[1].dataType,A[1].dims.length,D),M=[h,y],m=le("result",A[0].dataType,e.length,D),_="";if(c){let X=UA("bias",A[2].dataType,A[2].dims.length,D);M.push(X),_+=` fn getBiasByOutputCoords(coords : array) -> ${G} { return bias[${C?ce("coords",4,5):ce("coords",1,5)}]; }`}let x=vg(Q,G),b=Mi(g,x,G);return` ${_} fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { let aIndices = array(d0, d1, d2, d3, d4); return ${h.getByIndices("aIndices")}; } fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { let aIndices = array(d0, d1, d2, d3, d4); return ${y.getByIndices("aIndices")}; } ${k.registerUniforms(u).declareVariables(...M,m)} ${k.mainStart()} ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let coords = ${m.offsetToIndices("global_idx")}; let batch = ${ce("coords",0,h.rank)}; let d2 = ${C?ce("coords",h.rank-1,h.rank):ce("coords",1,h.rank)}; let xFRCCorner = vec3(${C?ce("coords",1,h.rank):ce("coords",2,h.rank)}, ${C?ce("coords",2,h.rank):ce("coords",3,h.rank)}, ${C?ce("coords",3,h.rank):ce("coords",4,h.rank)}) * uniforms.strides - uniforms.pads; let xFCorner = xFRCCorner.x; let xRCorner = xFRCCorner.y; let xCCorner = xFRCCorner.z; let xShapeY = ${C?ce("uniforms.x_shape",1,h.rank):ce("uniforms.x_shape",2,h.rank)}; let xShapeZ = ${C?ce("uniforms.x_shape",2,h.rank):ce("uniforms.x_shape",3,h.rank)}; let xShapeW = ${C?ce("uniforms.x_shape",3,h.rank):ce("uniforms.x_shape",4,h.rank)}; let xShapeU = ${C?ce("uniforms.x_shape",4,h.rank):ce("uniforms.x_shape",1,h.rank)}; let inputDepthNearestVec4 = (xShapeU / 4) * 4; let inputDepthVec4Remainder = xShapeU % 4; var value = 0.0; for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) { let xF = xFCorner + wF * uniforms.dilations[0]; if (xF < 0 || xF >= xShapeY) { continue; } for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) { let xR = xRCorner + wR * uniforms.dilations[1]; if (xR < 0 || xR >= xShapeZ) { continue; } for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) { let xC = xCCorner + wC * uniforms.dilations[2]; if (xC < 0 || xC >= xShapeW) { continue; } for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) { ${C?`let xValues = vec4( getX(batch, xF, xR, xC, d1), getX(batch, xF, xR, xC, d1 + 1), getX(batch, xF, xR, xC, d1 + 2), getX(batch, xF, xR, xC, d1 + 3)); `:`let xValues = vec4( getX(batch, d1, xF, xR, xC), getX(batch, d1 + 1, xF, xR, xC), getX(batch, d1 + 2, xF, xR, xC), getX(batch, d1 + 3, xF, xR, xC)); `} let wValues = vec4( getW(d2, d1, wF, wR, wC), getW(d2, d1 + 1, wF, wR, wC), getW(d2, d1 + 2, wF, wR, wC), getW(d2, d1 + 3, wF, wR, wC)); value += dot(xValues, wValues); } if (inputDepthVec4Remainder == 1) { ${C?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4) * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC) * getW(d2, inputDepthNearestVec4, wF, wR, wC);`} } else if (inputDepthVec4Remainder == 2) { ${C?`let xValues = vec2( getX(batch, xF, xR, xC, inputDepthNearestVec4), getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1)); `:`let xValues = vec2( getX(batch, inputDepthNearestVec4, xF, xR, xC), getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC)); `} let wValues = vec2( getW(d2, inputDepthNearestVec4, wF, wR, wC), getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC)); value += dot(xValues, wValues); } else if (inputDepthVec4Remainder == 3) { ${C?`let xValues = vec3( getX(batch, xF, xR, xC, inputDepthNearestVec4), getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1), getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2)); `:`let xValues = vec3( getX(batch, inputDepthNearestVec4, xF, xR, xC), getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC), getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC)); `} let wValues = vec3( getW(d2, inputDepthNearestVec4, wF, wR, wC), getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC), getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC)); value += dot(xValues, wValues); } } } } ${c?"value = value + getBiasByOutputCoords(coords)":""}; ${b} result[global_idx] = f32(value); }`};return{name:"Conv3DNaive",shaderCache:{hint:`${g.cacheKey};${C};${Q};${c}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:e,dataType:A[0].dataType}],dispatchGroup:{x:B[0],y:B[1],z:B[2]},programUniforms:r}),getShaderSource:f}}}),Qw,Ew,Ty=VA(()=>{Fe(),Le(),Je(),Ri(),Qw=(A,g,e,I)=>{let i=A.length>2,t=i?"value += b[output_channel];":"",C=A[0].dims,o=A[1].dims,s=g.format==="NHWC",B=s?e[3]:e[1],Q=B/g.group,a=s&&Q>=4?Dg(B):1,r=FA.size(e)/a,d=[{type:12,data:r},{type:12,data:g.dilations},{type:12,data:[g.strides[0],g.strides[1]]},{type:12,data:[g.pads[0],g.pads[1]]},{type:12,data:Q}];Fi(g,d),d.push(...he(C,[o[0],o[1],o[2],o[3]/a]));let c=i?["rank","rank","rank"]:["rank","rank"];d.push(...he([e[0],e[1],e[2],e[3]/a]));let f=k=>{let u=le("output",A[0].dataType,e.length,a),D=Hg(u.type.tensor),G=Mi(g,u.type.value,D),h=UA("x",A[0].dataType,C.length),y=UA("w",A[1].dataType,o.length,a),M=[h,y];i&&M.push(UA("b",A[2].dataType,A[2].dims,a));let m=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:g.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];Si(g,m);let _=s?` for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) { let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) { continue; } for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) { let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) { continue; } for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) { let input_channel = in_channel_offset + wInChannel; let xVal = ${h.get("batch","xHeight","xWidth","input_channel")}; let wVal = ${y.get("wHeight","wWidth","wInChannel","output_channel")}; value += xVal * wVal; } } } `:` for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) { let input_channel = in_channel_offset + wInChannel; for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) { let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) { continue; } for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) { let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) { continue; } let xVal = ${h.get("batch","input_channel","xHeight","xWidth")}; let wVal = ${y.get("output_channel","wInChannel","wHeight","wWidth")}; value += xVal * wVal; } } } `;return` ${k.registerUniforms(m).declareVariables(...M,u)} ${k.mainStart()} ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let outputIndices = ${u.offsetToIndices("global_idx")}; let batch: u32 = outputIndices[0]; let output_channel: u32 = outputIndices[${s?3:1}]; let xRCCorner: vec2 = vec2(outputIndices[${s?1:2}], outputIndices[${s?2:3}]) * uniforms.strides - uniforms.pads; let group_id: u32 = output_channel * ${a} / uniforms.output_channels_per_group; var in_channel_offset = group_id * uniforms.w_shape[${s?2:1}]; var value: ${u.type.value} = ${u.type.value}(0); ${_} ${t} ${G} ${u.setByOffset("global_idx","value")} }`};return{name:"GroupedConv",shaderCache:{hint:`${g.cacheKey}_${a}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:I?I(e):e,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:d}),getShaderSource:f}},Ew=(A,g,e,I)=>{let i=A.length>2,t=Dg(e[3]),C=Dg(e[2]),o=FA.size(e)/t/C,s=[A[0].dims[0],A[0].dims[1],A[0].dims[2],A[0].dims[3]/t],B=[A[1].dims[0],A[1].dims[1],A[1].dims[2],A[1].dims[3]/t],Q=[e[0],e[1],e[2],e[3]/t],a=[{type:12,data:o},{type:6,data:[g.strides[0],g.strides[1]]},{type:6,data:[g.pads[0],g.pads[1]]}];Fi(g,a),a.push(...he(s,B,Q));let r=(C-1)*g.strides[1]+B[1],d=c=>{let f=le("output",A[0].dataType,Q.length,t),k=Hg(f.type.tensor),u=Mi(g,f.type.value,k),D=UA("x",A[0].dataType,s.length,t),G=UA("w",A[1].dataType,B.length,t),h=[D,G];i&&h.push(UA("b",A[2].dataType,A[2].dims,t));let y=i?"value += b[output_channel];":"",M=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return Si(g,M),` ${c.registerUniforms(M).declareVariables(...h,f)} ${c.mainStart()} ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let width0 = uniforms.output_shape[3]; let output_channel = global_idx % width0; var index1 = global_idx / width0; let width1 = uniforms.output_shape[2] / ${C}u; let col = (index1 % width1) * ${C}u; index1 = index1 / width1; let row = index1 % uniforms.output_shape[1]; let batch = index1 / uniforms.output_shape[1]; let x_corner = vec2(i32(row), i32(col)) * uniforms.strides - uniforms.pads; var x_vals: array<${D.type.value}, ${r}>; var values: array<${f.type.value}, ${C}>; let input_channel = output_channel; // Use constant instead of uniform can give better performance for w's height/width. for (var w_height: u32 = 0u; w_height < ${B[0]}; w_height++) { let x_height = x_corner.x + i32(w_height); if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) { for (var i = 0; i < ${r}; i++) { let x_width = x_corner.y + i; if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) { x_vals[i] = ${D.get("batch","u32(x_height)","u32(x_width)","input_channel")}; } else { x_vals[i] = ${D.type.value}(0); } } for (var w_width: u32 = 0u; w_width < ${B[1]}; w_width++) { let w_val = ${G.get("w_height","w_width","0","output_channel")}; for (var i = 0u; i < ${C}u; i++) { values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]); } } } } for (var i = 0u; i < ${C}u; i++) { var value = values[i]; ${y} ${u} ${f.set("batch","row","col + i","output_channel","value")}; } }`};return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${g.cacheKey};${t};${C};${r};${B[0]};${B[1]}`,inputDependencies:i?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:I?I(e):e,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:a}),getShaderSource:d}}}),Wc,Vo,jc,zo,OB,tB,Vc,zc,WB,Yy=VA(()=>{Le(),by(),xy(),ur(),Ty(),Ri(),hr(),ii(),Wc=(A,g,e,I,i,t)=>{let C=A[0],o=A.slice(t?1:2,t?3:4),s=o.length,B=g[0],Q=g.slice(2).map((r,d)=>r+(r-1)*(e[d]-1)),a=o.map((r,d)=>r+I[d]+I[d+s]).map((r,d)=>Math.floor((r-Q[d]+i[d])/i[d]));return a.splice(0,0,C),a.splice(t?3:1,0,B),a},Vo=[2,3,1,0],jc=(A,g)=>{if(!A||A.length!==2&&A.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(A[0].dims.length>5)throw new Error("greater than 5D is not supported");if(A[0].dims.length!==A[1].dims.length)throw new Error("filter does not have same dimension as input");let e=A[0].dims[g.format==="NHWC"?A[0].dims.length-1:1],I=A[1].dims[1]*g.group;if(e!==I)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(A.length===3&&(A[2].dims.length!==1||A[1].dims[0]!==A[2].dims[0]))throw new Error("invalid bias");let i=A[0].dims.length-2;if(g.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(g.strides.length!==i)throw new Error(`strides should be ${i}D`);if(g.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(g.kernelShape.length!==0&&g.kernelShape.length!==A[1].dims.length-2)throw new Error("invalid kernel shape")},zo=(A,g)=>{let e=A.kernelShape.slice();e.length{let g=lr(A),e=A.format,I=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][A.auto_pad],i=A.dilations,t=A.group,C=A.kernel_shape,o=A.pads,s=A.strides,B=A.w_is_const();return{autoPad:I,format:e,dilations:i,group:t,kernelShape:C,pads:o,strides:s,wIsConst:B,...g,cacheKey:`${A.format};${g.activation};`}},tB=(A,g,e,I)=>{let i=e.format==="NHWC",t=Wc(g[0].dims,g[1].dims,e.dilations,e.pads,e.strides,i);if(e.group!==1){let M=[g[0]];if(i){let m=A.kernelCustomData.wT??A.compute(QI(g[1],Vo),{inputs:[1],outputs:[e.wIsConst?-2:-1]})[0];e.wIsConst&&!A.kernelCustomData.wT&&(A.kernelCustomData.wT=m),M.push(m)}else M.push(g[1]);g.length===3&&M.push(g[2]),!A.adapterInfo.isArchitecture("ampere")&&i&&g[1].dims[0]===e.group&&g[1].dims[1]===1&&e.dilations[0]===1&&e.dilations[1]===1?A.compute(Ew(M,e,t,I),{inputs:M}):A.compute(Qw(M,e,t,I),{inputs:M});return}let C=g.length===3,o=g[0].dims[i?1:2],s=g[0].dims[i?2:3],B=g[0].dims[i?3:1],Q=g[1].dims[2],a=g[1].dims[3],r=t[i?1:2],d=t[i?2:3],c=t[i?3:1],f=i&&Q===o&&a===s&&e.pads[0]===0&&e.pads[1]===0;if(f||Q===1&&a===1&&e.dilations[0]===1&&e.dilations[1]===1&&e.strides[0]===1&&e.strides[1]===1&&e.pads[0]===0&&e.pads[1]===0){let M=t[0],m,_,x,b=[];if(i){let T=A.kernelCustomData.wT??A.compute(QI(g[1],Vo),{inputs:[1],outputs:[e.wIsConst?-2:-1]})[0];if(e.wIsConst&&!A.kernelCustomData.wT&&(A.kernelCustomData.wT=T),f){let CA=o*s*B;m=g[0].reshape([1,M,CA]),_=T.reshape([1,CA,c]),x=[1,M,c]}else m=g[0].reshape([M,o*s,B]),_=T.reshape([1,B,c]),x=[M,r*d,c];b.push(m),b.push(_)}else m=g[0].reshape([M,B,o*s]),_=g[1].reshape([1,c,B]),x=[M,c,r*d],b.push(_),b.push(m);C&&b.push(g[2]);let X=x[2],Z=b[0].dims[b[0].dims.length-1];X<8&&Z<8?A.compute(dr(b,e,t,x,i,I),{inputs:b}):A.compute(BC(b,e,t,x,i,I),{inputs:b});return}let k=!0,u=A.kernelCustomData.wT??A.compute(QI(g[1],Vo),{inputs:[1],outputs:[e.wIsConst?-2:-1]})[0];e.wIsConst&&!A.kernelCustomData.wT&&(A.kernelCustomData.wT=u);let D=[g[0],u];C&&D.push(g[2]);let G=i?r*d:c,h=i?c:r*d,y=Q*a*B;A.compute(Bw(D,e,t,G,h,y,C,k,I),{inputs:D})},Vc=(A,g)=>{let e=g.format==="NHWC",I=[A.inputs[0].reshape(e?[A.inputs[0].dims[0],1,A.inputs[0].dims[1],A.inputs[0].dims[2]]:[A.inputs[0].dims[0],A.inputs[0].dims[1],1,A.inputs[0].dims[2]]),A.inputs[1].reshape([A.inputs[1].dims[0],A.inputs[1].dims[1],1,A.inputs[1].dims[2]])];A.inputs.length===3&&I.push(A.inputs[2]);let i=[0,g.pads[0],0,g.pads[1]],t=[1].concat(g.strides),C=[1].concat(g.dilations),o=[1].concat(g.kernelShape),s=zo({...g,pads:i,strides:t,dilations:C,kernelShape:o},I);tB(A,I,s,B=>e?[B[0],B[2],B[3]]:[B[0],B[1],B[3]])},zc=(A,g,e)=>{let I=e.format==="NHWC"?"channelsLast":"channelsFirst",i=zo(e,g),t=e.autoPad==="NOTSET"?e.pads:e.autoPad,C=rw(g[0].dims,g[1].dims,e.strides,e.dilations,t,!1,I);A.compute(aw(g,i,C.outShape,[C.filterDepth,C.filterHeight,C.filterWidth],[C.padInfo.front,C.padInfo.top,C.padInfo.left],I))},WB=(A,g)=>{if(jc(A.inputs,g),A.inputs[0].dims.length===3)Vc(A,g);else if(A.inputs[0].dims.length===5)zc(A,A.inputs,g);else{let e=zo(g,A.inputs);tB(A,A.inputs,e)}}}),nw,Hy=VA(()=>{Fe(),OI(),Le(),Je(),nw=(A,g,e)=>{let I=A.length>2,i=g.outputShape,t=g.format==="NHWC",C=g.group,o=A[1].dims,s=o[2]/C,B=o[3],Q=t?Dg(s):1,a=t&&B===1&&s>=4,r=a?Math.floor(s/4)*4:Math.floor(s/Q)*Q,d=s-r,c=t?Dg(B):1,f=t?B===1?Q:c:1,k=FA.size(i)/c,u=[Math.ceil(k/64),1,1];Oe("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let D=["rank","rank"],G=[g.strides[0],g.strides[1]],h=[g.kernelShape[t?1:2],g.kernelShape[t?2:3]],y=[g.dilations[0],g.dilations[1]],M=[h[0]+(g.dilations[0]<=1?0:(g.kernelShape[t?1:2]-1)*(g.dilations[0]-1)),h[1]+(g.dilations[1]<=1?0:(g.kernelShape[t?2:3]-1)*(g.dilations[1]-1))],m=[M[0]-1-Math.floor((g.pads[0]+g.pads[2])/2),M[1]-1-Math.floor((g.pads[1]+g.pads[3])/2)],_=[{type:12,data:k},{type:12,data:G},{type:12,data:h},{type:12,data:y},{type:12,data:M},{type:6,data:m},{type:12,data:r},{type:12,data:s},{type:12,data:B},...he(A[0].dims,A[1].dims)];I&&(_.push(...he(A[2].dims)),D.push("rank")),_.push(...he(i));let x=b=>{let X=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:G.length},{name:"filter_dims",type:"u32",length:h.length},{name:"dilations",type:"u32",length:h.length},{name:"effective_filter_dims",type:"u32",length:M.length},{name:"pads",type:"i32",length:m.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],Z=Hg(A[0].dataType),T=t?1:2,CA=t?2:3,eA=t?3:1,tA=UA("W",A[1].dataType,A[1].dims.length,f),BA=UA("Dy",A[0].dataType,A[0].dims.length,Q),sA=[BA,tA];I&&sA.push(UA("bias",A[2].dataType,[i[eA]].length,c));let cA=le("result",A[0].dataType,i.length,c),dA=()=>{let z="";if(a)Q===4?z+=` let xValue = ${BA.getByOffset("x_offset")}; let wValue = ${tA.getByOffset("w_offset")}; dotProd = dotProd + dot(xValue, wValue); x_offset += 1u; w_offset += 1u;`:Q===2?z+=` dotProd = dotProd + dot(vec4<${Z}>(${BA.getByOffset("x_offset")}, ${BA.getByOffset("x_offset + 1u")}), vec4<${Z}>(${tA.getByOffset("w_offset")}, ${tA.getByOffset("w_offset + 1u")})); x_offset += 2u; w_offset += 2u;`:Q===1&&(z+=` dotProd = dotProd + dot(vec4<${Z}>(${BA.getByOffset("x_offset")}, ${BA.getByOffset("x_offset + 1u")}, ${BA.getByOffset("x_offset + 2u")}, ${BA.getByOffset("x_offset + 3u")}), vec4<${Z}>(${tA.getByOffset("w_offset")}, ${tA.getByOffset("w_offset + 1u")}, ${tA.getByOffset("w_offset + 2u")}, ${tA.getByOffset("w_offset + 3u")})); x_offset += 4u; w_offset += 4u;`);else if(z+=` let xValue = ${t?BA.getByOffset(`${BA.indicesToOffset(`${BA.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${Q}`):BA.get("batch","inputChannel","idyR","idyC")}; `,Q===1)z+=` let w_offset = ${tA.indicesToOffset(`${tA.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)}; let wValue = ${tA.getByOffset(`w_offset / ${f}`)}; dotProd = dotProd + xValue * wValue;`;else for(let v=0;v{if(d===0)return"";if(!a)throw new Error(`packInputAs4 ${a} is not true.`);let z="";if(Q===1){z+="dotProd = dotProd";for(let v=0;v(i32(r), i32(c)) - uniforms.pads; let dyRCorner = dyCorner.x; let dyCCorner = dyCorner.y; let groupId = d1 / uniforms.output_channels_per_group; let wOutChannel = d1 - groupId * uniforms.output_channels_per_group; // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). // ? = to be determined. : = across all values in that axis. var dotProd = ${cA.type.value}(0.0); var wR: u32 = 0; if (uniforms.dilations.x == 1) { // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0 wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner); } for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) { if (wR % uniforms.dilations.x != 0) { continue; } let dyR = (${Z}(dyRCorner) + ${Z}(wR)) / ${Z}(uniforms.strides[0]); let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x; if (dyR < 0.0 || dyR >= ${Z}(uniforms.Dy_shape[${T}]) || fract(dyR) > 0.0 || wRPerm < 0) { continue; } let idyR: u32 = u32(dyR); var wC: u32 = 0; if (uniforms.dilations.y == 1) { // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0 wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner); } for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) { if (wC % uniforms.dilations.y != 0) { continue; } let dyC = (${Z}(dyCCorner) + ${Z}(wC)) / ${Z}(uniforms.strides.y); let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y; if (dyC < 0.0 || dyC >= ${Z}(uniforms.Dy_shape[${CA}]) || fract(dyC) > 0.0 || wCPerm < 0) { continue; } let idyC: u32 = u32(dyC); var inputChannel = groupId * uniforms.input_channels_per_group; ${a?` var x_offset = ${BA.indicesToOffset(`${BA.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${Q}; var w_offset = ${tA.indicesToOffset(`${tA.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${f}; `:""} for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${a?4:Q}) { ${dA()} inputChannel = inputChannel + ${a?4:Q}; } ${P()} wC = wC + uniforms.strides.y - 1; } wR = wR + uniforms.strides[0] - 1; } let value = dotProd${I?` + bias[d1 / ${c}]`:""}; ${cA.setByOffset("global_idx","value")}; `;return` ${b.registerUniforms(X).declareVariables(...sA,cA)} ${b.mainStart()} ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}; ${U}}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${g.cacheKey};${Q}${f}${c}${a}${d}`,inputDependencies:D},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:e?e(i):i,dataType:A[0].dataType}],programUniforms:_}),getShaderSource:x}}}),$c,Xc,Zc,oB,lw,Ad,CB,ed,cw,Py=VA(()=>{Hy(),Ri(),ii(),$c=(A,g,e,I,i,t)=>(A-1)*g+e+(I-1)*i+1-t,Xc=(A,g,e,I,i)=>{let t=Math.floor(A/2);g==="SAME_UPPER"?(e[I]=t,e[i]=A-t):g==="SAME_LOWER"&&(e[I]=A-t,e[i]=t)},Zc=(A,g,e,I,i,t,C,o,s,B)=>{let Q=A.length-2,a=B.length===0;s.length{let e=A.kernelShape.slice();if(A.kernelShape.length===0||A.kernelShape.reduce((a,r)=>a*r,1)===0){e.length=0;for(let a=2;aa+r,0)===0){let a=g[0].dims.length-2;s=new Array(a).fill(1)}let B=A.strides.slice();if(B.reduce((a,r)=>a+r,0)===0){let a=g[0].dims.length-2;B=new Array(a).fill(1)}Zc(o,e,s,A.autoPad,A.group,i,B,I,C,t);let Q=Object.assign({},A);return Object.assign(Q,{kernelShape:e,pads:i,outputPadding:C,outputShape:t,dilations:s,strides:B}),Q},lw=A=>{let g=lr(A),e=A.format,I=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof A.autoPad>"u"?0:A.autoPad],i=A.dilations,t=A.group,C=A.kernelShape,o=A.pads,s=A.strides,B=A.wIsConst(),Q=A.outputPadding,a=A.outputShape;return{autoPad:I,format:e,dilations:i,group:t,kernelShape:C,outputPadding:Q,outputShape:a,pads:o,strides:s,wIsConst:B,...g,cacheKey:`${A.format};${g.activation};`}},Ad=(A,g)=>{if(!A||A.length!==2&&A.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(A[0].dims.length!==4&&A[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(A[0].dims.length!==A[1].dims.length)throw new Error("filter does not have same dimension as input");let e=A[0].dims[g.format==="NHWC"?A[0].dims.length-1:1],I=A[1].dims[0];if(e!==I)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let i=A[1].dims[1]*g.group;if(A.length===3&&(A[2].dims.length!==1||A[2].dims[0]!==i))throw new Error("invalid bias");let t=A[0].dims.length-2;if(g.dilations.reduce((C,o)=>C+o,0)>0&&g.dilations.length!==t)throw new Error(`dilations should be ${t}D`);if(g.strides.reduce((C,o)=>C+o,0)>0&&g.strides.length!==t)throw new Error(`strides should be ${t}D`);if(g.pads.reduce((C,o)=>C+o,0)>0&&g.pads.length!==t*2)throw new Error(`pads should be ${t*2}D`);if(g.outputPadding.length!==t&&g.outputPadding.length!==0)throw new Error(`output_padding should be ${t}D`);if(g.kernelShape.reduce((C,o)=>C+o,0)>0&&g.kernelShape.length!==0&&g.kernelShape.length!==A[1].dims.length-2)throw new Error("invalid kernel shape");if(g.outputShape.length!==0&&g.outputShape.length!==A[0].dims.length-2)throw new Error("invalid output shape")},CB=(A,g,e,I)=>{let i=A.kernelCustomData.wT??A.compute(QI(g[1],[2,3,0,1]),{inputs:[1],outputs:[e.wIsConst?-2:-1]})[0];e.wIsConst&&!A.kernelCustomData.wT&&(A.kernelCustomData.wT=i);let t=[g[0],i];g.length===3&&t.push(g[2]),A.compute(nw(t,e,I),{inputs:t})},ed=(A,g)=>{let e=g.format==="NHWC",I=[A.inputs[0].reshape(e?[A.inputs[0].dims[0],1,A.inputs[0].dims[1],A.inputs[0].dims[2]]:[A.inputs[0].dims[0],A.inputs[0].dims[1],1,A.inputs[0].dims[2]]),A.inputs[1].reshape([A.inputs[1].dims[0],A.inputs[1].dims[1],1,A.inputs[1].dims[2]])];A.inputs.length===3&&I.push(A.inputs[2]);let i=g.kernelShape;(i.length===0||i[0]===0)&&(i=[A.inputs[1].dims[2]]);let t=g.dilations;(t.length===0||t[0]===0)&&(t=[1]);let C=g.strides;(C.length===0||C[0]===0)&&(C=[1]);let o=g.pads;o.length===0&&(o=[0,0]),o=[0,o[0],0,o[1]],C=[1].concat(C),t=[1].concat(t),i=[1].concat(i);let s=g.outputPadding;s=[0].concat(s);let B=oB({...g,pads:o,strides:C,dilations:t,kernelShape:i,outputPadding:s},I);CB(A,I,B,Q=>e?[Q[0],Q[2],Q[3]]:[Q[0],Q[1],Q[3]])},cw=(A,g)=>{if(Ad(A.inputs,g),A.inputs[0].dims.length===3)ed(A,g);else{let e=oB(g,A.inputs);CB(A,A.inputs,e)}}}),gd,dw,hw,vy=VA(()=>{Fe(),Le(),fg(),Je(),gd=(A,g,e,I)=>{let i=FA.size(g),t=g.length,C=UA("input",A,t),o=le("output",A,t),s=e.dataType===6?e.getInt32Array()[0]:Number(e.getBigInt64Array()[0]),B=FA.normalizeAxis(s,t),Q=a=>{let r=` i32(${C.indicesGet("inputIndices","uniforms.axis")}) `,d=ce("uniforms.input_shape","uniforms.axis",t),c=I.reverse?r+(I.exclusive?" + 1":""):"0",f=I.reverse?d:r+(I.exclusive?"":" + 1");return` ${a.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(C,o)} ${a.mainStart()} ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} var inputIndices = ${o.offsetToIndices("global_idx")}; var sum = ${o.type.value}(0); let first : i32 = ${c}; let last : i32 = ${f}; for (var i : i32 = first; i < last; i++) { ${C.indicesSet("inputIndices","uniforms.axis","u32(i)")}; sum = sum + ${C.getByIndices("inputIndices")}; } ${o.setByOffset("global_idx","sum")}; }`};return{name:"CumSum",shaderCache:{hint:I.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:g,dataType:A}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},{type:12,data:B},...he(g,g)]}),getShaderSource:Q}},dw=(A,g)=>{let e=A.inputs[0].dims,I=A.inputs[0].dataType,i=A.inputs[1];A.compute(gd(I,e,i,g),{inputs:[0]})},hw=A=>{let g=A.exclusive===1,e=A.reverse===1;return $e({exclusive:g,reverse:e})}}),Id,id,td,uw,Dw,qy=VA(()=>{Fe(),Le(),fg(),Je(),Id=A=>{if(!A||A.length!==1)throw new Error("DepthToSpace requires 1 input.");if(A[0].dims.length!==4)throw new Error("DepthToSpace requires 4D input.")},id=(A,g,e,I)=>{let i=[];i.push(`fn perm(i: ${I.type.indices}) -> ${e.type.indices} { var a: ${e.type.indices};`);for(let t=0;t{let e,I,i,t,C,o,s=g.format==="NHWC",B=g.blocksize,Q=g.mode==="DCR";s?([e,I,i,t]=A.dims,C=Q?[e,I,i,B,B,t/B**2]:[e,I,i,t/B**2,B,B],o=Q?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([e,I,i,t]=[A.dims[0],A.dims[2],A.dims[3],A.dims[1]],C=Q?[e,B,B,t/B**2,I,i]:[e,t/B**2,B,B,I,i],o=Q?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let a=A.reshape(C),r=a.dims.length,d=A.dataType,c=UA("a",d,r),f=le("output",d,r),k=u=>` ${u.registerUniform("output_size","u32").declareVariables(c,f)} ${id(o,r,c,f)} ${u.mainStart()} ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let indices = ${f.offsetToIndices("global_idx")}; let aIndices = perm(indices); ${f.setByOffset("global_idx",c.getByIndices("aIndices"))} }`;return{name:"DepthToSpace",shaderCache:{hint:`${A.dims};${g.blocksize};${g.mode}`,inputDependencies:["rank"]},getRunData:u=>{let D=s?[e,I*B,i*B,t/B**2]:[e,t/B**2,I*B,i*B],G=FA.size(D),h=a.dims,y=FA.sortBasedOnPerm(h,o);return{outputs:[{dims:D,dataType:u[0].dataType}],dispatchGroup:{x:Math.ceil(G/64)},programUniforms:[{type:12,data:G},...he(h,y)]}},getShaderSource:k}},uw=(A,g)=>{Id(A.inputs),A.compute(td(A.inputs[0],g))},Dw=A=>$e({blocksize:A.blocksize,mode:A.mode,format:A.format})}),$o,Ut,sB,od,Cd,sd,Bd,BB,rd,ww,pw,Oy=VA(()=>{Fe(),Le(),fg(),Je(),$o="[a-zA-Z]|\\.\\.\\.",Ut="("+$o+")+",sB="^"+Ut+"$",od="("+Ut+",)*"+Ut,Cd="^"+od+"$",sd=class{constructor(A=-1){this.symbolToIndices=new Map,this.inputIndex=A}addSymbol(A,g){let e=this.symbolToIndices.get(A);e===void 0?e=[g]:e.push(g),this.symbolToIndices.set(A,e)}},Bd=class{constructor(A,g){this.equation=g,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[e,I]=g.includes("->")?g.split("->",2):[g,""];if(!e.match(RegExp(Cd)))throw new Error("Invalid LHS term");if(e.split(",").forEach((i,t)=>{let C=A[t].dims.slice();if(!i.match(RegExp(sB)))throw new Error("Invalid LHS term");let o=this.processTerm(i,!0,C,t);this.lhs.push(o)}),I==="")I+=[...this.symbolToInfo.entries()].filter(([i,t])=>t.count===1||i==="...").map(([i])=>i).join("");else if(!I.match(RegExp(Ut)))throw new Error("Invalid RHS");I.match(RegExp($o,"g"))?.forEach(i=>{if(i==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let t=this.symbolToInfo.get(i);if(t===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(t.dimValue)}}),this.rhs=this.processTerm(I,!1,this.outputDims)}addSymbol(A,g,e){let I=this.symbolToInfo.get(A);if(I!==void 0){if(I.dimValue!==g&&I.count!==1)throw new Error("Dimension mismatch");I.count++,I.inputIndices.push(e)}else I={count:1,dimValue:g,inputIndices:[e]};this.symbolToInfo.set(A,I)}processTerm(A,g,e,I=-1){let i=e.length,t=!1,C=[],o=0;if(!A.match(RegExp(sB))&&!g&&A!=="")throw new Error("Invalid LHS term");let s=A.match(RegExp($o,"g")),B=new sd(I);return s?.forEach((Q,a)=>{if(Q==="..."){if(t)throw new Error("Only one ellipsis is allowed per input term");t=!0;let r=i-s.length+1;if(r<0)throw new Error("Ellipsis out of bounds");if(C=e.slice(o,o+r),this.hasEllipsis){if(this.ellipsisDims.length!==C.length||this.ellipsisDims.toString()!==C.toString())throw new Error("Ellipsis dimensions mismatch")}else if(g)this.hasEllipsis=!0,this.ellipsisDims=C;else throw new Error("Ellipsis must be specified in the LHS");for(let d=0;dA+"_max",rd=(A,g,e,I)=>{let i=A.map(B=>B.length).map((B,Q)=>UA(`input${Q}`,g,B)),t=FA.size(I),C=le("output",g,I.length),o=[...e.symbolToInfo.keys()].filter(B=>!e.rhs.symbolToIndices.has(B)),s=B=>{let Q=[],a="var prod = 1.0;",r="var sum = 0.0;",d="sum += prod;",c=[],f=[],k=[],u=[],D=e.symbolToInfo.size===e.rhs.symbolToIndices.size;e.symbolToInfo.forEach((h,y)=>{if(e.rhs.symbolToIndices.has(y)){let M=e.rhs.symbolToIndices.get(y)?.[0];M!==void 0&&e.lhs.forEach((m,_)=>{if(h.inputIndices.includes(_)){let x=m.symbolToIndices.get(y);if(x===void 0)throw new Error("Invalid symbol error");x.forEach(b=>{Q.push(`${i[_].indicesSet(`input${_}Indices`,b,C.indicesGet("outputIndices",M))}`)})}})}else e.lhs.forEach((M,m)=>{if(h.inputIndices.includes(m)){let _=M.symbolToIndices.get(y);if(_===void 0)throw new Error("Invalid symbol error");_.forEach(x=>{c.push(`${i[m].indicesSet(`input${m}Indices`,x,`${y}`)}`)}),u.push(`prod *= ${i[m].getByIndices(`input${m}Indices`)};`)}}),f.push(`for(var ${y}: u32 = 0; ${y} < uniforms.${BB(y)}; ${y}++) {`),k.push("}")});let G=D?[...Q,`let sum = ${i.map((h,y)=>h.getByIndices(`input${y}Indices`)).join(" * ")};`]:[...Q,r,...f,...c,a,...u,d,...k];return` ${B.registerUniforms(o.map(h=>({name:`${BB(h)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...i,C)} ${B.mainStart()} ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} var outputIndices = ${C.offsetToIndices("global_idx")}; ${i.map((h,y)=>`var input${y}Indices: ${i[y].type.indices};`).join(` `)} ${G.join(` `)}; ${C.setByOffset("global_idx","sum")}; }`};return{name:"Einsum",shaderCache:{hint:e.equation,inputDependencies:A.map(()=>"rank")},getRunData:()=>{let B=o.filter(a=>e.symbolToInfo.has(a)).map(a=>({type:12,data:e.symbolToInfo.get(a)?.dimValue||0}));B.push({type:12,data:t});let Q=A.map((a,r)=>[...he(a)]).reduce((a,r)=>a.concat(r),B);return Q.push(...he(I)),{outputs:[{dims:I,dataType:g}],dispatchGroup:{x:Math.ceil(t/64)},programUniforms:Q}},getShaderSource:s}},ww=(A,g)=>{let e=new Bd(A.inputs,g.equation),I=e.outputDims,i=A.inputs.map((t,C)=>t.dims);A.compute(rd(i,A.inputs[0].dataType,e,I))},pw=A=>{let g=A.equation.replace(/\s+/g,"");return $e({equation:g})}}),ad,rB,Qd,Ed,yw,Wy=VA(()=>{Fe(),Le(),Je(),ad=A=>{if(!A||A.length!==2)throw new Error("Expand requires 2 input.");let g=A[0].dims,e=Array.from(A[1].getBigInt64Array(),Number),I=e.length{let e=A.length-g.length,I=[];for(let i=0;iA.length>g.length?rB(A,g):rB(g,A),Ed=A=>{let g=A[0].dims,e=Array.from(A[1].getBigInt64Array(),Number),I=Qd(g,e),i=A[0].dataType,t=i===9||FA.size(g)===1,C=i===9||g.length>0&&g[g.length-1]%4===0?4:1,o=t||I.length>0&&I[I.length-1]%4===0?4:1,s=Math.ceil(FA.size(I)/o),B=a=>{let r=UA("input",i,g.length,C),d=le("output",i,I.length,o),c;if(i===9){let f=(k,u,D="")=>` let outputIndices${u} = ${d.offsetToIndices(`outputOffset + ${u}u`)}; let offset${u} = ${r.broadcastedIndicesToOffset(`outputIndices${u}`,d)}; let index${u} = offset${u} / 4u; let component${u} = offset${u} % 4u; ${k}[${u}] = ${D}(${r.getByOffset(`index${u}`)}[component${u}]); `;c=` let outputOffset = global_idx * ${o}; var data = vec4(0); ${f("data",0,"u32")} ${f("data",1,"u32")} ${f("data",2,"u32")} ${f("data",3,"u32")} ${d.setByOffset("global_idx","data")} }`}else c=` let outputIndices = ${d.offsetToIndices(`global_idx * ${o}`)}; let inputOffset = ${r.broadcastedIndicesToOffset("outputIndices",d)}; let data = ${d.type.value}(${r.getByOffset(`inputOffset / ${C}`)}); ${d.setByOffset("global_idx","data")} }`;return` ${a.registerUniform("vec_size","u32").declareVariables(r,d)} ${a.mainStart()} ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} ${c}`},Q=[{type:12,data:s},...he(g,I)];return{name:"Expand",shaderCache:{hint:`${I.length};${C}${o}`,inputDependencies:["rank"]},getShaderSource:B,getRunData:()=>({outputs:[{dims:I,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:Q})}},yw=A=>{ad(A.inputs),A.compute(Ed(A.inputs),{inputs:[0]})}}),nd,fw,jy=VA(()=>{Fe(),Le(),Je(),nr(),nd=A=>{let g=A[0].dataType,e=FA.size(A[0].dims),I=FA.size(A[1].dims),i=I%4===0,t=C=>{let o=UA("x",g,[1],4),s=UA("bias",g,[1],4),B=le("y",g,[1],4),Q=[{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}],a=d=>` let bias${d}_offset: u32 = (global_idx * 4 + ${d}) % uniforms.bias_size; let bias${d} = ${s.getByOffset(`bias${d}_offset / 4`)}[bias${d}_offset % 4];`,r=i?` let bias = ${s.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${a(0)}${a(1)}${a(2)}${a(3)} let bias = ${o.type.value}(bias0, bias1, bias2, bias3);`;return`${C.registerUniforms(Q).declareVariables(o,s,B)} ${HB(Xg(g))} ${C.mainStart(It)} ${C.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")} let x = ${o.getByOffset("global_idx")}; ${r} let x_in = x + bias; ${B.setByOffset("global_idx",PB("x_in"))} }`};return{name:"FastGeluWithBias",shaderCache:{hint:`${i}`,inputDependencies:["type","type"]},getShaderSource:t,getRunData:C=>({outputs:[{dims:C[0].dims,dataType:C[0].dataType}],programUniforms:[{type:12,data:Math.ceil(e/4)},{type:12,data:I}],dispatchGroup:{x:Math.ceil(e/It/4)}})}},fw=A=>{A.inputs.length<2||FA.size(A.inputs[1].dims)===0?vD(A):A.compute(nd(A.inputs))}}),ld,cd,mw,Mw,Vy=VA(()=>{Fe(),Le(),fg(),Je(),ld=A=>{if(!A||A.length!==2)throw new Error("Gather requires 2 inputs.")},cd=(A,g)=>{let e=A[0].dims,I=A[1].dims,i=e.length,t=FA.normalizeAxis(g.axis,i),C=e.slice(0);C.splice(t,1,...I);let o=e[t],s=A[0].dataType===9?4:1,B=Math.ceil(FA.size(C)/s),Q=[{type:12,data:B},{type:6,data:o},{type:12,data:t},...he(A[0].dims,A[1].dims,C)],a=r=>{let d=UA("data",A[0].dataType,A[0].dims.length,s),c=UA("inputIndices",A[1].dataType,A[1].dims.length),f=le("output",A[0].dataType,C.length,s),k=D=>{let G=I.length,h=`var indicesIndices${D} = ${c.type.indices}(0);`;for(let y=0;y1?`indicesIndices${D}[${y}]`:`indicesIndices${D}`} = ${C.length>1?`outputIndices${D}[uniforms.axis + ${y}]`:`outputIndices${D}`};`;h+=` var idx${D} = ${c.getByIndices(`indicesIndices${D}`)}; if (idx${D} < 0) { idx${D} = idx${D} + uniforms.axisDimLimit; } var dataIndices${D} : ${d.type.indices}; `;for(let y=0,M=0;y1?`dataIndices${D}[${y}]`:`dataIndices${D}`} = u32(idx${D});`,M+=G):(h+=`${i>1?`dataIndices${D}[${y}]`:`dataIndices${D}`} = ${C.length>1?`outputIndices${D}[${M}]`:`outputIndices${D}`};`,M++);return h},u;if(A[0].dataType===9){let D=(G,h,y="")=>` let outputIndices${h} = ${f.offsetToIndices(`outputOffset + ${h}u`)}; ${k(h)}; let offset${h} = ${d.indicesToOffset(`dataIndices${h}`)}; let index${h} = offset${h} / 4u; let component${h} = offset${h} % 4u; ${G}[${h}] = ${y}(${d.getByOffset(`index${h}`)}[component${h}]); `;u=` let outputOffset = global_idx * ${s}; var value = vec4(0); ${D("value",0,"u32")} ${D("value",1,"u32")} ${D("value",2,"u32")} ${D("value",3,"u32")} ${f.setByOffset("global_idx","value")} `}else u=` let outputIndices = ${f.offsetToIndices("global_idx")}; ${k("")}; let value = ${d.getByIndices("dataIndices")}; ${f.setByOffset("global_idx","value")}; `;return` ${r.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(d,c,f)} ${r.mainStart()} ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} ${u} }`};return{name:"Gather",shaderCache:{hint:g.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:C,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(B/64)},programUniforms:Q}),getShaderSource:a}},mw=A=>$e({axis:A.axis}),Mw=(A,g)=>{let e=A.inputs;ld(e),A.compute(cd(A.inputs,g))}}),dd,Fw,Sw,zy=VA(()=>{Fe(),Le(),Je(),dd=(A,g,e,I,i,t,C,o,s)=>{let B=[{type:12,data:t},{type:12,data:I},{type:12,data:i},{type:12,data:e},{type:12,data:C},{type:12,data:o},{type:12,data:s}],Q=[t];B.push(...he(g.dims,Q));let a=r=>{let d=UA("indices_data",g.dataType,g.dims.length),c=le("input_slice_offsets_data",12,1,1),f=[d,c],k=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:i.length},{name:"sizes_from_slice_dims_data",type:"u32",length:e.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return` ${r.registerUniforms(k).declareVariables(...f)} ${r.mainStart()} ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let batch_idx = global_idx / uniforms.num_slices_per_batch; let base_offset = batch_idx * uniforms.input_batch_stride; let slice_indices_base_offset = global_idx * uniforms.num_slice_dims; var relative_slice_offset = 0; for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) { var index = i32(indices_data[dim_idx + slice_indices_base_offset].x); let input_dim_idx = uniforms.batch_dims + dim_idx; if (index < 0) { ${i.length===1?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"} } ${e.length===1?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"} } input_slice_offsets_data[global_idx] = base_offset + u32(relative_slice_offset); }`};return A.compute({name:"computeSliceOffsets",shaderCache:{hint:`${i.length}_${e.length}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:Q,dataType:A.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(t/64)},programUniforms:B}),getShaderSource:a},{inputs:[g],outputs:[-1]})[0]},Fw=(A,g)=>{let e=A.inputs,I=e[0].dims,i=e[0].dataType,t=e[1].dims,C=t[t.length-1],o=FA.sizeToDimension(t,t.length-1),s=FA.sizeFromDimension(I,g.batchDims+C),B=FA.sizeToDimension(I,g.batchDims),Q=FA.sizeFromDimension(I,g.batchDims),a=o/B,r=new Array(C),d=s;for(let h=0;hI.length)throw new Error("last dimension of indices must not be larger than rank of input tensor");let k=t.slice(0,-1).concat(I.slice(f)),u=FA.size(k),D=[{type:12,data:u},{type:12,data:s},...he(e[0].dims,c.dims,k)],G=h=>{let y=UA("data",e[0].dataType,e[0].dims.length),M=UA("slice_offsets",12,c.dims.length),m=le("output",e[0].dataType,k.length);return` ${h.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(y,M,m)} ${h.mainStart()} ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let slice_offset = slice_offsets[global_idx / uniforms.slice_size]; output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size]; }`};A.compute({name:"GatherND",shaderCache:{hint:g.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:k,dataType:i}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:D}),getShaderSource:G},{inputs:[e[0],c]})},Sw=A=>({batchDims:A.batch_dims,cacheKey:""})}),hd,ud,Nw,Rw,$y=VA(()=>{Fe(),Le(),fg(),Je(),hd=(A,g)=>{if(A.length<3||A.length>4)throw new Error("GatherBlockQuantized requires 3 or 4 inputs.");let e=FA.normalizeAxis(g.quantizeAxis,A[0].dims.length),I=g.blockSize,i=A[0],t=A[2],C=A.length===4?A[3]:void 0;if(t.dims.length!==i.dims.length||!i.dims.map((o,s)=>s===e?Math.ceil(o/I)===t.dims[s]:o===t.dims[s]).reduce((o,s)=>o&&s,!0))throw new Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(C){if(C.dataType!==i.dataType)throw new Error("Zero point must have the same data type as the input tensor.");if(C.dims.length!==t.dims.length||!C.dims.map((o,s)=>o===t.dims[s]).reduce((o,s)=>o&&s,!0))throw new Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}},ud=(A,g)=>{let e=A[0].dims,I=A[1].dims,i=e.length,t=FA.normalizeAxis(g.gatherAxis,i),C=FA.normalizeAxis(g.quantizeAxis,i),o=e.slice(0);o.splice(t,1,...I);let s=FA.size(o),B=A[2].dataType,Q=A[0].dataType===22,a=[{type:12,data:s},{type:12,data:C},{type:12,data:t},{type:12,data:g.blockSize},...he(...A.map((d,c)=>d.dims),o)],r=d=>{let c=UA("data",A[0].dataType,A[0].dims.length),f=UA("inputIndices",A[1].dataType,A[1].dims.length),k=UA("scales",A[2].dataType,A[2].dims.length),u=A.length>3?UA("zeroPoint",A[3].dataType,A[3].dims.length):void 0,D=le("output",B,o.length),G=[c,f,k];u&&G.push(u);let h=[{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}];return` ${d.registerUniforms(h).declareVariables(...G,D)} ${d.mainStart()} let output_indices = ${D.offsetToIndices("global_idx")}; var indices_indices = ${f.type.indices}(0); ${I.length>1?` for (var i: u32 = 0; i < ${I.length}; i++) { let index = ${D.indicesGet("output_indices","uniforms.gather_axis + i")}; ${f.indicesSet("indices_indices","i","index")}; }`:`indices_indices = ${D.indicesGet("output_indices","uniforms.gather_axis")};`}; var data_indices = ${c.type.indices}(0); for (var i: u32 = 0; i < uniforms.gather_axis; i++) { let index = ${D.indicesGet("output_indices","i")}; ${c.indicesSet("data_indices","i","index")}; } var index_from_indices = ${f.getByIndices("indices_indices")}; if (index_from_indices < 0) { index_from_indices += ${e[t]}; } ${c.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")}; for (var i = uniforms.gather_axis + 1; i < ${o.length}; i++) { let index = ${D.indicesGet("output_indices",`i + ${I.length} - 1`)}; ${c.indicesSet("data_indices","i","index")}; } let data_offset = ${c.indicesToOffset("data_indices")}; let data_index = data_offset % 8; // Convert 4-bit packed data to 8-bit packed data. let packed_4bit_quantized_data = ${c.getByOffset("data_offset / 8")}; let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f; let quantized_data_vec = ${Q?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data)); let quantized_data = quantized_data_vec[data_index / 2]; var scale_indices = data_indices; let quantize_axis_index = ${k.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size; ${k.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")}; var scale = ${k.getByIndices("scale_indices")}; ${u?` let zero_point_indices = scale_indices; let zero_point_offset = ${u.indicesToOffset("zero_point_indices")}; let zero_point_index = zero_point_offset % 8; let packed_4bit_zero_points = ${u.getByOffset("zero_point_offset / 8")}; let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f; let zero_point_vec = ${Q?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points)); let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"}; let dequantized_data = ${Xg(B)}(quantized_data - zero_point) * scale; ${D.setByOffset("global_idx","dequantized_data")}; }`};return{name:"GatherBlockQuantized",shaderCache:{hint:`${g.cacheKey};${A.filter((d,c)=>c!==1).map(d=>d.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:A.length},(d,c)=>"rank")},getRunData:()=>({outputs:[{dims:o,dataType:B}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:a}),getShaderSource:r}},Nw=(A,g)=>{let e=A.inputs;hd(e,g),A.compute(ud(A.inputs,g))},Rw=A=>$e({blockSize:A.blockSize,gatherAxis:A.gatherAxis,quantizeAxis:A.quantizeAxis})}),Dd,wd,_w,Gw,Xy=VA(()=>{Fe(),Le(),fg(),Je(),Dd=A=>{if(!A||A.length!==2)throw new Error("GatherElements requires 2 inputs.");if(A[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(A[0].dims.length!==A[1].dims.length)throw new Error(`GatherElements requires that the data input and indices input tensors be of same rank.`)},wd=(A,g)=>{let e=A[0].dims,I=A[0].dataType,i=e.length,t=A[1].dims,C=A[1].dataType,o=FA.normalizeAxis(g.axis,i),s=e[o],B=t.slice(0),Q=FA.size(B),a=UA("input",I,i),r=UA("indicesInput",C,t.length),d=le("output",I,B.length),c=[{type:12,data:Q},{type:6,data:s},{type:12,data:o}];return c.push(...he(e,t,B)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:B,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(Q/64)},programUniforms:c}),getShaderSource:f=>` ${f.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(a,r,d)} ${f.mainStart()} ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} let outputIndices = ${d.offsetToIndices("global_idx")}; var idx = ${r.getByOffset("global_idx")}; if (idx < 0) { idx = idx + uniforms.axisDimLimit; } var inputIndices = ${a.type.indices}(outputIndices); ${a.indicesSet("inputIndices","uniforms.axis","u32(idx)")}; let value = ${a.getByIndices("inputIndices")}; ${d.setByOffset("global_idx","value")}; }`}},_w=A=>$e({axis:A.axis}),Gw=(A,g)=>{let e=A.inputs;Dd(e),A.compute(wd(A.inputs,g))}}),pd,yd,kw,Lw,Zy=VA(()=>{Fe(),Le(),Je(),pd=A=>{if(!A)throw new Error("Input is missing");if(A.length<2||A.length>3)throw new Error("Invaid input number.");if(A.length===3&&A[2].dims.length>2)throw new Error("Invalid input shape of C");if(A[0].dataType!==A[1].dataType||A.length===3&&A[0].dataType!==A[2].dataType)throw new Error("Input types are mismatched")},yd=(A,g)=>{let e=A[0].dims.slice(),I=A[1].dims.slice(),[i,t,C]=_u.getShapeOfGemmResult(e,g.transA,I,g.transB,A.length===3?A[2].dims:void 0),o=[i,t];if(!o)throw new Error("Can't use gemm on the given tensors");let s=16,B=Math.ceil(t/s),Q=Math.ceil(i/s),a=!0,r=FA.size(o),d=[{type:12,data:a?B:r},{type:12,data:i},{type:12,data:t},{type:12,data:C},{type:1,data:g.alpha},{type:1,data:g.beta}],c=["type","type"];A.length===3&&(d.push(...he(A[2].dims)),c.push("rank")),d.push(...he(o));let f=u=>{let D="";g.transA&&g.transB?D="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":g.transA&&!g.transB?D="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!g.transA&&g.transB?D="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!g.transA&&!g.transB&&(D="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let G=g.alpha===1?"":"value *= uniforms.alpha;",h=UA("a",A[0].dataType,A[0].dims),y=UA("b",A[1].dataType,A[1].dims),M=h.type.value,m=null,_=[h,y];A.length===3&&(m=UA("c",A[2].dataType,A[2].dims.length),_.push(m));let x=le("output",A[0].dataType,o.length);_.push(x);let b=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return` ${u.registerUniforms(b).declareVariables(..._)} ${u.mainStart()} ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let m = global_idx / uniforms.N; let n = global_idx % uniforms.N; var value = ${M}(0); for (var k: u32 = 0u; k < uniforms.K; k++) { ${D} } ${G} ${m!=null?`let cOffset = ${m.broadcastedIndicesToOffset("vec2(m, n)",x)}; value += ${M}(uniforms.beta) * ${m.getByOffset("cOffset")};`:""} output[global_idx] = value; }`},k=u=>{let D=UA("a",A[0].dataType,A[0].dims),G=UA("b",A[1].dataType,A[1].dims),h=null,y=[D,G];A.length===3&&(h=UA("c",A[2].dataType,A[2].dims.length),y.push(h));let M=le("output",A[0].dataType,o.length);y.push(M);let m=[{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}],_="",x="";g.transA&&g.transB?(x=` var col = tile_row_start + local_id.x; var row = k_start + local_id.y; if (col < uniforms.M && row < uniforms.K) { tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; } else { tile_a[local_id.y][local_id.x] = ${D.type.value}(0); } col = k_start + local_id.x; row = tile_col_start + local_id.y; if (col < uniforms.K && row < uniforms.N) { tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; } else { tile_b[local_id.y][local_id.x] = ${G.type.value}(0); } `,_="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):g.transA&&!g.transB?(x=` var col = tile_row_start + local_id.x; var row = k_start + local_id.y; if (col < uniforms.M && row < uniforms.K) { tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; } else { tile_a[local_id.y][local_id.x] = ${D.type.value}(0); } col = tile_col_start + local_id.x; row = k_start + local_id.y; if (col < uniforms.N && row < uniforms.K) { tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; } else { tile_b[local_id.y][local_id.x] = ${G.type.value}(0); } `,_="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!g.transA&&g.transB?(x=` var col = k_start + local_id.x; var row = tile_row_start + local_id.y; if (col < uniforms.K && row < uniforms.M) { tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; } else { tile_a[local_id.y][local_id.x] = ${D.type.value}(0); } col = k_start + local_id.x; row = tile_col_start + local_id.y; if (col < uniforms.K && row < uniforms.N) { tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; } else { tile_b[local_id.y][local_id.x] = ${G.type.value}(0); } `,_="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):!g.transA&&!g.transB&&(x=` var col = k_start + local_id.x; var row = tile_row_start + local_id.y; if (col < uniforms.K && row < uniforms.M) { tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; } else { tile_a[local_id.y][local_id.x] = ${D.type.value}(0); } col = tile_col_start + local_id.x; row = k_start + local_id.y; if (col < uniforms.N && row < uniforms.K) { tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; } else { tile_b[local_id.y][local_id.x] = ${G.type.value}(0); } `,_="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let b=g.alpha===1?"":"value *= uniforms.alpha;";return` ${u.registerUniforms(m).declareVariables(...y)} var tile_a: array, ${s}>; var tile_b: array, ${s}>; ${u.mainStart([s,s,1])} let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${s}; let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${s}; let num_tiles = (uniforms.K - 1) / ${s} + 1; var k_start = 0u; var value = ${M.type.value}(0); for (var t: u32 = 0u; t < num_tiles; t++) { ${x} k_start = k_start + ${s}; workgroupBarrier(); for (var k: u32 = 0u; k < ${s}; k++) { ${_} } workgroupBarrier(); } ${b} let m = tile_row_start + local_id.y; let n = tile_col_start + local_id.x; ${h!=null?`let cOffset = ${h.broadcastedIndicesToOffset("vec2(m, n)",M)}; value += ${M.type.value}(uniforms.beta) * ${h.getByOffset("cOffset")};`:""} if (m < uniforms.M && n < uniforms.N) { output[m * uniforms.N + n] = value; } }`};return a?{name:"GemmShared",shaderCache:{hint:`${g.cacheKey}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:A[0].dataType}],dispatchGroup:{x:B*Q},programUniforms:d}),getShaderSource:k}:{name:"Gemm",shaderCache:{hint:`${g.cacheKey}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:d}),getShaderSource:f}},kw=A=>{let g=A.transA,e=A.transB,I=A.alpha,i=A.beta;return{transA:g,transB:e,alpha:I,beta:i,cacheKey:`${A.transA};${A.transB};${A.alpha===1}`}},Lw=(A,g)=>{pd(A.inputs),A.compute(yd(A.inputs,g))}}),HI,vI,hi,ui,fd,md,Md,Fd,Sd,Nd,Rd,_d,Kw,Uw,Af=VA(()=>{Fe(),Le(),fg(),Je(),[HI,vI,hi,ui]=[0,1,2,3],fd=A=>{if(A[0].dims.length!==4)throw new Error("only 4-D tensor is supported.");if(A[0].dims.length!==A[1].dims.length)throw new Error("input dimensions must be equal to grid dimensions");if(A[0].dims.length-2!==A[1].dims[A[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${A[0].dims.length-2}`);if(A[0].dims[0]!==A[1].dims[0])throw new Error("grid batch size must match input batch size")},md=` fn gs_get_cubic_coeffs(x: f32) -> vec4 { let cubic_alpha = -0.75f; let x_abs = abs(x); var coeffs: vec4; coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha); coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1); coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1); coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha); return coeffs; } `,Md=A=>` fn gs_bicubic_interpolate(p: mat4x4<${A}>, x: f32, y: f32) -> ${A} { var v: vec4; var coeffs = gs_get_cubic_coeffs(x); for (var i = 0; i < 4; i++) { v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3]; } coeffs = gs_get_cubic_coeffs(y); let pixel = ${A}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]); return pixel; } `,Fd=A=>` fn gs_denormalize(n: f32, length: i32) -> f32 { ${A.alignCorners===0?` // alignCorners: false => [-1, 1] to [-0.5, length - 0.5] return ((n + 1.0) * f32(length) - 1.0) / 2.0; `:` // alignCorners: true => [-1, 1] to [0, length - 1] return (n + 1.0) / 2.0 * (f32(length - 1)); `} } `,Sd=A=>` ${A.paddingMode==="reflection"?` fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 { var dx = 0.0; var fx = f32(x); let range = x_max - x_min; if (fx < x_min) { dx = x_min - fx; let n = u32(dx / range); let r = dx - f32(n) * range; if (n % 2 == 0) { fx = x_min + r; } else { fx = x_max - r; } } else if (fx > x_max) { dx = fx - x_max; let n = u32(dx / range); let r = dx - f32(n) * range; if (n % 2 == 0) { fx = x_max - r; } else { fx = x_min + r; } } return u32(fx); }`:""} `,Nd=(A,g,e)=>` fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4) -> ${g} { var pixel = ${g}(0); var indices = vec4(0); indices[${HI}] = batch; indices[${vI}] = channel;`+(()=>{switch(e.paddingMode){case"zeros":return` if (r >= 0 && r < H && c >=0 && c < W) { indices[${hi}] = u32(r); indices[${ui}] = u32(c); } else { return ${g}(0); } `;case"border":return` indices[${hi}] = u32(clamp(r, 0, H - 1)); indices[${ui}] = u32(clamp(c, 0, W - 1)); `;case"reflection":return` indices[${hi}] = gs_reflect(r, border[1], border[3]); indices[${ui}] = gs_reflect(c, border[0], border[2]); `;default:throw new Error(`padding mode ${e.paddingMode} is not supported`)}})()+` return ${A.getByIndices("indices")}; } `,Rd=(A,g,e)=>(()=>{switch(e.mode){case"nearest":return` let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${HI}], indices[${vI}], border); `;case"bilinear":return` let x1 = i32(floor(x)); let y1 = i32(floor(y)); let x2 = x1 + 1; let y2 = y1 + 1; let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${HI}], indices[${vI}], border); let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${HI}], indices[${vI}], border); let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${HI}], indices[${vI}], border); let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${HI}], indices[${vI}], border); let dx2 = ${g}(f32(x2) - x); let dx1 = ${g}(x - f32(x1)); let dy2 = ${g}(f32(y2) - y); let dy1 = ${g}(y - f32(y1)); let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22); `;case"bicubic":return` let x0 = i32(floor(x)) - 1; let y0 = i32(floor(y)) - 1; var p: mat4x4<${g}>; for (var h = 0; h < 4; h++) { for (var w = 0; w < 4; w++) { p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${HI}], indices[${vI}], border); } } let dx = x - f32(x0 + 1); let dy = y - f32(y0 + 1); let result = gs_bicubic_interpolate(p, dx, dy); `;default:throw new Error(`mode ${e.mode} is not supported`)}})()+`${A.setByOffset("global_idx","result")}`,_d=(A,g)=>{let e=UA("x",A[0].dataType,A[0].dims.length),I=[A[1].dims[0],A[1].dims[1],A[1].dims[2]],i=UA("grid",A[1].dataType,I.length,2),t=[A[0].dims[0],A[0].dims[1],A[1].dims[1],A[1].dims[2]];g.format==="NHWC"&&(t=[A[0].dims[0],A[1].dims[1],A[1].dims[2],A[0].dims[3]],[HI,vI,hi,ui]=[0,3,1,2]);let C=le("output",A[0].dataType,t.length),o=e.type.value,s=FA.size(t),B=[{type:12,data:s},...he(A[0].dims,I,t)],Q=a=>` ${a.registerUniform("output_size","u32").declareVariables(e,i,C)} ${md} ${Md(o)} ${Fd(g)} ${Sd(g)} ${Nd(e,o,g)} ${a.mainStart()} ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let H_in = i32(uniforms.x_shape[${hi}]); let W_in = i32(uniforms.x_shape[${ui}]); ${g.alignCorners===0?` let x_min = -0.5; let x_max = f32(W_in) - 0.5; let y_min = -0.5; let y_max = f32(H_in) - 0.5; `:` let x_min = 0.0; let x_max = f32(W_in) - 1.0; let y_min = 0.0; let y_max = f32(H_in) - 1.0; `}; let border = vec4(x_min, y_min, x_max, y_max); let indices = ${C.offsetToIndices("global_idx")}; var grid_indices = vec3(indices[${HI}], indices[${hi}], indices[${ui}]); let nxy = ${i.getByIndices("grid_indices")}; var x = gs_denormalize(f32(nxy[0]), W_in); var y = gs_denormalize(f32(nxy[1]), H_in); ${Rd(C,o,g)} }`;return{name:"GridSample",shaderCache:{hint:`${g.cacheKey}`,inputDependencies:["type","type"]},getRunData:a=>{let r=FA.size(t);return{outputs:[{dims:t,dataType:a[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:B}},getShaderSource:Q}},Kw=(A,g)=>{fd(A.inputs),A.compute(_d(A.inputs,g))},Uw=A=>$e({alignCorners:A.align_corners,mode:A.mode,paddingMode:A.padding_mode,format:A.format})}),II,Gd,Jw,aB,kd,vt,bw,xw=VA(()=>{Fe(),Le(),fg(),rr(),Er(),Je(),ii(),II=(A,g)=>A.length>g&&A[g].dims.length>0?A[g]:void 0,Gd=(A,g)=>{let e=A[0],I=II(A,1),i=II(A,2),t=II(A,3),C=II(A,4),o=II(A,5),s=II(A,6),B=II(A,7);if(e.dims.length!==3&&e.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let Q=e.dims[0],a=e.dims[1],r=e.dims.length===3?e.dims[2]:g.numHeads*e.dims[4],d=a,c=0,f=0,k=Math.floor(r/g.numHeads);if(s&&B&&FA.size(s.dims)&&FA.size(B.dims)){if(s.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(s.dims[0]!==Q||s.dims[1]!==g.numHeads||s.dims[3]!==k)throw new Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(B.dims[0]!==Q||B.dims[1]!==g.numHeads||B.dims[3]!==k)throw new Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(s.dims[2]!==B.dims[2])throw new Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(B.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');c=s.dims[2],f=s.dims[2]}else if(s&&FA.size(s.dims)||B&&FA.size(B.dims))throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let u;if(I&&FA.size(I.dims)>0){if(e.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(I.dims.length<3||I.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(e.dims[0]!==I.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(I.dims.length===3){if(I.dims[2]!==e.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');u=2,d=I.dims[1]}else if(I.dims.length===5){if(I.dims[2]!==g.numHeads||I.dims[3]!==2||I.dims[4]!==k)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(i)throw new Error('Expect "value" be none when "key" has packed kv format.');u=5,d=I.dims[1]}else{if(I.dims[1]!==g.numHeads||I.dims[3]!==k)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');u=0,d=I.dims[2]}}else{if(e.dims.length!==5)throw new Error('Input "query" is expected to have 5 dimensions when key is empty');if(e.dims[2]!==g.numHeads||e.dims[3]!==3)throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');u=3}if(t&&FA.size(t.dims)>0){if(t.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');if(I&&I.dims.length===5&&I.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let D=c+d,G=0;if(C&&FA.size(C.dims)>0){G=8;let m=C.dims;throw m.length===1?m[0]===Q?G=1:m[0]===3*Q+2&&(G=3):m.length===2&&m[0]===Q&&m[1]===D&&(G=5),G===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error("Mask not supported")}let h=!1,y=r;if(i&&FA.size(i.dims)>0){if(i.dims.length!==3&&i.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(e.dims[0]!==i.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(i.dims.length===3){if(d!==i.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');y=i.dims[2]}else{if(d!==i.dims[2])throw new Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');y=i.dims[1]*i.dims[3],h=!0}}let M=!1;if(C&&FA.size(C.dims)>0)throw new Error("Key padding mask is not supported");if(o&&FA.size(o.dims)>0){if(o.dims.length!==4)throw new Error('Input "attention_bias" is expected to have 4 dimensions');if(o.dims[0]!==Q||o.dims[1]!==g.numHeads||o.dims[2]!==a||o.dims[3]!==D)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:Q,sequenceLength:a,pastSequenceLength:c,kvSequenceLength:d,totalSequenceLength:D,maxSequenceLength:f,inputHiddenSize:0,hiddenSize:r,vHiddenSize:y,headSize:k,vHeadSize:Math.floor(y/g.numHeads),numHeads:g.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:g.maskFilterValue,maskType:G,scale:g.scale,broadcastResPosBias:M,passPastInKv:h,qkvFormat:u}},Jw=A=>$e({...A}),aB=$e({perm:[0,2,1,3]}),kd=(A,g,e,I,i,t,C)=>{let o=[I,i,t],s=FA.size(o),B=[{type:12,data:s},{type:12,data:C},{type:12,data:t}],Q=a=>{let r=le("qkv_with_bias",g.dataType,o),d=UA("qkv",g.dataType,o),c=UA("bias",e.dataType,o),f=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return` ${a.registerUniforms(f).declareVariables(d,c,r)} ${a.mainStart()} ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset; qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx]; }`};return A.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:g.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:B}),getShaderSource:Q},{inputs:[g,e],outputs:[-1]})[0]},vt=(A,g,e,I,i,t,C,o)=>{let s=t;if(C&&FA.size(C.dims)>0){if(I===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return s=kd(A,t,C,g,I,e*i,o),s=s.reshape([g,I,e,i]),e===1||I===1?s:A.compute(QI(s,aB.perm),{inputs:[s],outputs:[-1]})[0]}else return t.dims.length===3&&(s=t.reshape([g,I,e,i])),e===1||I===1?s:A.compute(QI(s,aB.perm),{inputs:[s],outputs:[-1]})[0]},bw=(A,g)=>{let e=Gd(A.inputs,g),I=A.inputs[0],i=II(A.inputs,1),t=II(A.inputs,2),C=II(A.inputs,3),o=II(A.inputs,4),s=II(A.inputs,5),B=II(A.inputs,6),Q=II(A.inputs,7);if(I.dims.length===5)throw new Error("Packed QKV is not implemented");if(i?.dims.length===5)throw new Error("Packed KV is not implemented");let a=i&&t&&i.dims.length===4&&t.dims.length===4,r=vt(A,e.batchSize,e.numHeads,e.sequenceLength,e.headSize,I,C,0);if(a)return jt(A,r,i,t,o,void 0,B,Q,s,e);if(!i||!t)throw new Error("key and value must be provided");let d=vt(A,e.batchSize,e.numHeads,e.kvSequenceLength,e.headSize,i,C,e.hiddenSize),c=vt(A,e.batchSize,e.numHeads,e.kvSequenceLength,e.vHeadSize,t,C,2*e.hiddenSize);jt(A,r,d,c,o,void 0,B,Q,s,e)}}),Ld,Kd,Ud,Jd,jB,Tw,Yw,Hw=VA(()=>{Fe(),Le(),fg(),Je(),Ld=A=>{if(!A||A.length<1)throw new Error("too few inputs")},Kd=(A,g)=>{let e=[],I=g.numOutputs;return A[1].dims[0]>0&&(A[1].getBigInt64Array().forEach(i=>e.push(Number(i))),I=e.length),$e({numOutputs:I,axis:g.axis,splitSizes:e})},Ud=A=>` fn calculateOutputIndex(index: u32) -> u32 { for (var i: u32 = 0u; i < ${A}u; i += 1u ) { if (index < ${ce("uniforms.size_in_split_axis","i",A)}) { return i; } } return ${A}u; }`,Jd=A=>{let g=A.length,e=[];for(let I=0;I{let e=A[0].dims,I=FA.size(e),i=A[0].dataType,t=FA.normalizeAxis(g.axis,e.length),C=new Array(g.numOutputs),o=UA("input",i,e.length),s=new Array(g.numOutputs),B=[],Q=[],a=0,r=[{type:12,data:I}];for(let c=0;c` ${c.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",s.length).declareVariables(o,...C)} ${Ud(s.length)} ${Jd(C)} ${c.mainStart()} ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")} var indices = ${o.offsetToIndices("global_idx")}; var index = ${o.indicesGet("indices",t)}; let output_number = calculateOutputIndex(index); if (output_number != 0) { index -= ${ce("uniforms.size_in_split_axis","output_number - 1u",s.length)}; ${o.indicesSet("indices",t,"index")}; } writeBufferData(output_number, indices, global_idx); }`;return{name:"Split",shaderCache:{hint:g.cacheKey,inputDependencies:["rank"]},getShaderSource:d,getRunData:()=>({outputs:B,dispatchGroup:{x:Math.ceil(I/64)},programUniforms:r})}},Tw=(A,g)=>{Ld(A.inputs);let e=A.inputs.length===1?g:Kd(A.inputs,g);A.compute(jB(A.inputs,e),{inputs:[0]})},Yw=A=>{let g=A.axis,e=A.splitSizes,I=A.numOutputs<0?e.length:A.numOutputs;if(I!==e.length)throw new Error("numOutputs and splitSizes lengh must be equal");return $e({axis:g,numOutputs:I,splitSizes:e})}}),bd,rC,Pw,vw=VA(()=>{Fe(),Le(),fg(),Je(),bd=(A,g)=>{let[e,I,i,t]=A,{numHeads:C,rotaryEmbeddingDim:o}=g;if(e.dims.length!==3&&e.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${e.dims.length}`);if(!FA.areEqual(I.dims,[])&&!FA.areEqual(I.dims,[1])&&I.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${I.dims.length}`);if(i.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${i.dims.length}`);if(t.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${t.dims.length}`);if(!FA.areEqual(i.dims,t.dims))throw new Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(o>0&&C===0)throw new Error("num_heads must be provided if rotary_embedding_dim is specified");let s=e.dims[0],B=e.dims[e.dims.length-2],Q=i.dims[0],a=FA.sizeFromDimension(e.dims,1)/B,r=o===0?i.dims[1]*2:a/C;if(o>r)throw new Error("rotary_embedding_dim must be less than or equal to head_size");if(I.dims.length===2){if(s!==I.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${I.dims[0]}`);if(B!==I.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${I.dims[1]}`)}if(r/2!==i.dims[1]&&o/2!==i.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${i.dims[1]}`);if(B>Q)throw new Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")},rC=(A,g)=>{let{interleaved:e,numHeads:I,rotaryEmbeddingDim:i,scale:t}=g,C=A[0].dims[0],o=FA.sizeFromDimension(A[0].dims,1),s=A[0].dims[A[0].dims.length-2],B=o/s,Q=A[2].dims[1],a=i===0?Q*2:B/I,r=new Array(C,s,B/a,a-Q),d=FA.computeStrides(r),c=[{type:1,data:t},{type:12,data:r},{type:12,data:d},...A[0].dims.length===3?new Array({type:12,data:[o,B,a,1]}):[],...A[0].dims.length===4?new Array({type:12,data:[o,a,s*a,1]}):[],...he(A[0].dims,A[1].dims,A[2].dims,A[3].dims,A[0].dims)],f=k=>{let u=UA("input",A[0].dataType,A[0].dims.length),D=UA("position_ids",A[1].dataType,A[1].dims.length),G=UA("cos_cache",A[2].dataType,A[2].dims.length),h=UA("sin_cache",A[3].dataType,A[3].dims.length),y=le("output",A[0].dataType,A[0].dims.length);return k.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:r.length},{name:"global_strides",type:"u32",length:d.length},{name:"input_output_strides",type:"u32",length:d.length}]),` ${k.declareVariables(u,D,G,h,y)} ${k.mainStart(It)} let half_rotary_emb_dim = uniforms.${G.name}_shape[1]; let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape; let size = uniforms.global_shape[0] * uniforms.global_strides[0]; ${k.guardAgainstOutOfBoundsWorkgroupSizes("size")} if (bsnh[3] < half_rotary_emb_dim) { let position_ids_idx = ${D.broadcastedIndicesToOffset("bsnh.xy",le("",D.type.tensor,2))}; let position_id = u32(${D.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0); let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${e}); let j = i + select(half_rotary_emb_dim, 1, ${e}); let re = ${u.getByOffset("i")} * ${G.get("position_id","bsnh[3]")} - ${u.getByOffset("j")} * ${h.get("position_id","bsnh[3]")}; ${y.setByOffset("i","re")} let im = ${u.getByOffset("i")} * ${h.get("position_id","bsnh[3]")} + ${u.getByOffset("j")} * ${G.get("position_id","bsnh[3]")}; ${y.setByOffset("j","im")} } else { let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim; ${y.setByOffset("k",u.getByOffset("k"))} } }`};return{name:"RotaryEmbedding",shaderCache:{hint:$e({interleaved:e}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:f,getRunData:()=>({outputs:[{dims:A[0].dims,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(FA.size(r)/It)},programUniforms:c})}},Pw=(A,g)=>{bd(A.inputs,g),A.compute(rC(A.inputs,g))}}),xd,Td,QB,Yd,qw,ef=VA(()=>{fg(),Fe(),Er(),xw(),Hw(),ii(),vw(),Je(),xd=(A,g)=>{if(g.doRotary&&A.length<=7)throw new Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let e=A[0],I=A[1],i=A[2],t=A[3],C=A[4];if(g.doRotary!==0&&A.length<=7)throw new Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(g.localWindowSize!==-1)throw new Error("Local attention is not supported");if(g.softcap!==0)throw new Error("Softcap is not supported");if(g.rotaryInterleaved!==0)throw new Error("Rotary interleaved is not supported");if(g.smoothSoftmax)throw new Error("Smooth softmax is not supported");if(e.dims.length!==3&&e.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let o=!1,s=e.dims[0],B=e.dims[1],Q=e.dims.length===3?o?e.dims[2]/3:e.dims[2]:g.numHeads*e.dims[4],a=B,r=0,d=!I||I.dims.length===0,c=Math.floor(d?Q/(g.numHeads+2*g.kvNumHeads):Q/g.numHeads);d&&(Q=c*g.numHeads);let f=t&&t.dims.length!==0,k=C&&C.dims.length!==0;if(f&&t.dims.length===4&&t.dims[0]===s&&t.dims[1]!==g.kvNumHeads&&t.dims[2]===g.kvNumHeads&&t.dims[3]===c)throw new Error("BSNH pastKey/pastValue is not supported");if(f&&k){if(t.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(C.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');r=t.dims[2]}else if(f||k)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let u=1;if(I&&I.dims.length>0){if(e.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(I.dims.length<3||I.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(e.dims[0]!==I.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(I.dims.length===3){if(e.dims[2]%I.dims[2]!==0)throw new Error('Dimension 2 of "query" should be a multiple of "key"');a=I.dims[1]}else if(I.dims.length===5){if(I.dims[2]!==g.numHeads||I.dims[3]!==2||I.dims[4]!==c)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(i)throw new Error('Expect "value" be none when "key" has packed kv format.');a=I.dims[1]}else{if(I.dims[1]!==g.numHeads||I.dims[3]!==c)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');a=I.dims[2]}}else{if(e.dims.length!==3&&e.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(e.dims.length===5&&(e.dims[2]!==g.numHeads||e.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');u=3}let D=0,G=!1,h=g.kvNumHeads?c*g.kvNumHeads:Q;if(i&&i.dims.length>0){if(i.dims.length!==3&&i.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(e.dims[0]!==i.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(i.dims.length===3){if(a!==i.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');h=i.dims[2]}else{if(a!==i.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');h=i.dims[1]*i.dims[3],G=!0}}let y=A.length>4?A[5]:void 0;if(y&&y.dims.length!==1&&y.dims[0]!==s)throw new Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:s,sequenceLength:B,pastSequenceLength:r,kvSequenceLength:a,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:Q,vHiddenSize:h,headSize:c,vHeadSize:Math.floor(h/g.kvNumHeads),numHeads:g.numHeads,kvNumHeads:g.kvNumHeads,nReps:g.numHeads/g.kvNumHeads,pastPresentShareBuffer:!1,maskType:D,scale:g.scale,broadcastResPosBias:!1,passPastInKv:G,qkvFormat:u}},Td=$e({perm:[0,2,1,3]}),QB=(A,g,e)=>{let I=g,i=e.kvNumHeads;return g.dims.length===3&&e.kvSequenceLength!==0&&(I=g.reshape([e.batchSize,e.kvSequenceLength,i,e.headSize]),I=A.compute(QI(I,Td.perm),{inputs:[I],outputs:[-1]})[0]),I},Yd=(A,g,e,I)=>{let i=7,t=["type","type"],C=[A*g],o=A*g,s=[{type:12,data:o},{type:12,data:g},{type:12,data:A}],B=Q=>{let a=UA("seq_lens",e.dataType,e.dims),r=UA("total_seq_lens",I.dataType,I.dims),d=le("pos_ids",i,C),c=[{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}];return` ${Q.registerUniforms(c).declareVariables(a,r,d)} ${Q.mainStart()} ${Q.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let total_sequence_length = u32(${r.getByOffset("0")}); let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length; let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length; let batch_idx = global_idx / uniforms.sequence_length; let sequence_idx = i32(global_idx % uniforms.sequence_length); var pos_id: i32 = 0; let seqlen = ${a.getByOffset("batch_idx")}; let total_seqlen = seqlen + 1; if (is_first_prompt) { if (sequence_idx < total_seqlen) { pos_id = sequence_idx; } else { pos_id = 1; } ${d.setByOffset("global_idx","pos_id")} } else if (is_subsequent_prompt) { let past_seqlen = total_seqlen - i32(uniforms.sequence_length); if (past_seqlen + sequence_idx < total_seqlen) { pos_id = past_seqlen + sequence_idx; } else { pos_id = 1; } ${d.setByOffset("global_idx","pos_id")} } else if (global_idx < uniforms.batch_size) { ${d.setByOffset("global_idx","seqlen")} }; } `};return{name:"GeneratePositionIds",shaderCache:{hint:`${A};${g}`,inputDependencies:t},getRunData:()=>({outputs:[{dims:C,dataType:i}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:s}),getShaderSource:B}},qw=(A,g)=>{let e=xd(A.inputs,g);if(A.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(A.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let I=A.inputs[0],i=A.inputs[1]&&A.inputs[1].dims.length>0?A.inputs[1]:void 0,t=A.inputs[2]&&A.inputs[2].dims.length>0?A.inputs[2]:void 0,C=A.inputs[3]&&A.inputs[3].dims.length!==0?A.inputs[3]:void 0,o=A.inputs[4]&&A.inputs[4].dims.length!==0?A.inputs[4]:void 0,s=A.inputs.length>4?A.inputs[5]:void 0,B=A.inputs.length>5?A.inputs[6]:void 0,Q=e.kvNumHeads?e.kvNumHeads:e.numHeads,a=$e({axis:2,numOutputs:3,splitSizes:[e.numHeads*e.headSize,Q*e.headSize,Q*e.headSize]}),[r,d,c]=!i&&!t?A.compute(jB([I],a),{inputs:[I],outputs:[-1,-1,-1]}):[I,i,t],f,k;if(g.doRotary){let h=A.compute(Yd(e.batchSize,e.sequenceLength,s,B),{inputs:[s,B],outputs:[-1]})[0],y=A.inputs[7],M=A.inputs[8],m=$e({interleaved:g.rotaryInterleaved!==0,numHeads:e.numHeads,rotaryEmbeddingDim:0,scale:g.scale}),_=[r,h,y,M],x=[-1];f=A.compute(rC(_,m),{inputs:_,outputs:x})[0],_.splice(0,1,d);let b=$e({interleaved:g.rotaryInterleaved!==0,numHeads:e.kvNumHeads,rotaryEmbeddingDim:0,scale:g.scale});k=A.compute(rC(_,b),{inputs:_,outputs:x})[0]}let u=vt(A,e.batchSize,e.numHeads,e.sequenceLength,e.headSize,g.doRotary?f:r,void 0,0),D=QB(A,g.doRotary?k:d,e),G=QB(A,c,e);jt(A,u,D,G,void 0,void 0,C,o,void 0,e,s,B)}}),EB,Hd,Pd,Ow,gf=VA(()=>{Fe(),Le(),ii(),Je(),EB=(A,g,e,I,i,t,C,o)=>{let s=Dg(t),B=s===1?"f32":`vec${s}f`,Q=s===1?"vec2f":`mat2x${s}f`,a=i*C,r=64;a===1&&(r=256);let d=[i,C,t/s],c=[i,C,2],f=["rank","type","type"],k=[];k.push(...he(d,c));let u=D=>{let G=UA("x",g.dataType,3,s),h=UA("scale",e.dataType,e.dims),y=UA("bias",I.dataType,I.dims),M=le("output",1,3,2),m=[G,h,y,M];return` var workgroup_shared : array<${Q}, ${r}>; const workgroup_size = ${r}u; ${D.declareVariables(...m)} ${D.mainStart(r)} let batch = workgroup_index / uniforms.x_shape[1]; let channel = workgroup_index % uniforms.x_shape[1]; let hight = uniforms.x_shape[2]; // initialize workgroup memory var sum = ${B}(0); var squared_sum = ${B}(0); for (var h = local_idx; h < hight; h += workgroup_size) { let value = ${B}(${G.get("batch","channel","h")}); sum += value; squared_sum += value * value; } workgroup_shared[local_idx] = ${Q}(sum, squared_sum); workgroupBarrier(); for (var currSize = workgroup_size >> 1; currSize > 0; currSize = currSize >> 1) { if (local_idx < currSize) { workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize]; } workgroupBarrier(); } if (local_idx == 0) { let sum_final = ${Ii("workgroup_shared[0][0]",s)} / f32(hight * ${s}); let squared_sum_final = ${Ii("workgroup_shared[0][1]",s)} / f32(hight * ${s}); let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${o})); let channel_scale = inv_std_dev * f32(scale[channel]); let channel_shift = f32(bias[channel]) - sum_final * channel_scale; output[workgroup_index] = vec2f(channel_scale, channel_shift); } }`};return A.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${s};${o};${r}`,inputDependencies:f},getRunData:()=>({outputs:[{dims:c,dataType:1}],dispatchGroup:{x:a},programUniforms:k}),getShaderSource:u},{inputs:[g,e,I],outputs:[-1]})[0]},Hd=(A,g,e)=>{let I=g[0].dims,i=I,t=2,C=I[0],o=I[1],s=FA.sizeFromDimension(I,t),B=Dg(s),Q=FA.size(i)/B,a=EB(A,g[0],g[1],g[2],C,s,o,e.epsilon),r=[C,o,s/B],d=[C,o],c=["type","none"],f=k=>{let u=UA("x",g[0].dataType,r.length,B),D=UA("scale_shift",1,d.length,2),G=le("output",g[0].dataType,r.length,B),h=[u,D,G];return` ${k.registerUniform("output_size","u32").declareVariables(...h)} ${k.mainStart()} ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let outputIndices = ${G.offsetToIndices("global_idx")}; let batch = outputIndices[0]; let channel = outputIndices[1]; let scale_shift = ${D.getByIndices("vec2(batch, channel)")}; let value = ${u.getByOffset("global_idx")} * ${G.type.value}(scale_shift.x) + ${G.type.value}(scale_shift.y); ${G.setByOffset("global_idx","value")}; }`};A.compute({name:"InstanceNormalization",shaderCache:{hint:`${B}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:i,dataType:g[0].dataType}],dispatchGroup:{x:Math.ceil(Q/64)},programUniforms:[{type:12,data:Q},...he(r,d,r)]}),getShaderSource:f},{inputs:[g[0],a]})},Pd=(A,g,e)=>{let I=g[0].dims,i=I,t=I[0],C=I[I.length-1],o=FA.sizeFromDimension(I,1)/C,s=Dg(C),B=FA.size(i)/s,Q=[{type:12,data:o},{type:12,data:Math.floor(C/s)}],a=["type","type"],r=!1,d=[0,I.length-1];for(let u=0;uI[d[D]])),f=EB(A,c,g[1],g[2],t,o,C,e.epsilon),k=u=>{let D=Hg(g[0].dataType),G=s===1?"vec2f":`mat${s}x2f`,h=m=>{let _=m===0?"x":"y",x=s===1?"f32":`vec${s}f`;switch(s){case 1:return`${D}(${x}(scale.${_}))`;case 2:return`vec2<${D}>(${x}(scale[0].${_}, scale[1].${_}))`;case 4:return`vec4<${D}>(${x}(scale[0].${_}, scale[1].${_}, scale[2].${_}, scale[3].${_}))`;default:throw new Error(`Not supported compoents ${s}`)}},y=UA("input",g[0].dataType,g[0].dims,s),M=le("output",g[0].dataType,i,s);return` @group(0) @binding(0) var input : array<${y.type.storage}>; @group(0) @binding(1) var scale_input : array<${G}>; @group(0) @binding(2) var output : array<${M.type.storage}>; struct Uniforms {H: u32, C : u32}; @group(0) @binding(3) var uniforms: Uniforms; ${u.mainStart()} let current_image_number = global_idx / (uniforms.C * uniforms.H); let current_channel_number = global_idx % uniforms.C; let scale_offset = current_image_number * uniforms.C + current_channel_number; let scale = scale_input[scale_offset]; output[global_idx] = fma(input[global_idx], ${h(0)}, ${h(1)}); }`};A.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${s}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:i,dataType:g[0].dataType}],dispatchGroup:{x:Math.ceil(B/64)},programUniforms:Q}),getShaderSource:k},{inputs:[g[0],f]})},Ow=(A,g)=>{g.format==="NHWC"?Pd(A,A.inputs,g):Hd(A,A.inputs,g)}}),vd,qd,Ww,If=VA(()=>{Fe(),Le(),Je(),vd=A=>{if(!A||A.length<2)throw new Error("layerNorm requires at least 2 inputs.")},qd=(A,g,e)=>{let I=g.simplified,i=A[0].dims,t=A[1],C=!I&&A[2],o=i,s=FA.normalizeAxis(g.axis,i.length),B=FA.sizeToDimension(i,s),Q=FA.sizeFromDimension(i,s),a=FA.size(t.dims),r=C?FA.size(C.dims):0;if(a!==Q||C&&r!==Q)throw new Error(`Size of X.shape()[axis:] == ${Q}. Size of scale and bias (if provided) must match this. Got scale size of ${a} and bias size of ${r}`);let d=[];for(let y=0;y1,D=e>2,G=y=>{let M=Hg(A[0].dataType),m=[UA("x",A[0].dataType,A[0].dims,c),UA("scale",t.dataType,t.dims,c)];C&&m.push(UA("bias",C.dataType,C.dims,c)),m.push(le("output",A[0].dataType,o,c)),u&&m.push(le("mean_data_output",1,d)),D&&m.push(le("inv_std_output",1,d));let _=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return` ${y.registerUniforms(_).declareVariables(...m)} ${y.mainStart()} ${y.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")} let offset = global_idx * uniforms.norm_size_vectorized; var mean_vector = ${xB("f32",c)}; var mean_square_vector = ${xB("f32",c)}; for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) { let value = ${et(M,c,"x[h + offset]")}; mean_vector += value; mean_square_vector += value * value; } let mean = ${Ii("mean_vector",c)} / uniforms.norm_size; let inv_std_dev = inverseSqrt(${Ii("mean_square_vector",c)} / uniforms.norm_size ${I?"":"- mean * mean"} + uniforms.epsilon); for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) { let f32input = ${et(M,c,"x[j + offset]")}; let f32scale = ${et(M,c,"scale[j]")}; output[j + offset] = ${m[0].type.value}((f32input ${I?"":"- mean"}) * inv_std_dev * f32scale ${C?`+ ${et(M,c,"bias[j]")}`:""} ); } ${u?"mean_data_output[global_idx] = mean":""}; ${D?"inv_std_output[global_idx] = inv_std_dev":""}; }`},h=[{dims:o,dataType:A[0].dataType}];return u&&h.push({dims:d,dataType:1}),D&&h.push({dims:d,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${c};${e};${I}`,inputDependencies:f},getRunData:()=>({outputs:h,dispatchGroup:{x:Math.ceil(B/64)},programUniforms:k}),getShaderSource:G}},Ww=(A,g)=>{vd(A.inputs),A.compute(qd(A.inputs,g,A.outputCount))}}),Od,jw,tf=VA(()=>{Le(),hr(),ur(),Od=A=>{if(!A||A.length!==2)throw new Error("MatMul requires 2 inputs.");if(A[0].dims[A[0].dims.length-1]!==A[1].dims[A[1].dims.length-2])throw new Error("shared dimension does not match.")},jw=A=>{Od(A.inputs);let g=gt.calcShape(A.inputs[0].dims,A.inputs[1].dims,!0);if(!g)throw new Error("Can't use matmul on the given tensors");let e=g[g.length-1],I=A.inputs[0].dims[A.inputs[0].dims.length-1];if(e<8&&I<8)A.compute(dr(A.inputs,{activation:""},g));else{let i=g[g.length-2],t=FA.size(A.inputs[0].dims.slice(0,-2)),C=FA.size(A.inputs[1].dims.slice(0,-2));if(t!==1&&i===1&&C===1){let o=A.inputs[0].reshape([1,t,I]),s=A.inputs[1].reshape([1,I,e]),B=[1,t,e],Q=[o,s];A.compute(BC(Q,{activation:""},g,B),{inputs:Q})}else A.compute(BC(A.inputs,{activation:""},g))}}}),Wd,jd,Vd,Vw,zw,of=VA(()=>{Fe(),Le(),fg(),Je(),Wd=(A,g)=>{if(A.length<3||A.length>4)throw new Error("MatMulNBits requires 3 or 4 inputs");let e=A[0],I=e.dims.length;if(e.dims[I-1]!==g.k)throw new Error("The last dim of input shape does not match the k value");let i=Math.floor((g.k+g.blockSize-1)/g.blockSize),t=g.blockSize/8*g.bits,C=A[1];if(!FA.areEqual(C.dims,[g.n,i,t]))throw new Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let o=A[2].dims;if(FA.size(o)!==g.n*i)throw new Error("scales input size error.");if(A.length===4){let s=A[3].dims,B=g.bits>4?g.n*i:g.n*Math.floor((i+1)/2);if(FA.size(s)!==B)throw new Error("zeroPoints input size error.")}},jd=(A,g)=>{let e=A[0].dims,I=e.length,i=e[I-2],t=g.k,C=g.n,o=e.slice(0,I-2),s=FA.size(o),B=A[1].dims[2]/4,Q=A[0].dataType,a=Dg(g.k),r=Dg(B),d=Dg(C),c=o.concat([i,C]),f=i>1&&C/d%2===0?2:1,k=FA.size(c)/d/f,u=64,D=[],G=[s,i,t/a],h=FA.convertShape(A[1].dims).slice();h.splice(-1,1,B/r),D.push(...he(G)),D.push(...he(h)),D.push(...he(A[2].dims)),A.length===4&&D.push(...he(FA.convertShape(A[3].dims)));let y=[s,i,C/d];D.push(...he(y));let M=m=>{let _=G.length,x=UA("a",A[0].dataType,_,a),b=UA("b",12,h.length,r),X=UA("scales",A[2].dataType,A[2].dims.length),Z=[x,b,X],T=A.length===4?UA("zero_points",12,A[3].dims.length):void 0;T&&Z.push(T);let CA=y.length,eA=le("output",A[0].dataType,CA,d),tA=Hg(A[0].dataType),BA=(()=>{switch(a){case 1:return`array<${tA}, 8>`;case 2:return`mat4x2<${tA}>`;case 4:return`mat2x4<${tA}>`;default:throw new Error(`${a}-component is not supported.`)}})(),sA=()=>{let P=` // reuse a data var input_offset = ${x.indicesToOffset(`${x.type.indices}(batch, row, word_offset)`)}; var a_data: ${BA}; for (var j: u32 = 0; j < ${8/a}; j++) { a_data[j] = ${x.getByOffset("input_offset")}; input_offset++; } `;for(let U=0;U> 4) & b_mask); b_quantized_values = ${BA}(${Array.from({length:4},(z,v)=>`${tA}(b_value_lower[${v}]), ${tA}(b_value_upper[${v}])`).join(", ")}); b_dequantized_values = ${a===1?`${BA}(${Array.from({length:8},(z,v)=>`(b_quantized_values[${v}] - ${T?`zero_point${U}`:"zero_point"}) * scale${U}`).join(", ")});`:`(b_quantized_values - ${BA}(${Array(8).fill(`${T?`zero_point${U}`:"zero_point"}`).join(",")})) * scale${U};`}; workgroup_shared[local_id.x * ${f} + ${Math.floor(U/d)}]${d>1?`[${U%d}]`:""} += ${Array.from({length:8/a},(z,v)=>`${a===1?`a_data[${v}] * b_dequantized_values[${v}]`:`dot(a_data[${v}], b_dequantized_values[${v}])`}`).join(" + ")}; `;return P},cA=()=>{let P=` var col_index = col * ${d}; ${T?` let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2; var zero_point_byte_count: u32; var zero_point_word_index: u32; var zero_point_byte_offset: u32; let zero_point_nibble_offset: u32 = block & 0x1u; var zero_point_bits_offset: u32; var zero_point_word: u32;`:` // The default zero point is 8 for unsigned 4-bit quantization. let zero_point = ${tA}(8);`} `;for(let U=0;U> 0x1u); zero_point_word_index = zero_point_byte_count >> 0x2u; zero_point_byte_offset = zero_point_byte_count & 0x3u; zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); zero_point_word = ${T.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; let zero_point${U} = ${tA}((zero_point_word) & 0xFu);`:""} col_index += 1;`;return P},dA=()=>{let P=`col_index = col * ${d};`;for(let U=0;U; var b_value_upper: vec4; var b_quantized_values: ${BA}; var b_dequantized_values: ${BA};`,P};return` var workgroup_shared: array<${eA.type.value}, ${f*u}>; ${m.declareVariables(...Z,eA)} ${m.mainStart([u,1,1])} let output_indices = ${eA.offsetToIndices(`(global_idx / ${u}) * ${f}`)}; let col = output_indices[2]; let row = output_indices[1]; let batch = output_indices[0]; let nBlocksPerCol = uniforms.b_shape[1]; for (var block = local_id.x; block < nBlocksPerCol; block += ${u}) { //process one block var word_offset: u32 = block * ${g.blockSize/a}; ${cA()} for (var word: u32 = 0; word < ${B}; word += ${r}) { ${dA()} for (var i: u32 = 0; i < ${r}; i++) { ${sA()} word_offset += ${8/a}; } } } workgroupBarrier(); if (local_id.x < ${f}) { var output_value: ${eA.type.value} = ${eA.type.value}(0); var workgroup_shared_offset: u32 = local_id.x; for (var b: u32 = 0u; b < ${u}u; b++) { output_value += workgroup_shared[workgroup_shared_offset]; workgroup_shared_offset += ${f}; } ${eA.setByIndices(`${eA.type.indices}(batch, row, col + local_id.x)`,"output_value")}; } }`};return{name:"MatMulNBits",shaderCache:{hint:`${g.blockSize};${g.bits};${a};${r};${d};${f};${u}`,inputDependencies:Array(A.length).fill("rank")},getRunData:()=>({outputs:[{dims:c,dataType:Q}],dispatchGroup:{x:k},programUniforms:D}),getShaderSource:M}},Vd=(A,g)=>{let e=A[0].dims,I=e.length,i=e[I-2],t=g.k,C=g.n,o=e.slice(0,I-2),s=FA.size(o),B=A[1].dims[2]/4,Q=A[0].dataType,a=Dg(g.k),r=Dg(B),d=o.concat([i,C]),c=128,f=C%8===0?8:C%4===0?4:1,k=c/f,u=k*r*8,D=u/a,G=u/g.blockSize,h=FA.size(d)/f,y=[],M=[s,i,t/a],m=FA.convertShape(A[1].dims).slice();m.splice(-1,1,B/r),y.push(...he(M)),y.push(...he(m)),y.push(...he(A[2].dims)),A.length===4&&y.push(...he(FA.convertShape(A[3].dims)));let _=[s,i,C];y.push(...he(_));let x=b=>{let X=M.length,Z=UA("a",A[0].dataType,X,a),T=UA("b",12,m.length,r),CA=UA("scales",A[2].dataType,A[2].dims.length),eA=[Z,T,CA],tA=A.length===4?UA("zero_points",12,A[3].dims.length):void 0;tA&&eA.push(tA);let BA=_.length,sA=le("output",A[0].dataType,BA),cA=Hg(A[0].dataType),dA=()=>{switch(a){case 1:return` let a_data0 = vec4<${cA}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]); let a_data1 = vec4<${cA}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return` let a_data0 = vec4<${cA}>(sub_a[word_offset], sub_a[word_offset + 1]); let a_data1 = vec4<${cA}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return` let a_data0 = sub_a[word_offset]; let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${a}-component is not supported.`)}};return` var sub_a: array<${Z.type.value}, ${D}>; var inter_results: array, ${f}>; ${b.declareVariables(...eA,sA)} ${b.mainStart([k,f,1])} let output_indices = ${sA.offsetToIndices(`workgroup_index * ${f}`)}; let col = output_indices[2]; let row = output_indices[1]; let batch = output_indices[0]; let n_blocks_per_col = uniforms.b_shape[1]; let num_tiles = (n_blocks_per_col - 1) / ${G} + 1; // Loop over shared dimension. for (var tile: u32 = 0; tile < num_tiles; tile += 1) { let a_col_start = tile * ${D}; // load one tile A data into shared memory. for (var a_offset = local_idx; a_offset < ${D}; a_offset += ${c}) { let a_col = a_col_start + a_offset; if (a_col < uniforms.a_shape[2]) { sub_a[a_offset] = ${Z.getByIndices(`${Z.type.indices}(batch, row, a_col)`)}; } else { sub_a[a_offset] = ${Z.type.value}(0); } } workgroupBarrier(); // each thread process one block let b_row = col + local_id.y; let block = tile * ${G} + local_id.x; ${tA?` let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2; let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u); let zero_point_word_index = zero_point_byte_count >> 0x2u; let zero_point_byte_offset = zero_point_byte_count & 0x3u; let zero_point_nibble_offset: u32 = block & 0x1u; let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); let zero_point_word = ${tA.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; let zero_point = ${cA}((zero_point_word) & 0xFu);`:` // The default zero point is 8 for unsigned 4-bit quantization. let zero_point = ${cA}(8);`} let scale = ${CA.getByOffset("b_row * n_blocks_per_col + block")}; let b_data = ${T.getByIndices(`${T.type.indices}(b_row, block, 0)`)}; var word_offset = local_id.x * ${g.blockSize/a}; for (var i: u32 = 0; i < ${r}; i++) { ${dA()} let b_value = ${r===1?"b_data":"b_data[i]"}; let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu); let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu); let b_quantized_values = mat2x4<${cA}>(${Array.from({length:4},(P,U)=>`${cA}(b_value_lower[${U}]), ${cA}(b_value_upper[${U}])`).join(", ")}); let b_dequantized_values = (b_quantized_values - mat2x4<${cA}>(${Array(8).fill("zero_point").join(",")})) * scale; inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(P,U)=>`${`dot(a_data${U}, b_dequantized_values[${U}])`}`).join(" + ")}; word_offset += ${8/a}; } workgroupBarrier(); } if (local_idx < ${f}) { var output_value: ${sA.type.value} = ${sA.type.value}(0); for (var b = 0u; b < ${k}; b++) { output_value += inter_results[local_idx][b]; } if (col + local_idx < uniforms.output_shape[2]) { ${sA.setByIndices(`${sA.type.indices}(batch, row, col + local_idx)`,"output_value")} } } }`};return{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${g.blockSize};${a};${r};${k};${f}`,inputDependencies:Array(A.length).fill("rank")},getRunData:()=>({outputs:[{dims:d,dataType:Q}],dispatchGroup:{x:h},programUniforms:y}),getShaderSource:x}},Vw=(A,g)=>{Wd(A.inputs,g),g.blockSize===32&&A.adapterInfo.isVendor("intel")&&A.adapterInfo.isArchitecture("gen-12lp")?A.compute(Vd(A.inputs,g)):A.compute(jd(A.inputs,g))},zw=A=>$e(A)}),zd,$d,Xd,Zd,Ah,eh,gh,Ih,$w,Cf=VA(()=>{Fe(),Le(),Je(),zd=A=>{if(!A||A.length<1)throw new Error("Too few inputs");if(A[0].dataType!==1&&A[0].dataType!==10)throw new Error("Input type must be float or float16.");if(A.length>=2){let g=A[0].dims.length*2===A[1].dims[0];if(A.length===4&&(g=A[3].dims[0]*2===A[1].dims[0]),!g)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},$d=(A,g,e)=>{let I="";for(let i=g-1;i>=0;--i)I+=` k = i32(${A.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,e)}; if (k < 0) { break; } if (k >= i32(${ce("uniforms.x_shape",i,g)})) { break; } offset += k * i32(${ce("uniforms.x_strides",i,g)}); `;return` value = ${A.type.value}(uniforms.constant_value); for (var i = 0; i < 1; i++) { var offset = 0; var k = 0; ${I} value = x[offset]; } `},Xd=(A,g,e)=>{let I="";for(let i=g-1;i>=0;--i)I+=` k = i32(${A.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,e)}; if (k < 0) { k = -k; } { let _2n_1 = 2 * (i32(${ce("uniforms.x_shape",i,g)}) - 1); k = k % _2n_1; if(k >= i32(${ce("uniforms.x_shape",i,g)})) { k = _2n_1 - k; } } offset += k * i32(${ce("uniforms.x_strides",i,g)}); `;return` var offset = 0; var k = 0; ${I} value = x[offset]; `},Zd=(A,g,e)=>{let I="";for(let i=g-1;i>=0;--i)I+=` k = i32(${A.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,e)}; if (k < 0) { k = 0; } if (k >= i32(${ce("uniforms.x_shape",i,g)})) { k = i32(${ce("uniforms.x_shape",i,g)}) - 1; } offset += k * i32(${ce("uniforms.x_strides",i,g)}); `;return` var offset = 0; var k = 0; ${I} value = x[offset]; `},Ah=(A,g,e)=>{let I="";for(let i=g-1;i>=0;--i)I+=` k = i32(${A.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,e)}; if (k < 0) { k += i32(${ce("uniforms.x_shape",i,g)}]); } if (k >= i32(${ce("uniforms.x_shape",i,g)})) { k -= i32(${ce("uniforms.x_shape",i,g)}); } offset += k * i32(${ce("uniforms.x_strides",i,g)}); `;return` var offset = 0; var k = 0; ${I} value = x[offset]; `},eh=(A,g,e)=>{switch(e.mode){case 0:return $d(A,g,e.pads.length);case 1:return Xd(A,g,e.pads.length);case 2:return Zd(A,g,e.pads.length);case 3:return Ah(A,g,e.pads.length);default:throw new Error("Invalid mode")}},gh=(A,g)=>{let e=FA.padShape(A[0].dims.slice(),g.pads),I=A[0].dims,i=FA.size(e),t=[{type:12,data:i},{type:6,data:g.pads}],C=A.length>=3&&A[2].data;g.mode===0&&t.push({type:C?A[2].dataType:1,data:g.value}),t.push(...he(A[0].dims,e));let o=["rank"],s=B=>{let Q=le("output",A[0].dataType,e.length),a=UA("x",A[0].dataType,I.length),r=a.type.value,d=eh(Q,I.length,g),c=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:g.pads.length}];return g.mode===0&&c.push({name:"constant_value",type:C?r:"f32"}),` ${B.registerUniforms(c).declareVariables(a,Q)} ${B.mainStart()} ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let indices = ${Q.offsetToIndices("global_idx")}; var value = ${r}(0); ${d} output[global_idx] = value; }`};return{name:"Pad",shaderCache:{hint:`${g.mode}${C}`,inputDependencies:o},getRunData:()=>({outputs:[{dims:e,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(FA.size(e)/64)},programUniforms:t}),getShaderSource:s}},Ih=(A,g)=>{if(A.length>1){let e=A[1].getBigInt64Array(),I=A.length>=3&&A[2].data?A[2].dataType===10?A[2].getUint16Array()[0]:A[2].getFloat32Array()[0]:0,i=A[0].dims.length,t=new Int32Array(2*i).fill(0);if(A.length>=4){let o=A[3].getBigInt64Array();for(let s=0;st[Number(s)]=Number(o));let C=[];return t.forEach(o=>C.push(o)),{mode:g.mode,value:I,pads:C}}else return g},$w=(A,g)=>{zd(A.inputs);let e=Ih(A.inputs,g);A.compute(gh(A.inputs,e),{inputs:[0]})}}),Jt,nB,lB,cB,dB,ih,th,hB,uB,Xw,Zw,DB,A0,e0,wB,g0,I0,i0,t0,sf=VA(()=>{JI(),Fe(),Le(),Je(),Jt=A=>{if(rg.webgpu.validateInputContent&&(!A||A.length!==1))throw new Error("Pool ops requires 1 input.")},nB=(A,g,e)=>{let I=g.format==="NHWC",i=A.dims.slice();I&&i.splice(1,0,i.pop());let t=Object.hasOwnProperty.call(g,"dilations"),C=g.kernelShape.slice(),o=g.strides.slice(),s=t?g.dilations.slice():[],B=g.pads.slice();CC.adjustPoolAttributes(e,i,C,o,s,B);let Q=CC.computePoolOutputShape(e,i,o,s,C,B,g.autoPad),a=Object.assign({},g);t?Object.assign(a,{kernelShape:C,strides:o,pads:B,dilations:s,cacheKey:g.cacheKey}):Object.assign(a,{kernelShape:C,strides:o,pads:B,cacheKey:g.cacheKey});let r=Q.slice();return r.push(r.splice(1,1)[0]),[a,I?r:Q]},lB=(A,g)=>{let e=g.format==="NHWC",I=FA.size(A),i=FA.size(g.kernelShape),t=[{type:12,data:I},{type:12,data:i}],C=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(g.kernelShape.length<=2){let o=g.kernelShape[g.kernelShape.length-1],s=g.strides[g.strides.length-1],B=g.pads[g.pads.length/2-1],Q=g.pads[g.pads.length-1],a=!!(B+Q);t.push({type:12,data:o},{type:12,data:s},{type:12,data:B},{type:12,data:Q}),C.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let r=!1;if(g.kernelShape.length===2){let d=g.kernelShape[g.kernelShape.length-2],c=g.strides[g.strides.length-2],f=g.pads[g.pads.length/2-2],k=g.pads[g.pads.length-2];r=!!(f+k),t.push({type:12,data:d},{type:12,data:c},{type:12,data:f},{type:12,data:k}),C.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[t,C,!0,a,r]}else{if(e)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let o=FA.computeStrides(g.kernelShape);t.push({type:12,data:o},{type:12,data:g.pads},{type:12,data:g.strides}),C.push({name:"kernelStrides",type:"u32",length:o.length},{name:"pads",type:"u32",length:g.pads.length},{name:"strides",type:"u32",length:g.strides.length});let s=g.pads.reduce((B,Q)=>B+Q);return[t,C,!!s,!1,!1]}},cB=(A,g,e,I,i,t,C,o,s,B,Q,a)=>{let r=i.format==="NHWC",d=g.type.value,c=le("output",g.type.tensor,I);if(i.kernelShape.length<=2){let f="",k="",u="",D=e-(r?2:1);if(Q?f=` for (var i: u32 = 0u; i < uniforms.kw; i++) { xIndices[${D}] = indices[${D}] * uniforms.sw - uniforms.pwStart + i; if (xIndices[${D}] < 0 || xIndices[${D}] >= uniforms.x_shape[${D}]) { pad++; continue; } let x_val = x[${g.indicesToOffset("xIndices")}]; ${t} }`:f=` for (var i: u32 = 0u; i < uniforms.kw; i++) { xIndices[${D}] = indices[${D}] * uniforms.sw - uniforms.pwStart + i; let x_val = x[${g.indicesToOffset("xIndices")}]; ${t} }`,i.kernelShape.length===2){let G=e-(r?3:2);a?k=` for (var j: u32 = 0u; j < uniforms.kh; j++) { xIndices[${G}] = indices[${G}] * uniforms.sh - uniforms.phStart + j; if (xIndices[${G}] < 0 || xIndices[${G}] >= uniforms.x_shape[${G}]) { pad += i32(uniforms.kw); continue; } `:k=` for (var j: u32 = 0u; j < uniforms.kh; j++) { xIndices[${G}] = indices[${G}] * uniforms.sh - uniforms.phStart + j; `,u=` } `}return` ${A.registerUniforms(s).declareVariables(g,c)} ${A.mainStart()} ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} let indices = ${c.offsetToIndices("global_idx")}; var xIndices = ${c.offsetToIndices("global_idx")}; var value = ${d}(${o}); var pad = 0; ${k} ${f} ${u} ${C} output[global_idx] = value; }`}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let f=i.kernelShape.length,k=i.pads.length,u="";return B?u=` if (xIndices[j] >= uniforms.x_shape[j]) { pad++; isPad = true; break; } } if (!isPad) { let x_val = x[${g.indicesToOffset("xIndices")}]; ${t} }`:u=` } let x_val = x[${g.indicesToOffset("xIndices")}]; ${t} `,` ${A.registerUniforms(s).declareVariables(g,c)} ${A.mainStart()} ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} let indices = ${c.offsetToIndices("global_idx")}; var xIndices = ${c.offsetToIndices("global_idx")}; var offsets: array; var value = ${d}(${o}); var pad = 0; var isPad = false; for (var i: u32 = 0u; i < uniforms.kernelSize; i++) { var offset = i; for (var j = 0u; j < ${f-1}u; j++) { offsets[j] = offset / ${ce("uniforms.kernelStrides","j",f)}; offset -= offsets[j] * ${ce("uniforms.kernelStrides","j",f)}; } offsets[${f-1}] = offset; isPad = false; for (var j = ${e-f}u; j < ${e}u; j++) { xIndices[j] = indices[j] * ${ce("uniforms.strides",`j - ${e-f}u`,f)} + offsets[j - ${e-f}u] - ${ce("uniforms.pads","j - 2u",k)}; ${u} } ${C} output[global_idx] = value; }`}},dB=A=>`${A.format};${A.ceilMode};${A.autoPad};${A.kernelShape.length}`,ih=A=>`${dB(A)};${A.countIncludePad}`,th=A=>`${dB(A)};${A.storageOrder};${A.dilations}`,hB=A=>({format:A.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][A.auto_pad],ceilMode:A.ceil_mode,kernelShape:A.kernel_shape,strides:A.strides,pads:A.pads}),uB=(A,g,e,I)=>{let[i,t]=nB(g,I,e),C=UA("x",g.dataType,g.dims.length),o=C.type.value,s="value += x_val;",B="";i.countIncludePad?B+=`value /= ${o}(uniforms.kernelSize);`:B+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[Q,a,r,d,c]=lB(t,i);Q.push(...he(g.dims,t));let f=["rank"];return{name:A,shaderCache:{hint:`${I.cacheKey};${r};${d};${c}`,inputDependencies:f},getRunData:()=>({outputs:[{dims:t,dataType:g.dataType}],dispatchGroup:{x:Math.ceil(FA.size(t)/64)},programUniforms:Q}),getShaderSource:k=>cB(k,C,g.dims.length,t.length,i,s,B,0,a,r,d,c)}},Xw=A=>{let g=A.count_include_pad!==0,e=hB(A);if(e.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let I={countIncludePad:g,...e,cacheKey:""};return{...I,cacheKey:ih(I)}},Zw=(A,g)=>{Jt(A.inputs),A.compute(uB("AveragePool",A.inputs[0],!1,g))},DB={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},A0=A=>{let g=A.format;return{format:g,...DB,cacheKey:g}},e0=(A,g)=>{Jt(A.inputs),A.compute(uB("GlobalAveragePool",A.inputs[0],!0,g))},wB=(A,g,e,I)=>{let[i,t]=nB(g,I,e),C=` value = max(x_val, value); `,o="",s=UA("x",g.dataType,g.dims.length),B=["rank"],[Q,a,r,d,c]=lB(t,i);return Q.push(...he(g.dims,t)),{name:A,shaderCache:{hint:`${I.cacheKey};${r};${d};${c}`,inputDependencies:B},getRunData:()=>({outputs:[{dims:t,dataType:g.dataType}],dispatchGroup:{x:Math.ceil(FA.size(t)/64)},programUniforms:Q}),getShaderSource:f=>cB(f,s,g.dims.length,t.length,i,C,o,g.dataType===10?-65504:-1e5,a,r,d,c)}},g0=(A,g)=>{Jt(A.inputs),A.compute(wB("MaxPool",A.inputs[0],!1,g))},I0=A=>{let g=A.storage_order,e=A.dilations,I=hB(A);if(g!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(I.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let i={storageOrder:g,dilations:e,...I,cacheKey:""};return{...i,cacheKey:th(i)}},i0=A=>{let g=A.format;return{format:g,...DB,cacheKey:g}},t0=(A,g)=>{Jt(A.inputs),A.compute(wB("GlobalMaxPool",A.inputs[0],!0,g))}}),oh,Ch,o0,C0,Bf=VA(()=>{Fe(),Le(),fg(),Je(),oh=(A,g)=>{if(A.length<2||A.length>3)throw new Error("DequantizeLinear requires 2 or 3 inputs.");if(A.length===3&&A[1].dims===A[2].dims)throw new Error("x-scale and x-zero-point must have the same shape.");if(A.length===3&&A[0].dataType!==A[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(A[0].dataType===6&&A.length>2)throw new Error("In the case of dequantizing int32 there is no zero point.");if(A[1].dims.length!==0&&A[1].dims.length!==1&&A[1].dims.length!==A[0].dims.length)throw new Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(A.length>2){if(A[0].dataType!==A[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(A[1].dims.length!==A[2].dims.length)throw new Error("scale and zero-point inputs must have the same rank.");if(!A[1].dims.map((e,I)=>e===A[2].dims[I]).reduce((e,I)=>e&&I,!0))throw new Error("scale and zero-point inputs must have the same shape.")}if(g.blockSize>0){if(A[1].dims.length===0||A[1].dims.length===1&&A[1].dims[0]===1)throw new Error("blockSize must be set only for block quantization.");if(!A[1].dims.map((i,t)=>t===g.axis||i===A[0].dims[t]).reduce((i,t)=>i&&t,!0))throw new Error("For block qunatization, scale input shape to match the input shape except for the axis");if(A[1].dims.length!==A[0].dims.length)throw new Error("For block qunatization the scale input rank must be the same as the x rank.");let e=A[0].dims[g.axis],I=A[1].dims[g.axis];if(g.blockSizeMath.ceil(e/(I-1)-1))throw new Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}},Ch=(A,g)=>{let e=FA.normalizeAxis(g.axis,A[0].dims.length),I=A[0].dataType,i=I===3,t=A[0].dims,C=A[1].dataType,o=FA.size(t),s=I===3||I===2,B=s?[Math.ceil(FA.size(A[0].dims)/4)]:A[0].dims,Q=A[1].dims,a=A.length>2?A[2]:void 0,r=a?s?[Math.ceil(FA.size(a.dims)/4)]:a.dims:void 0,d=Q.length===0||Q.length===1&&Q[0]===1,c=d===!1&&Q.length===1,f=Dg(o),k=d&&(!s||f===4),u=k?f:1,D=k&&!s?f:1,G=UA("input",s?12:I,B.length,D),h=UA("scale",C,Q.length),y=a?UA("zero_point",s?12:I,r.length):void 0,M=le("output",C,t.length,u),m=[G,h];y&&m.push(y);let _=[B,Q];a&&_.push(r);let x=[{type:12,data:o/u},{type:12,data:e},{type:12,data:g.blockSize},...he(..._,t)],b=X=>{let Z=[{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}];return` ${X.registerUniforms(Z).declareVariables(...m,M)} ${X.mainStart()} ${X.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let output_indices = ${M.offsetToIndices("global_idx")}; // Set input x ${s?` let input = ${G.getByOffset("global_idx / 4")}; let x_vec = ${i?"unpack4xI8(input)":"unpack4xU8(input)"}; let x_value = ${u===1?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${G.getByOffset("global_idx")};`}; // Set scale input ${d?`let scale_value= ${h.getByOffset("0")}`:c?` let scale_index = ${M.indicesGet("output_indices","uniforms.axis")}; let scale_value= ${h.getByOffset("scale_index")};`:` var scale_indices: ${h.type.indices} = output_indices; let index = ${h.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size; ${h.indicesSet("scale_indices","uniforms.axis","index")}; let scale_value= ${h.getByIndices("scale_indices")};`}; // Set zero-point input ${y?d?s?` let zero_point_input = ${y.getByOffset("0")}; let zero_point_vec = ${i?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${y.getByOffset("0")}`:c?s?` let zero_point_index = ${M.indicesGet("output_indices","uniforms.axis")}; let zero_point_input = ${y.getByOffset("zero_point_index / 4")}; let zero_point_vec = ${i?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; let zero_point_value = zero_point_vec[zero_point_index % 4]`:` let zero_point_index = ${M.indicesGet("output_indices","uniforms.axis")}; let zero_point_value = ${y.getByOffset("zero_point_index")};`:s?` let zero_point_offset = ${h.indicesToOffset("scale_indices")}; let zero_point_input = ${y.getByOffset("zero_point_offset / 4")}; let zero_point_vec = ${i?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${y.getByIndices("scale_indices")};`:`let zero_point_value = ${s?i?"i32":"u32":G.type.value}(0);`}; // Compute and write output ${M.setByOffset("global_idx",`${M.type.value}(x_value - zero_point_value) * scale_value`)}; }`};return{name:"DequantizeLinear",shaderCache:{hint:g.cacheKey,inputDependencies:y?["rank","rank","rank"]:["rank","rank"]},getShaderSource:b,getRunData:()=>({outputs:[{dims:t,dataType:C}],dispatchGroup:{x:Math.ceil(o/u/64),y:1,z:1},programUniforms:x})}},o0=(A,g)=>{oh(A.inputs,g),A.compute(Ch(A.inputs,g))},C0=A=>$e({axis:A.axis,blockSize:A.blockSize})}),sh,Bh,s0,rf=VA(()=>{JI(),Fe(),Je(),sh=(A,g,e)=>{let I=A===g,i=Ag&&e>0;if(I||i||t)throw new Error("Range these inputs' contents are invalid.")},Bh=(A,g,e,I)=>{let i=Math.abs(Math.ceil((g-A)/e)),t=[i],C=i,o=[{type:12,data:C},{type:I,data:A},{type:I,data:e},...he(t)],s=B=>{let Q=le("output",I,t.length),a=Q.type.value,r=[{name:"outputSize",type:"u32"},{name:"start",type:a},{name:"delta",type:a}];return` ${B.registerUniforms(r).declareVariables(Q)} ${B.mainStart()} ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} output[global_idx] = uniforms.start + ${a}(global_idx) * uniforms.delta; }`};return{name:"Range",shaderCache:{hint:`${I}`},getShaderSource:s,getRunData:()=>({outputs:[{dims:t,dataType:I}],dispatchGroup:{x:Math.ceil(C/64)},programUniforms:o})}},s0=A=>{let g=0,e=0,I=0;A.inputs[0].dataType===6?(g=A.inputs[0].getInt32Array()[0],e=A.inputs[1].getInt32Array()[0],I=A.inputs[2].getInt32Array()[0]):A.inputs[0].dataType===1&&(g=A.inputs[0].getFloat32Array()[0],e=A.inputs[1].getFloat32Array()[0],I=A.inputs[2].getFloat32Array()[0]),rg.webgpu.validateInputContent&&sh(g,e,I),A.compute(Bh(g,e,I,A.inputs[0].dataType),{inputs:[]})}}),rh,pB,yB,ah,B0,r0,af=VA(()=>{Fe(),Le(),fg(),Je(),rh=(A,g,e,I)=>{if(A!=="none"&&I!=="i32"&&I!=="u32"&&I!=="f32")throw new Error(`Input ${I} is not supported with reduction ${A}.`);let i=`{ var oldValue = 0; loop { let newValueF32 =`,t=`; let newValue = bitcast(newValueF32); let res = atomicCompareExchangeWeak(&${g}, oldValue, newValue); if res.exchanged { break; } oldValue = res.old_value; } }`;switch(A){case"none":return`${g}=${e};`;case"add":return I==="i32"||I==="u32"?`atomicAdd(&${g}, bitcast<${I}>(${e}));`:` ${i}bitcast<${I}>(oldValue) + (${e})${t}`;case"max":return I==="i32"||I==="u32"?`atomicMax(&${g}, bitcast<${I}>(${e}));`:` ${i}max(bitcast(oldValue), (${e}))${t}`;case"min":return I==="i32"||I==="u32"?`atomicMin(&${g}, bitcast<${I}>(${e}));`:`${i}min(bitcast<${I}>(oldValue), (${e}))${t}`;case"mul":return`${i}(bitcast<${I}>(oldValue) * (${e}))${t}`;default:throw new Error(`Reduction ${A} is not supported.`)}},pB=(A,g)=>`${A===1?` let element_count_dim = uniforms.output_strides; let dim_value = uniforms.output_shape;`:` let element_count_dim = uniforms.output_strides[${g?"i - indices_start":"i"}]; let dim_value = uniforms.output_shape[${g?"i - indices_start":"i"} + uniforms.last_index_dimension];`} if (index >= 0) { if (index >= i32(dim_value)) { index = i32(dim_value - 1); } } else { if (index < -i32(dim_value)) { index = 0; } else { index += i32(dim_value); } } data_offset += u32((u32(index) * element_count_dim));`,yB=(A,g,e)=>`for (var i = 0u; i < uniforms.num_updates_elements; i++) { let value = updates[uniforms.num_updates_elements * ${e?"global_idx":"idx"} + i]; ${rh(A.reduction,"output[data_offset + i]","value",g)} }`,ah=(A,g)=>{let e=A[0].dims,I=A[1].dims,i=e,t=1,C=Math.ceil(FA.size(I)/t),o=I[I.length-1],s=FA.sizeFromDimension(e,o),B=FA.sizeFromDimension(I,0)/o,Q=[{type:12,data:C},{type:12,data:o},{type:12,data:s},...he(A[1].dims,A[2].dims,i)],a=r=>{let d=UA("indices",A[1].dataType,A[1].dims.length),c=UA("updates",A[2].dataType,A[2].dims.length,t),f=g.reduction!=="none"&&g.reduction!==""?bu("output",A[0].dataType,i.length):le("output",A[0].dataType,i.length,t);return` ${r.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(d,c,f)} ${r.mainStart()} ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} var hasDuplicates = false; if (${g.reduction==="none"}) { for (var i = 0; i < ${B}; i = i + 1) { for (var j = i + 1; j < ${B}; j = j + 1) { var index_i = i32(indices[i].x); var index_j = i32(indices[j].x); if (index_i == index_j) { hasDuplicates = true; break; } } if (hasDuplicates) { break; } } } if (${g.reduction==="none"} && hasDuplicates) { if (global_idx != 0u) { return; } // Process each index-update pair individually when duplicates exist for (var idx = 0u; idx < ${B}u; idx++) { var data_offset = 0u; for (var i = 0u; i < uniforms.last_index_dimension; i++) { var index = i32(indices[idx * uniforms.last_index_dimension + i].x); ${pB(e.length,!1)} } ${yB(g,f.type.value,!1)} } return; } var data_offset = 0u; var indices_start = uniforms.last_index_dimension * global_idx; var indices_end = indices_start + uniforms.last_index_dimension; for (var i = indices_start; i < indices_end; i++) { var index = i32(indices[i].x); ${pB(e.length,!0)} } ${yB(g,f.type.value,!0)} }`};return{name:"ScatterND",shaderCache:{hint:`${g.cacheKey}_${g.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(C/64)},programUniforms:Q}),getShaderSource:a}},B0=A=>$e({reduction:A.reduction}),r0=(A,g)=>{A.compute(ah(A.inputs,g),{inputs:[A.inputs[1],A.inputs[2]],outputs:[]})}}),Qh,Eh,nh,fB,lh,ch,dh,hh,uh,Dh,wh,ph,mB,yh,fh,mh,Mh,Fh,a0,Q0,Qf=VA(()=>{Fe(),Le(),fg(),Je(),Qh=(A,g)=>{if(A.every(e=>e>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),A.length>0){if(g.mode==="linear"){if(!(A.length===2||A.length===3||A.length===4&&A[0]===1&&A[1]===1||A.length===4&&A[0]===1&&A[3]===1||A.length===5&&A[0]===1&&A[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(g.mode==="cubic"&&!(A.length===2||A.length===4&&A[0]===1&&A[1]===1||A.length===4&&A[0]===1&&A[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},Eh=(A,g,e)=>{g.every(i=>i>=0&&i{throw new Error("Resize requires axes input values to be positive and less than rank")}));let I=new Array(e).fill(1);return g.forEach((i,t)=>I[i]=A[t]),I},nh=(A,g,e,I,i,t)=>{let[C,o,s]=e>10?[1,2,3]:[-1,A.length>1?1:-1,-1],B=A[0].dims.length;if(C>0&&A.length>C&&A[C].dims.length>0)A[C].getFloat32Array().forEach(Q=>t.push(Q));else if(g.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&A.length>o&&A[o].dims.length===1&&A[o].dims[0]>0){if(A[o].getFloat32Array().forEach(Q=>I.push(Q)),I.length!==0&&I.length!==B&&e>=18&&I.length!==g.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");Qh(I,g),g.axes.length>0&&Eh(I,g.axes,B).forEach((Q,a)=>I[a]=Q)}if(s>0&&A.length>s&&A[s].dims.length===1&&A[s].dims[0]>0&&(A[s].getBigInt64Array().forEach(Q=>i.push(Number(Q))),i.length!==0&&i.length!==B&&e>=18&&i.length!==g.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(g.axes.length>0){if(I.length!==0&&I.length!==g.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(i.length!==0&&i.length!==g.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof I<"u"&&typeof i<"u"&&I.length>0&&i.length>B)throw new Error("Resize requires only of scales or sizes to be specified")},fB=(A,g,e,I)=>` // The whole part and the fractional part are calculated separately due to inaccuracy of floating // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an // offset-by-one error later in floor(). let big = (${A}) * (${g}); let whole = ${I}(big / (${e})); let fract = ${I}(big % (${e})) / ${I}(${e}); return whole + fract; `,lh=(A,g)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32, lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${g} { `+(()=>{switch(A){case"asymmetric":return` if (xScale < 1.0 || floor(xScale) != xScale) { return ${g}(xResized) / ${g}(xScale); } else { ${fB("xResized","lengthOriginal","lengthResized",g)} } `;case"pytorch_half_pixel":return`if (lengthResized > 1) { return (${g}(xResized) + 0.5) / ${g}(xScale) - 0.5; } else { return 0.0; }`;case"tf_half_pixel_for_nn":return`return (${g}(xResized) + 0.5) / ${g}(xScale);`;case"align_corners":return`if (lengthResized == 1) { return 0.0; } else { ${fB("xResized","lengthOriginal - 1","lengthResized - 1",g)} }`;case"tf_crop_and_resize":return`if (lengthResized > 1) { return ${g}(roiStart) * ${g}(lengthOriginal - 1) + (${g}(xResized) * ${g}(roiEnd - roiStart) * ${g}(lengthOriginal - 1)) / ${g}(lengthResized - 1); } else { return 0.5 * ${g}(roiStart + roiEnd) * ${g}(lengthOriginal - 1); }`;case"half_pixel_symmetric":return`const outputWidth = ${g}xScale * ${g}(lengthResized); const adjustment = ${g}(lengthResized) / outputWidth; const center = ${g}(lengthOriginal) / 2; const offset = center * (1 - adjustment); return offset + ((${g}(xResized) + 0.5) / ${g}(xScale)) - 0.5;`;case"half_pixel":return`return ((${g}(xResized) + 0.5) / ${g}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${A} is not supported`)}})()+"}",ch=(A,g,e)=>`fn getNearestPixelFromOriginal(xOriginal: ${e}, isDownSample: bool) -> ${e} {`+(()=>{switch(A){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";case"simple":default:if(g<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${A} is not supported`)}})()+"}",dh=(A,g,e)=>{let I=new Array(e).fill(0).concat(new Array(e).fill(1)),i=A.length===0?I:A.slice();return g.length>0?(g.forEach((t,C)=>{I[t]=i[C],I[C+e]=i[g.length+C]}),I):i},hh=(A,g,e,I)=>{let i=[];if(e.length>0)if(I.length>0){if(A.forEach(t=>i.push(t)),Math.max(...I)>A.length)throw new Error("axes is out of bound");I.forEach((t,C)=>i[t]=e[C])}else e.forEach(t=>i.push(t));else{if(g.length===0)throw new Error("Resize requires either scales or sizes.");i=A.map((t,C)=>Math.round(t*g[C]))}return i},uh=(A,g,e)=>{let I=(()=>{switch(e.keepAspectRatioPolicy){case"not_larger":return e.axes.length>0?Math.min(...e.axes.map(t=>g[t]),Number.MAX_VALUE):Math.min(...g,Number.MAX_VALUE);case"not_smaller":return e.axes.length>0?Math.max(...e.axes.map(t=>g[t]),Number.MIN_VALUE):Math.max(...g,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${e.keepAspectRatioPolicy} is not supported`)}})();g.fill(1,0,g.length);let i=A.slice();return e.axes.length>0?(e.axes.forEach(t=>g[t]=I),e.axes.forEach(t=>i[t]=Math.round(A[t]*g[t]))):(g.fill(I,0,g.length),i.forEach((t,C)=>i[C]=Math.round(t*g[C]))),i},Dh=(A,g,e,I,i)=>` fn calculateOriginalIndicesFromOutputIndices(output_indices: ${A.type.indices}) -> array<${A.type.value}, ${e.length}> { var original_indices: array<${A.type.value}, ${e.length}>; for (var i:u32 = 0; i < ${e.length}; i++) { var output_index = ${A.indicesGet("output_indices","i")}; var scale = ${ce("uniforms.scales","i",I)}; var roi_low = ${ce("uniforms.roi","i",i)}; var roi_hi = ${ce("uniforms.roi",`i + ${g.length}`,i)}; if (scale == 1.0) { original_indices[i] = ${A.type.value}(output_index); } else { var input_shape_i = ${ce("uniforms.input_shape","i",g.length)}; var output_shape_i = ${ce("uniforms.output_shape","i",e.length)}; original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, input_shape_i, roi_low, roi_hi); } } return original_indices; }`,wh=(A,g,e,I,i,t,C)=>` fn calculateInputIndicesFromOutputIndices(output_indices: ${g.type.indices}) -> ${A.type.indices} { var input_indices: ${A.type.indices}; for (var i:u32 = 0; i < ${I.length}; i++) { var output_index = ${g.indicesGet("output_indices","i")}; var input_index: u32; var scale = ${ce("uniforms.scales","i",i)}; if (scale == 1.0) { input_index = output_index; } else { var roi_low = ${ce("uniforms.roi","i",t)}; var roi_hi = ${ce("uniforms.roi",`i + ${e.length}`,t)}; var input_shape_i = ${ce("uniforms.input_shape","i",e.length)}; var output_shape_i = ${ce("uniforms.output_shape","i",I.length)}; var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, input_shape_i, roi_low, roi_hi); if (!${C} || (original_idx >= 0 && original_idx < ${g.type.value}(input_shape_i))) { if (original_idx < 0) { input_index = 0; } else if (original_idx > ${g.type.value}(input_shape_i - 1)) { input_index = input_shape_i - 1; } else { input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1)); } } else { input_index = u32(original_idx); } } ${A.indicesSet("input_indices","i","input_index")} } return input_indices; }`,ph=(A,g)=>` fn checkInputIndices(input_indices: ${A.type.indices}) -> bool { for (var i:u32 = 0; i < ${g.length}; i++) { var input_index = ${A.indicesGet("input_indices","i")}; if (input_index < 0 || input_index >= ${ce("uniforms.input_shape","i",g.length)}) { return false; } } return true; }`,mB=(A,g,e,I)=>A.rank>I?` ${A.indicesSet("input_indices",g,"channel")}; ${A.indicesSet("input_indices",e,"batch")}; `:"",yh=(A,g,e,I,i)=>{let[t,C,o,s]=e.length===2?[-1,0,1,-1]:[0,2,3,1],B=A.type.value;return` fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${B} { var input_indices: ${A.type.indices}; ${A.indicesSet("input_indices",C,`max(0, min(row, ${e[C]} - 1))`)}; ${A.indicesSet("input_indices",o,`max(0, min(col, ${e[o]} - 1))`)}; ${mB(A,s,t,2)} return ${A.getByIndices("input_indices")}; } fn bilinearInterpolation(output_indices: ${g.type.indices}) -> ${B} { var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); var row:${B} = originalIndices[${C}]; var col:${B} = originalIndices[${o}]; ${I?`if (row < 0 || row > (${e[C]} - 1) || col < 0 || col > (${e[o]} - 1)) { return ${i}; }`:""}; row = max(0, min(row, ${e[C]} - 1)); col = max(0, min(col, ${e[o]} - 1)); var row1: u32 = u32(row); var col1: u32 = u32(col); var row2: u32 = u32(row + 1); var col2: u32 = u32(col + 1); var channel: u32 = ${e.length>2?`u32(originalIndices[${s}])`:"0"}; var batch: u32 = ${e.length>2?`u32(originalIndices[${t}])`:"0"}; var x11: ${B} = getInputValue(batch, channel, row1, col1); var x12: ${B} = getInputValue(batch, channel, row1, col2); var x21: ${B} = getInputValue(batch, channel, row2, col1); var x22: ${B} = getInputValue(batch, channel, row2, col2); var dx1: ${B} = abs(row - ${B}(row1)); var dx2: ${B} = abs(${B}(row2) - row); var dy1: ${B} = abs(col - ${B}(col1)); var dy2: ${B} = abs(${B}(col2) - col); if (row1 == row2) { dx1 = 0.5; dx2 = 0.5; } if (col1 == col2) { dy1 = 0.5; dy2 = 0.5; } return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1); }`},fh=(A,g,e,I,i,t,C,o,s,B)=>{let Q=e.length===2,[a,r]=Q?[0,1]:[2,3],d=A.type.value,c=f=>{let k=f===a?"row":"col";return` fn ${k}CubicInterpolation(input_indices: ${A.type.indices}, output_indices: ${g.type.indices}) -> ${d} { var output_index = ${g.indicesGet("output_indices",f)}; var originalIdx: ${d} = getOriginalCoordinateFromResizedCoordinate(output_index, ${i[f]}, ${I[f]}, ${e[f]}, ${t[f]}, ${t[f]} + ${e.length}); var fractOriginalIdx: ${d} = originalIdx - floor(originalIdx); var coefs = getCubicInterpolationCoefs(fractOriginalIdx); if (${o} && (originalIdx < 0 || originalIdx > (${e[f]} - 1))) { return ${s}; } var data: array<${d}, 4> = array<${d}, 4>(0.0, 0.0, 0.0, 0.0); for (var i: i32 = -1; i < 3; i++) { var ${k}: ${d} = originalIdx + ${d}(i); if (${k} < 0 || ${k} >= ${e[f]}) { ${B?`coefs[i + 1] = 0.0; continue;`:o?`return ${s};`:`${k} = max(0, min(${k}, ${e[f]} - 1));`}; } var input_indices_copy: ${A.type.indices} = input_indices; ${A.indicesSet("input_indices_copy",f,`u32(${k})`)}; data[i + 1] = ${f===a?A.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"}; } return cubicInterpolation1D(data, coefs); }`};return` ${c(a)}; ${c(r)}; fn getCubicInterpolationCoefs(s: ${d}) -> array<${d}, 4> { var absS = abs(s); var coeffs: array<${d}, 4> = array<${d}, 4>(0.0, 0.0, 0.0, 0.0); var oneMinusAbsS: ${d} = 1.0 - absS; var twoMinusAbsS: ${d} = 2.0 - absS; var onePlusAbsS: ${d} = 1.0 + absS; coeffs[0] = ((${C} * onePlusAbsS - 5 * ${C}) * onePlusAbsS + 8 * ${C}) * onePlusAbsS - 4 * ${C}; coeffs[1] = ((${C} + 2) * absS - (${C} + 3)) * absS * absS + 1; coeffs[2] = ((${C} + 2) * oneMinusAbsS - (${C} + 3)) * oneMinusAbsS * oneMinusAbsS + 1; coeffs[3] = ((${C} * twoMinusAbsS - 5 * ${C}) * twoMinusAbsS + 8 * ${C}) * twoMinusAbsS - 4 * ${C}; return coeffs; } fn cubicInterpolation1D(x: array<${d}, 4>, coefs: array<${d}, 4>) -> ${d} { var coefsSum: ${d} = coefs[0] + coefs[1] + coefs[2] + coefs[3]; return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum; } fn bicubicInterpolation(output_indices: ${g.type.indices}) -> ${d} { var input_indices: ${A.type.indices} = output_indices; return colCubicInterpolation(input_indices, output_indices); } `},mh=(A,g,e,I,i)=>{let[t,C,o,s,B]=e.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],Q=A.type.value;return` fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${Q} { var input_indices: ${A.type.indices}; ${A.indicesSet("input_indices",C,`max(0, min(depth, ${e[C]} - 1))`)}; ${A.indicesSet("input_indices",o,`max(0, min(height, ${e[o]} - 1))`)}; ${A.indicesSet("input_indices",s,`max(0, min(width, ${e[s]} - 1))`)}; ${mB(A,B,t,3)} return ${A.getByIndices("input_indices")}; } fn trilinearInterpolation(output_indices: ${g.type.indices}) -> ${Q} { var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); var depth:${Q} = originalIndices[${C}]; var height:${Q} = originalIndices[${o}]; var width:${Q} = originalIndices[${s}]; ${I?`if (depth < 0 || depth > (${e[C]} - 1) || height < 0 || height > (${e[o]} - 1) || width < 0 || (width > ${e[s]} - 1)) { return ${i}; }`:""}; depth = max(0, min(depth, ${e[C]} - 1)); height = max(0, min(height, ${e[o]} - 1)); width = max(0, min(width, ${e[s]} - 1)); var depth1: u32 = u32(depth); var height1: u32 = u32(height); var width1: u32 = u32(width); var depth2: u32 = u32(depth + 1); var height2: u32 = u32(height + 1); var width2: u32 = u32(width + 1); var channel: u32 = ${e.length>3?`u32(originalIndices[${B}])`:"0"}; var batch: u32 = ${e.length>3?`u32(originalIndices[${t}])`:"0"}; var x111: ${Q} = getInputValue(batch, channel, depth1, height1, width1); var x112: ${Q} = getInputValue(batch, channel, depth1, height1, width2); var x121: ${Q} = getInputValue(batch, channel, depth1, height2, width1); var x122: ${Q} = getInputValue(batch, channel, depth1, height2, width2); var x211: ${Q} = getInputValue(batch, channel, depth2, height1, width1); var x212: ${Q} = getInputValue(batch, channel, depth2, height1, width2); var x221: ${Q} = getInputValue(batch, channel, depth2, height2, width1); var x222: ${Q} = getInputValue(batch, channel, depth2, height2, width2); var dx1: ${Q} = abs(depth - ${Q}(depth1)); var dx2: ${Q} = abs(${Q}(depth2) - depth); var dy1: ${Q} = abs(height - ${Q}(height1)); var dy2: ${Q} = abs(${Q}(height2) - height); var dz1: ${Q} = abs(width - ${Q}(width1)); var dz2: ${Q} = abs(${Q}(width2) - width); if (depth1 == depth2) { dx1 = 0.5; dx2 = 0.5; } if (height1 == height2) { dy1 = 0.5; dy2 = 0.5; } if (width1 == width2) { dz1 = 0.5; dz2 = 0.5; } return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 + x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1); }`},Mh=(A,g,e,I,i,t)=>{let C=A.dims,o=dh(t,g.axes,C.length),s=hh(C,I,i,g.axes),B=I.slice();I.length===0&&(B=C.map((D,G)=>D===0?1:s[G]/D),g.keepAspectRatioPolicy!=="stretch"&&(s=uh(C,B,g)));let Q=le("output",A.dataType,s.length),a=UA("input",A.dataType,C.length),r=FA.size(s),d=C.length===s.length&&C.every((D,G)=>D===s[G]),c=g.coordinateTransformMode==="tf_crop_and_resize",f=g.extrapolationValue,k=a.type.value,u=D=>` ${d?"":` ${lh(g.coordinateTransformMode,k)}; ${(()=>{switch(g.mode){case"nearest":return` ${ph(a,C)}; ${ch(g.nearestMode,e,k)}; ${wh(a,Q,C,s,B.length,o.length,c)}; `;case"linear":return` ${Dh(Q,C,s,B.length,o.length)}; ${(()=>{if(C.length===2||C.length===4)return`${yh(a,Q,C,c,f)}`;if(C.length===3||C.length===5)return`${mh(a,Q,C,c,f)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()}; `;case"cubic":return` ${(()=>{if(C.length===2||C.length===4)return`${fh(a,Q,C,s,B,o,g.cubicCoeffA,c,g.extrapolationValue,g.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()}; `;default:throw Error("Invalid resize mode")}})()}; `} ${D.registerUniform("output_size","u32").registerUniform("scales","f32",B.length).registerUniform("roi","f32",o.length).declareVariables(a,Q)} ${D.mainStart()} ${D.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} ${d?"output[global_idx] = input[global_idx];":` let output_indices = ${Q.offsetToIndices("global_idx")}; var input_indices: ${a.type.indices}; ${(()=>{switch(g.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices); if (checkInputIndices(input_indices)) { output[global_idx] = ${a.getByIndices("input_indices")}; } else { output[global_idx] = ${g.extrapolationValue}; }`;case"linear":return`output[global_idx] = ${C.length===2||C.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${g.mode}`)}})()}; `} }`;return{name:"Resize",shaderCache:{hint:`${g.cacheKey}|${e}|${B.length>0?g.mode==="cubic"?B:B.length:""}|${i.length>0?i:""}|${o.length>0?o:""}|${d}|${g.mode==="nearest"?C.length:C}`,inputDependencies:["rank"]},getShaderSource:u,getRunData:()=>({outputs:[{dims:s,dataType:A.dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:[{type:12,data:r},{type:1,data:B},{type:1,data:o},...he(C,s)]})}},Fh=A=>{let g=A.customDataBuffer;return new Uint32Array(g,g.byteOffset,1)[0]},a0=(A,g)=>{let e=[],I=[],i=[],t=Fh(A);if(g.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");nh(A.inputs,g,t,e,I,i),A.compute(Mh(A.inputs[0],g,t,e,I,i),{inputs:[0]})},Q0=A=>{let g=A.antialias,e=A.axes,I=A.coordinateTransformMode,i=A.cubicCoeffA,t=A.excludeOutside!==0,C=A.extrapolationValue,o=A.keepAspectRatioPolicy,s=A.mode,B=A.nearestMode===""?"simple":A.nearestMode;return $e({antialias:g,axes:e,coordinateTransformMode:I,cubicCoeffA:i,excludeOutside:t,extrapolationValue:C,keepAspectRatioPolicy:o,mode:s,nearestMode:B})}}),Sh,Nh,E0,Ef=VA(()=>{Fe(),Le(),Je(),Sh=A=>{if(!A||A.length<3)throw new Error("layerNorm requires at least 3 inputs.");let g=A[0],e=A[1],I=A[2];if(g.dataType!==e.dataType||g.dataType!==I.dataType)throw new Error("All inputs must have the same data type");if(g.dims.length!==3&&g.dims.length!==2)throw new Error("Input must be 2D or 3D");if(e.dims.length!==3&&e.dims.length!==2)throw new Error("Skip must be 2D or 3D");let i=g.dims[g.dims.length-1],t=g.dims[g.dims.length-2];if(e.dims[e.dims.length-1]!==i)throw new Error("Skip must have the same hidden size as input");if(e.dims[e.dims.length-2]!==t)throw new Error("Skip must have the same sequence length as input");if(I.dims.length!==1)throw new Error("Gamma must be 1D");if(I.dims[I.dims.length-1]!==i)throw new Error("Gamma must have the same hidden size as input");if(A.length>3){let C=A[3];if(C.dims.length!==1)throw new Error("Beta must be 1D");if(C.dims[C.dims.length-1]!==i)throw new Error("Beta must have the same hidden size as input")}if(A.length>4){let C=A[4];if(C.dims.length!==1)throw new Error("Bias must be 1D");if(C.dims[C.dims.length-1]!==i)throw new Error("Bias must have the same hidden size as input")}},Nh=(A,g,e,I)=>{let i=g.simplified,t=A[0].dims,C=FA.size(t),o=t,s=C,B=t.slice(-1)[0],Q=I?t.slice(0,-1).concat(1):[],a=!i&&A.length>3,r=A.length>4,d=I&&e>1,c=I&&e>2,f=e>3,k=64,u=Dg(B),D=[{type:12,data:s},{type:12,data:u},{type:12,data:B},{type:1,data:g.epsilon}],G=y=>{let M=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],m=[UA("x",A[0].dataType,A[0].dims,u),UA("skip",A[1].dataType,A[1].dims,u),UA("gamma",A[2].dataType,A[2].dims,u)];a&&m.push(UA("beta",A[3].dataType,A[3].dims,u)),r&&m.push(UA("bias",A[4].dataType,A[4].dims,u)),m.push(le("output",A[0].dataType,o,u)),d&&m.push(le("mean_output",1,Q)),c&&m.push(le("inv_std_output",1,Q)),f&&m.push(le("input_skip_bias_sum",A[0].dataType,o,u));let _=Hg(A[0].dataType),x=Hg(1,u);return` ${y.registerUniforms(M).declareVariables(...m)} var sum_shared : array<${x}, ${k}>; var sum_squared_shared : array<${x}, ${k}>; ${y.mainStart([k,1,1])} let ix = local_id.x; let iy = global_id.x / ${k}; let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components; var stride = hidden_size_vectorized / ${k}; let offset = ix * stride + iy * hidden_size_vectorized; let offset1d = stride * ix; if (ix == ${k-1}) { stride = hidden_size_vectorized - stride * ix; } for (var i: u32 = 0; i < stride; i++) { let skip_value = skip[offset + i]; let bias_value = ${r?"bias[offset1d + i]":_+"(0.0)"}; let input_value = x[offset + i]; let value = input_value + skip_value + bias_value; ${f?"input_skip_bias_sum[offset + i] = value;":""} output[offset + i] = value; let f32_value = ${et(_,u,"value")}; sum_shared[ix] += f32_value; sum_squared_shared[ix] += f32_value * f32_value; } workgroupBarrier(); var reduce_size : u32 = ${k}; for (var curr_size = reduce_size >> 1; curr_size > 0; curr_size = reduce_size >> 1) { reduce_size = curr_size + (reduce_size & 1); if (ix < curr_size) { sum_shared[ix] += sum_shared[ix + reduce_size]; sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size]; } workgroupBarrier(); } let sum = sum_shared[0]; let square_sum = sum_squared_shared[0]; let mean = ${Ii("sum",u)} / f32(uniforms.hidden_size); let inv_std_dev = inverseSqrt(${Ii("square_sum",u)} / f32(uniforms.hidden_size) ${i?"":"- mean * mean"} + uniforms.epsilon); ${d?"mean_output[global_idx] = mean;":""} ${c?"inv_std_output[global_idx] = inv_std_dev;":""} for (var i: u32 = 0; i < stride; i++) { output[offset + i] = (output[offset + i] ${i?"":`- ${_}(mean)`}) * ${_}(inv_std_dev) * gamma[offset1d + i] ${a?"+ beta[offset1d + i]":""}; } }`},h=[{dims:o,dataType:A[0].dataType}];return e>1&&h.push({dims:Q,dataType:1}),e>2&&h.push({dims:Q,dataType:1}),e>3&&h.push({dims:t,dataType:A[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${u};${d};${c};${f}`,inputDependencies:A.map((y,M)=>"type")},getShaderSource:G,getRunData:()=>({outputs:h,dispatchGroup:{x:Math.ceil(s/B)},programUniforms:D})}},E0=(A,g)=>{Sh(A.inputs);let e=[0];A.outputCount>1&&e.push(-3),A.outputCount>2&&e.push(-3),A.outputCount>3&&e.push(3),A.compute(Nh(A.inputs,g,A.outputCount,!1),{outputs:e})}}),Rh,bt,_h,MB,Gh,kh,n0,l0,nf=VA(()=>{Fe(),Le(),fg(),Je(),Rh=(A,g)=>{if(!A||A.length<1)throw new Error("too few inputs");if(g.axes.length!==0){if(g.axes.length!==g.starts.length||g.axes.length!==g.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(g.starts.length!==g.ends.length)throw new Error("starts and ends must have the same length");A.slice(1).forEach((e,I)=>{if(A[I+1].dataType!==6&&A[I+1].dataType!==7)throw new Error(`Input ${I} must be an array of int32 or int64`)})},bt=(A,g)=>{let e=[];if(A.length>g)if(A[g].dataType===7)A[g].getBigInt64Array().forEach(I=>e.push(Number(I)));else if(A[g].dataType===6)A[g].getInt32Array().forEach(I=>e.push(Number(I)));else throw new Error(`Input ${g} must be an array of int32 or int64`);return e},_h=(A,g)=>{if(A.length>1){let e=bt(A,1),I=bt(A,2),i=bt(A,3);return i.length===0&&(i=[...Array(A[0].dims.length).keys()]),$e({starts:e,ends:I,axes:i})}else return g},MB=(A,g,e,I,i)=>{let t=A;return A<0&&(t+=e[I[g]]),i[g]<0?Math.max(0,Math.min(t,e[I[g]]-1)):Math.max(0,Math.min(t,e[I[g]]))},Gh=(A,g,e)=>`fn calculateInputIndices(output_indices: ${g.type.indices}) -> ${A.type.indices} { var input_indices: ${A.type.indices}; var carry = 0u; for (var i = ${e.length}; i >= 0; i--) { let input_shape_i = ${ce("uniforms.input_shape","i",e.length)}; let steps_i = ${ce("uniforms.steps","i",e.length)}; let signs_i = ${ce("uniforms.signs","i",e.length)}; let starts_i = ${ce("uniforms.starts","i",e.length)}; var output_index = ${g.indicesGet("output_indices","i")}; var input_index = output_index * steps_i + starts_i + carry; carry = input_index / input_shape_i; input_index = input_index % input_shape_i; if (signs_i < 0) { input_index = input_shape_i - input_index - 1u + starts_i; } ${A.indicesSet("input_indices","i","input_index")}; } return input_indices; }`,kh=(A,g)=>{let e=A[0].dims,I=FA.size(e),i=g.axes.length>0?FA.normalizeAxes(g.axes,e.length):[...Array(e.length).keys()],t=bt(A,4);t.forEach(u=>u!==0||(()=>{throw new Error("step cannot be 0")})),t.length===0&&(t=Array(i.length).fill(1));let C=g.starts.map((u,D)=>MB(u,D,e,i,t)),o=g.ends.map((u,D)=>MB(u,D,e,i,t));if(i.length!==C.length||i.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(i.length!==e.length)for(let u=0;uMath.sign(u));t.forEach((u,D,G)=>{if(u<0){let h=(o[D]-C[D])/u,y=C[D],M=y+h*t[D];C[D]=M,o[D]=y,G[D]=-u}});let B=e.slice(0);i.forEach((u,D)=>{B[u]=Math.ceil((o[u]-C[u])/t[u])});let Q={dims:B,dataType:A[0].dataType},a=le("output",A[0].dataType,B.length),r=UA("input",A[0].dataType,A[0].dims.length),d=FA.size(B),c=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:C.length},{name:"signs",type:"i32",length:s.length},{name:"steps",type:"u32",length:t.length}],f=[{type:12,data:d},{type:12,data:C},{type:6,data:s},{type:12,data:t},...he(A[0].dims,B)],k=u=>` ${u.registerUniforms(c).declareVariables(r,a)} ${Gh(r,a,e)} ${u.mainStart()} ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} let output_indices = ${a.offsetToIndices("global_idx")}; let input_indices = calculateInputIndices(output_indices); ${a.setByOffset("global_idx",r.getByIndices("input_indices"))} }`;return{name:"Slice",shaderCache:{hint:`${s.length}_${C.length}_${t.length}`,inputDependencies:["rank"]},getShaderSource:k,getRunData:()=>({outputs:[Q],dispatchGroup:{x:Math.ceil(I/64)},programUniforms:f})}},n0=(A,g)=>{Rh(A.inputs,g);let e=_h(A.inputs,g);A.compute(kh(A.inputs,e),{inputs:[0]})},l0=A=>{let g=A.starts,e=A.ends,I=A.axes;return $e({starts:g,ends:e,axes:I})}}),Lh,Kh,c0,d0,lf=VA(()=>{Fe(),Le(),fg(),ii(),Je(),Lh=A=>{if(!A||A.length!==1)throw new Error("Softmax op requires 1 input.")},Kh=(A,g)=>{let e=A.inputs[0],I=e.dims,i=FA.size(I),t=I.length,C=FA.normalizeAxis(g.axis,t),o=C_),B[C]=t-1,B[t-1]=C,s=A.compute(QI(e,B),{inputs:[e],outputs:[-1]})[0]):s=e;let Q=s.dims,a=Q[t-1],r=i/a,d=Dg(a),c=a/d,f=64;r===1&&(f=256);let k=(m,_)=>_===4?`max(max(${m}.x, ${m}.y), max(${m}.z, ${m}.w))`:_===2?`max(${m}.x, ${m}.y)`:_===3?`max(max(${m}.x, ${m}.y), ${m}.z)`:m,u=UA("x",s.dataType,s.dims,d),D=le("result",s.dataType,s.dims,d),G=u.type.value,h=Hg(s.dataType)==="f32"?`var threadMax = ${G}(-3.402823e+38f);`:`var threadMax = ${G}(-65504.0h);`,y=m=>` var rowMaxShared : ${G}; var rowSumShared : ${G}; var threadShared : array<${G}, ${f}>; fn getValue(row: i32, col: i32, row_stride: i32) -> ${G} { let index = row * row_stride + col; return x[index]; } fn setValue(row: i32, col: i32, row_stride: i32, value: ${G}) { let index = row * row_stride + col; result[index] = value; } ${m.registerUniform("packedCols","i32").declareVariables(u,D)} ${m.mainStart(f)} let gindex = i32(global_idx); let lindex = i32(local_idx); const wg = ${f}; let row = gindex / wg; let cols = uniforms.packedCols; let row_stride : i32 = uniforms.packedCols; // find the rows max ${h} for (var col = lindex; col < cols; col += wg) { let value = getValue(row, col, row_stride); threadMax = max(threadMax, value); } if (lindex < cols) { threadShared[lindex] = threadMax; } workgroupBarrier(); var reduceSize = min(cols, wg); for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) { reduceSize = currSize + (reduceSize & 1); if (lindex < currSize) { threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]); } workgroupBarrier(); } if (lindex == 0) { rowMaxShared = ${G}(${k("threadShared[0]",d)}); } workgroupBarrier(); // find the rows sum var threadSum = ${G}(0.0); for (var col = lindex; col < cols; col += wg) { let subExp = exp(getValue(row, col, row_stride) - rowMaxShared); threadSum += subExp; } threadShared[lindex] = threadSum; workgroupBarrier(); for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) { if (lindex < currSize) { threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize]; } workgroupBarrier(); } if (lindex == 0) { rowSumShared = ${G}(${Ii("threadShared[0]",d)}); } workgroupBarrier(); // calculate final value for each element in the row for (var col = lindex; col < cols; col += wg) { let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared; setValue(row, col, row_stride, value); } }`,M=A.compute({name:"Softmax",shaderCache:{hint:`${d};${f}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:Q,dataType:s.dataType}],dispatchGroup:{x:r},programUniforms:[{type:6,data:c}]}),getShaderSource:y},{inputs:[s],outputs:[o?-1:0]})[0];o&&A.compute(QI(M,B),{inputs:[M]})},c0=(A,g)=>{Lh(A.inputs),Kh(A,g)},d0=A=>$e({axis:A.axis})}),FB,Uh,Jh,bh,h0,cf=VA(()=>{Fe(),Le(),Je(),FB=A=>Array.from(A.getBigInt64Array(),Number),Uh=A=>{if(!A||A.length!==2)throw new Error("Tile requires 2 inputs.");if(A[0].dataType!==1&&A[0].dataType!==10&&A[0].dataType!==6&&A[0].dataType!==12)throw new Error("Tile only support float, float16, int32, and uint32 data types");if(A[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(A[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(FB(A[1]).length!==A[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},Jh=(A,g)=>{let e=[];for(let I=0;I{let e=A[0].dims,I=g??FB(A[1]),i=Jh(e,I),t=FA.size(i),C=A[0].dataType,o=UA("input",C,e.length),s=le("output",C,i.length),B=Q=>` const inputShape = ${o.indices(...e)}; ${Q.registerUniform("output_size","u32").declareVariables(o,s)} ${Q.mainStart()} ${Q.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} let output_indices = ${s.offsetToIndices("global_idx")}; var input_indices: ${o.type.indices}; for (var i = 0; i < ${e.length}; i++) { let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")}; let input_dim_value = ${s.indicesGet("output_indices","i")} % input_dim_i; ${o.indicesSet("input_indices","i","input_dim_value")} } ${s.setByOffset("global_idx",o.getByIndices("input_indices"))} }`;return{name:"Tile",shaderCache:{hint:`${I}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:A[0].dataType}],dispatchGroup:{x:Math.ceil(t/64)},programUniforms:[{type:12,data:t},...he(A[0].dims,i)]}),getShaderSource:B}},h0=A=>{Uh(A.inputs),A.compute(bh(A.inputs),{inputs:[0]})}}),xh,Th,u0,df=VA(()=>{Fe(),Le(),Je(),xh=(A,g,e,I,i)=>{let t=le("output_data",i,e.length,4),C=UA("a_data",g[1].dataType,g[1].dims.length,4),o=UA("b_data",g[2].dataType,g[2].dims.length,4),s=UA("c_data",g[0].dataType,g[0].dims.length,4),B,Q=(a,r,d)=>`select(${r}, ${a}, ${d})`;if(!I)B=t.setByOffset("global_idx",Q(C.getByOffset("global_idx"),o.getByOffset("global_idx"),s.getByOffset("global_idx")));else{let a=(r,d,c="")=>{let f=`a_data[index_a${d}][component_a${d}]`,k=`b_data[index_b${d}][component_b${d}]`,u=`bool(c_data[index_c${d}] & (0xffu << (component_c${d} * 8)))`;return` let output_indices${d} = ${t.offsetToIndices(`global_idx * 4u + ${d}u`)}; let offset_a${d} = ${C.broadcastedIndicesToOffset(`output_indices${d}`,t)}; let offset_b${d} = ${o.broadcastedIndicesToOffset(`output_indices${d}`,t)}; let offset_c${d} = ${s.broadcastedIndicesToOffset(`output_indices${d}`,t)}; let index_a${d} = offset_a${d} / 4u; let index_b${d} = offset_b${d} / 4u; let index_c${d} = offset_c${d} / 4u; let component_a${d} = offset_a${d} % 4u; let component_b${d} = offset_b${d} % 4u; let component_c${d} = offset_c${d} % 4u; ${r}[${d}] = ${c}(${Q(f,k,u)}); `};i===9?B=` var data = vec4(0); ${a("data",0,"u32")} ${a("data",1,"u32")} ${a("data",2,"u32")} ${a("data",3,"u32")} output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:B=` ${a("output_data[global_idx]",0)} ${a("output_data[global_idx]",1)} ${a("output_data[global_idx]",2)} ${a("output_data[global_idx]",3)} `}return` ${A.registerUniform("vec_size","u32").declareVariables(s,C,o,t)} ${A.mainStart()} ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} ${B} }`},Th=A=>{let g=A[1].dims,e=A[2].dims,I=A[0].dims,i=A[1].dataType,t=!(FA.areEqual(g,e)&&FA.areEqual(e,I)),C=g,o=FA.size(g);if(t){let B=gt.calcShape(gt.calcShape(g,e,!1),I,!1);if(!B)throw new Error("Can't perform where op on the given tensors");C=B,o=FA.size(C)}let s=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:B=>xh(B,A,C,t,i),getRunData:()=>({outputs:[{dims:C,dataType:i}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:12,data:s},...he(I,g,e,C)]})}},u0=A=>{A.compute(Th(A.inputs))}}),D0,hf=VA(()=>{_y(),Er(),Gy(),ky(),Ly(),Ky(),Uy(),Yy(),Py(),vy(),qy(),Oy(),Wy(),jy(),Vy(),zy(),$y(),Xy(),Zy(),Af(),ef(),gf(),If(),tf(),of(),xw(),Cf(),sf(),Bf(),rf(),af(),Qr(),Qf(),vw(),Ef(),nf(),lf(),Hw(),cf(),ii(),nr(),df(),D0=new Map([["Abs",[ED]],["Acos",[nD]],["Acosh",[lD]],["Add",[VD]],["ArgMax",[BD,YB]],["ArgMin",[sD,YB]],["Asin",[cD]],["Asinh",[dD]],["Atan",[hD]],["Atanh",[uD]],["Attention",[rD]],["AveragePool",[Zw,Xw]],["BatchNormalization",[aD]],["BiasAdd",[QD]],["BiasSplitGelu",[jD]],["Cast",[wD,DD]],["Ceil",[yD]],["Clip",[pD]],["Concat",[tw,ow]],["Conv",[WB,OB]],["ConvTranspose",[cw,lw]],["Cos",[fD]],["Cosh",[mD]],["CumSum",[dw,hw]],["DepthToSpace",[uw,Dw]],["DequantizeLinear",[o0,C0]],["Div",[zD]],["Einsum",[ww,pw]],["Elu",[MD,Pt]],["Equal",[$D]],["Erf",[FD]],["Exp",[SD]],["Expand",[yw]],["FastGelu",[fw]],["Floor",[ND]],["FusedConv",[WB,OB]],["Gather",[Mw,mw]],["GatherElements",[Gw,_w]],["GatherBlockQuantized",[Nw,Rw]],["GatherND",[Fw,Sw]],["Gelu",[RD]],["Gemm",[Lw,kw]],["GlobalAveragePool",[e0,A0]],["GlobalMaxPool",[t0,i0]],["Greater",[ew]],["GreaterOrEqual",[Iw]],["GridSample",[Kw,Uw]],["GroupQueryAttention",[qw]],["HardSigmoid",[bD,JD]],["InstanceNormalization",[Ow]],["LayerNormalization",[Ww]],["LeakyRelu",[_D,Pt]],["Less",[gw]],["LessOrEqual",[iw]],["Log",[OD]],["MatMul",[jw]],["MatMulNBits",[Vw,zw]],["MaxPool",[g0,I0]],["Mul",[XD]],["MultiHeadAttention",[bw,Jw]],["Neg",[kD]],["Not",[GD]],["Pad",[$w]],["Pow",[ZD]],["QuickGelu",[WD,Pt]],["Range",[s0]],["Reciprocal",[LD]],["ReduceMin",[ID]],["ReduceMean",[Xu]],["ReduceMax",[gD]],["ReduceSum",[tD]],["ReduceProd",[iD]],["ReduceL1",[Zu]],["ReduceL2",[AD]],["ReduceLogSum",[CD]],["ReduceLogSumExp",[eD]],["ReduceSumSquare",[oD]],["Relu",[KD]],["Resize",[a0,Q0]],["RotaryEmbedding",[Pw]],["ScatterND",[r0,B0]],["Sigmoid",[UD]],["Sin",[xD]],["Sinh",[TD]],["Slice",[n0,l0]],["SkipLayerNormalization",[E0]],["Split",[Tw,Yw]],["Sqrt",[YD]],["Softmax",[c0,d0]],["Sub",[Aw]],["Tan",[HD]],["Tanh",[PD]],["ThresholdedRelu",[qD,Pt]],["Tile",[h0]],["Transpose",[Tu,Yu]],["Where",[u0]]])}),w0,uf=VA(()=>{JI(),OI(),Je(),w0=class{constructor(A){this.backend=A,this.repo=new Map,this.attributesBound=!1}getArtifact(A){return this.repo.get(A)}setArtifact(A,g){this.repo.set(A,g)}run(A,g,e,I,i){UI(A.programInfo.name);let t=this.backend.device,C=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let o=[];for(let B of g)o.push({binding:o.length,resource:{buffer:B.buffer}});for(let B of e)o.push({binding:o.length,resource:{buffer:B.buffer}});i&&o.push({binding:o.length,resource:i});let s=t.createBindGroup({layout:A.computePipeline.getBindGroupLayout(0),entries:o,label:A.programInfo.name});if(this.backend.sessionStatus==="capturing"){let B={kernelId:this.backend.currentKernelId,computePipeline:A.computePipeline,bindGroup:s,dispatchGroup:I};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(B)}C.setPipeline(A.computePipeline),C.setBindGroup(0,s),C.dispatchWorkgroups(...I),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),wI(A.programInfo.name)}dispose(){}build(A,g){UI(A.name);let e=this.backend.device,I=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(B=>{e.features.has(B.feature)&&I.push(`enable ${B.extension};`)});let i=xu(g,this.backend.device.limits),t=A.getShaderSource(i),C=`${I.join(` `)} ${i.additionalImplementations} ${t}`,o=e.createShaderModule({code:C,label:A.name});Oe("verbose",()=>`[WebGPU] ${A.name} shader code: ${C}`);let s=e.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:A.name});return wI(A.name),{programInfo:A,computePipeline:s,uniformVariablesInfo:i.variablesInfo}}normalizeDispatchGroupSize(A){let g=typeof A=="number"?A:A.x,e=typeof A=="number"?1:A.y||1,I=typeof A=="number"?1:A.z||1,i=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(g<=i&&e<=i&&I<=i)return[g,e,I];let t=g*e*I,C=Math.ceil(Math.sqrt(t));if(C>i){if(C=Math.ceil(Math.cbrt(t)),C>i)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[C,C,C]}else return[C,C,1]}}}),p0={};it(p0,{WebGpuBackend:()=>y0});var Yh,Hh,Ph,y0,Df=VA(()=>{JI(),Fe(),OI(),Lu(),Ny(),hf(),uf(),Yh=(A,g)=>{if(g.length!==A.length)throw new Error(`inputDependencies length ${g.length} is not equal to inputTensors length ${A.length}.`);let e=[];for(let I=0;I{let I=A.name;return A.shaderCache?.hint&&(I+="["+A.shaderCache.hint+"]"),I+=":"+e+`:${Yh(g,A.shaderCache?.inputDependencies??new Array(g.length).fill("dims"))}`,I},Ph=class{constructor(A){A&&(this.architecture=A.architecture,this.vendor=A.vendor)}isArchitecture(A){return this.architecture===A}isVendor(A){return this.vendor===A}},y0=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let A=this.kernelCustomData.get(this.currentKernelId);return A||(A={},this.kernelCustomData.set(this.currentKernelId,A)),A}async initialize(A,g){this.env=A;let e=[],I={requiredLimits:{maxComputeWorkgroupStorageSize:g.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:g.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:g.limits.maxStorageBufferBindingSize,maxBufferSize:g.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:g.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:g.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:g.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:g.limits.maxComputeWorkgroupSizeZ},requiredFeatures:e},i=t=>g.features.has(t)&&e.push(t)&&!0;i("chromium-experimental-timestamp-query-inside-passes")||i("timestamp-query"),i("shader-f16"),i("subgroups"),this.device=await g.requestDevice(I),this.adapterInfo=new Ph(g.info||await g.requestAdapterInfo()),this.gpuDataManager=Ju(this),this.programManager=new w0(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,sr(A.logLevel,!!A.debug),this.device.onuncapturederror=t=>{t.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${t.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:g,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let A=this.getCommandEncoder(),g={};this.queryType==="at-passes"&&(g.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=A.beginComputePass(g)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;UI(),this.endComputePass();let A;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),A=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(A,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,A,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&A.mapAsync(GPUMapMode.READ).then(()=>{let g=new BigUint64Array(A.getMappedRange()),e=this.pendingQueries.get(A);for(let I=0;I"u"&&(this.queryTimeBase=r);let c=Number(r-this.queryTimeBase),f=Number(d-this.queryTimeBase);if(!Number.isSafeInteger(c)||!Number.isSafeInteger(f))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:Q.map(k=>({dims:k.dims,dataType:qI(k.dataType)})),outputsMetadata:a.map(k=>({dims:k.dims,dataType:qI(k.dataType)})),kernelId:t,kernelType:o,kernelName:s,programName:B,startTime:c,endTime:f});else{let k="";Q.forEach((D,G)=>{k+=`input[${G}]: [${D.dims}] | ${qI(D.dataType)}, `});let u="";a.forEach((D,G)=>{u+=`output[${G}]: [${D.dims}] | ${qI(D.dataType)}, `}),console.log(`[profiling] kernel "${t}|${o}|${s}|${B}" ${k}${u}execution time: ${f-c} ns`)}Wt("GPU",`${B}::${r}::${d}`)}A.unmap(),this.pendingQueries.delete(A)}),wI()}run(A,g,e,I,i,t){UI(A.name);let C=[];for(let D=0;DG):e;if(Q.length!==o.length)throw new Error(`Output size ${Q.length} must be equal to ${o.length}.`);let a=[],r=[];for(let D=0;D=t)throw new Error(`Invalid output index: ${Q[D]}`);if(Q[D]===-3)continue;let G=Q[D]===-1,h=Q[D]===-2,y=G||h?i(o[D].dataType,o[D].dims):I(Q[D],o[D].dataType,o[D].dims);if(a.push(y),y.data===0)continue;let M=this.gpuDataManager.get(y.data);if(!M)throw new Error(`no GPU data for output: ${y.data}`);if(G&&this.temporaryData.push(M),h){let m=this.kernelPersistentData.get(this.currentKernelId);m||(m=[],this.kernelPersistentData.set(this.currentKernelId,m)),m.push(M)}r.push(M)}if(C.length!==g.length||r.length!==a.length){if(r.length===0)return wI(A.name),a;throw new Error(`Program ${A.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let d;if(B){let D=0,G=[];B.forEach(m=>{let _=typeof m.data=="number"?[m.data]:m.data;if(_.length===0)return;let x=m.type===10?2:4,b,X;m.type===10?(X=_.length>4?16:_.length>2?8:_.length*x,b=_.length>4?16:x*_.length):(X=_.length<=2?_.length*x:16,b=16),D=Math.ceil(D/X)*X,G.push(D);let Z=m.type===10?8:4;D+=_.length>4?Math.ceil(_.length/Z)*b:_.length*x});let h=16;D=Math.ceil(D/h)*h;let y=new ArrayBuffer(D);B.forEach((m,_)=>{let x=G[_],b=typeof m.data=="number"?[m.data]:m.data;if(m.type===6)new Int32Array(y,x,b.length).set(b);else if(m.type===12)new Uint32Array(y,x,b.length).set(b);else if(m.type===10)new Uint16Array(y,x,b.length).set(b);else if(m.type===1)new Float32Array(y,x,b.length).set(b);else throw new Error(`Unsupported uniform type: ${qI(m.type)}`)});let M=this.gpuDataManager.create(D,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(M.buffer,0,y,0,D),this.gpuDataManager.release(M.id),d={offset:0,size:D,buffer:M.buffer}}let c=this.programManager.normalizeDispatchGroupSize(s),f=c[1]===1&&c[2]===1,k=Hh(A,g,f),u=this.programManager.getArtifact(k);if(u||(u=this.programManager.build(A,c),this.programManager.setArtifact(k,u),Oe("info",()=>`[artifact] key: ${k}, programName: ${A.name}`)),B&&u.uniformVariablesInfo){if(B.length!==u.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${u.uniformVariablesInfo.length}, got ${B.length} in program "${u.programInfo.name}".`);for(let D=0;D`[ProgramManager] run "${A.name}" (key=${k}) with ${c[0]}x${c[1]}x${c[2]}`),this.queryType!=="none"||this.sessionStatus==="capturing"){let D={kernelId:this.currentKernelId,programName:u.programInfo.name,inputTensorViews:g,outputTensorViews:a};this.pendingKernels.push(D),this.sessionStatus==="capturing"&&this.capturedPendingKernels.get(this.currentSessionId).push(D)}return this.programManager.run(u,C,r,c,d),wI(A.name),a}upload(A,g){this.gpuDataManager.upload(A,g)}memcpy(A,g){this.gpuDataManager.memcpy(A,g)}async download(A,g){await this.gpuDataManager.download(A,g)}alloc(A){return this.gpuDataManager.create(A).id}free(A){return this.gpuDataManager.release(A)}createKernel(A,g,e,I){let i=D0.get(A);if(!i)throw new Error(`kernel not implemented: ${A}`);let t={kernelType:A,kernelName:I,kernelEntry:i[0],attributes:[i[1],e]};this.kernels.set(g,t)}releaseKernel(A){let g=this.kernelPersistentData.get(A);if(g){for(let e of g)this.gpuDataManager.release(e.id);this.kernelPersistentData.delete(A)}this.kernelCustomData.delete(A),this.kernels.delete(A)}computeKernel(A,g,e){let I=this.kernels.get(A);if(!I)throw new Error(`kernel not created: ${A}`);let i=I.kernelType,t=I.kernelName,C=I.kernelEntry,o=I.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${i}] ${t}" is not allowed to be called recursively`);this.currentKernelId=A,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),Oe("info",()=>`[WebGPU] Start to run kernel "[${i}] ${t}"...`);let s=this.env.debug;this.temporaryData=[];try{return s&&this.device.pushErrorScope("validation"),C(g,o[1]),0}catch(B){return e.push(Promise.resolve(`[WebGPU] Kernel "[${i}] ${t}" failed. ${B}`)),1}finally{s&&e.push(this.device.popErrorScope().then(B=>B?`GPU validation error for kernel "[${i}] ${t}": ${B.message}`:null));for(let B of this.temporaryData)this.gpuDataManager.release(B.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(A,g,e,I){let i=this.sessionExternalDataMapping.get(A);i||(i=new Map,this.sessionExternalDataMapping.set(A,i));let t=i.get(g),C=this.gpuDataManager.registerExternalBuffer(e,I,t);return i.set(g,[C,e]),C}unregisterBuffers(A){let g=this.sessionExternalDataMapping.get(A);g&&(g.forEach(e=>this.gpuDataManager.unregisterExternalBuffer(e[0])),this.sessionExternalDataMapping.delete(A))}getBuffer(A){let g=this.gpuDataManager.get(A);if(!g)throw new Error(`no GPU data for buffer: ${A}`);return g.buffer}createDownloader(A,g,e){return async()=>{let I=await bB(this,A,g);return Br(I.buffer,e)}}writeTimestamp(A){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,A)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){Oe("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){Oe("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){Oe("info","replay"),this.sessionStatus="replaying";let A=this.capturedCommandList.get(this.currentSessionId),g=this.capturedPendingKernels.get(this.currentSessionId),e=A.length;this.pendingKernels=[];for(let I=0;I=this.maxDispatchNumber||this.queryType==="at-passes")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(A){this.unregisterBuffers(A),this.capturedCommandList.has(A)&&this.capturedCommandList.delete(A),this.capturedPendingKernels.has(A)&&this.capturedPendingKernels.delete(A),this.gpuDataManager.onReleaseSession(A)}onRunStart(A){this.currentSessionId=A,this.setQueryType()}}}),f0={};it(f0,{init:()=>m0});var Xo,vh,m0,wf=VA(()=>{Fe(),OI(),Le(),Sy(),Xo=class M0{constructor(g,e,I,i){this.module=g,this.dataType=e,this.data=I,this.dims=i}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let g=FA.size(this.dims);return g===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,g)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let g=FA.size(this.dims);return g===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,g)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let g=FA.size(this.dims);return g===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,g)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error("Invalid data type");let g=FA.size(this.dims);return g===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,g)}reshape(g){if(FA.size(g)!==FA.size(this.dims))throw new Error("Invalid new shape");return new M0(this.module,this.dataType,this.data,g)}},vh=class{constructor(A,g,e){this.module=A,this.backend=g,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=g.adapterInfo;let I=A.PTR_SIZE,i=e/A.PTR_SIZE,t=I===4?"i32":"i64";this.opKernelContext=Number(A.getValue(I*i++,t));let C=Number(A.getValue(I*i++,t));this.outputCount=Number(A.getValue(I*i++,t)),this.customDataOffset=Number(A.getValue(I*i++,"*")),this.customDataSize=Number(A.getValue(I*i++,t));let o=[];for(let s=0;stypeof C=="number"?this.inputs[C]:C)??this.inputs,I=g?.outputs??[],i=(C,o,s)=>new Xo(this.module,o,this.output(C,s),s),t=(C,o)=>{let s=fi(C,o);if(!s)throw new Error(`Unsupported data type: ${C}`);let B=s>0?this.backend.gpuDataManager.create(s).id:0;return new Xo(this.module,C,B,o)};return this.backend.run(A,e,I,i,t,this.outputCount)}output(A,g){let e=this.module.stackSave();try{let I=this.module.PTR_SIZE,i=I===4?"i32":"i64",t=this.module.stackAlloc((1+g.length)*I);this.module.setValue(t,g.length,i);for(let C=0;C{let i=g.jsepInit;if(!i)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if(A==="webgpu"){let t=(Df(),Ot(p0)).WebGpuBackend,C=new t;await C.initialize(e,I),i("webgpu",[C,o=>C.alloc(Number(o)),o=>C.free(o),(o,s,B,Q=!1)=>{if(Q)Oe("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(o)}, dst=${Number(s)}, size=${Number(B)}`),C.memcpy(Number(o),Number(s));else{Oe("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(o)}, gpuDataId=${Number(s)}, size=${Number(B)}`);let a=g.HEAPU8.subarray(Number(o>>>0),Number(o>>>0)+Number(B));C.upload(Number(s),a)}},async(o,s,B)=>{Oe("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${s}, size=${B}`),await C.download(Number(o),()=>g.HEAPU8.subarray(Number(s)>>>0,Number(s+B)>>>0))},(o,s,B)=>C.createKernel(o,Number(s),B,g.UTF8ToString(g._JsepGetNodeName(Number(s)))),o=>C.releaseKernel(o),(o,s,B,Q)=>{Oe("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${B}, kernel=${o}, contextDataOffset=${s}`);let a=new vh(g,C,Number(s));return C.computeKernel(Number(o),a,Q)},()=>C.captureBegin(),()=>C.captureEnd(),()=>C.replay()])}else{let t=new Uu(e);i("webnn",[t,()=>t.reserveTensorId(),C=>t.releaseTensorId(C),async(C,o,s,B,Q)=>t.ensureTensor(C,o,s,B,Q),(C,o)=>{t.uploadTensor(C,o)},async(C,o)=>t.downloadTensor(C,o)])}}}),qh,Dr,wr,ei,Oh,SB,aC,pr,yr,NB,fr,mr,Mr,F0=VA(()=>{my(),My(),Fe(),Ni(),Ir(),Ru(),qh=(A,g)=>{sg()._OrtInit(A,g)!==0&&eg("Can't initialize onnxruntime.")},Dr=async A=>{qh(A.wasm.numThreads,oC(A.logLevel))},wr=async(A,g)=>{sg().asyncInit?.();{let e=(wf(),Ot(f0)).init;if(g==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let I=A.webgpu.adapter;if(I){if(typeof I.limits!="object"||typeof I.features!="object"||typeof I.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let i=A.webgpu.powerPreference;if(i!==void 0&&i!=="low-power"&&i!=="high-performance")throw new Error(`Invalid powerPreference setting: "${i}"`);let t=A.webgpu.forceFallbackAdapter;if(t!==void 0&&typeof t!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${t}"`);if(I=await navigator.gpu.requestAdapter({powerPreference:i,forceFallbackAdapter:t}),!I)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}await e("webgpu",sg(),A,I)}if(g==="webnn"){if(typeof navigator>"u"||!navigator.ml)throw new Error("WebNN is not supported in current environment");await e("webnn",sg(),A)}}},ei=new Map,Oh=A=>{let g=sg(),e=g.stackSave();try{let I=g.PTR_SIZE,i=g.stackAlloc(2*I);g._OrtGetInputOutputCount(A,i,i+I)!==0&&eg("Can't get session input/output count.");let t=I===4?"i32":"i64";return[Number(g.getValue(i,t)),Number(g.getValue(i+I,t))]}finally{g.stackRestore(e)}},SB=(A,g)=>{let e=sg(),I=e.stackSave(),i=0;try{let t=e.PTR_SIZE,C=e.stackAlloc(2*t);e._OrtGetInputOutputMetadata(A,g,C,C+t)!==0&&eg("Can't get session input/output metadata.");let o=Number(e.getValue(C,"*"));i=Number(e.getValue(C+t,"*"));let s=e.HEAP32[i/4];if(s===0)return[o,0];let B=e.HEAPU32[i/4+1],Q=[];for(let a=0;a{let g=sg(),e=g._malloc(A.byteLength);if(e===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${A.byteLength}.`);return g.HEAPU8.set(A,e),[e,A.byteLength]},pr=async(A,g)=>{let e,I,i=sg();Array.isArray(A)?[e,I]=A:A.buffer===i.HEAPU8.buffer?[e,I]=[A.byteOffset,A.byteLength]:[e,I]=aC(A);let t=0,C=0,o=0,s=[],B=[],Q=[];try{if([C,s]=await Nu(g),g?.externalData&&i.mountExternalData){let h=[];for(let y of g.externalData){let M=typeof y=="string"?y:y.path;h.push(Cr(typeof y=="string"?y:y.data).then(m=>{i.mountExternalData(M,m)}))}await Promise.all(h)}for(let h of g?.executionProviders??[])if((typeof h=="string"?h:h.name)==="webnn"){if(i.shouldTransferToMLTensor=!1,typeof h!="string"){let y=h,M=y?.context,m=y?.gpuDevice,_=y?.deviceType,x=y?.powerPreference;M?i.currentContext=M:m?i.currentContext=await i.webnnCreateMLContext(m):i.currentContext=await i.webnnCreateMLContext({deviceType:_,powerPreference:x})}else i.currentContext=await i.webnnCreateMLContext();break}t=await i._OrtCreateSession(e,I,C),i.webgpuOnCreateSession?.(t),t===0&&eg("Can't create a session."),i.jsepOnCreateSession?.(),i.currentContext&&(i.webnnRegisterMLContext(t,i.currentContext),i.currentContext=void 0,i.shouldTransferToMLTensor=!0);let[a,r]=Oh(t),d=!!g?.enableGraphCapture,c=[],f=[],k=[],u=[],D=[];for(let h=0;hh==="gpu-buffer"||h==="ml-tensor")&&(o=i._OrtCreateBinding(t),o===0&&eg("Can't create IO binding."),G={handle:o,outputPreferredLocations:D,outputPreferredLocationsEncoded:D.map(h=>UB(h))}),ei.set(t,[t,B,Q,G,d,!1]),[t,c,f,k,u]}catch(a){throw B.forEach(r=>i._OrtFree(r)),Q.forEach(r=>i._OrtFree(r)),o!==0&&i._OrtReleaseBinding(o)!==0&&eg("Can't release IO binding."),t!==0&&i._OrtReleaseSession(t)!==0&&eg("Can't release session."),a}finally{i._free(e),C!==0&&i._OrtReleaseSessionOptions(C)!==0&&eg("Can't release session options."),s.forEach(a=>i._free(a)),i.unmountExternalData?.()}},yr=A=>{let g=sg(),e=ei.get(A);if(!e)throw new Error(`cannot release session. invalid session id: ${A}`);let[I,i,t,C,o]=e;C&&(o&&g._OrtClearBoundOutputs(C.handle)!==0&&eg("Can't clear bound outputs."),g._OrtReleaseBinding(C.handle)!==0&&eg("Can't release IO binding.")),g.jsepOnReleaseSession?.(A),g.webnnOnReleaseSession?.(A),g.webgpuOnReleaseSession?.(A),i.forEach(s=>g._OrtFree(s)),t.forEach(s=>g._OrtFree(s)),g._OrtReleaseSession(I)!==0&&eg("Can't release session."),ei.delete(A)},NB=async(A,g,e,I,i,t,C=!1)=>{if(!A){g.push(0);return}let o=sg(),s=o.PTR_SIZE,B=A[0],Q=A[1],a=A[3],r=a,d,c;if(B==="string"&&(a==="gpu-buffer"||a==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(C&&a!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${t} when enableGraphCapture is true.`);if(a==="gpu-buffer"){let u=A[2].gpuBuffer;c=fi(Zi(B),Q);{let D=o.jsepRegisterBuffer;if(!D)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');d=D(I,t,u,c)}}else if(a==="ml-tensor"){let u=A[2].mlTensor;c=fi(Zi(B),Q);let D=o.webnnRegisterMLTensor;if(!D)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');d=D(I,u,Zi(B),Q)}else{let u=A[2];if(Array.isArray(u)){c=s*u.length,d=o._malloc(c),e.push(d);for(let D=0;Do.setValue(k+G*s,D,s===4?"i32":"i64"));let u=o._OrtCreateTensor(Zi(B),d,c,k,Q.length,UB(r));u===0&&eg(`Can't create tensor for input/output. session=${I}, index=${t}.`),g.push(u)}finally{o.stackRestore(f)}},fr=async(A,g,e,I,i,t)=>{let C=sg(),o=C.PTR_SIZE,s=ei.get(A);if(!s)throw new Error(`cannot run inference. invalid session id: ${A}`);let B=s[0],Q=s[1],a=s[2],r=s[3],d=s[4],c=s[5],f=g.length,k=I.length,u=0,D=[],G=[],h=[],y=[],M=C.stackSave(),m=C.stackAlloc(f*o),_=C.stackAlloc(f*o),x=C.stackAlloc(k*o),b=C.stackAlloc(k*o);try{[u,D]=Su(t);for(let T=0;T_A*PA,1);sA=qI(P);let YA=r?.outputPreferredLocations[I[T]];if(sA==="string"){if(YA==="gpu-buffer"||YA==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let _A=[];for(let PA=0;PA0){let _A=C.jsepGetBuffer;if(!_A)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let PA=_A(cA),ie=fi(P,nA);if(ie===void 0||!tr(sA))throw new Error(`Unsupported data type: ${sA}`);BA=!0,Z.push([sA,v,{gpuBuffer:PA,download:C.jsepCreateDownloader(PA,ie,sA),dispose:()=>{C._OrtReleaseTensor(CA)!==0&&eg("Can't release tensor.")}},"gpu-buffer"])}else if(YA==="ml-tensor"&&nA>0){let _A=C.webnnEnsureTensor,PA=C.webnnIsInt64Supported;if(!_A||!PA)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(fi(P,nA)===void 0||!or(sA))throw new Error(`Unsupported data type: ${sA}`);if(sA==="int64"&&!PA(A))throw new Error('preferredLocation "ml-tensor" for int64 output is not supported by current WebNN Context.');let ie=await _A(A,cA,P,v,!1);BA=!0,Z.push([sA,v,{mlTensor:ie,download:C.webnnCreateMLTensorDownloader(cA,sA),dispose:()=>{C.webnnReleaseTensorId(cA),C._OrtReleaseTensor(CA)}},"ml-tensor"])}else{let _A=ir(sA),PA=new _A(nA);new Uint8Array(PA.buffer,PA.byteOffset,PA.byteLength).set(C.HEAPU8.subarray(cA,cA+PA.byteLength)),Z.push([sA,v,PA,"cpu"])}}finally{C.stackRestore(eA),sA==="string"&&cA&&C._free(cA),BA||C._OrtReleaseTensor(CA),C.webnnOnRunEnd?.(B)}}return r&&!d&&(C._OrtClearBoundOutputs(r.handle)!==0&&eg("Can't clear bound outputs."),ei.set(A,[B,Q,a,r,d,!1])),Z}finally{C.stackRestore(M),G.forEach(X=>C._OrtReleaseTensor(X)),h.forEach(X=>C._OrtReleaseTensor(X)),y.forEach(X=>C._free(X)),u!==0&&C._OrtReleaseRunOptions(u),D.forEach(X=>C._free(X))}},mr=A=>{let g=sg(),e=ei.get(A);if(!e)throw new Error("invalid session id");let I=e[0],i=g._OrtEndProfiling(I);i===0&&eg("Can't get an profile file name."),g._OrtFree(i)},Mr=A=>{let g=[];for(let e of A){let I=e[2];!Array.isArray(I)&&"buffer"in I&&g.push(I.buffer)}return g}}),gi,hI,zi,xt,Tt,Zo,RB,AC,Di,wi,Wh,S0,N0,R0,_0,G0,k0,L0,K0=VA(()=>{JI(),F0(),Ni(),er(),gi=()=>!!rg.wasm.proxy&&typeof document<"u",zi=!1,xt=!1,Tt=!1,AC=new Map,Di=(A,g)=>{let e=AC.get(A);e?e.push(g):AC.set(A,[g])},wi=()=>{if(zi||!xt||Tt||!hI)throw new Error("worker not ready")},Wh=A=>{switch(A.data.type){case"init-wasm":zi=!1,A.data.err?(Tt=!0,RB[1](A.data.err)):(xt=!0,RB[0]()),Zo&&(URL.revokeObjectURL(Zo),Zo=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let g=AC.get(A.data.type);A.data.err?g.shift()[1](A.data.err):g.shift()[0](A.data.out);break}}},S0=async()=>{if(!xt){if(zi)throw new Error("multiple calls to 'initWasm()' detected.");if(Tt)throw new Error("previous call to 'initWasm()' failed.");if(zi=!0,gi())return new Promise((A,g)=>{hI?.terminate(),Mu().then(([e,I])=>{try{hI=I,hI.onerror=t=>g(t),hI.onmessage=Wh,RB=[A,g];let i={type:"init-wasm",in:rg};!i.in.wasm.wasmPaths&&(e||KB)&&(i.in.wasm.wasmPaths={wasm:new URL(""+new URL("ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",import.meta.url).href,import.meta.url).href}),hI.postMessage(i),Zo=e}catch(i){g(i)}},g)});try{await gr(rg.wasm),await Dr(rg),xt=!0}catch(A){throw Tt=!0,A}finally{zi=!1}}},N0=async A=>{if(gi())return wi(),new Promise((g,e)=>{Di("init-ep",[g,e]);let I={type:"init-ep",in:{epName:A,env:rg}};hI.postMessage(I)});await wr(rg,A)},R0=async A=>gi()?(wi(),new Promise((g,e)=>{Di("copy-from",[g,e]);let I={type:"copy-from",in:{buffer:A}};hI.postMessage(I,[A.buffer])})):aC(A),_0=async(A,g)=>{if(gi()){if(g?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return wi(),new Promise((e,I)=>{Di("create",[e,I]);let i={type:"create",in:{model:A,options:{...g}}},t=[];A instanceof Uint8Array&&t.push(A.buffer),hI.postMessage(i,t)})}else return pr(A,g)},G0=async A=>{if(gi())return wi(),new Promise((g,e)=>{Di("release",[g,e]);let I={type:"release",in:A};hI.postMessage(I)});yr(A)},k0=async(A,g,e,I,i,t)=>{if(gi()){if(e.some(C=>C[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(i.some(C=>C))throw new Error("pre-allocated output tensor is not supported for proxy.");return wi(),new Promise((C,o)=>{Di("run",[C,o]);let s=e,B={type:"run",in:{sessionId:A,inputIndices:g,inputs:s,outputIndices:I,options:t}};hI.postMessage(B,Mr(s))})}else return fr(A,g,e,I,i,t)},L0=async A=>{if(gi())return wi(),new Promise((g,e)=>{Di("end-profiling",[g,e]);let I={type:"end-profiling",in:A};hI.postMessage(I)});mr(A)}}),_B,jh,U0,pf=VA(()=>{JI(),K0(),Fe(),Ar(),Ru(),_B=(A,g)=>{switch(A.location){case"cpu":return[A.type,A.dims,A.data,"cpu"];case"gpu-buffer":return[A.type,A.dims,{gpuBuffer:A.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[A.type,A.dims,{mlTensor:A.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${A.location} for ${g()}`)}},jh=A=>{switch(A[3]){case"cpu":return new LI(A[0],A[2],A[1]);case"gpu-buffer":{let g=A[0];if(!tr(g))throw new Error(`not supported data type: ${g} for deserializing GPU tensor`);let{gpuBuffer:e,download:I,dispose:i}=A[2];return LI.fromGpuBuffer(e,{dataType:g,dims:A[1],download:I,dispose:i})}case"ml-tensor":{let g=A[0];if(!or(g))throw new Error(`not supported data type: ${g} for deserializing MLTensor tensor`);let{mlTensor:e,download:I,dispose:i}=A[2];return LI.fromMLTensor(e,{dataType:g,dims:A[1],download:I,dispose:i})}default:throw new Error(`invalid data location: ${A[3]}`)}},U0=class{async fetchModelAndCopyToWasmMemory(A){return R0(await Cr(A))}async loadModel(A,g){UI();let e;typeof A=="string"?e=await this.fetchModelAndCopyToWasmMemory(A):e=A,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await _0(e,g),wI()}async dispose(){return G0(this.sessionId)}async run(A,g,e){UI();let I=[],i=[];Object.entries(A).forEach(a=>{let r=a[0],d=a[1],c=this.inputNames.indexOf(r);if(c===-1)throw new Error(`invalid input '${r}'`);I.push(d),i.push(c)});let t=[],C=[];Object.entries(g).forEach(a=>{let r=a[0],d=a[1],c=this.outputNames.indexOf(r);if(c===-1)throw new Error(`invalid output '${r}'`);t.push(d),C.push(c)});let o=I.map((a,r)=>_B(a,()=>`input "${this.inputNames[i[r]]}"`)),s=t.map((a,r)=>a?_B(a,()=>`output "${this.outputNames[C[r]]}"`):null),B=await k0(this.sessionId,i,o,C,s,e),Q={};for(let a=0;azB,initializeFlags:()=>VB,wasmBackend:()=>b0});var VB,zB,b0,yf=VA(()=>{JI(),K0(),pf(),VB=()=>{(typeof rg.wasm.initTimeout!="number"||rg.wasm.initTimeout<0)&&(rg.wasm.initTimeout=0);let A=rg.wasm.simd;if(typeof A!="boolean"&&A!==void 0&&A!=="fixed"&&A!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${A}". Reset it to \`false\` and ignore SIMD feature checking.`),rg.wasm.simd=!1),typeof rg.wasm.proxy!="boolean"&&(rg.wasm.proxy=!1),typeof rg.wasm.trace!="boolean"&&(rg.wasm.trace=!1),typeof rg.wasm.numThreads!="number"||!Number.isInteger(rg.wasm.numThreads)||rg.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)rg.wasm.numThreads=1;else{let g=typeof navigator>"u"?sy("node:os").cpus().length:navigator.hardwareConcurrency;rg.wasm.numThreads=Math.min(4,Math.ceil((g||1)/2))}},zB=class{async init(A){VB(),await S0(),await N0(A)}async createInferenceSessionHandler(A,g){let e=new U0;return await e.loadModel(A,g),e}},b0=new zB});JI();JI();JI();var ff="1.22.0-dev.20250409-89f8206ba4",mf=Du;{let A=(yf(),Ot(J0)).wasmBackend;mi("webgpu",A,5),mi("webnn",A,5),mi("cpu",A,10),mi("wasm",A,10)}Object.defineProperty(rg.versions,"web",{value:ff,enumerable:!0});/** * @license * Copyright 2021 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= *//** * @license * Copyright 2020 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= *//** * @license * Copyright 2019 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */var Mf=Object.freeze({__proto__:null,get InferenceSession(){return ZB},get TRACE(){return Wt},get TRACE_FUNC_BEGIN(){return UI},get TRACE_FUNC_END(){return wI},get Tensor(){return LI},default:mf,get env(){return rg},get registerBackend(){return mi}}),GB={},Ff={"onnxruntime-common":A=>{A.exports=iy},"onnxruntime-web":A=>{A.exports=Mf},"?2ce3":()=>{},"?7992":()=>{},"?5af5":()=>{},"?2b25":()=>{},"?db59":()=>{},"?383f":()=>{},"?fa4b":()=>{},"./node_modules/@huggingface/jinja/dist/index.js":(A,g,e)=>{e.r(g),e.d(g,{Environment:()=>Ae,Interpreter:()=>se,Template:()=>EI,parse:()=>YA,tokenize:()=>Q});var I=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Comment:"Comment"}),i=class{constructor(N,gA){this.value=N,this.type=gA}};function t(N){return/\w/.test(N)}function C(N){return/[0-9]/.test(N)}var o=[["{%",I.OpenStatement],["%}",I.CloseStatement],["{{",I.OpenExpression],["}}",I.CloseExpression],["(",I.OpenParen],[")",I.CloseParen],["{",I.OpenCurlyBracket],["}",I.CloseCurlyBracket],["[",I.OpenSquareBracket],["]",I.CloseSquareBracket],[",",I.Comma],[".",I.Dot],[":",I.Colon],["|",I.Pipe],["<=",I.ComparisonBinaryOperator],[">=",I.ComparisonBinaryOperator],["==",I.ComparisonBinaryOperator],["!=",I.ComparisonBinaryOperator],["<",I.ComparisonBinaryOperator],[">",I.ComparisonBinaryOperator],["+",I.AdditiveBinaryOperator],["-",I.AdditiveBinaryOperator],["~",I.AdditiveBinaryOperator],["*",I.MultiplicativeBinaryOperator],["/",I.MultiplicativeBinaryOperator],["%",I.MultiplicativeBinaryOperator],["=",I.Equals]],s=new Map([["n",` `],["t"," "],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function B(N,gA={}){return N.endsWith(` `)&&(N=N.slice(0,-1)),gA.lstrip_blocks&&(N=N.replace(/^[ \t]*({[#%-])/gm,"$1")),gA.trim_blocks&&(N=N.replace(/([#%-]})\n/g,"$1")),N.replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{").replace(/-#}\s*/g,"#}").replace(/\s*{#-/g,"{#").replace(/{%\s*(end)?generation\s*%}/gs,"")}function Q(N,gA={}){const O=[],IA=B(N,gA);let rA=0,yA=0;const JA=ae=>{let Ee="";for(;ae(IA[rA]);){if(IA[rA]==="\\"){if(++rA,rA>=IA.length)throw new SyntaxError("Unexpected end of input");const Ie=IA[rA++],Se=s.get(Ie);if(Se===void 0)throw new SyntaxError(`Unexpected escaped character: ${Ie}`);Ee+=Se;continue}if(Ee+=IA[rA++],rA>=IA.length)throw new SyntaxError("Unexpected end of input")}return Ee};A:for(;rA0){O.push(new i(Ie,I.Text));continue}}if(IA[rA]==="{"&&IA[rA+1]==="#"){rA+=2;let Ie="";for(;IA[rA]!=="#"||IA[rA+1]!=="}";){if(rA+2>=IA.length)throw new SyntaxError("Missing end of comment tag");Ie+=IA[rA++]}O.push(new i(Ie,I.Comment)),rA+=2;continue}JA(Ie=>/\s/.test(Ie));const Ee=IA[rA];if(Ee==="-"||Ee==="+"){const Ie=O.at(-1)?.type;if(Ie===I.Text||Ie===void 0)throw new SyntaxError(`Unexpected character: ${Ee}`);switch(Ie){case I.Identifier:case I.NumericLiteral:case I.StringLiteral:case I.CloseParen:case I.CloseSquareBracket:break;default:{++rA;const Se=JA(C);O.push(new i(`${Ee}${Se}`,Se.length>0?I.NumericLiteral:I.UnaryOperator));continue}}}for(const[Ie,Se]of o){if(Ie==="}}"&&yA>0)continue;if(IA.slice(rA,rA+Ie.length)===Ie){O.push(new i(Ie,Se)),Se===I.OpenExpression?yA=0:Se===I.OpenCurlyBracket?++yA:Se===I.CloseCurlyBracket&&--yA,rA+=Ie.length;continue A}}if(Ee==="'"||Ee==='"'){++rA;const Ie=JA(Se=>Se!==Ee);O.push(new i(Ie,I.StringLiteral)),++rA;continue}if(C(Ee)){let Ie=JA(C);if(IA[rA]==="."&&C(IA[rA+1])){++rA;const Se=JA(C);Ie=`${Ie}.${Se}`}O.push(new i(Ie,I.NumericLiteral));continue}if(t(Ee)){const Ie=JA(t);O.push(new i(Ie,I.Identifier));continue}throw new SyntaxError(`Unexpected character: ${Ee}`)}return O}var a=class{type="Statement"},r=class extends a{constructor(N){super(),this.body=N}type="Program"},d=class extends a{constructor(N,gA,O){super(),this.test=N,this.body=gA,this.alternate=O}type="If"},c=class extends a{constructor(N,gA,O,IA){super(),this.loopvar=N,this.iterable=gA,this.body=O,this.defaultBlock=IA}type="For"},f=class extends a{type="Break"},k=class extends a{type="Continue"},u=class extends a{constructor(N,gA,O){super(),this.assignee=N,this.value=gA,this.body=O}type="Set"},D=class extends a{constructor(N,gA,O){super(),this.name=N,this.args=gA,this.body=O}type="Macro"},G=class extends a{constructor(N){super(),this.value=N}type="Comment"},h=class extends a{type="Expression"},y=class extends h{constructor(N,gA,O){super(),this.object=N,this.property=gA,this.computed=O}type="MemberExpression"},M=class extends h{constructor(N,gA){super(),this.callee=N,this.args=gA}type="CallExpression"},m=class extends h{constructor(N){super(),this.value=N}type="Identifier"},_=class extends h{constructor(N){super(),this.value=N}type="Literal"},x=class extends _{type="IntegerLiteral"},b=class extends _{type="FloatLiteral"},X=class extends _{type="StringLiteral"},Z=class extends _{type="ArrayLiteral"},T=class extends _{type="TupleLiteral"},CA=class extends _{type="ObjectLiteral"},eA=class extends h{constructor(N,gA,O){super(),this.operator=N,this.left=gA,this.right=O}type="BinaryExpression"},tA=class extends h{constructor(N,gA){super(),this.operand=N,this.filter=gA}type="FilterExpression"},BA=class extends a{constructor(N,gA){super(),this.filter=N,this.body=gA}type="FilterStatement"},sA=class extends h{constructor(N,gA){super(),this.lhs=N,this.test=gA}type="SelectExpression"},cA=class extends h{constructor(N,gA,O){super(),this.operand=N,this.negate=gA,this.test=O}type="TestExpression"},dA=class extends h{constructor(N,gA){super(),this.operator=N,this.argument=gA}type="UnaryExpression"},P=class extends h{constructor(N=void 0,gA=void 0,O=void 0){super(),this.start=N,this.stop=gA,this.step=O}type="SliceExpression"},U=class extends h{constructor(N,gA){super(),this.key=N,this.value=gA}type="KeywordArgumentExpression"},z=class extends h{constructor(N){super(),this.argument=N}type="SpreadExpression"},v=class extends a{constructor(N,gA,O){super(),this.call=N,this.callerArgs=gA,this.body=O}type="CallStatement"},nA=class extends h{constructor(N,gA,O){super(),this.condition=N,this.trueExpr=gA,this.falseExpr=O}type="Ternary"};function YA(N){const gA=new r([]);let O=0;function IA(qA,n){const F=N[O++];if(!F||F.type!==qA)throw new Error(`Parser Error: ${n}. ${F.type} !== ${qA}.`);return F}function rA(qA){if(!Ee(qA))throw new SyntaxError(`Expected ${qA}`);++O}function yA(){switch(N[O].type){case I.Comment:return new G(N[O++].value);case I.Text:return Ie();case I.OpenStatement:return Se();case I.OpenExpression:return Te();default:throw new SyntaxError(`Unexpected token type: ${N[O].type}`)}}function JA(...qA){return O+qA.length<=N.length&&qA.every((n,F)=>n===N[O+F].type)}function ae(...qA){return N[O]?.type===I.OpenStatement&&N[O+1]?.type===I.Identifier&&qA.includes(N[O+1]?.value)}function Ee(...qA){return O+qA.length<=N.length&&qA.every((n,F)=>N[O+F].type==="Identifier"&&n===N[O+F].value)}function Ie(){return new X(IA(I.Text,"Expected text token").value)}function Se(){if(IA(I.OpenStatement,"Expected opening statement token"),N[O].type!==I.Identifier)throw new SyntaxError(`Unknown statement, got ${N[O].type}`);const qA=N[O].value;let n;switch(qA){case"set":++O,n=wg();break;case"if":++O,n=je(),IA(I.OpenStatement,"Expected {% token"),rA("endif"),IA(I.CloseStatement,"Expected %} token");break;case"macro":++O,n=lg(),IA(I.OpenStatement,"Expected {% token"),rA("endmacro"),IA(I.CloseStatement,"Expected %} token");break;case"for":++O,n=Ig(),IA(I.OpenStatement,"Expected {% token"),rA("endfor"),IA(I.CloseStatement,"Expected %} token");break;case"call":{++O;let F=null;JA(I.OpenParen)&&(F=jg());const K=ve();if(K.type!=="Identifier")throw new SyntaxError("Expected identifier following call statement");const W=jg();IA(I.CloseStatement,"Expected closing statement token");const iA=[];for(;!ae("endcall");)iA.push(yA());IA(I.OpenStatement,"Expected '{%'"),rA("endcall"),IA(I.CloseStatement,"Expected closing statement token");const QA=new M(K,W);n=new v(QA,F,iA);break}case"break":++O,IA(I.CloseStatement,"Expected closing statement token"),n=new f;break;case"continue":++O,IA(I.CloseStatement,"Expected closing statement token"),n=new k;break;case"filter":{++O;let F=ve();F instanceof m&&JA(I.OpenParen)&&(F=ag(F)),IA(I.CloseStatement,"Expected closing statement token");const K=[];for(;!ae("endfilter");)K.push(yA());IA(I.OpenStatement,"Expected '{%'"),rA("endfilter"),IA(I.CloseStatement,"Expected '%}'"),n=new BA(F,K);break}default:throw new SyntaxError(`Unknown statement type: ${qA}`)}return n}function Te(){IA(I.OpenExpression,"Expected opening expression token");const qA=pg();return IA(I.CloseExpression,"Expected closing expression token"),qA}function wg(){const qA=Wg();let n=null;const F=[];if(JA(I.Equals))++O,n=Wg();else{for(IA(I.CloseStatement,"Expected %} token");!ae("endset");)F.push(yA());IA(I.OpenStatement,"Expected {% token"),rA("endset")}return IA(I.CloseStatement,"Expected closing statement token"),new u(qA,n,F)}function je(){const qA=pg();IA(I.CloseStatement,"Expected closing statement token");const n=[],F=[];for(;!ae("elif","else","endif");)n.push(yA());if(ae("elif")){++O,++O;const K=je();F.push(K)}else if(ae("else"))for(++O,++O,IA(I.CloseStatement,"Expected closing statement token");!ae("endif");)F.push(yA());return new d(qA,n,F)}function lg(){const qA=ve();if(qA.type!=="Identifier")throw new SyntaxError("Expected identifier following macro statement");const n=jg();IA(I.CloseStatement,"Expected closing statement token");const F=[];for(;!ae("endmacro");)F.push(yA());return new D(qA,n,F)}function Wg(qA=!1){const n=qA?ve:pg,F=[n()],K=JA(I.Comma);for(;K&&(++O,F.push(n()),!!JA(I.Comma)););return K?new T(F):F[0]}function Ig(){const qA=Wg(!0);if(!(qA instanceof m||qA instanceof T))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${qA.type} instead`);if(!Ee("in"))throw new SyntaxError("Expected `in` keyword following loop variable");++O;const n=pg();IA(I.CloseStatement,"Expected closing statement token");const F=[];for(;!ae("endfor","else");)F.push(yA());const K=[];if(ae("else"))for(++O,++O,IA(I.CloseStatement,"Expected closing statement token");!ae("endfor");)K.push(yA());return new c(qA,n,F,K)}function pg(){return iI()}function iI(){const qA=cg();if(Ee("if")){++O;const n=cg();if(Ee("else")){++O;const F=iI();return new nA(n,qA,F)}else return new sA(qA,n)}return qA}function cg(){let qA=Zg();for(;Ee("or");){const n=N[O];++O;const F=Zg();qA=new eA(n,qA,F)}return qA}function Zg(){let qA=oI();for(;Ee("and");){const n=N[O];++O;const F=oI();qA=new eA(n,qA,F)}return qA}function oI(){let qA;for(;Ee("not");){const n=N[O];++O;const F=oI();qA=new dA(n,F)}return qA??mg()}function mg(){let qA=nI();for(;;){let n;if(Ee("not","in"))n=new i("not in",I.Identifier),O+=2;else if(Ee("in"))n=N[O++];else if(JA(I.ComparisonBinaryOperator))n=N[O++];else break;const F=nI();qA=new eA(n,qA,F)}return qA}function nI(){let qA=lI();for(;JA(I.AdditiveBinaryOperator);){const n=N[O];++O;const F=lI();qA=new eA(n,qA,F)}return qA}function CI(){const qA=tI(ve());return JA(I.OpenParen)?ag(qA):qA}function ag(qA){let n=new M(qA,jg());return n=tI(n),JA(I.OpenParen)&&(n=ag(n)),n}function jg(){IA(I.OpenParen,"Expected opening parenthesis for arguments list");const qA=dg();return IA(I.CloseParen,"Expected closing parenthesis for arguments list"),qA}function dg(){const qA=[];for(;!JA(I.CloseParen);){let n;if(N[O].type===I.MultiplicativeBinaryOperator&&N[O].value==="*"){++O;const F=pg();n=new z(F)}else if(n=pg(),JA(I.Equals)){if(++O,!(n instanceof m))throw new SyntaxError("Expected identifier for keyword argument");const F=pg();n=new U(n,F)}qA.push(n),JA(I.Comma)&&++O}return qA}function Mg(){const qA=[];let n=!1;for(;!JA(I.CloseSquareBracket);)JA(I.Colon)?(qA.push(void 0),++O,n=!0):(qA.push(pg()),JA(I.Colon)&&(++O,n=!0));if(qA.length===0)throw new SyntaxError("Expected at least one argument for member/slice expression");if(n){if(qA.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new P(...qA)}return qA[0]}function tI(qA){for(;JA(I.Dot)||JA(I.OpenSquareBracket);){const n=N[O];++O;let F;const K=n.type===I.OpenSquareBracket;if(K)F=Mg(),IA(I.CloseSquareBracket,"Expected closing square bracket");else if(F=ve(),F.type!=="Identifier")throw new SyntaxError("Expected identifier following dot operator");qA=new y(qA,F,K)}return qA}function lI(){let qA=AI();for(;JA(I.MultiplicativeBinaryOperator);){const n=N[O++],F=AI();qA=new eA(n,qA,F)}return qA}function AI(){let qA=fI();for(;Ee("is");){++O;const n=Ee("not");n&&++O;const F=ve();if(!(F instanceof m))throw new SyntaxError("Expected identifier for the test");qA=new cA(qA,n,F)}return qA}function fI(){let qA=CI();for(;JA(I.Pipe);){++O;let n=ve();if(!(n instanceof m))throw new SyntaxError("Expected identifier for the filter");JA(I.OpenParen)&&(n=ag(n)),qA=new tA(qA,n)}return qA}function ve(){const qA=N[O++];switch(qA.type){case I.NumericLiteral:{const n=qA.value;return n.includes(".")?new b(Number(n)):new x(Number(n))}case I.StringLiteral:{let n=qA.value;for(;JA(I.StringLiteral);)n+=N[O++].value;return new X(n)}case I.Identifier:return new m(qA.value);case I.OpenParen:{const n=Wg();return IA(I.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),n}case I.OpenSquareBracket:{const n=[];for(;!JA(I.CloseSquareBracket);)n.push(pg()),JA(I.Comma)&&++O;return++O,new Z(n)}case I.OpenCurlyBracket:{const n=new Map;for(;!JA(I.CloseCurlyBracket);){const F=pg();IA(I.Colon,"Expected colon between key and value in object literal");const K=pg();n.set(F,K),JA(I.Comma)&&++O}return++O,new CA(n)}default:throw new SyntaxError(`Unexpected token: ${qA.type}`)}}for(;O=0?(gA=(gA??=0)<0?Math.max(N.length+gA,0):Math.min(gA,N.length),O=(O??=N.length)<0?Math.max(N.length+O,0):Math.min(O,N.length)):(gA=(gA??=N.length-1)<0?Math.max(N.length+gA,-1):Math.min(gA,N.length-1),O=(O??=-1)<-1?Math.max(N.length+O,-1):Math.min(O,N.length-1));const yA=[];for(let JA=gA;rA*JAgA.toUpperCase())}function LA(N){return AA(new Date,N)}function AA(N,gA){const O=new Intl.DateTimeFormat(void 0,{month:"long"}),IA=new Intl.DateTimeFormat(void 0,{month:"short"}),rA=yA=>yA<10?"0"+yA:yA.toString();return gA.replace(/%[YmdbBHM%]/g,yA=>{switch(yA){case"%Y":return N.getFullYear().toString();case"%m":return rA(N.getMonth()+1);case"%d":return rA(N.getDate());case"%b":return IA.format(N);case"%B":return O.format(N);case"%H":return rA(N.getHours());case"%M":return rA(N.getMinutes());case"%%":return"%";default:return yA}})}function hA(N){return N.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(N,gA,O,IA){if(IA===0)return N;let rA=IA==null||IA<0?1/0:IA;const yA=gA.length===0?new RegExp("(?=)","gu"):new RegExp(hA(gA),"gu");return N.replaceAll(yA,JA=>rA>0?(--rA,O):JA)}var fA=class extends Error{},bA=class extends Error{},NA=class{type="RuntimeValue";value;builtins=new Map;constructor(N=void 0){this.value=N}__bool__(){return new xA(!!this.value)}toString(){return String(this.value)}},pA=class extends NA{type="IntegerValue"},kA=class extends NA{type="FloatValue";toString(){return this.value%1===0?this.value.toFixed(1):this.value.toString()}},MA=class extends NA{type="StringValue";builtins=new Map([["upper",new HA(()=>new MA(this.value.toUpperCase()))],["lower",new HA(()=>new MA(this.value.toLowerCase()))],["strip",new HA(()=>new MA(this.value.trim()))],["title",new HA(()=>new MA(ie(this.value)))],["capitalize",new HA(()=>new MA(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],["length",new pA(this.value.length)],["rstrip",new HA(()=>new MA(this.value.trimEnd()))],["lstrip",new HA(()=>new MA(this.value.trimStart()))],["startswith",new HA(N=>{if(N.length===0)throw new Error("startswith() requires at least one argument");const gA=N[0];if(gA instanceof MA)return new xA(this.value.startsWith(gA.value));if(gA instanceof SA){for(const O of gA.value){if(!(O instanceof MA))throw new Error("startswith() tuple elements must be strings");if(this.value.startsWith(O.value))return new xA(!0)}return new xA(!1)}throw new Error("startswith() argument must be a string or tuple of strings")})],["endswith",new HA(N=>{if(N.length===0)throw new Error("endswith() requires at least one argument");const gA=N[0];if(gA instanceof MA)return new xA(this.value.endsWith(gA.value));if(gA instanceof SA){for(const O of gA.value){if(!(O instanceof MA))throw new Error("endswith() tuple elements must be strings");if(this.value.endsWith(O.value))return new xA(!0)}return new xA(!1)}throw new Error("endswith() argument must be a string or tuple of strings")})],["split",new HA(N=>{const gA=N[0]??new zA;if(!(gA instanceof MA||gA instanceof zA))throw new Error("sep argument must be a string or null");const O=N[1]??new pA(-1);if(!(O instanceof pA))throw new Error("maxsplit argument must be a number");let IA=[];if(gA instanceof zA){const rA=this.value.trimStart();for(const{0:yA,index:JA}of rA.matchAll(/\S+/g)){if(O.value!==-1&&IA.length>=O.value&&JA!==void 0){IA.push(yA+rA.slice(JA+yA.length));break}IA.push(yA)}}else{if(gA.value==="")throw new Error("empty separator");IA=this.value.split(gA.value),O.value!==-1&&IA.length>O.value&&IA.push(IA.splice(O.value).join(gA.value))}return new SA(IA.map(rA=>new MA(rA)))})],["replace",new HA(N=>{if(N.length<2)throw new Error("replace() requires at least two arguments");const gA=N[0],O=N[1];if(!(gA instanceof MA&&O instanceof MA))throw new Error("replace() arguments must be strings");let IA;if(N.length>2?N[2].type==="KeywordArgumentsValue"?IA=N[2].value.get("count")??new zA:IA=N[2]:IA=new zA,!(IA instanceof pA||IA instanceof zA))throw new Error("replace() count argument must be a number or null");return new MA(V(this.value,gA.value,O.value,IA.value))})]])},xA=class extends NA{type="BooleanValue"},vA=class extends NA{type="ObjectValue";__bool__(){return new xA(this.value.size>0)}builtins=new Map([["get",new HA(([N,gA])=>{if(!(N instanceof MA))throw new Error(`Object key must be a string: got ${N.type}`);return this.value.get(N.value)??gA??new zA})],["items",new HA(()=>this.items())],["keys",new HA(()=>this.keys())],["values",new HA(()=>this.values())]]);items(){return new SA(Array.from(this.value.entries()).map(([N,gA])=>new SA([new MA(N),gA])))}keys(){return new SA(Array.from(this.value.keys()).map(N=>new MA(N)))}values(){return new SA(Array.from(this.value.values()))}},ge=class extends vA{type="KeywordArgumentsValue"},SA=class extends NA{type="ArrayValue";builtins=new Map([["length",new pA(this.value.length)]]);__bool__(){return new xA(this.value.length>0)}},re=class extends SA{type="TupleValue"},HA=class extends NA{type="FunctionValue"},zA=class extends NA{type="NullValue"},Be=class extends NA{type="UndefinedValue"},Ae=class{constructor(N){this.parent=N}variables=new Map([["namespace",new HA(N=>{if(N.length===0)return new vA(new Map);if(N.length!==1||!(N[0]instanceof vA))throw new Error("`namespace` expects either zero arguments or a single object argument");return N[0]})]]);tests=new Map([["boolean",N=>N.type==="BooleanValue"],["callable",N=>N instanceof HA],["odd",N=>{if(!(N instanceof pA))throw new Error(`cannot odd on ${N.type}`);return N.value%2!==0}],["even",N=>{if(!(N instanceof pA))throw new Error(`cannot even on ${N.type}`);return N.value%2===0}],["false",N=>N.type==="BooleanValue"&&!N.value],["true",N=>N.type==="BooleanValue"&&N.value],["none",N=>N.type==="NullValue"],["string",N=>N.type==="StringValue"],["number",N=>N instanceof pA||N instanceof kA],["integer",N=>N instanceof pA],["iterable",N=>N.type==="ArrayValue"||N.type==="StringValue"],["mapping",N=>N.type==="ObjectValue"],["lower",N=>{const gA=N.value;return N.type==="StringValue"&&gA===gA.toLowerCase()}],["upper",N=>{const gA=N.value;return N.type==="StringValue"&&gA===gA.toUpperCase()}],["none",N=>N.type==="NullValue"],["defined",N=>N.type!=="UndefinedValue"],["undefined",N=>N.type==="UndefinedValue"],["equalto",(N,gA)=>N.value===gA.value],["eq",(N,gA)=>N.value===gA.value]]);set(N,gA){return this.declareVariable(N,Ne(gA))}declareVariable(N,gA){if(this.variables.has(N))throw new SyntaxError(`Variable already declared: ${N}`);return this.variables.set(N,gA),gA}setVariable(N,gA){return this.variables.set(N,gA),gA}resolve(N){if(this.variables.has(N))return this;if(this.parent)return this.parent.resolve(N);throw new Error(`Unknown variable: ${N}`)}lookupVariable(N){try{return this.resolve(N).variables.get(N)??new Be}catch{return new Be}}};function oe(N){N.set("false",!1),N.set("true",!0),N.set("none",null),N.set("raise_exception",gA=>{throw new Error(gA)}),N.set("range",_A),N.set("strftime_now",LA),N.set("True",!0),N.set("False",!1),N.set("None",null)}var se=class{global;constructor(N){this.global=N??new Ae}run(N){return this.evaluate(N,this.global)}evaluateBinaryExpression(N,gA){const O=this.evaluate(N.left,gA);switch(N.operator.value){case"and":return O.__bool__().value?this.evaluate(N.right,gA):O;case"or":return O.__bool__().value?O:this.evaluate(N.right,gA)}const IA=this.evaluate(N.right,gA);switch(N.operator.value){case"==":return new xA(O.value==IA.value);case"!=":return new xA(O.value!=IA.value)}if(O instanceof Be||IA instanceof Be){if(IA instanceof Be&&["in","not in"].includes(N.operator.value))return new xA(N.operator.value==="not in");throw new Error(`Cannot perform operation ${N.operator.value} on undefined values`)}else{if(O instanceof zA||IA instanceof zA)throw new Error("Cannot perform operation on null values");if(N.operator.value==="~")return new MA(O.value.toString()+IA.value.toString());if((O instanceof pA||O instanceof kA)&&(IA instanceof pA||IA instanceof kA)){const rA=O.value,yA=IA.value;switch(N.operator.value){case"+":case"-":case"*":{const JA=N.operator.value==="+"?rA+yA:N.operator.value==="-"?rA-yA:rA*yA;return O instanceof kA||IA instanceof kA?new kA(JA):new pA(JA)}case"/":return new kA(rA/yA);case"%":{const JA=rA%yA;return O instanceof kA||IA instanceof kA?new kA(JA):new pA(JA)}case"<":return new xA(rA":return new xA(rA>yA);case">=":return new xA(rA>=yA);case"<=":return new xA(rA<=yA)}}else if(O instanceof SA&&IA instanceof SA)switch(N.operator.value){case"+":return new SA(O.value.concat(IA.value))}else if(IA instanceof SA){const rA=IA.value.find(yA=>yA.value===O.value)!==void 0;switch(N.operator.value){case"in":return new xA(rA);case"not in":return new xA(!rA)}}}if(O instanceof MA||IA instanceof MA)switch(N.operator.value){case"+":return new MA(O.value.toString()+IA.value.toString())}if(O instanceof MA&&IA instanceof MA)switch(N.operator.value){case"in":return new xA(IA.value.includes(O.value));case"not in":return new xA(!IA.value.includes(O.value))}if(O instanceof MA&&IA instanceof vA)switch(N.operator.value){case"in":return new xA(IA.value.has(O.value));case"not in":return new xA(!IA.value.has(O.value))}throw new SyntaxError(`Unknown operator "${N.operator.value}" between ${O.type} and ${IA.type}`)}evaluateArguments(N,gA){const O=[],IA=new Map;for(const rA of N)if(rA.type==="SpreadExpression"){const yA=rA,JA=this.evaluate(yA.argument,gA);if(!(JA instanceof SA))throw new Error(`Cannot unpack non-iterable type: ${JA.type}`);for(const ae of JA.value)O.push(ae)}else if(rA.type==="KeywordArgumentExpression"){const yA=rA;IA.set(yA.key.value,this.evaluate(yA.value,gA))}else{if(IA.size>0)throw new Error("Positional arguments must come before keyword arguments");O.push(this.evaluate(rA,gA))}return[O,IA]}applyFilter(N,gA,O){if(gA.type==="Identifier"){const IA=gA;if(IA.value==="tojson")return new MA(Pe(N));if(N instanceof SA)switch(IA.value){case"list":return N;case"first":return N.value[0];case"last":return N.value[N.value.length-1];case"length":return new pA(N.value.length);case"reverse":return new SA(N.value.reverse());case"sort":return new SA(N.value.sort((rA,yA)=>{if(rA.type!==yA.type)throw new Error(`Cannot compare different types: ${rA.type} and ${yA.type}`);switch(rA.type){case"IntegerValue":case"FloatValue":return rA.value-yA.value;case"StringValue":return rA.value.localeCompare(yA.value);default:throw new Error(`Cannot compare type: ${rA.type}`)}}));case"join":return new MA(N.value.map(rA=>rA.value).join(""));case"string":return new MA(Pe(N));case"unique":{const rA=new Set,yA=[];for(const JA of N.value)rA.has(JA.value)||(rA.add(JA.value),yA.push(JA));return new SA(yA)}default:throw new Error(`Unknown ArrayValue filter: ${IA.value}`)}else if(N instanceof MA)switch(IA.value){case"length":case"upper":case"lower":case"title":case"capitalize":{const rA=N.builtins.get(IA.value);if(rA instanceof HA)return rA.value([],O);if(rA instanceof pA)return rA;throw new Error(`Unknown StringValue filter: ${IA.value}`)}case"trim":return new MA(N.value.trim());case"indent":return new MA(N.value.split(` `).map((rA,yA)=>yA===0||rA.length===0?rA:" "+rA).join(` `));case"join":case"string":return N;case"int":{const rA=parseInt(N.value,10);return new pA(isNaN(rA)?0:rA)}case"float":{const rA=parseFloat(N.value);return new kA(isNaN(rA)?0:rA)}default:throw new Error(`Unknown StringValue filter: ${IA.value}`)}else if(N instanceof pA||N instanceof kA)switch(IA.value){case"abs":return N instanceof pA?new pA(Math.abs(N.value)):new kA(Math.abs(N.value));case"int":return new pA(Math.floor(N.value));case"float":return new kA(N.value);default:throw new Error(`Unknown NumericValue filter: ${IA.value}`)}else if(N instanceof vA)switch(IA.value){case"items":return new SA(Array.from(N.value.entries()).map(([rA,yA])=>new SA([new MA(rA),yA])));case"length":return new pA(N.value.size);default:throw new Error(`Unknown ObjectValue filter: ${IA.value}`)}else if(N instanceof xA)switch(IA.value){case"bool":return new xA(N.value);case"int":return new pA(N.value?1:0);case"float":return new kA(N.value?1:0);case"string":return new MA(N.value?"true":"false");default:throw new Error(`Unknown BooleanValue filter: ${IA.value}`)}throw new Error(`Cannot apply filter "${IA.value}" to type: ${N.type}`)}else if(gA.type==="CallExpression"){const IA=gA;if(IA.callee.type!=="Identifier")throw new Error(`Unknown filter: ${IA.callee.type}`);const rA=IA.callee.value;if(rA==="tojson"){const[,yA]=this.evaluateArguments(IA.args,O),JA=yA.get("indent")??new zA;if(!(JA instanceof pA||JA instanceof zA))throw new Error("If set, indent must be a number");return new MA(Pe(N,JA.value))}else if(rA==="join"){let yA;if(N instanceof MA)yA=Array.from(N.value);else if(N instanceof SA)yA=N.value.map(Ie=>Ie.value);else throw new Error(`Cannot apply filter "${rA}" to type: ${N.type}`);const[JA,ae]=this.evaluateArguments(IA.args,O),Ee=JA.at(0)??ae.get("separator")??new MA("");if(!(Ee instanceof MA))throw new Error("separator must be a string");return new MA(yA.join(Ee.value))}else if(rA==="int"||rA==="float"){const[yA,JA]=this.evaluateArguments(IA.args,O),ae=yA.at(0)??JA.get("default")??(rA==="int"?new pA(0):new kA(0));if(N instanceof MA){const Ee=rA==="int"?parseInt(N.value,10):parseFloat(N.value);return isNaN(Ee)?ae:rA==="int"?new pA(Ee):new kA(Ee)}else{if(N instanceof pA||N instanceof kA)return N;if(N instanceof xA)return rA==="int"?new pA(N.value?1:0):new kA(N.value?1:0);throw new Error(`Cannot apply filter "${rA}" to type: ${N.type}`)}}else if(rA==="default"){const[yA,JA]=this.evaluateArguments(IA.args,O),ae=yA[0]??new MA(""),Ee=yA[1]??JA.get("boolean")??new xA(!1);if(!(Ee instanceof xA))throw new Error("`default` filter flag must be a boolean");return N instanceof Be||Ee.value&&!N.__bool__().value?ae:N}if(N instanceof SA){switch(rA){case"selectattr":case"rejectattr":{const yA=rA==="selectattr";if(N.value.some(Te=>!(Te instanceof vA)))throw new Error(`\`${rA}\` can only be applied to array of objects`);if(IA.args.some(Te=>Te.type!=="StringLiteral"))throw new Error(`arguments of \`${rA}\` must be strings`);const[JA,ae,Ee]=IA.args.map(Te=>this.evaluate(Te,O));let Ie;if(ae){const Te=O.tests.get(ae.value);if(!Te)throw new Error(`Unknown test: ${ae.value}`);Ie=Te}else Ie=(...Te)=>Te[0].__bool__().value;const Se=N.value.filter(Te=>{const wg=Te.value.get(JA.value),je=wg?Ie(wg,Ee):!1;return yA?je:!je});return new SA(Se)}case"map":{const[,yA]=this.evaluateArguments(IA.args,O);if(yA.has("attribute")){const JA=yA.get("attribute");if(!(JA instanceof MA))throw new Error("attribute must be a string");const ae=yA.get("default"),Ee=N.value.map(Ie=>{if(!(Ie instanceof vA))throw new Error("items in map must be an object");return Ie.value.get(JA.value)??ae??new Be});return new SA(Ee)}else throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${rA}`)}else if(N instanceof MA){switch(rA){case"indent":{const[yA,JA]=this.evaluateArguments(IA.args,O),ae=yA.at(0)??JA.get("width")??new pA(4);if(!(ae instanceof pA))throw new Error("width must be a number");const Ee=yA.at(1)??JA.get("first")??new xA(!1),Ie=yA.at(2)??JA.get("blank")??new xA(!1),Se=N.value.split(` `),Te=" ".repeat(ae.value),wg=Se.map((je,lg)=>!Ee.value&&lg===0||!Ie.value&&je.length===0?je:Te+je);return new MA(wg.join(` `))}case"replace":{const yA=N.builtins.get("replace");if(!(yA instanceof HA))throw new Error("replace filter not available");const[JA,ae]=this.evaluateArguments(IA.args,O);return yA.value([...JA,new ge(ae)],O)}}throw new Error(`Unknown StringValue filter: ${rA}`)}else throw new Error(`Cannot apply filter "${rA}" to type: ${N.type}`)}throw new Error(`Unknown filter: ${gA.type}`)}evaluateFilterExpression(N,gA){const O=this.evaluate(N.operand,gA);return this.applyFilter(O,N.filter,gA)}evaluateTestExpression(N,gA){const O=this.evaluate(N.operand,gA),IA=gA.tests.get(N.test.value);if(!IA)throw new Error(`Unknown test: ${N.test.value}`);const rA=IA(O);return new xA(N.negate?!rA:rA)}evaluateSelectExpression(N,gA){return this.evaluate(N.test,gA).__bool__().value?this.evaluate(N.lhs,gA):new Be}evaluateUnaryExpression(N,gA){const O=this.evaluate(N.argument,gA);switch(N.operator.value){case"not":return new xA(!O.value);default:throw new SyntaxError(`Unknown operator: ${N.operator.value}`)}}evaluateTernaryExpression(N,gA){return this.evaluate(N.condition,gA).__bool__().value?this.evaluate(N.trueExpr,gA):this.evaluate(N.falseExpr,gA)}evalProgram(N,gA){return this.evaluateBlock(N.body,gA)}evaluateBlock(N,gA){let O="";for(const IA of N){const rA=this.evaluate(IA,gA);rA.type!=="NullValue"&&rA.type!=="UndefinedValue"&&(O+=rA.toString())}return new MA(O)}evaluateIdentifier(N,gA){return gA.lookupVariable(N.value)}evaluateCallExpression(N,gA){const[O,IA]=this.evaluateArguments(N.args,gA);IA.size>0&&O.push(new ge(IA));const rA=this.evaluate(N.callee,gA);if(rA.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${rA.type}`);return rA.value(O,gA)}evaluateSliceExpression(N,gA,O){if(!(N instanceof SA||N instanceof MA))throw new Error("Slice object must be an array or string");const IA=this.evaluate(gA.start,O),rA=this.evaluate(gA.stop,O),yA=this.evaluate(gA.step,O);if(!(IA instanceof pA||IA instanceof Be))throw new Error("Slice start must be numeric or undefined");if(!(rA instanceof pA||rA instanceof Be))throw new Error("Slice stop must be numeric or undefined");if(!(yA instanceof pA||yA instanceof Be))throw new Error("Slice step must be numeric or undefined");return N instanceof SA?new SA(PA(N.value,IA.value,rA.value,yA.value)):new MA(PA(Array.from(N.value),IA.value,rA.value,yA.value).join(""))}evaluateMemberExpression(N,gA){const O=this.evaluate(N.object,gA);let IA;if(N.computed){if(N.property.type==="SliceExpression")return this.evaluateSliceExpression(O,N.property,gA);IA=this.evaluate(N.property,gA)}else IA=new MA(N.property.value);let rA;if(O instanceof vA){if(!(IA instanceof MA))throw new Error(`Cannot access property with non-string: got ${IA.type}`);rA=O.value.get(IA.value)??O.builtins.get(IA.value)}else if(O instanceof SA||O instanceof MA)if(IA instanceof pA)rA=O.value.at(IA.value),O instanceof MA&&(rA=new MA(O.value.at(IA.value)));else if(IA instanceof MA)rA=O.builtins.get(IA.value);else throw new Error(`Cannot access property with non-string/non-number: got ${IA.type}`);else{if(!(IA instanceof MA))throw new Error(`Cannot access property with non-string: got ${IA.type}`);rA=O.builtins.get(IA.value)}return rA instanceof NA?rA:new Be}evaluateSet(N,gA){const O=N.value?this.evaluate(N.value,gA):this.evaluateBlock(N.body,gA);if(N.assignee.type==="Identifier"){const IA=N.assignee.value;gA.setVariable(IA,O)}else if(N.assignee.type==="TupleLiteral"){const IA=N.assignee;if(!(O instanceof SA))throw new Error(`Cannot unpack non-iterable type in set: ${O.type}`);const rA=O.value;if(rA.length!==IA.value.length)throw new Error(`Too ${IA.value.length>rA.length?"few":"many"} items to unpack in set`);for(let yA=0;yAje.setVariable(N.loopvar.value,Te);else if(N.loopvar.type==="TupleLiteral"){const je=N.loopvar;if(Te.type!=="ArrayValue")throw new Error(`Cannot unpack non-iterable type: ${Te.type}`);const lg=Te;if(je.value.length!==lg.value.length)throw new Error(`Too ${je.value.length>lg.value.length?"few":"many"} items to unpack`);wg=Wg=>{for(let Ig=0;Ig0?yA[Ie-1]:new Be],["nextitem",Ie{const rA=new Ae(IA);O=O.slice();let yA;O.at(-1)?.type==="KeywordArgumentsValue"&&(yA=O.pop());for(let JA=0;JA{const Ie=new Ae(Ee);if(N.callerArgs)for(let Se=0;Sethis.evaluate(O,gA)));case"TupleLiteral":return new re(N.value.map(O=>this.evaluate(O,gA)));case"ObjectLiteral":{const O=new Map;for(const[IA,rA]of N.value){const yA=this.evaluate(IA,gA);if(!(yA instanceof MA))throw new Error(`Object keys must be strings: got ${yA.type}`);O.set(yA.value,this.evaluate(rA,gA))}return new vA(O)}case"Identifier":return this.evaluateIdentifier(N,gA);case"CallExpression":return this.evaluateCallExpression(N,gA);case"MemberExpression":return this.evaluateMemberExpression(N,gA);case"UnaryExpression":return this.evaluateUnaryExpression(N,gA);case"BinaryExpression":return this.evaluateBinaryExpression(N,gA);case"FilterExpression":return this.evaluateFilterExpression(N,gA);case"FilterStatement":return this.evaluateFilterStatement(N,gA);case"TestExpression":return this.evaluateTestExpression(N,gA);case"SelectExpression":return this.evaluateSelectExpression(N,gA);case"Ternary":return this.evaluateTernaryExpression(N,gA);case"Comment":return new zA;default:throw new SyntaxError(`Unknown node type: ${N.type}`)}}};function Ne(N){switch(typeof N){case"number":return Number.isInteger(N)?new pA(N):new kA(N);case"string":return new MA(N);case"boolean":return new xA(N);case"undefined":return new Be;case"object":return N===null?new zA:Array.isArray(N)?new SA(N.map(Ne)):new vA(new Map(Object.entries(N).map(([gA,O])=>[gA,Ne(O)])));case"function":return new HA((gA,O)=>{const IA=N(...gA.map(rA=>rA.value))??null;return Ne(IA)});default:throw new Error(`Cannot convert to runtime value: ${N}`)}}function Pe(N,gA,O){const IA=O??0;switch(N.type){case"NullValue":case"UndefinedValue":return"null";case"IntegerValue":case"FloatValue":case"StringValue":case"BooleanValue":return JSON.stringify(N.value);case"ArrayValue":case"ObjectValue":{const rA=gA?" ".repeat(gA):"",yA=` `+rA.repeat(IA),JA=yA+rA;if(N.type==="ArrayValue"){const ae=N.value.map(Ee=>Pe(Ee,gA,IA+1));return gA?`[${JA}${ae.join(`,${JA}`)}${yA}]`:`[${ae.join(", ")}]`}else{const ae=Array.from(N.value.entries()).map(([Ee,Ie])=>{const Se=`"${Ee}": ${Pe(Ie,gA,IA+1)}`;return gA?`${JA}${Se}`:Se});return gA?`{${ae.join(",")}${yA}}`:`{${ae.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${N.type}`)}}var pe=` `,tg="{%- ",Og=" -%}";function xg(N){switch(N.operator.type){case"MultiplicativeBinaryOperator":return 4;case"AdditiveBinaryOperator":return 3;case"ComparisonBinaryOperator":return 2;case"Identifier":return N.operator.value==="and"?1:N.operator.value==="in"||N.operator.value==="not in"?2:0}return 0}function De(N,gA=" "){const O=typeof gA=="number"?" ".repeat(gA):gA;return kg(N.body,0,O).replace(/\n$/,"")}function gg(...N){return tg+N.join(" ")+Og}function kg(N,gA,O){return N.map(IA=>bI(IA,gA,O)).join(pe)}function bI(N,gA,O){const IA=O.repeat(gA);switch(N.type){case"Program":return kg(N.body,gA,O);case"If":return xI(N,gA,O);case"For":return pI(N,gA,O);case"Set":return yI(N,gA,O);case"Macro":return de(N,gA,O);case"Break":return IA+gg("break");case"Continue":return IA+gg("continue");case"CallStatement":return J(N,gA,O);case"FilterStatement":return xe(N,gA,O);case"Comment":return IA+"{# "+N.value+" #}";default:return IA+"{{- "+ke(N)+" -}}"}}function xI(N,gA,O){const IA=O.repeat(gA),rA=[];let yA=N;for(;yA&&(rA.push({test:yA.test,body:yA.body}),yA.alternate.length===1&&yA.alternate[0].type==="If");)yA=yA.alternate[0];let JA=IA+gg("if",ke(rA[0].test))+pe+kg(rA[0].body,gA+1,O);for(let ae=1;ae0&&(JA+=pe+IA+gg("else")+pe+kg(yA.alternate,gA+1,O)),JA+=pe+IA+gg("endif"),JA}function pI(N,gA,O){const IA=O.repeat(gA);let rA="";if(N.iterable.type==="SelectExpression"){const JA=N.iterable;rA=`${ke(JA.lhs)} if ${ke(JA.test)}`}else rA=ke(N.iterable);let yA=IA+gg("for",ke(N.loopvar),"in",rA)+pe+kg(N.body,gA+1,O);return N.defaultBlock.length>0&&(yA+=pe+IA+gg("else")+pe+kg(N.defaultBlock,gA+1,O)),yA+=pe+IA+gg("endfor"),yA}function yI(N,gA,O){const IA=O.repeat(gA),rA=ke(N.assignee),yA=N.value?ke(N.value):"",JA=IA+gg("set",`${rA}${N.value?" = "+yA:""}`);return N.body.length===0?JA:JA+pe+kg(N.body,gA+1,O)+pe+IA+gg("endset")}function de(N,gA,O){const IA=O.repeat(gA),rA=N.args.map(ke).join(", ");return IA+gg("macro",`${N.name.value}(${rA})`)+pe+kg(N.body,gA+1,O)+pe+IA+gg("endmacro")}function J(N,gA,O){const IA=O.repeat(gA),rA=N.callerArgs&&N.callerArgs.length>0?`(${N.callerArgs.map(ke).join(", ")})`:"",yA=ke(N.call);let JA=IA+gg(`call${rA}`,yA)+pe;return JA+=kg(N.body,gA+1,O)+pe,JA+=IA+gg("endcall"),JA}function xe(N,gA,O){const IA=O.repeat(gA),rA=N.filter.type==="Identifier"?N.filter.value:ke(N.filter);let yA=IA+gg("filter",rA)+pe;return yA+=kg(N.body,gA+1,O)+pe,yA+=IA+gg("endfilter"),yA}function ke(N,gA=-1){switch(N.type){case"SpreadExpression":return`*${ke(N.argument)}`;case"Identifier":return N.value;case"IntegerLiteral":return`${N.value}`;case"FloatLiteral":return`${N.value}`;case"StringLiteral":return JSON.stringify(N.value);case"BinaryExpression":{const O=N,IA=xg(O),rA=ke(O.left,IA),yA=ke(O.right,IA+1),JA=`${rA} ${O.operator.value} ${yA}`;return IA`${ke(IA)}: ${ke(rA)}`).join(", ")}}`;case"SliceExpression":{const O=N,IA=O.start?ke(O.start):"",rA=O.stop?ke(O.stop):"",yA=O.step?`:${ke(O.step)}`:"";return`${IA}:${rA}${yA}`}case"KeywordArgumentExpression":{const O=N;return`${O.key.value}=${ke(O.value)}`}case"Ternary":{const O=N,IA=`${ke(O.trueExpr)} if ${ke(O.condition,0)} else ${ke(O.falseExpr)}`;return gA>-1?`(${IA})`:IA}default:throw new Error(`Unknown expression type: ${N.type}`)}}var EI=class{parsed;constructor(N){const gA=Q(N,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=YA(gA)}render(N){const gA=new Ae;if(oe(gA),N)for(const[rA,yA]of Object.entries(N))gA.set(rA,yA);return new se(gA).run(this.parsed).value}format(N){return De(this.parsed,N?.indent||" ")}}},"./src/backends/onnx.js":(A,g,e)=>{var I;e.r(g),e.d(g,{Tensor:()=>o.Tensor,createInferenceSession:()=>k,deviceToExecutionProviders:()=>c,isONNXProxy:()=>G,isONNXTensor:()=>u});var i=e("./src/env.js"),t=e("?2ce3"),C=e("onnxruntime-web"),o=e("onnxruntime-common");const s=Object.freeze({auto:null,gpu:null,cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:{name:"webnn",deviceType:"cpu"},"webnn-npu":{name:"webnn",deviceType:"npu"},"webnn-gpu":{name:"webnn",deviceType:"gpu"},"webnn-cpu":{name:"webnn",deviceType:"cpu"}}),B=[];let Q,a;const r=Symbol.for("onnxruntime");if(r in globalThis)a=globalThis[r];else if(i.apis.IS_NODE_ENV){switch(a=t??(I||(I=e.t(t,2))),process.platform){case"win32":B.push("dml");break;case"linux":process.arch==="x64"&&B.push("cuda");break}B.push("cpu"),Q=["cpu"]}else a=C,i.apis.IS_WEBNN_AVAILABLE&&B.push("webnn-npu","webnn-gpu","webnn-cpu","webnn"),i.apis.IS_WEBGPU_AVAILABLE&&B.push("webgpu"),B.push("wasm"),Q=["wasm"];const d=a.InferenceSession;function c(h=null){if(!h)return Q;switch(h){case"auto":return B;case"gpu":return B.filter(y=>["webgpu","cuda","dml","webnn-gpu"].includes(y))}if(B.includes(h))return[s[h]??h];throw new Error(`Unsupported device: "${h}". Should be one of: ${B.join(", ")}.`)}let f=null;async function k(h,y,M){f&&await f;const m=d.create(h,y);f??=m;const _=await m;return _.config=M,_}function u(h){return h instanceof a.Tensor}const D=a?.env;D?.wasm&&(!(typeof ServiceWorkerGlobalScope<"u"&&self instanceof ServiceWorkerGlobalScope)&&!D.wasm.wasmPaths&&(D.wasm.wasmPaths=`https://cdn.jsdelivr.net/npm/@huggingface/transformers@${i.env.version}/dist/`),D.wasm.proxy=!1),D?.webgpu&&(D.webgpu.powerPreference="high-performance");function G(){return D?.wasm?.proxy}i.env.backends.onnx=D},"./src/base/feature_extraction_utils.js":(A,g,e)=>{e.r(g),e.d(g,{FeatureExtractor:()=>C,validate_audio_inputs:()=>o});var I=e("./src/utils/constants.js"),i=e("./src/utils/generic.js"),t=e("./src/utils/hub.js");class C extends i.Callable{constructor(B){super(),this.config=B}static async from_pretrained(B,Q={}){const a=await(0,t.getModelJSON)(B,I.FEATURE_EXTRACTOR_NAME,!0,Q);return new this(a)}}function o(s,B){if(!(s instanceof Float32Array||s instanceof Float64Array))throw new Error(`${B} expects input to be a Float32Array or a Float64Array, but got ${s?.constructor?.name??typeof s} instead. If using the feature extractor directly, remember to use \`read_audio(url, sampling_rate)\` to obtain the raw audio data of the file/url.`)}},"./src/base/image_processors_utils.js":(A,g,e)=>{e.r(g),e.d(g,{ImageProcessor:()=>h,center_to_corners_format:()=>a,post_process_instance_segmentation:()=>G,post_process_object_detection:()=>r,post_process_panoptic_segmentation:()=>D,post_process_semantic_segmentation:()=>d});var I=e("./src/utils/generic.js"),i=e("./src/utils/tensor.js"),t=e("./src/utils/maths.js");e("./src/utils/image.js");var C=e("./src/utils/core.js"),o=e("./src/utils/hub.js"),s=e("./src/utils/constants.js");function B(y,M,m=0,_=null){const x=y/M;let b=(0,t.bankers_round)(x)*M;return _!==null&&b>_&&(b=Math.floor(x)*M),bM&&U.push(v)}else{let v=(0,t.max)(P.data)[1];if(v===T-1||(z=(0,t.softmax)(P.data),z[v]YA*tA[(_A+1)%2])),BA.boxes.push(nA),BA.classes.push(v),BA.scores.push(z[v])}}CA.push(BA)}return CA}function d(y,M=null){const m=y.logits,_=m.dims[0];if(M!==null&&M.length!==_)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const x=[];for(let b=0;b<_;++b){const X=M!==null?M[b]:null;let Z=m[b];X!==null&&(Z=(0,i.interpolate)(Z,X,"bilinear",!1));const[T,CA]=X??Z.dims.slice(-2),eA=new i.Tensor("int32",new Int32Array(T*CA),[T,CA]),tA=Z[0].data,BA=eA.data;for(let dA=1;dAtA[U]&&(tA[U]=P[U],BA[U]=dA)}const sA=new Array(Z.dims[0]);for(let dA=0;dAdA!==void 0);x.push({segmentation:eA,labels:cA})}return x}function c(y,M,m,_){const x=[],b=[],X=[];for(let Z=0;Zm&&(x.push(CA),b.push(BA),X.push(eA))}return[x,b,X]}function f(y,M,m,_=.5,x=.8){const b=[];let X=0,Z=0;const T=M[m].data;for(let eA=0;eA=_&&++Z;let CA=X>0&&Z>0;return CA&&(CA=X/Z>x),[CA,b]}function k(y,M,m,_,x,b=null,X=null){const[Z,T]=X??y[0].dims,CA=new i.Tensor("int32",new Int32Array(Z*T),[Z,T]),eA=[];if(X!==null)for(let dA=0;dABA[z]&&(tA[z]=dA,BA[z]=U[z])}let sA=0;const cA=CA.data;for(let dA=0;dA200)throw new Error(`absolute aspect ratio must be smaller than 200, got ${Math.max(y,M)/Math.min(y,M)}`);let b=Math.round(y/m)*m,X=Math.round(M/m)*m;if(b*X>x){const Z=Math.sqrt(y*M/x);b=Math.floor(y/Z/m)*m,X=Math.floor(M/Z/m)*m}else if(b*X<_){const Z=Math.sqrt(_/(y*M));b=Math.ceil(y*Z/m)*m,X=Math.ceil(M*Z/m)*m}return[b,X]}function D(y,M=.5,m=.5,_=.8,x=null,b=null){x===null&&(console.warn("`label_ids_to_fuse` unset. No instance will be fused."),x=new Set);const X=y.class_queries_logits??y.logits,T=(y.masks_queries_logits??y.pred_masks).sigmoid();let[CA,eA,tA]=X.dims;if(tA-=1,b!==null&&b.length!==CA)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");let BA=[];for(let sA=0;sAb?CA=Math.floor(b*T/x):b>x&&(T=Math.floor(x*CA/b)),await M.resize(CA,T,{resample:_}))}async crop_margin(M,m=200){const _=M.clone().grayscale(),x=(0,t.min)(_.data)[0],X=(0,t.max)(_.data)[0]-x;if(X===0)return M;const Z=m/255;let T=_.width,CA=_.height,eA=0,tA=0;const BA=_.data;for(let sA=0;sA<_.height;++sA){const cA=sA*_.width;for(let dA=0;dA<_.width;++dA)(BA[cA+dA]-x)/Xthis.preprocess(b)));return{pixel_values:(0,i.stack)(_.map(b=>b.pixel_values),0),original_sizes:_.map(b=>b.original_size),reshaped_input_sizes:_.map(b=>b.reshaped_input_size)}}static async from_pretrained(M,m={}){const _=await(0,o.getModelJSON)(M,s.IMAGE_PROCESSOR_NAME,!0,m);return new this(_)}}},"./src/base/processing_utils.js":(A,g,e)=>{e.r(g),e.d(g,{Processor:()=>C});var I=e("./src/utils/constants.js"),i=e("./src/utils/generic.js"),t=e("./src/utils/hub.js");class C extends i.Callable{static classes=["image_processor_class","tokenizer_class","feature_extractor_class"];static uses_processor_config=!1;static uses_chat_template_file=!1;constructor(s,B,Q){super(),this.config=s,this.components=B,this.chat_template=Q}get image_processor(){return this.components.image_processor}get tokenizer(){return this.components.tokenizer}get feature_extractor(){return this.components.feature_extractor}apply_chat_template(s,B={}){if(!this.tokenizer)throw new Error("Unable to apply chat template without a tokenizer.");return this.tokenizer.apply_chat_template(s,{tokenize:!1,chat_template:this.chat_template??void 0,...B})}batch_decode(...s){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.batch_decode(...s)}decode(...s){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.decode(...s)}async _call(s,...B){for(const Q of[this.image_processor,this.feature_extractor,this.tokenizer])if(Q)return Q(s,...B);throw new Error("No image processor, feature extractor, or tokenizer found.")}static async from_pretrained(s,B={}){const[Q,a,r]=await Promise.all([this.uses_processor_config?(0,t.getModelJSON)(s,I.PROCESSOR_NAME,!0,B):{},Promise.all(this.classes.filter(d=>d in this).map(async d=>{const c=await this[d].from_pretrained(s,B);return[d.replace(/_class$/,""),c]})).then(Object.fromEntries),this.uses_chat_template_file?(0,t.getModelText)(s,I.CHAT_TEMPLATE_NAME,!0,B):null]);return new this(Q,a,r)}}},"./src/configs.js":(A,g,e)=>{e.r(g),e.d(g,{AutoConfig:()=>Q,PretrainedConfig:()=>B,getCacheShapes:()=>o});var I=e("./src/utils/core.js"),i=e("./src/utils/hub.js");async function t(a,r){return await(0,i.getModelJSON)(a,"config.json",!0,r)}function C(a){const r={};let d={};switch(a.model_type){case"llava":case"paligemma":case"gemma3":case"florence2":case"llava_onevision":case"idefics3":case"ultravox":case"voxtral":case"smolvlm":case"gemma3n":d=C(a.text_config);break;case"moondream1":d=C(a.phi_config);break;case"musicgen":d=C(a.decoder);break;case"multi_modality":d=C(a.language_config);break;case"gpt2":case"gptj":case"jais":case"codegen":case"gpt_bigcode":r.num_heads="n_head",r.num_layers="n_layer",r.hidden_size="n_embd";break;case"gpt_neox":case"stablelm":case"opt":case"falcon":case"modernbert-decoder":r.num_heads="num_attention_heads",r.num_layers="num_hidden_layers",r.hidden_size="hidden_size";break;case"llama":case"arcee":case"lfm2":case"smollm3":case"olmo":case"olmo2":case"mobilellm":case"granite":case"cohere":case"mistral":case"starcoder2":case"qwen2":case"qwen2_vl":case"phi":case"phi3":case"phi3_v":case"llava_qwen2":r.num_heads="num_key_value_heads",r.num_layers="num_hidden_layers",r.hidden_size="hidden_size",r.num_attention_heads="num_attention_heads",r.dim_kv="head_dim";break;case"qwen3":case"gemma":case"gemma2":case"gemma3_text":case"gemma3n_text":case"glm":case"helium":case"ernie4_5":r.num_heads="num_key_value_heads",r.num_layers="num_hidden_layers",r.dim_kv="head_dim";break;case"openelm":r.num_heads="num_kv_heads",r.num_layers="num_transformer_layers",r.dim_kv="head_dim";break;case"gpt_neo":case"donut-swin":r.num_heads="num_heads",r.num_layers="num_layers",r.hidden_size="hidden_size";break;case"bloom":r.num_heads="n_head",r.num_layers="n_layer",r.hidden_size="hidden_size";break;case"mpt":r.num_heads="n_heads",r.num_layers="n_layers",r.hidden_size="d_model";break;case"exaone":r.num_heads="num_key_value_heads",r.num_layers="num_layers",r.dim_kv="head_dim",r.num_attention_heads="num_attention_heads";break;case"t5":case"mt5":case"longt5":r.num_decoder_layers="num_decoder_layers",r.num_decoder_heads="num_heads",r.decoder_dim_kv="d_kv",r.num_encoder_layers="num_layers",r.num_encoder_heads="num_heads",r.encoder_dim_kv="d_kv";break;case"bart":case"mbart":case"marian":case"whisper":case"lite-whisper":case"m2m_100":case"blenderbot":case"blenderbot-small":case"florence2_language":r.num_decoder_layers="decoder_layers",r.num_decoder_heads="decoder_attention_heads",r.decoder_hidden_size="d_model",r.num_encoder_layers="encoder_layers",r.num_encoder_heads="encoder_attention_heads",r.encoder_hidden_size="d_model";break;case"speecht5":r.num_decoder_layers="decoder_layers",r.num_decoder_heads="decoder_attention_heads",r.decoder_hidden_size="hidden_size",r.num_encoder_layers="encoder_layers",r.num_encoder_heads="encoder_attention_heads",r.encoder_hidden_size="hidden_size";break;case"trocr":r.num_encoder_layers=r.num_decoder_layers="decoder_layers",r.num_encoder_heads=r.num_decoder_heads="decoder_attention_heads",r.encoder_hidden_size=r.decoder_hidden_size="d_model";break;case"musicgen_decoder":r.num_encoder_layers=r.num_decoder_layers="num_hidden_layers",r.num_encoder_heads=r.num_decoder_heads="num_attention_heads",r.encoder_hidden_size=r.decoder_hidden_size="hidden_size";break;case"moonshine":r.num_decoder_layers="decoder_num_hidden_layers",r.num_decoder_heads="decoder_num_key_value_heads",r.num_encoder_layers="encoder_num_hidden_layers",r.num_encoder_heads="encoder_num_key_value_heads",r.encoder_hidden_size=r.decoder_hidden_size="hidden_size";break;case"vision-encoder-decoder":const f=C(a.decoder),k="num_decoder_layers"in f,u=(0,I.pick)(a,["model_type","is_encoder_decoder"]);return k?(u.num_decoder_layers=f.num_decoder_layers,u.num_decoder_heads=f.num_decoder_heads,u.decoder_hidden_size=f.decoder_hidden_size,u.num_encoder_layers=f.num_encoder_layers,u.num_encoder_heads=f.num_encoder_heads,u.encoder_hidden_size=f.encoder_hidden_size):(u.num_layers=f.num_layers,u.num_heads=f.num_heads,u.hidden_size=f.hidden_size),u}const c={...d,...(0,I.pick)(a,["model_type","multi_query","is_encoder_decoder"])};for(const f in r)c[f]=a[r[f]];return c}function o(a,r){if(a.model_type==="lfm2"){const d=r?.prefix??"past_key_values",c=d==="present"?"present":"past",f={},{layer_types:k,num_attention_heads:u,num_key_value_heads:D,hidden_size:G,conv_L_cache:h}=a,y=G/u,M=r?.batch_size??1;for(let m=0;m{e.r(g),e.d(g,{apis:()=>u,env:()=>m});var I=e("?db59"),i=e("?383f"),t=e("?fa4b");const C="3.7.1",o=typeof window<"u"&&typeof window.document<"u",s=typeof self<"u"&&["DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope"].includes(self.constructor?.name),B=typeof self<"u"&&"caches"in self,Q=typeof navigator<"u"&&"gpu"in navigator,a=typeof navigator<"u"&&"ml"in navigator,r=typeof process<"u",d=r&&process?.release?.name==="node",c=!_(I),f=!_(i),k=typeof globalThis.Deno<"u",u=Object.freeze({IS_BROWSER_ENV:o,IS_WEBWORKER_ENV:s,IS_WEB_CACHE_AVAILABLE:B,IS_WEBGPU_AVAILABLE:Q,IS_WEBNN_AVAILABLE:a,IS_PROCESS_AVAILABLE:r,IS_NODE_ENV:d,IS_FS_AVAILABLE:c,IS_PATH_AVAILABLE:f}),D=c&&f;let G="./";if(D){const x=Object(import.meta).url;x?G=i.dirname(i.dirname(t.fileURLToPath(x))):typeof __dirname<"u"&&(G=i.dirname(__dirname))}const h=D?i.join(G,"/.cache/"):null,y="/models/",M=D?i.join(G,y):y,m={version:C,backends:{onnx:{}},allowRemoteModels:!0,remoteHost:"https://huggingface.co/",remotePathTemplate:"{model}/resolve/{revision}/",allowLocalModels:!(o||s),localModelPath:M,useFS:c,useBrowserCache:B&&!k,useFSCache:c,cacheDir:h,useCustomCache:!1,customCache:null};function _(x){return Object.keys(x).length===0}},"./src/generation/configuration_utils.js":(A,g,e)=>{e.r(g),e.d(g,{GenerationConfig:()=>i});var I=e("./src/utils/core.js");class i{max_length=20;max_new_tokens=null;min_length=0;min_new_tokens=null;early_stopping=!1;max_time=null;do_sample=!1;num_beams=1;num_beam_groups=1;penalty_alpha=null;use_cache=!0;temperature=1;top_k=50;top_p=1;typical_p=1;epsilon_cutoff=0;eta_cutoff=0;diversity_penalty=0;repetition_penalty=1;encoder_repetition_penalty=1;length_penalty=1;no_repeat_ngram_size=0;bad_words_ids=null;force_words_ids=null;renormalize_logits=!1;constraints=null;forced_bos_token_id=null;forced_eos_token_id=null;remove_invalid_values=!1;exponential_decay_length_penalty=null;suppress_tokens=null;streamer=null;begin_suppress_tokens=null;forced_decoder_ids=null;guidance_scale=null;num_return_sequences=1;output_attentions=!1;output_hidden_states=!1;output_scores=!1;return_dict_in_generate=!1;pad_token_id=null;bos_token_id=null;eos_token_id=null;encoder_no_repeat_ngram_size=0;decoder_start_token_id=null;generation_kwargs={};constructor(C){Object.assign(this,(0,I.pick)(C,Object.getOwnPropertyNames(this)))}}},"./src/generation/logits_process.js":(A,g,e)=>{e.r(g),e.d(g,{ClassifierFreeGuidanceLogitsProcessor:()=>u,ForcedBOSTokenLogitsProcessor:()=>s,ForcedEOSTokenLogitsProcessor:()=>B,LogitsProcessor:()=>t,LogitsProcessorList:()=>o,LogitsWarper:()=>C,MinLengthLogitsProcessor:()=>c,MinNewTokensLengthLogitsProcessor:()=>f,NoBadWordsLogitsProcessor:()=>k,NoRepeatNGramLogitsProcessor:()=>r,RepetitionPenaltyLogitsProcessor:()=>d,SuppressTokensAtBeginLogitsProcessor:()=>Q,TemperatureLogitsWarper:()=>D,TopKLogitsWarper:()=>h,TopPLogitsWarper:()=>G,WhisperTimeStampLogitsProcessor:()=>a});var I=e("./src/utils/generic.js");e("./src/utils/tensor.js");var i=e("./src/utils/maths.js");class t extends I.Callable{_call(M,m){throw Error("`_call` should be implemented in a subclass")}}class C extends I.Callable{_call(M,m){throw Error("`_call` should be implemented in a subclass")}}class o extends I.Callable{constructor(){super(),this.processors=[]}push(M){this.processors.push(M)}extend(M){this.processors.push(...M)}_call(M,m){let _=m;for(const x of this.processors)_=x(M,_);return _}[Symbol.iterator](){return this.processors.values()}}class s extends t{constructor(M){super(),this.bos_token_id=M}_call(M,m){for(let _=0;_=1&&b[b.length-1]>=this.timestamp_begin,Z=b.length<2||b[b.length-2]>=this.timestamp_begin;if(X&&(Z?x.subarray(this.timestamp_begin).fill(-1/0):x.subarray(0,this.eos_token_id).fill(-1/0)),M[_].length===this.begin_index&&this.max_initial_timestamp_index!==null){const tA=this.timestamp_begin+this.max_initial_timestamp_index;x.subarray(tA+1).fill(-1/0)}const T=(0,i.log_softmax)(x),CA=Math.log(T.subarray(this.timestamp_begin).map(Math.exp).reduce((tA,BA)=>tA+BA)),eA=(0,i.max)(T.subarray(0,this.timestamp_begin))[0];CA>eA&&x.subarray(0,this.timestamp_begin).fill(-1/0)}return m}}class r extends t{constructor(M){super(),this.no_repeat_ngram_size=M}getNgrams(M){const m=M.length,_=[];for(let b=0;b1 to use the classifier free guidance processor, got guidance scale ${M}.`);this.guidance_scale=M}_call(M,m){if(m.dims[0]!==2*M.length)throw new Error(`Logits should have twice the batch size of the input ids, the first half of batches corresponding to the conditional inputs, and the second half of batches corresponding to the unconditional inputs. Got batch size ${m.dims[0]} for the logits and ${M.length} for the input ids.`);const _=M.length,x=m.slice([0,_],null),b=m.slice([_,m.dims[0]],null);for(let X=0;X1)throw new Error(`\`top_p\` must be a float > 0 and < 1, but is ${M}`);if(!Number.isInteger(_)||_<1)throw new Error(`\`min_tokens_to_keep\` must be a positive integer, but is ${_}`);this.top_p=M,this.filter_value=m,this.min_tokens_to_keep=_}}class h extends C{constructor(M,{filter_value:m=-1/0,min_tokens_to_keep:_=1}={}){if(super(),!Number.isInteger(M)||M<0)throw new Error(`\`top_k\` must be a positive integer, but is ${M}`);this.top_k=Math.max(M,_),this.filter_value=m}}},"./src/generation/logits_sampler.js":(A,g,e)=>{e.r(g),e.d(g,{LogitsSampler:()=>C});var I=e("./src/utils/generic.js"),i=e("./src/utils/tensor.js"),t=e("./src/utils/maths.js");e("./src/generation/configuration_utils.js");class C extends I.Callable{constructor(a){super(),this.generation_config=a}async _call(a){return this.sample(a)}async sample(a){throw Error("sample should be implemented in subclasses.")}getLogits(a,r){let d=a.dims.at(-1),c=a.data;if(r===-1)c=c.slice(-d);else{let f=r*d;c=c.slice(f,f+d)}return c}randomSelect(a){let r=0;for(let c=0;c1)return new B(a);if(a.num_return_sequences>1)throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${a.num_return_sequences}.`);return new o(a)}}class o extends C{async sample(a){const r=(0,t.max)(a.data)[1];return[[BigInt(r),0]]}}class s extends C{async sample(a){let r=a.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const[d,c]=await(0,i.topk)(a,r),f=(0,t.softmax)(d.data);return Array.from({length:this.generation_config.num_beams},()=>{const k=this.randomSelect(f);return[c.data[k],Math.log(f[k])]})}}class B extends C{async sample(a){let r=a.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const[d,c]=await(0,i.topk)(a,r),f=(0,t.softmax)(d.data);return Array.from({length:this.generation_config.num_beams},(k,u)=>[c.data[u],Math.log(f[u])])}}},"./src/generation/stopping_criteria.js":(A,g,e)=>{e.r(g),e.d(g,{EosTokenCriteria:()=>o,InterruptableStoppingCriteria:()=>s,MaxLengthCriteria:()=>C,StoppingCriteria:()=>i,StoppingCriteriaList:()=>t});var I=e("./src/utils/generic.js");class i extends I.Callable{_call(Q,a){throw Error("StoppingCriteria needs to be subclassed")}}class t extends I.Callable{constructor(){super(),this.criteria=[]}push(Q){this.criteria.push(Q)}extend(Q){Q instanceof t?Q=Q.criteria:Q instanceof i&&(Q=[Q]),this.criteria.push(...Q)}_call(Q,a){const r=new Array(Q.length).fill(!1);for(const d of this.criteria){const c=d(Q,a);for(let f=0;fa.length>=this.max_length)}}class o extends i{constructor(Q){super(),Array.isArray(Q)||(Q=[Q]),this.eos_token_id=Q}_call(Q,a){return Q.map(r=>{const d=r.at(-1);return this.eos_token_id.some(c=>d==c)})}}class s extends i{constructor(){super(),this.interrupted=!1}interrupt(){this.interrupted=!0}reset(){this.interrupted=!1}_call(Q,a){return new Array(Q.length).fill(this.interrupted)}}},"./src/generation/streamers.js":(A,g,e)=>{e.r(g),e.d(g,{BaseStreamer:()=>C,TextStreamer:()=>s,WhisperTextStreamer:()=>B});var I=e("./src/utils/core.js"),i=e("./src/tokenizers.js"),t=e("./src/env.js");class C{put(a){throw Error("Not implemented")}end(){throw Error("Not implemented")}}const o=t.apis.IS_PROCESS_AVAILABLE?Q=>process.stdout.write(Q):Q=>console.log(Q);class s extends C{constructor(a,{skip_prompt:r=!1,callback_function:d=null,token_callback_function:c=null,skip_special_tokens:f=!0,decode_kwargs:k={},...u}={}){super(),this.tokenizer=a,this.skip_prompt=r,this.callback_function=d??o,this.token_callback_function=c,this.decode_kwargs={skip_special_tokens:f,...k,...u},this.token_cache=[],this.print_len=0,this.next_tokens_are_prompt=!0}put(a){if(a.length>1)throw Error("TextStreamer only supports batch size of 1");const r=this.next_tokens_are_prompt;if(r&&(this.next_tokens_are_prompt=!1,this.skip_prompt))return;const d=a[0];this.token_callback_function?.(d),this.token_cache=(0,I.mergeArrays)(this.token_cache,d);const c=this.tokenizer.decode(this.token_cache,this.decode_kwargs);let f;r||c.endsWith(` `)?(f=c.slice(this.print_len),this.token_cache=[],this.print_len=0):c.length>0&&(0,i.is_chinese_char)(c.charCodeAt(c.length-1))?(f=c.slice(this.print_len),this.print_len+=f.length):(f=c.slice(this.print_len,c.lastIndexOf(" ")+1),this.print_len+=f.length),this.on_finalized_text(f,!1)}end(){let a;this.token_cache.length>0?(a=this.tokenizer.decode(this.token_cache,this.decode_kwargs).slice(this.print_len),this.token_cache=[],this.print_len=0):a="",this.next_tokens_are_prompt=!0,this.on_finalized_text(a,!0)}on_finalized_text(a,r){a.length>0&&this.callback_function?.(a),r&&this.callback_function===o&&t.apis.IS_PROCESS_AVAILABLE&&this.callback_function?.(` `)}}class B extends s{constructor(a,{skip_prompt:r=!1,callback_function:d=null,token_callback_function:c=null,on_chunk_start:f=null,on_chunk_end:k=null,on_finalize:u=null,time_precision:D=.02,skip_special_tokens:G=!0,decode_kwargs:h={}}={}){super(a,{skip_prompt:r,skip_special_tokens:G,callback_function:d,token_callback_function:c,decode_kwargs:h}),this.timestamp_begin=a.timestamp_begin,this.on_chunk_start=f,this.on_chunk_end=k,this.on_finalize=u,this.time_precision=D,this.waiting_for_timestamp=!1}put(a){if(a.length>1)throw Error("WhisperTextStreamer only supports batch size of 1");const r=a[0];if(r.length===1){const d=Number(r[0])-this.timestamp_begin;if(d>=0){const c=d*this.time_precision;this.waiting_for_timestamp?this.on_chunk_end?.(c):this.on_chunk_start?.(c),this.waiting_for_timestamp=!this.waiting_for_timestamp,this.token_callback_function?.(r);return}}return super.put(a)}end(){super.end(),this.on_finalize?.()}}},"./src/models.js":(A,g,e)=>{e.r(g),e.d(g,{ASTForAudioClassification:()=>zI,ASTModel:()=>st,ASTPreTrainedModel:()=>Gi,AlbertForMaskedLM:()=>fe,AlbertForQuestionAnswering:()=>$A,AlbertForSequenceClassification:()=>ZA,AlbertModel:()=>XA,AlbertPreTrainedModel:()=>jA,ArceeForCausalLM:()=>Ug,ArceeModel:()=>Xe,ArceePreTrainedModel:()=>qe,AutoModel:()=>X0,AutoModelForAudioClassification:()=>dp,AutoModelForAudioFrameClassification:()=>up,AutoModelForAudioTextToText:()=>Sp,AutoModelForCTC:()=>cp,AutoModelForCausalLM:()=>tp,AutoModelForDepthEstimation:()=>yp,AutoModelForDocumentQuestionAnswering:()=>Dp,AutoModelForImageClassification:()=>Bp,AutoModelForImageFeatureExtraction:()=>Mp,AutoModelForImageMatting:()=>wp,AutoModelForImageSegmentation:()=>rp,AutoModelForImageTextToText:()=>Fp,AutoModelForImageToImage:()=>pp,AutoModelForMaskGeneration:()=>lp,AutoModelForMaskedLM:()=>op,AutoModelForNormalEstimation:()=>fp,AutoModelForObjectDetection:()=>Ep,AutoModelForPoseEstimation:()=>mp,AutoModelForQuestionAnswering:()=>Cp,AutoModelForSemanticSegmentation:()=>ap,AutoModelForSeq2SeqLM:()=>ep,AutoModelForSequenceClassification:()=>Z0,AutoModelForSpeechSeq2Seq:()=>gp,AutoModelForTextToSpectrogram:()=>Ip,AutoModelForTextToWaveform:()=>ip,AutoModelForTokenClassification:()=>Ap,AutoModelForUniversalSegmentation:()=>Qp,AutoModelForVision2Seq:()=>sp,AutoModelForXVector:()=>hp,AutoModelForZeroShotObjectDetection:()=>np,BartForConditionalGeneration:()=>Fg,BartForSequenceClassification:()=>Vg,BartModel:()=>Qg,BartPretrainedModel:()=>sI,BaseModelOutput:()=>bA,BeitForImageClassification:()=>va,BeitModel:()=>Pa,BeitPreTrainedModel:()=>YC,BertForMaskedLM:()=>kA,BertForQuestionAnswering:()=>vA,BertForSequenceClassification:()=>MA,BertForTokenClassification:()=>xA,BertModel:()=>pA,BertPreTrainedModel:()=>NA,BlenderbotForConditionalGeneration:()=>yg,BlenderbotModel:()=>Sg,BlenderbotPreTrainedModel:()=>Bg,BlenderbotSmallForConditionalGeneration:()=>_i,BlenderbotSmallModel:()=>WI,BlenderbotSmallPreTrainedModel:()=>$g,BloomForCausalLM:()=>Qa,BloomModel:()=>aa,BloomPreTrainedModel:()=>NC,CLIPModel:()=>dt,CLIPPreTrainedModel:()=>TI,CLIPSegForImageSegmentation:()=>pt,CLIPSegModel:()=>wt,CLIPSegPreTrainedModel:()=>ai,CLIPTextModel:()=>co,CLIPTextModelWithProjection:()=>ht,CLIPVisionModel:()=>ho,CLIPVisionModelWithProjection:()=>uo,CamembertForMaskedLM:()=>Ie,CamembertForQuestionAnswering:()=>wg,CamembertForSequenceClassification:()=>Se,CamembertForTokenClassification:()=>Te,CamembertModel:()=>Ee,CamembertPreTrainedModel:()=>ae,CausalLMOutput:()=>ni,CausalLMOutputWithPast:()=>Rp,ChineseCLIPModel:()=>Dt,ChineseCLIPPreTrainedModel:()=>Do,ClapAudioModelWithProjection:()=>OE,ClapModel:()=>vE,ClapPreTrainedModel:()=>So,ClapTextModelWithProjection:()=>qE,CodeGenForCausalLM:()=>OA,CodeGenModel:()=>KA,CodeGenPreTrainedModel:()=>lA,CohereForCausalLM:()=>Or,CohereModel:()=>qr,CoherePreTrainedModel:()=>DC,ConvBertForMaskedLM:()=>xe,ConvBertForQuestionAnswering:()=>N,ConvBertForSequenceClassification:()=>ke,ConvBertForTokenClassification:()=>EI,ConvBertModel:()=>J,ConvBertPreTrainedModel:()=>de,ConvNextForImageClassification:()=>bQ,ConvNextModel:()=>JQ,ConvNextPreTrainedModel:()=>gs,ConvNextV2ForImageClassification:()=>TQ,ConvNextV2Model:()=>xQ,ConvNextV2PreTrainedModel:()=>Is,DFineForObjectDetection:()=>IQ,DFineModel:()=>gQ,DFinePreTrainedModel:()=>WC,DPTForDepthEstimation:()=>uQ,DPTModel:()=>hQ,DPTPreTrainedModel:()=>ZC,DacDecoderModel:()=>Kn,DacDecoderOutput:()=>Gn,DacEncoderModel:()=>Ln,DacEncoderOutput:()=>_n,DacModel:()=>kn,DacPreTrainedModel:()=>Ko,DebertaForMaskedLM:()=>Wg,DebertaForQuestionAnswering:()=>iI,DebertaForSequenceClassification:()=>Ig,DebertaForTokenClassification:()=>pg,DebertaModel:()=>lg,DebertaPreTrainedModel:()=>je,DebertaV2ForMaskedLM:()=>oI,DebertaV2ForQuestionAnswering:()=>CI,DebertaV2ForSequenceClassification:()=>mg,DebertaV2ForTokenClassification:()=>nI,DebertaV2Model:()=>Zg,DebertaV2PreTrainedModel:()=>cg,DecisionTransformerModel:()=>nn,DecisionTransformerPreTrainedModel:()=>En,DeiTForImageClassification:()=>sQ,DeiTModel:()=>CQ,DeiTPreTrainedModel:()=>VC,DepthAnythingForDepthEstimation:()=>wQ,DepthAnythingPreTrainedModel:()=>DQ,DepthProForDepthEstimation:()=>MQ,DepthProPreTrainedModel:()=>mQ,DetrForObjectDetection:()=>Oa,DetrForSegmentation:()=>HC,DetrModel:()=>qa,DetrObjectDetectionOutput:()=>PC,DetrPreTrainedModel:()=>po,DetrSegmentationOutput:()=>Wa,Dinov2ForImageClassification:()=>HQ,Dinov2Model:()=>YQ,Dinov2PreTrainedModel:()=>is,Dinov2WithRegistersForImageClassification:()=>vQ,Dinov2WithRegistersModel:()=>PQ,Dinov2WithRegistersPreTrainedModel:()=>ts,DistilBertForMaskedLM:()=>lI,DistilBertForQuestionAnswering:()=>tI,DistilBertForSequenceClassification:()=>dg,DistilBertForTokenClassification:()=>Mg,DistilBertModel:()=>jg,DistilBertPreTrainedModel:()=>ag,DonutSwinModel:()=>UQ,DonutSwinPreTrainedModel:()=>KQ,EfficientNetForImageClassification:()=>ZE,EfficientNetModel:()=>XE,EfficientNetPreTrainedModel:()=>cs,ElectraForMaskedLM:()=>IA,ElectraForQuestionAnswering:()=>JA,ElectraForSequenceClassification:()=>rA,ElectraForTokenClassification:()=>yA,ElectraModel:()=>O,ElectraPreTrainedModel:()=>gA,Ernie4_5_ForCausalLM:()=>xE,Ernie4_5_Model:()=>bE,Ernie4_5_PretrainedModel:()=>as,EsmForMaskedLM:()=>ve,EsmForSequenceClassification:()=>qA,EsmForTokenClassification:()=>n,EsmModel:()=>fI,EsmPreTrainedModel:()=>AI,ExaoneForCausalLM:()=>Ur,ExaoneModel:()=>Kr,ExaonePreTrainedModel:()=>lC,FalconForCausalLM:()=>PE,FalconModel:()=>HE,FalconPreTrainedModel:()=>Es,FastViTForImageClassification:()=>Ga,FastViTModel:()=>_a,FastViTPreTrainedModel:()=>UC,Florence2ForConditionalGeneration:()=>Qo,Florence2PreTrainedModel:()=>ao,GLPNForDepthEstimation:()=>LQ,GLPNModel:()=>kQ,GLPNPreTrainedModel:()=>es,GPT2LMHeadModel:()=>yt,GPT2Model:()=>Ti,GPT2PreTrainedModel:()=>xi,GPTBigCodeForCausalLM:()=>j,GPTBigCodeModel:()=>Y,GPTBigCodePreTrainedModel:()=>L,GPTJForCausalLM:()=>S,GPTJModel:()=>E,GPTJPreTrainedModel:()=>vi,GPTNeoForCausalLM:()=>mt,GPTNeoModel:()=>Hi,GPTNeoPreTrainedModel:()=>Ei,GPTNeoXForCausalLM:()=>Ft,GPTNeoXModel:()=>Mt,GPTNeoXPreTrainedModel:()=>Pi,Gemma2ForCausalLM:()=>zr,Gemma2Model:()=>Vr,Gemma2PreTrainedModel:()=>pC,Gemma3ForCausalLM:()=>Xr,Gemma3Model:()=>$r,Gemma3PreTrainedModel:()=>yC,Gemma3nForConditionalGeneration:()=>Li,Gemma3nPreTrainedModel:()=>$I,GemmaForCausalLM:()=>jr,GemmaModel:()=>Wr,GemmaPreTrainedModel:()=>wC,GlmForCausalLM:()=>Lr,GlmModel:()=>kr,GlmPreTrainedModel:()=>nC,GraniteForCausalLM:()=>vr,GraniteModel:()=>Pr,GranitePreTrainedModel:()=>uC,GroundingDinoForObjectDetection:()=>OQ,GroundingDinoPreTrainedModel:()=>qQ,GroupViTModel:()=>Ra,GroupViTPreTrainedModel:()=>Na,HeliumForCausalLM:()=>Gr,HeliumModel:()=>_r,HeliumPreTrainedModel:()=>EC,HieraForImageClassification:()=>rQ,HieraModel:()=>BQ,HieraPreTrainedModel:()=>zC,HubertForCTC:()=>pE,HubertForSequenceClassification:()=>yE,HubertModel:()=>wE,HubertPreTrainedModel:()=>x0,IJepaForImageClassification:()=>Da,IJepaModel:()=>ua,IJepaPreTrainedModel:()=>kC,Idefics3ForConditionalGeneration:()=>Ki,Idefics3PreTrainedModel:()=>lo,ImageMattingOutput:()=>Ql,JAISLMHeadModel:()=>Qi,JAISModel:()=>ft,JAISPreTrainedModel:()=>Yi,JinaCLIPModel:()=>Bi,JinaCLIPPreTrainedModel:()=>si,JinaCLIPTextModel:()=>BI,JinaCLIPVisionModel:()=>ri,Lfm2ForCausalLM:()=>Sr,Lfm2Model:()=>wo,Lfm2PreTrainedModel:()=>YI,LiteWhisperForConditionalGeneration:()=>so,LlamaForCausalLM:()=>Re,LlamaModel:()=>ne,LlamaPreTrainedModel:()=>te,LlavaForConditionalGeneration:()=>ki,LlavaOnevisionForConditionalGeneration:()=>Bo,LlavaPreTrainedModel:()=>ct,LlavaQwen2ForCausalLM:()=>ti,LongT5ForConditionalGeneration:()=>ig,LongT5Model:()=>ng,LongT5PreTrainedModel:()=>og,M2M100ForConditionalGeneration:()=>gE,M2M100Model:()=>eE,M2M100PreTrainedModel:()=>ss,MBartForCausalLM:()=>Kg,MBartForConditionalGeneration:()=>Rg,MBartForSequenceClassification:()=>dI,MBartModel:()=>mI,MBartPreTrainedModel:()=>zg,MPNetForMaskedLM:()=>Ce,MPNetForQuestionAnswering:()=>R,MPNetForSequenceClassification:()=>Ke,MPNetForTokenClassification:()=>aA,MPNetModel:()=>RA,MPNetPreTrainedModel:()=>uA,MT5ForConditionalGeneration:()=>Pg,MT5Model:()=>cI,MT5PreTrainedModel:()=>eI,MarianMTModel:()=>AE,MarianModel:()=>ZQ,MarianPreTrainedModel:()=>Cs,MaskFormerForInstanceSegmentation:()=>GQ,MaskFormerModel:()=>_Q,MaskFormerPreTrainedModel:()=>As,MaskedLMOutput:()=>Tg,Metric3DForDepthEstimation:()=>SQ,Metric3DPreTrainedModel:()=>FQ,Metric3Dv2ForDepthEstimation:()=>RQ,Metric3Dv2PreTrainedModel:()=>NQ,MgpstrForSceneTextRecognition:()=>un,MgpstrModelOutput:()=>dn,MgpstrPreTrainedModel:()=>hn,MimiDecoderModel:()=>Rn,MimiDecoderOutput:()=>Fn,MimiEncoderModel:()=>Nn,MimiEncoderOutput:()=>Mn,MimiModel:()=>Sn,MimiPreTrainedModel:()=>Lo,MistralForCausalLM:()=>JE,MistralModel:()=>UE,MistralPreTrainedModel:()=>rs,MobileBertForMaskedLM:()=>W,MobileBertForQuestionAnswering:()=>QA,MobileBertForSequenceClassification:()=>iA,MobileBertModel:()=>K,MobileBertPreTrainedModel:()=>F,MobileLLMForCausalLM:()=>br,MobileLLMModel:()=>Jr,MobileLLMPreTrainedModel:()=>cC,MobileNetV1ForImageClassification:()=>en,MobileNetV1ForSemanticSegmentation:()=>gn,MobileNetV1Model:()=>An,MobileNetV1PreTrainedModel:()=>Ro,MobileNetV2ForImageClassification:()=>tn,MobileNetV2ForSemanticSegmentation:()=>on,MobileNetV2Model:()=>In,MobileNetV2PreTrainedModel:()=>_o,MobileNetV3ForImageClassification:()=>sn,MobileNetV3ForSemanticSegmentation:()=>Bn,MobileNetV3Model:()=>Cn,MobileNetV3PreTrainedModel:()=>Go,MobileNetV4ForImageClassification:()=>an,MobileNetV4ForSemanticSegmentation:()=>Qn,MobileNetV4Model:()=>rn,MobileNetV4PreTrainedModel:()=>ko,MobileViTForImageClassification:()=>Ua,MobileViTModel:()=>Ka,MobileViTPreTrainedModel:()=>JC,MobileViTV2ForImageClassification:()=>ba,MobileViTV2Model:()=>Ja,MobileViTV2PreTrainedModel:()=>bC,ModelOutput:()=>fA,ModernBertDecoderForCausalLM:()=>Og,ModernBertDecoderModel:()=>tg,ModernBertDecoderPreTrainedModel:()=>pe,ModernBertForMaskedLM:()=>se,ModernBertForSequenceClassification:()=>Ne,ModernBertForTokenClassification:()=>Pe,ModernBertModel:()=>oe,ModernBertPreTrainedModel:()=>Ae,Moondream1ForConditionalGeneration:()=>ro,MoonshineForConditionalGeneration:()=>nt,MoonshineModel:()=>Et,MoonshinePreTrainedModel:()=>Qt,MptForCausalLM:()=>na,MptModel:()=>Ea,MptPreTrainedModel:()=>RC,MultiModalityCausalLM:()=>cn,MultiModalityPreTrainedModel:()=>ln,MusicgenForCausalLM:()=>P0,MusicgenForConditionalGeneration:()=>hs,MusicgenModel:()=>H0,MusicgenPreTrainedModel:()=>ds,NeoBertForMaskedLM:()=>re,NeoBertForQuestionAnswering:()=>Be,NeoBertForSequenceClassification:()=>HA,NeoBertForTokenClassification:()=>zA,NeoBertModel:()=>SA,NeoBertPreTrainedModel:()=>ge,NomicBertModel:()=>De,NomicBertPreTrainedModel:()=>xg,OPTForCausalLM:()=>ca,OPTModel:()=>la,OPTPreTrainedModel:()=>_C,Olmo2ForCausalLM:()=>Hr,Olmo2Model:()=>Yr,Olmo2PreTrainedModel:()=>hC,OlmoForCausalLM:()=>Tr,OlmoModel:()=>xr,OlmoPreTrainedModel:()=>dC,OpenELMForCausalLM:()=>Aa,OpenELMModel:()=>Zr,OpenELMPreTrainedModel:()=>fC,OwlViTForObjectDetection:()=>Ta,OwlViTModel:()=>xa,OwlViTPreTrainedModel:()=>xC,Owlv2ForObjectDetection:()=>Ha,Owlv2Model:()=>Ya,Owlv2PreTrainedModel:()=>TC,PaliGemmaForConditionalGeneration:()=>no,PaliGemmaPreTrainedModel:()=>Eo,PatchTSMixerForPrediction:()=>yn,PatchTSMixerModel:()=>pn,PatchTSMixerPreTrainedModel:()=>Ds,PatchTSTForPrediction:()=>wn,PatchTSTModel:()=>Dn,PatchTSTPreTrainedModel:()=>us,Phi3ForCausalLM:()=>ra,Phi3Model:()=>Ba,Phi3PreTrainedModel:()=>SC,Phi3VForCausalLM:()=>Ji,Phi3VPreTrainedModel:()=>Ui,PhiForCausalLM:()=>sa,PhiModel:()=>Ca,PhiPreTrainedModel:()=>FC,PreTrainedModel:()=>V,PretrainedMixin:()=>Ze,PvtForImageClassification:()=>fa,PvtModel:()=>ya,PvtPreTrainedModel:()=>LC,PyAnnoteForAudioFrameClassification:()=>sE,PyAnnoteModel:()=>CE,PyAnnotePreTrainedModel:()=>Bs,QuestionAnsweringModelOutput:()=>qg,Qwen2ForCausalLM:()=>ga,Qwen2Model:()=>ea,Qwen2PreTrainedModel:()=>mC,Qwen2VLForConditionalGeneration:()=>oa,Qwen2VLPreTrainedModel:()=>ta,Qwen3ForCausalLM:()=>ia,Qwen3Model:()=>Ia,Qwen3PreTrainedModel:()=>MC,RFDetrForObjectDetection:()=>AQ,RFDetrModel:()=>Za,RFDetrObjectDetectionOutput:()=>eQ,RFDetrPreTrainedModel:()=>OC,RTDetrForObjectDetection:()=>Va,RTDetrModel:()=>ja,RTDetrObjectDetectionOutput:()=>St,RTDetrPreTrainedModel:()=>vC,RTDetrV2ForObjectDetection:()=>$a,RTDetrV2Model:()=>za,RTDetrV2ObjectDetectionOutput:()=>Xa,RTDetrV2PreTrainedModel:()=>qC,ResNetForImageClassification:()=>QQ,ResNetModel:()=>aQ,ResNetPreTrainedModel:()=>$C,RoFormerForMaskedLM:()=>bI,RoFormerForQuestionAnswering:()=>yI,RoFormerForSequenceClassification:()=>xI,RoFormerForTokenClassification:()=>pI,RoFormerModel:()=>kg,RoFormerPreTrainedModel:()=>gg,RobertaForMaskedLM:()=>$t,RobertaForQuestionAnswering:()=>Ao,RobertaForSequenceClassification:()=>Xt,RobertaForTokenClassification:()=>Zt,RobertaModel:()=>zt,RobertaPreTrainedModel:()=>PI,SamImageSegmentationOutput:()=>XQ,SamModel:()=>$Q,SamPreTrainedModel:()=>zQ,SapiensForDepthEstimation:()=>yQ,SapiensForNormalEstimation:()=>fQ,SapiensForSemanticSegmentation:()=>pQ,SapiensPreTrainedModel:()=>fo,SegformerForImageClassification:()=>jE,SegformerForSemanticSegmentation:()=>VE,SegformerModel:()=>Y0,SegformerPreTrainedModel:()=>No,Seq2SeqLMOutput:()=>Np,SequenceClassifierOutput:()=>_e,SiglipModel:()=>ut,SiglipPreTrainedModel:()=>bi,SiglipTextModel:()=>Ci,SiglipVisionModel:()=>ue,SmolLM3ForCausalLM:()=>Rr,SmolLM3Model:()=>Nr,SmolLM3PreTrainedModel:()=>QC,SmolVLMForConditionalGeneration:()=>oi,SnacDecoderModel:()=>bn,SnacEncoderModel:()=>Jn,SnacModel:()=>Un,SnacPreTrainedModel:()=>Uo,SpeechT5ForSpeechToText:()=>_E,SpeechT5ForTextToSpeech:()=>GE,SpeechT5HifiGan:()=>kE,SpeechT5Model:()=>T0,SpeechT5PreTrainedModel:()=>Fo,SqueezeBertForMaskedLM:()=>oA,SqueezeBertForQuestionAnswering:()=>GA,SqueezeBertForSequenceClassification:()=>DA,SqueezeBertModel:()=>$,SqueezeBertPreTrainedModel:()=>H,StableLmForCausalLM:()=>$E,StableLmModel:()=>zE,StableLmPreTrainedModel:()=>ls,Starcoder2ForCausalLM:()=>YE,Starcoder2Model:()=>TE,Starcoder2PreTrainedModel:()=>Qs,StyleTextToSpeech2Model:()=>RE,StyleTextToSpeech2PreTrainedModel:()=>NE,Swin2SRForImageSuperResolution:()=>dQ,Swin2SRModel:()=>cQ,Swin2SRPreTrainedModel:()=>XC,SwinForImageClassification:()=>nQ,SwinForSemanticSegmentation:()=>lQ,SwinModel:()=>EQ,SwinPreTrainedModel:()=>yo,T5ForConditionalGeneration:()=>Lg,T5Model:()=>Ye,T5PreTrainedModel:()=>me,TableTransformerForObjectDetection:()=>tQ,TableTransformerModel:()=>iQ,TableTransformerObjectDetectionOutput:()=>oQ,TableTransformerPreTrainedModel:()=>jC,TokenClassifierOutput:()=>Jg,TrOCRForCausalLM:()=>KE,TrOCRPreTrainedModel:()=>LE,UltravoxModel:()=>ws,UltravoxPreTrainedModel:()=>fn,UniSpeechForCTC:()=>QE,UniSpeechForSequenceClassification:()=>EE,UniSpeechModel:()=>aE,UniSpeechPreTrainedModel:()=>mo,UniSpeechSatForAudioFrameClassification:()=>dE,UniSpeechSatForCTC:()=>lE,UniSpeechSatForSequenceClassification:()=>cE,UniSpeechSatModel:()=>nE,UniSpeechSatPreTrainedModel:()=>Nt,ViTForImageClassification:()=>ha,ViTMAEModel:()=>Ma,ViTMAEPreTrainedModel:()=>ma,ViTMSNForImageClassification:()=>Sa,ViTMSNModel:()=>Fa,ViTMSNPreTrainedModel:()=>KC,ViTModel:()=>da,ViTPreTrainedModel:()=>GC,VisionEncoderDecoderModel:()=>lt,VitMatteForImageMatting:()=>La,VitMattePreTrainedModel:()=>ka,VitPoseForPoseEstimation:()=>pa,VitPosePreTrainedModel:()=>wa,VitsModel:()=>ns,VitsModelOutput:()=>El,VitsPreTrainedModel:()=>WE,VoxtralForConditionalGeneration:()=>mn,Wav2Vec2BertForCTC:()=>uE,Wav2Vec2BertForSequenceClassification:()=>DE,Wav2Vec2BertModel:()=>hE,Wav2Vec2BertPreTrainedModel:()=>Mo,Wav2Vec2ForAudioFrameClassification:()=>oE,Wav2Vec2ForCTC:()=>iE,Wav2Vec2ForSequenceClassification:()=>tE,Wav2Vec2Model:()=>IE,Wav2Vec2PreTrainedModel:()=>XI,WavLMForAudioFrameClassification:()=>SE,WavLMForCTC:()=>mE,WavLMForSequenceClassification:()=>ME,WavLMForXVector:()=>FE,WavLMModel:()=>fE,WavLMPreTrainedModel:()=>qi,WeSpeakerResNetModel:()=>rE,WeSpeakerResNetPreTrainedModel:()=>BE,WhisperForConditionalGeneration:()=>at,WhisperModel:()=>rt,WhisperPreTrainedModel:()=>Bt,XLMForQuestionAnswering:()=>to,XLMForSequenceClassification:()=>Io,XLMForTokenClassification:()=>io,XLMModel:()=>eo,XLMPreTrainedModel:()=>jI,XLMRobertaForMaskedLM:()=>ot,XLMRobertaForQuestionAnswering:()=>Co,XLMRobertaForSequenceClassification:()=>Ct,XLMRobertaForTokenClassification:()=>oo,XLMRobertaModel:()=>tt,XLMRobertaPreTrainedModel:()=>VI,XLMWithLMHeadModel:()=>go,XVectorOutput:()=>al,YolosForObjectDetection:()=>jQ,YolosModel:()=>WQ,YolosObjectDetectionOutput:()=>VQ,YolosPreTrainedModel:()=>os});var I=e("./src/configs.js"),i=e("./src/backends/onnx.js"),t=e("./src/utils/dtypes.js"),C=e("./src/utils/generic.js"),o=e("./src/utils/core.js"),s=e("./src/utils/hub.js"),B=e("./src/utils/constants.js"),Q=e("./src/generation/logits_process.js"),a=e("./src/generation/configuration_utils.js"),r=e("./src/utils/tensor.js"),d=e("./src/utils/image.js"),c=e("./src/utils/maths.js"),f=e("./src/generation/stopping_criteria.js"),k=e("./src/generation/logits_sampler.js"),u=e("./src/env.js"),D=e("./src/models/whisper/generation_whisper.js"),G=e("./src/models/whisper/common_whisper.js");const h={EncoderOnly:0,EncoderDecoder:1,Seq2Seq:2,Vision2Seq:3,DecoderOnly:4,MaskGeneration:5,ImageTextToText:6,Musicgen:7,MultiModality:8,Phi3V:9,AudioTextToText:10,AutoEncoder:11,ImageAudioTextToText:12},y=new Map,M=new Map,m=new Map;async function _(w,p,q){let EA=q.config?.["transformers.js_config"]??{},wA=q.device??EA.device;wA&&typeof wA!="string"&&(wA.hasOwnProperty(p)?wA=wA[p]:(console.warn(`device not specified for "${p}". Using the default device.`),wA=null));const mA=wA??(u.apis.IS_NODE_ENV?"cpu":"wasm"),TA=(0,i.deviceToExecutionProviders)(mA),WA=EA.device_config??{};WA.hasOwnProperty(mA)&&(EA={...EA,...WA[mA]});let ee=q.dtype??EA.dtype;if(typeof ee!="string"&&(ee&&ee.hasOwnProperty(p)?ee=ee[p]:(ee=t.DEFAULT_DEVICE_DTYPE_MAPPING[mA]??t.DATA_TYPES.fp32,console.warn(`dtype not specified for "${p}". Using the default dtype (${ee}) for this device (${mA}).`))),ee===t.DATA_TYPES.auto){let He=EA.dtype;typeof He!="string"&&(He=He?.[p]),He&&He!==t.DATA_TYPES.auto&&t.DATA_TYPES.hasOwnProperty(He)?ee=He:ee=t.DEFAULT_DEVICE_DTYPE_MAPPING[mA]??t.DATA_TYPES.fp32}const Qe=ee;if(t.DEFAULT_DTYPE_SUFFIX_MAPPING.hasOwnProperty(Qe)){if(Qe===t.DATA_TYPES.fp16&&mA==="webgpu"&&!await(0,t.isWebGpuFp16Supported)())throw new Error(`The device (${mA}) does not support fp16.`)}else throw new Error(`Invalid dtype: ${Qe}. Should be one of: ${Object.keys(t.DATA_TYPES).join(", ")}`);const Ge=EA.kv_cache_dtype,Ue=Ge?typeof Ge=="string"?Ge:Ge[Qe]??"float32":void 0;if(Ue&&!["float32","float16"].includes(Ue))throw new Error(`Invalid kv_cache_dtype: ${Ue}. Should be one of: float32, float16`);const be={dtype:Qe,kv_cache_dtype:Ue,device:mA},ye=t.DEFAULT_DTYPE_SUFFIX_MAPPING[Qe],Ag=`${p}${ye}.onnx`,Me=`${q.subfolder??""}/${Ag}`,we={...q.session_options};we.executionProviders??=TA;const We=EA.free_dimension_overrides;We?we.freeDimensionOverrides??=We:mA.startsWith("webnn")&&!we.freeDimensionOverrides&&console.warn(`WebNN does not currently support dynamic shapes and requires 'free_dimension_overrides' to be set in config.json, preferably as a field within config["transformers.js_config"]["device_config"]["${mA}"]. When 'free_dimension_overrides' is not set, you may experience significant performance degradation.`);const Cg=u.apis.IS_NODE_ENV&&u.env.useFSCache,hg=(0,s.getModelFile)(w,Me,!0,q,Cg),_g=q.use_external_data_format??EA.use_external_data_format;let Gg=[];if(_g){let He;typeof _g=="object"?_g.hasOwnProperty(Ag)?He=_g[Ag]:_g.hasOwnProperty(p)?He=_g[p]:He=!1:He=_g;const ug=+He;if(ug>s.MAX_EXTERNAL_DATA_CHUNKS)throw new Error(`The number of external data chunks (${ug}) exceeds the maximum allowed value (${s.MAX_EXTERNAL_DATA_CHUNKS}).`);for(let Yg=0;Yg{const ji=await(0,s.getModelFile)(w,gI,!0,q,Cg);MI(ji instanceof Uint8Array?{path:li,data:ji}:li)}))}}else we.externalData!==void 0&&(Gg=we.externalData.map(async He=>{if(typeof He.data=="string"){const ug=await(0,s.getModelFile)(w,He.data,!0,q);return{...He,data:ug}}return He}));if(Gg.length>0){const He=await Promise.all(Gg);u.apis.IS_NODE_ENV||(we.externalData=He)}if(mA==="webgpu"){const He=(0,I.getCacheShapes)(q.config,{prefix:"present"});if(Object.keys(He).length>0&&!(0,i.isONNXProxy)()){const ug={};for(const Yg in He)ug[Yg]="gpu-buffer";we.preferredOutputLocation=ug}}return{buffer_or_path:await hg,session_options:we,session_config:be}}async function x(w,p,q){return Object.fromEntries(await Promise.all(Object.keys(p).map(async EA=>{const{buffer_or_path:wA,session_options:mA,session_config:TA}=await _(w,p[EA],q),WA=await(0,i.createInferenceSession)(wA,mA,TA);return[EA,WA]})))}async function b(w,p,q){return Object.fromEntries(await Promise.all(Object.keys(p).map(async EA=>{const wA=await(0,s.getModelJSON)(w,p[EA],!1,q);return[EA,wA]})))}function X(w,p){const q=Object.create(null),EA=[];for(const TA of w.inputNames){const WA=p[TA];if(!(WA instanceof r.Tensor)){EA.push(TA);continue}q[TA]=(0,i.isONNXProxy)()?WA.clone():WA}if(EA.length>0)throw new Error(`An error occurred during model execution: "Missing the following inputs: ${EA.join(", ")}.`);const wA=Object.keys(p).length,mA=w.inputNames.length;if(wA>mA){let TA=Object.keys(p).filter(WA=>!w.inputNames.includes(WA));console.warn(`WARNING: Too many inputs were provided (${wA} > ${mA}). The following inputs will be ignored: "${TA.join(", ")}".`)}return q}let Z=Promise.resolve();async function T(w,p){const q=X(w,p);try{const EA=Object.fromEntries(Object.entries(q).map(([TA,WA])=>[TA,WA.ort_tensor])),wA=()=>w.run(EA),mA=await(u.apis.IS_BROWSER_ENV||u.apis.IS_WEBWORKER_ENV?Z=Z.then(wA):wA());return CA(mA)}catch(EA){const wA=Object.fromEntries(Object.entries(q).map(([mA,TA])=>{const WA={type:TA.type,dims:TA.dims,location:TA.location};return WA.location!=="gpu-buffer"&&(WA.data=TA.data),[mA,WA]}));throw console.error(`An error occurred during model execution: "${EA}".`),console.error("Inputs given to model:",wA),EA}}function CA(w){for(let p in w)(0,i.isONNXTensor)(w[p])?w[p]=new r.Tensor(w[p]):typeof w[p]=="object"&&CA(w[p]);return w}function eA(w){if(w instanceof r.Tensor)return w;if(w.length===0)throw Error("items must be non-empty");if(Array.isArray(w[0])){if(w.some(p=>p.length!==w[0].length))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=True' and/or 'truncation=True' to have batched tensors with the same length.");return new r.Tensor("int64",BigInt64Array.from(w.flat().map(p=>BigInt(p))),[w.length,w[0].length])}else return new r.Tensor("int64",BigInt64Array.from(w.map(p=>BigInt(p))),[1,w.length])}function tA(w){return new r.Tensor("bool",[w],[1])}async function BA(w,p){let{encoder_outputs:q,input_ids:EA,decoder_input_ids:wA,...mA}=p;if(!q){const WA=(0,o.pick)(p,w.sessions.model.inputNames);q=(await sA(w,WA)).last_hidden_state}return mA.input_ids=wA,mA.encoder_hidden_states=q,w.sessions.decoder_model_merged.inputNames.includes("encoder_attention_mask")&&(mA.encoder_attention_mask=p.attention_mask),await dA(w,mA,!0)}async function sA(w,p){const q=w.sessions.model,EA=(0,o.pick)(p,q.inputNames);if(q.inputNames.includes("inputs_embeds")&&!EA.inputs_embeds){if(!p.input_ids)throw new Error("Both `input_ids` and `inputs_embeds` are missing in the model inputs.");EA.inputs_embeds=await w.encode_text({input_ids:p.input_ids})}if(q.inputNames.includes("token_type_ids")&&!EA.token_type_ids){if(!EA.input_ids)throw new Error("Both `input_ids` and `token_type_ids` are missing in the model inputs.");EA.token_type_ids=(0,r.zeros_like)(EA.input_ids)}if(q.inputNames.includes("pixel_mask")&&!EA.pixel_mask){if(!EA.pixel_values)throw new Error("Both `pixel_values` and `pixel_mask` are missing in the model inputs.");const wA=EA.pixel_values.dims;EA.pixel_mask=(0,r.ones)([wA[0],wA[2],wA[3]])}return await T(q,EA)}async function cA(w,p){const q=await w.encode(p);return await w.decode(q)}async function dA(w,p,q=!1){const EA=w.sessions[q?"decoder_model_merged":"model"],{past_key_values:wA,...mA}=p;if(EA.inputNames.includes("use_cache_branch")&&(mA.use_cache_branch=tA(!!wA)),EA.inputNames.includes("position_ids")&&mA.attention_mask&&!mA.position_ids){const WA=["paligemma","gemma3_text","gemma3"].includes(w.config.model_type)?1:0;mA.position_ids=PA(mA,wA,WA)}w.addPastKeyValues(mA,wA);const TA=(0,o.pick)(mA,EA.inputNames);return await T(EA,TA)}function P({modality_token_id:w,inputs_embeds:p,modality_features:q,input_ids:EA,attention_mask:wA}){const mA=EA.tolist().map(Qe=>Qe.reduce((Ge,Ue,be)=>(Ue==w&&Ge.push(be),Ge),[])),TA=mA.reduce((Qe,Ge)=>Qe+Ge.length,0),WA=q.dims[0];if(TA!==WA)throw new Error(`Number of tokens and features do not match: tokens: ${TA}, features ${WA}`);let ee=0;for(let Qe=0;QemA.dims[1]||wA[wA.at(-1)])),{...q,decoder_input_ids:eA(p)}}function AA(w,...p){return w.config.is_encoder_decoder?LA(w,...p):ie(w,...p)}function hA(w,p,q,EA){const wA=!!q.past_key_values;return EA.guidance_scale!==null&&EA.guidance_scale>1&&(wA?q.input_ids=(0,r.cat)([q.input_ids,q.input_ids],0):(q.input_ids=(0,r.cat)([q.input_ids,(0,r.full_like)(q.input_ids,BigInt(EA.pad_token_id))],0),q.attention_mask=(0,r.cat)([q.attention_mask,(0,r.full_like)(q.attention_mask,0n)],0))),(wA||!q.pixel_values)&&(q.pixel_values=(0,r.full)([0,0,3,384,384],1)),wA&&(q.images_seq_mask=new r.Tensor("bool",new Array(1).fill(!0).fill(!1,0,1),[1,1]),q.images_emb_mask=new r.Tensor("bool",new Array(0).fill(!1),[1,1,0])),q}class V extends C.Callable{main_input_name="input_ids";forward_params=["input_ids","attention_mask"];constructor(p,q,EA){super(),this.config=p,this.sessions=q,this.configs=EA;const wA=m.get(this.constructor),mA=y.get(wA);switch(this.can_generate=!1,this._forward=null,this._prepare_inputs_for_generation=null,mA){case h.DecoderOnly:this.can_generate=!0,this._forward=dA,this._prepare_inputs_for_generation=ie;break;case h.Seq2Seq:case h.Vision2Seq:case h.Musicgen:this.can_generate=!0,this._forward=BA,this._prepare_inputs_for_generation=LA;break;case h.EncoderDecoder:this._forward=BA;break;case h.ImageTextToText:this.can_generate=!0,this._forward=YA,this._prepare_inputs_for_generation=AA;break;case h.AudioTextToText:this.can_generate=!0,this._forward=nA,this._prepare_inputs_for_generation=AA;break;case h.Phi3V:case h.ImageAudioTextToText:this.can_generate=!0,this._prepare_inputs_for_generation=AA;break;case h.MultiModality:this.can_generate=!0,this._prepare_inputs_for_generation=hA;break;case h.AutoEncoder:this._forward=cA;break;default:this._forward=sA;break}this.can_generate&&this.forward_params.push("past_key_values"),this.custom_config=this.config["transformers.js_config"]??{}}async dispose(){const p=[];for(const q of Object.values(this.sessions))q?.handler?.dispose&&p.push(q.handler.dispose());return await Promise.all(p)}static async from_pretrained(p,{progress_callback:q=null,config:EA=null,cache_dir:wA=null,local_files_only:mA=!1,revision:TA="main",model_file_name:WA=null,subfolder:ee="onnx",device:Qe=null,dtype:Ge=null,use_external_data_format:Ue=null,session_options:be={}}={}){let ye={progress_callback:q,config:EA,cache_dir:wA,local_files_only:mA,revision:TA,model_file_name:WA,subfolder:ee,device:Qe,dtype:Ge,use_external_data_format:Ue,session_options:be};const Ag=m.get(this),Me=y.get(Ag);EA=ye.config=await I.AutoConfig.from_pretrained(p,ye);let we;if(Me===h.DecoderOnly)we=await Promise.all([x(p,{model:ye.model_file_name??"model"},ye),b(p,{generation_config:"generation_config.json"},ye)]);else if(Me===h.Seq2Seq||Me===h.Vision2Seq)we=await Promise.all([x(p,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},ye),b(p,{generation_config:"generation_config.json"},ye)]);else if(Me===h.MaskGeneration)we=await Promise.all([x(p,{model:"vision_encoder",prompt_encoder_mask_decoder:"prompt_encoder_mask_decoder"},ye)]);else if(Me===h.EncoderDecoder)we=await Promise.all([x(p,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},ye)]);else if(Me===h.ImageTextToText){const We={embed_tokens:"embed_tokens",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};EA.is_encoder_decoder&&(We.model="encoder_model"),we=await Promise.all([x(p,We,ye),b(p,{generation_config:"generation_config.json"},ye)])}else if(Me===h.AudioTextToText){const We={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",decoder_model_merged:"decoder_model_merged"};we=await Promise.all([x(p,We,ye),b(p,{generation_config:"generation_config.json"},ye)])}else if(Me===h.ImageAudioTextToText){const We={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};we=await Promise.all([x(p,We,ye),b(p,{generation_config:"generation_config.json"},ye)])}else if(Me===h.Musicgen)we=await Promise.all([x(p,{model:"text_encoder",decoder_model_merged:"decoder_model_merged",encodec_decode:"encodec_decode"},ye),b(p,{generation_config:"generation_config.json"},ye)]);else if(Me===h.MultiModality)we=await Promise.all([x(p,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"language_model",lm_head:"lm_head",gen_head:"gen_head",gen_img_embeds:"gen_img_embeds",image_decode:"image_decode"},ye),b(p,{generation_config:"generation_config.json"},ye)]);else if(Me===h.Phi3V)we=await Promise.all([x(p,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"model",vision_encoder:"vision_encoder"},ye),b(p,{generation_config:"generation_config.json"},ye)]);else if(Me===h.AutoEncoder)we=await Promise.all([x(p,{encoder_model:"encoder_model",decoder_model:"decoder_model"},ye)]);else{if(Me!==h.EncoderOnly){const We=Ag??EA?.model_type;We!=="custom"&&console.warn(`Model type for '${We}' not found, assuming encoder-only architecture. Please report this at ${B.GITHUB_ISSUE_URL}.`)}we=await Promise.all([x(p,{model:ye.model_file_name??"model"},ye)])}return new this(EA,...we)}async _call(p){return await this.forward(p)}async forward(p){return await this._forward(this,p)}get generation_config(){return this.configs?.generation_config??null}_get_logits_warper(p){const q=new Q.LogitsProcessorList;return p.temperature!==null&&p.temperature!==1&&q.push(new Q.TemperatureLogitsWarper(p.temperature)),p.top_k!==null&&p.top_k!==0&&q.push(new Q.TopKLogitsWarper(p.top_k)),p.top_p!==null&&p.top_p<1&&q.push(new Q.TopPLogitsWarper(p.top_p)),q}_get_logits_processor(p,q,EA=null){const wA=new Q.LogitsProcessorList;if(p.repetition_penalty!==null&&p.repetition_penalty!==1&&wA.push(new Q.RepetitionPenaltyLogitsProcessor(p.repetition_penalty)),p.no_repeat_ngram_size!==null&&p.no_repeat_ngram_size>0&&wA.push(new Q.NoRepeatNGramLogitsProcessor(p.no_repeat_ngram_size)),p.bad_words_ids!==null&&wA.push(new Q.NoBadWordsLogitsProcessor(p.bad_words_ids,p.eos_token_id)),p.min_length!==null&&p.eos_token_id!==null&&p.min_length>0&&wA.push(new Q.MinLengthLogitsProcessor(p.min_length,p.eos_token_id)),p.min_new_tokens!==null&&p.eos_token_id!==null&&p.min_new_tokens>0&&wA.push(new Q.MinNewTokensLengthLogitsProcessor(q,p.min_new_tokens,p.eos_token_id)),p.forced_bos_token_id!==null&&wA.push(new Q.ForcedBOSTokenLogitsProcessor(p.forced_bos_token_id)),p.forced_eos_token_id!==null&&wA.push(new Q.ForcedEOSTokenLogitsProcessor(p.max_length,p.forced_eos_token_id)),p.begin_suppress_tokens!==null){const mA=q>1||p.forced_bos_token_id===null?q:q+1;wA.push(new Q.SuppressTokensAtBeginLogitsProcessor(p.begin_suppress_tokens,mA))}return p.guidance_scale!==null&&p.guidance_scale>1&&wA.push(new Q.ClassifierFreeGuidanceLogitsProcessor(p.guidance_scale)),EA!==null&&wA.extend(EA),wA}_prepare_generation_config(p,q,EA=a.GenerationConfig){const wA={...this.config};for(const TA of["decoder","generator","text_config"])TA in wA&&Object.assign(wA,wA[TA]);const mA=new EA(wA);return Object.assign(mA,this.generation_config??{}),p&&Object.assign(mA,p),q&&Object.assign(mA,(0,o.pick)(q,Object.getOwnPropertyNames(mA))),mA}_get_stopping_criteria(p,q=null){const EA=new f.StoppingCriteriaList;return p.max_length!==null&&EA.push(new f.MaxLengthCriteria(p.max_length,this.config.max_position_embeddings??null)),p.eos_token_id!==null&&EA.push(new f.EosTokenCriteria(p.eos_token_id)),q&&EA.extend(q),EA}_validate_model_class(){if(!this.can_generate){const p=[fs,ms,ys,ps],q=m.get(this.constructor),EA=new Set,wA=this.config.model_type;for(const TA of p){const WA=TA.get(wA);WA&&EA.add(WA[0])}let mA=`The current model class (${q}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`;throw EA.size>0&&(mA+=` Please use the following class instead: ${[...EA].join(", ")}`),Error(mA)}}prepare_inputs_for_generation(...p){return this._prepare_inputs_for_generation(this,...p)}_update_model_kwargs_for_generation({generated_input_ids:p,outputs:q,model_inputs:EA,is_encoder_decoder:wA}){return EA.past_key_values=this.getPastKeyValues(q,EA.past_key_values),EA.input_ids=new r.Tensor("int64",p.flat(),[p.length,1]),wA||(EA.attention_mask=(0,r.cat)([EA.attention_mask,(0,r.ones)([EA.attention_mask.dims[0],1])],1)),EA.position_ids=null,EA}_prepare_model_inputs({inputs:p,bos_token_id:q,model_kwargs:EA}){const wA=(0,o.pick)(EA,this.forward_params),mA=this.main_input_name;if(mA in wA){if(p)throw new Error("`inputs`: {inputs}` were passed alongside {input_name} which is not allowed. Make sure to either pass {inputs} or {input_name}=...")}else wA[mA]=p;return{inputs_tensor:wA[mA],model_inputs:wA,model_input_name:mA}}async _prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:p,model_inputs:q,model_input_name:EA,generation_config:wA}){if(this.sessions.model.inputNames.includes("inputs_embeds")&&!q.inputs_embeds&&"_prepare_inputs_embeds"in this){const{input_ids:TA,pixel_values:WA,attention_mask:ee,...Qe}=q,Ge=await this._prepare_inputs_embeds(q);q={...Qe,...(0,o.pick)(Ge,["inputs_embeds","attention_mask"])}}let{last_hidden_state:mA}=await sA(this,q);if(wA.guidance_scale!==null&&wA.guidance_scale>1)mA=(0,r.cat)([mA,(0,r.full_like)(mA,0)],0),"attention_mask"in q&&(q.attention_mask=(0,r.cat)([q.attention_mask,(0,r.zeros_like)(q.attention_mask)],0));else if(q.decoder_input_ids){const TA=eA(q.decoder_input_ids).dims[0];if(TA!==mA.dims[0]){if(mA.dims[0]!==1)throw new Error(`The encoder outputs have a different batch size (${mA.dims[0]}) than the decoder inputs (${TA}).`);mA=(0,r.cat)(Array.from({length:TA},()=>mA),0)}}return q.encoder_outputs=mA,q}_prepare_decoder_input_ids_for_generation({batch_size:p,model_input_name:q,model_kwargs:EA,decoder_start_token_id:wA,bos_token_id:mA,generation_config:TA}){let{decoder_input_ids:WA,...ee}=EA;if(!(WA instanceof r.Tensor)){if(WA)Array.isArray(WA[0])||(WA=Array.from({length:p},()=>WA));else if(wA??=mA,this.config.model_type==="musicgen")WA=Array.from({length:p*this.config.decoder.num_codebooks},()=>[wA]);else if(Array.isArray(wA)){if(wA.length!==p)throw new Error(`\`decoder_start_token_id\` expcted to have length ${p} but got ${wA.length}`);WA=wA}else WA=Array.from({length:p},()=>[wA]);WA=eA(WA)}return EA.decoder_attention_mask=(0,r.ones_like)(WA),{input_ids:WA,model_inputs:ee}}async generate({inputs:p=null,generation_config:q=null,logits_processor:EA=null,stopping_criteria:wA=null,streamer:mA=null,...TA}){this._validate_model_class(),q=this._prepare_generation_config(q,TA);let{inputs_tensor:WA,model_inputs:ee,model_input_name:Qe}=this._prepare_model_inputs({inputs:p,model_kwargs:TA});const Ge=this.config.is_encoder_decoder;Ge&&("encoder_outputs"in ee||(ee=await this._prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:WA,model_inputs:ee,model_input_name:Qe,generation_config:q})));let Ue;Ge?{input_ids:Ue,model_inputs:ee}=this._prepare_decoder_input_ids_for_generation({batch_size:ee[Qe].dims.at(0),model_input_name:Qe,model_kwargs:ee,decoder_start_token_id:q.decoder_start_token_id,bos_token_id:q.bos_token_id,generation_config:q}):Ue=ee[Qe];let be=Ue.dims.at(-1);q.max_new_tokens!==null&&(q.max_length=be+q.max_new_tokens);const ye=this._get_logits_processor(q,be,EA),Ag=this._get_stopping_criteria(q,wA),Me=ee[Qe].dims.at(0),we=k.LogitsSampler.getSampler(q),We=new Array(Me).fill(0),Cg=Ue.tolist();mA&&mA.put(Cg);let hg,_g={};for(;;){if(ee=this.prepare_inputs_for_generation(Cg,ee,q),hg=await this.forward(ee),q.output_attentions&&q.return_dict_in_generate){const gI=this.getAttentions(hg);for(const MI in gI)MI in _g||(_g[MI]=[]),_g[MI].push(gI[MI])}const He=hg.logits.slice(null,-1,null),ug=ye(Cg,He),Yg=[];for(let gI=0;gIgI))break;ee=this._update_model_kwargs_for_generation({generated_input_ids:Yg,outputs:hg,model_inputs:ee,is_encoder_decoder:Ge})}mA&&mA.end();const Gg=this.getPastKeyValues(hg,ee.past_key_values,!0),Ng=new r.Tensor("int64",Cg.flat(),[Cg.length,Cg[0].length]);if(q.return_dict_in_generate)return{sequences:Ng,past_key_values:Gg,..._g};for(const He of Object.values(hg))He.location==="gpu-buffer"&&He.dispose();return Ng}getPastKeyValues(p,q,EA=!1){const wA=Object.create(null);for(const mA in p)if(mA.startsWith("present")){const TA=mA.replace("present_conv","past_conv").replace("present","past_key_values"),WA=mA.includes("encoder");if(WA&&q?wA[TA]=q[TA]:wA[TA]=p[mA],q&&(!WA||EA)){const ee=q[TA];ee.location==="gpu-buffer"&&ee.dispose()}}return wA}getAttentions(p){const q={};for(const EA of["cross_attentions","encoder_attentions","decoder_attentions"])for(const wA in p)wA.startsWith(EA)&&(EA in q||(q[EA]=[]),q[EA].push(p[wA]));return q}addPastKeyValues(p,q){if(q)Object.assign(p,q);else{const EA=this.sessions.decoder_model_merged??this.sessions.model,wA=(p[this.main_input_name]??p.attention_mask)?.dims?.[0]??1,mA=EA?.config?.kv_cache_dtype??"float32",TA=mA==="float16"?r.DataTypeMap.float16:r.DataTypeMap.float32,WA=(0,I.getCacheShapes)(this.config,{batch_size:wA});for(const ee in WA){const Qe=WA[ee].reduce((Ge,Ue)=>Ge*Ue,1);p[ee]=new r.Tensor(mA,new TA(Qe),WA[ee])}}}async encode_image({pixel_values:p}){return(await T(this.sessions.vision_encoder,{pixel_values:p})).image_features}async encode_text({input_ids:p}){return(await T(this.sessions.embed_tokens,{input_ids:p})).inputs_embeds}async encode_audio({audio_values:p}){return(await T(this.sessions.audio_encoder,{audio_values:p})).audio_features}}class fA{}class bA extends fA{constructor({last_hidden_state:p,hidden_states:q=null,attentions:EA=null}){super(),this.last_hidden_state=p,this.hidden_states=q,this.attentions=EA}}class NA extends V{}class pA extends NA{}class kA extends NA{async _call(p){return new Tg(await super._call(p))}}class MA extends NA{async _call(p){return new _e(await super._call(p))}}class xA extends NA{async _call(p){return new Jg(await super._call(p))}}class vA extends NA{async _call(p){return new qg(await super._call(p))}}class ge extends V{}class SA extends ge{}class re extends ge{async _call(p){return new Tg(await super._call(p))}}class HA extends ge{async _call(p){return new _e(await super._call(p))}}class zA extends ge{async _call(p){return new Jg(await super._call(p))}}class Be extends ge{async _call(p){return new qg(await super._call(p))}}class Ae extends V{}class oe extends Ae{}class se extends Ae{async _call(p){return new Tg(await super._call(p))}}class Ne extends Ae{async _call(p){return new _e(await super._call(p))}}class Pe extends Ae{async _call(p){return new Jg(await super._call(p))}}class pe extends V{}class tg extends pe{}class Og extends pe{}class xg extends V{}class De extends xg{}class gg extends V{}class kg extends gg{}class bI extends gg{async _call(p){return new Tg(await super._call(p))}}class xI extends gg{async _call(p){return new _e(await super._call(p))}}class pI extends gg{async _call(p){return new Jg(await super._call(p))}}class yI extends gg{async _call(p){return new qg(await super._call(p))}}class de extends V{}class J extends de{}class xe extends de{async _call(p){return new Tg(await super._call(p))}}class ke extends de{async _call(p){return new _e(await super._call(p))}}class EI extends de{async _call(p){return new Jg(await super._call(p))}}class N extends de{async _call(p){return new qg(await super._call(p))}}class gA extends V{}class O extends gA{}class IA extends gA{async _call(p){return new Tg(await super._call(p))}}class rA extends gA{async _call(p){return new _e(await super._call(p))}}class yA extends gA{async _call(p){return new Jg(await super._call(p))}}class JA extends gA{async _call(p){return new qg(await super._call(p))}}class ae extends V{}class Ee extends ae{}class Ie extends ae{async _call(p){return new Tg(await super._call(p))}}class Se extends ae{async _call(p){return new _e(await super._call(p))}}class Te extends ae{async _call(p){return new Jg(await super._call(p))}}class wg extends ae{async _call(p){return new qg(await super._call(p))}}class je extends V{}class lg extends je{}class Wg extends je{async _call(p){return new Tg(await super._call(p))}}class Ig extends je{async _call(p){return new _e(await super._call(p))}}class pg extends je{async _call(p){return new Jg(await super._call(p))}}class iI extends je{async _call(p){return new qg(await super._call(p))}}class cg extends V{}class Zg extends cg{}class oI extends cg{async _call(p){return new Tg(await super._call(p))}}class mg extends cg{async _call(p){return new _e(await super._call(p))}}class nI extends cg{async _call(p){return new Jg(await super._call(p))}}class CI extends cg{async _call(p){return new qg(await super._call(p))}}class ag extends V{}class jg extends ag{}class dg extends ag{async _call(p){return new _e(await super._call(p))}}class Mg extends ag{async _call(p){return new Jg(await super._call(p))}}class tI extends ag{async _call(p){return new qg(await super._call(p))}}class lI extends ag{async _call(p){return new Tg(await super._call(p))}}class AI extends V{}class fI extends AI{}class ve extends AI{async _call(p){return new Tg(await super._call(p))}}class qA extends AI{async _call(p){return new _e(await super._call(p))}}class n extends AI{async _call(p){return new Jg(await super._call(p))}}class F extends V{}class K extends F{}class W extends F{async _call(p){return new Tg(await super._call(p))}}class iA extends F{async _call(p){return new _e(await super._call(p))}}class QA extends F{async _call(p){return new qg(await super._call(p))}}class uA extends V{}class RA extends uA{}class Ce extends uA{async _call(p){return new Tg(await super._call(p))}}class Ke extends uA{async _call(p){return new _e(await super._call(p))}}class aA extends uA{async _call(p){return new Jg(await super._call(p))}}class R extends uA{async _call(p){return new qg(await super._call(p))}}class H extends V{}class $ extends H{}class oA extends H{async _call(p){return new Tg(await super._call(p))}}class DA extends H{async _call(p){return new _e(await super._call(p))}}class GA extends H{async _call(p){return new qg(await super._call(p))}}class jA extends V{}class XA extends jA{}class ZA extends jA{async _call(p){return new _e(await super._call(p))}}class $A extends jA{async _call(p){return new qg(await super._call(p))}}class fe extends jA{async _call(p){return new Tg(await super._call(p))}}class me extends V{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"]}class Ye extends me{}class Lg extends me{}class og extends V{}class ng extends og{}class ig extends og{}class eI extends V{}class cI extends eI{}class Pg extends eI{}class sI extends V{}class Qg extends sI{}class Fg extends sI{}class Vg extends sI{async _call(p){return new _e(await super._call(p))}}class zg extends V{}class mI extends zg{}class Rg extends zg{}class dI extends zg{async _call(p){return new _e(await super._call(p))}}class Kg extends zg{}class Bg extends V{}class Sg extends Bg{}class yg extends Bg{}class $g extends V{}class WI extends $g{}class _i extends $g{}class PI extends V{}class zt extends PI{}class $t extends PI{async _call(p){return new Tg(await super._call(p))}}class Xt extends PI{async _call(p){return new _e(await super._call(p))}}class Zt extends PI{async _call(p){return new Jg(await super._call(p))}}class Ao extends PI{async _call(p){return new qg(await super._call(p))}}class jI extends V{}class eo extends jI{}class go extends jI{async _call(p){return new Tg(await super._call(p))}}class Io extends jI{async _call(p){return new _e(await super._call(p))}}class io extends jI{async _call(p){return new Jg(await super._call(p))}}class to extends jI{async _call(p){return new qg(await super._call(p))}}class VI extends V{}class tt extends VI{}class ot extends VI{async _call(p){return new Tg(await super._call(p))}}class Ct extends VI{async _call(p){return new _e(await super._call(p))}}class oo extends VI{async _call(p){return new Jg(await super._call(p))}}class Co extends VI{async _call(p){return new qg(await super._call(p))}}class Gi extends V{}class st extends Gi{}class zI extends Gi{}class Bt extends V{requires_attention_mask=!1;main_input_name="input_features";forward_params=["input_features","attention_mask","decoder_input_ids","decoder_attention_mask","past_key_values"]}class rt extends Bt{}class at extends Bt{_prepare_generation_config(p,q){return super._prepare_generation_config(p,q,D.WhisperGenerationConfig)}_retrieve_init_tokens(p){const q=[p.decoder_start_token_id];let EA=p.language;const wA=p.task;if(p.is_multilingual){EA||(console.warn("No language specified - defaulting to English (en)."),EA="en");const TA=`<|${(0,G.whisper_language_to_code)(EA)}|>`;q.push(p.lang_to_id[TA]),q.push(p.task_to_id[wA??"transcribe"])}else if(EA||wA)throw new Error("Cannot specify `task` or `language` for an English-only model. If the model is intended to be multilingual, pass `is_multilingual=true` to generate, or update the generation config.");return!p.return_timestamps&&p.no_timestamps_token_id&&q.at(-1)!==p.no_timestamps_token_id?q.push(p.no_timestamps_token_id):p.return_timestamps&&q.at(-1)===p.no_timestamps_token_id&&(console.warn("<|notimestamps|> prompt token is removed from generation_config since `return_timestamps` is set to `true`."),q.pop()),q.filter(mA=>mA!=null)}async generate({inputs:p=null,generation_config:q=null,logits_processor:EA=null,stopping_criteria:wA=null,...mA}){q=this._prepare_generation_config(q,mA);const TA=mA.decoder_input_ids??this._retrieve_init_tokens(q);if(q.return_timestamps&&(EA??=new Q.LogitsProcessorList,EA.push(new Q.WhisperTimeStampLogitsProcessor(q,TA))),q.begin_suppress_tokens&&(EA??=new Q.LogitsProcessorList,EA.push(new Q.SuppressTokensAtBeginLogitsProcessor(q.begin_suppress_tokens,TA.length))),q.return_token_timestamps){if(!q.alignment_heads)throw new Error("Model generation config has no `alignment_heads`, token-level timestamps not available. See https://gist.github.com/hollance/42e32852f24243b748ae6bc1f985b13a on how to add this property to the generation config.");q.task==="translate"&&console.warn("Token-level timestamps may not be reliable for task 'translate'."),q.output_attentions=!0,q.return_dict_in_generate=!0}const WA=await super.generate({inputs:p,generation_config:q,logits_processor:EA,decoder_input_ids:TA,...mA});return q.return_token_timestamps&&(WA.token_timestamps=this._extract_token_timestamps(WA,q.alignment_heads,q.num_frames)),WA}_extract_token_timestamps(p,q,EA=null,wA=.02){if(!p.cross_attentions)throw new Error("Model outputs must contain cross attentions to extract timestamps. This is most likely because the model was not exported with `output_attentions=True`.");EA==null&&console.warn("`num_frames` has not been set, meaning the entire audio will be analyzed. This may lead to inaccurate token-level timestamps for short audios (< 30 seconds).");let mA=this.config.median_filter_width;mA===void 0&&(console.warn("Model config has no `median_filter_width`, using default value of 7."),mA=7);const TA=p.cross_attentions,WA=Array.from({length:this.config.decoder_layers},(Me,we)=>(0,r.cat)(TA.map(We=>We[we]),2)),ee=(0,r.stack)(q.map(([Me,we])=>{if(Me>=WA.length)throw new Error(`Layer index ${Me} is out of bounds for cross attentions (length ${WA.length}).`);return EA?WA[Me].slice(null,we,null,[0,EA]):WA[Me].slice(null,we)})).transpose(1,0,2,3),[Qe,Ge]=(0,r.std_mean)(ee,-2,0,!0),Ue=ee.clone();for(let Me=0;MeWe[He+1]-We[He]),_g=(0,o.mergeArrays)([1],hg).map(Ng=>!!Ng),Gg=[];for(let Ng=0;Ng<_g.length;++Ng)_g[Ng]&&Gg.push(Cg[Ng]*wA);Ag[Me].data.set(Gg,1)}return Ag}}class so extends at{}class Qt extends V{requires_attention_mask=!1;main_input_name="input_values";forward_params=["input_values","decoder_input_ids","past_key_values"]}class Et extends Qt{}class nt extends Qt{}class lt extends V{main_input_name="pixel_values";forward_params=["pixel_values","decoder_input_ids","encoder_hidden_states","past_key_values"]}class ct extends V{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class ki extends ct{_merge_input_ids_with_image_features(p){const q=p.image_features.dims.at(-1),EA=p.image_features.view(-1,q);return U({image_token_id:this.config.image_token_index,...p,image_features:EA})}}class Bo extends ki{}class ro extends ki{}class ao extends V{forward_params=["input_ids","inputs_embeds","attention_mask","pixel_values","encoder_outputs","decoder_input_ids","decoder_inputs_embeds","decoder_attention_mask","past_key_values"];main_input_name="inputs_embeds"}class Qo extends ao{_merge_input_ids_with_image_features({inputs_embeds:p,image_features:q,input_ids:EA,attention_mask:wA}){return{inputs_embeds:(0,r.cat)([q,p],1),attention_mask:(0,r.cat)([(0,r.ones)(q.dims.slice(0,2)),wA],1)}}async _prepare_inputs_embeds({input_ids:p,pixel_values:q,inputs_embeds:EA,attention_mask:wA}){if(!p&&!q)throw new Error("Either `input_ids` or `pixel_values` should be provided.");let mA,TA;return p&&(mA=await this.encode_text({input_ids:p})),q&&(TA=await this.encode_image({pixel_values:q})),mA&&TA?{inputs_embeds:EA,attention_mask:wA}=this._merge_input_ids_with_image_features({inputs_embeds:mA,image_features:TA,input_ids:p,attention_mask:wA}):EA=mA||TA,{inputs_embeds:EA,attention_mask:wA}}async forward({input_ids:p,pixel_values:q,attention_mask:EA,decoder_input_ids:wA,decoder_attention_mask:mA,encoder_outputs:TA,past_key_values:WA,inputs_embeds:ee,decoder_inputs_embeds:Qe}){if(ee||({inputs_embeds:ee,attention_mask:EA}=await this._prepare_inputs_embeds({input_ids:p,pixel_values:q,inputs_embeds:ee,attention_mask:EA})),!TA){let{last_hidden_state:be}=await sA(this,{inputs_embeds:ee,attention_mask:EA});TA=be}if(!Qe){if(!wA)throw new Error("Either `decoder_input_ids` or `decoder_inputs_embeds` should be provided.");Qe=await this.encode_text({input_ids:wA})}return await dA(this,{inputs_embeds:Qe,attention_mask:mA,encoder_attention_mask:EA,encoder_hidden_states:TA,past_key_values:WA},!0)}}class Eo extends V{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class no extends Eo{_merge_input_ids_with_image_features(p){const q=p.image_features.dims.at(-1),EA=p.image_features.view(-1,q);return U({image_token_id:this.config.image_token_index,...p,image_features:EA})}}class ti extends ct{_merge_input_ids_with_image_features(p){const q=p.image_features.dims.at(-1),EA=p.image_features.view(-1,q);return U({image_token_id:this.config.image_token_index,...p,image_features:EA})}}class $I extends V{forward_params=["input_ids","attention_mask","inputs_embeds","per_layer_inputs","position_ids","pixel_values","input_features","input_features_mask","past_key_values"]}class Li extends $I{async forward({input_ids:p=null,attention_mask:q=null,pixel_values:EA=null,input_features:wA=null,input_features_mask:mA=null,position_ids:TA=null,inputs_embeds:WA=null,per_layer_inputs:ee=null,past_key_values:Qe=null,generation_config:Ge=null,logits_processor:Ue=null,...be}){if((!WA||!ee)&&({inputs_embeds:WA,per_layer_inputs:ee}=await T(this.sessions.embed_tokens,{input_ids:p}),p.dims[1]!==1)){if(EA){const{image_features:Ag}=await T(this.sessions.vision_encoder,{pixel_values:EA});({inputs_embeds:WA,attention_mask:q}=this._merge_input_ids_with_image_features({image_features:Ag,inputs_embeds:WA,input_ids:p,attention_mask:q}))}if(wA){const{audio_features:Ag}=await T(this.sessions.audio_encoder,{input_features:wA,input_features_mask:mA});({inputs_embeds:WA,attention_mask:q}=this._merge_input_ids_with_audio_features({audio_features:Ag,inputs_embeds:WA,input_ids:p,attention_mask:q}))}}return await dA(this,{inputs_embeds:WA,per_layer_inputs:ee,past_key_values:Qe,attention_mask:q,position_ids:TA,generation_config:Ge,logits_processor:Ue},!0)}_merge_input_ids_with_image_features(p){const q=p.image_features.dims.at(-1),EA=p.image_features.view(-1,q);return U({image_token_id:this.config.image_token_id,...p,image_features:EA})}_merge_input_ids_with_audio_features(p){const q=p.audio_features.dims.at(-1),EA=p.audio_features.view(-1,q);return z({audio_token_id:this.config.audio_token_id,...p,audio_features:EA})}}class lo extends V{forward_params=["input_ids","attention_mask","pixel_values","pixel_attention_mask","position_ids","past_key_values"]}class Ki extends lo{async encode_image({pixel_values:p,pixel_attention_mask:q}){return(await T(this.sessions.vision_encoder,{pixel_values:p,pixel_attention_mask:q})).image_features}_merge_input_ids_with_image_features(p){const q=p.image_features.dims.at(-1),EA=p.image_features.view(-1,q);return U({image_token_id:this.config.image_token_id,...p,image_features:EA})}}class oi extends Ki{}class Ui extends V{forward_params=["input_ids","inputs_embeds","attention_mask","position_ids","pixel_values","image_sizes","past_key_values"]}class Ji extends Ui{async forward({input_ids:p=null,attention_mask:q=null,pixel_values:EA=null,image_sizes:wA=null,position_ids:mA=null,inputs_embeds:TA=null,past_key_values:WA=null,generation_config:ee=null,logits_processor:Qe=null,...Ge}){if(!TA){let be;if(EA&&p.dims[1]!==1){if(!wA)throw new Error("`image_sizes` must be provided when `pixel_values` is provided.");({image_features:be}=await T(this.sessions.vision_encoder,{pixel_values:EA,image_sizes:wA}))}else{const ye=this.config.normalized_config.hidden_size;be=new r.Tensor("float32",[],[0,ye])}({inputs_embeds:TA}=await T(this.sessions.prepare_inputs_embeds,{input_ids:p,image_features:be}))}return await dA(this,{inputs_embeds:TA,past_key_values:WA,attention_mask:q,position_ids:mA,generation_config:ee,logits_processor:Qe},!1)}}class TI extends V{}class dt extends TI{}class co extends TI{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"text_model"})}}class ht extends TI{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"text_model"})}}class ho extends TI{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"vision_model"})}}class uo extends TI{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"vision_model"})}}class bi extends V{}class ut extends bi{}class Ci extends bi{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"text_model"})}}class ue extends TI{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"vision_model"})}}class Do extends V{}class Dt extends Do{}class si extends V{}class Bi extends si{async forward(p){const q=!p.input_ids,EA=!p.pixel_values;if(q&&EA)throw new Error("Either `input_ids` or `pixel_values` should be provided.");if(q&&(p.input_ids=(0,r.ones)([p.pixel_values.dims[0],1])),EA){const{image_size:Qe}=this.config.vision_config;p.pixel_values=(0,r.full)([0,3,Qe,Qe],0)}const{text_embeddings:wA,image_embeddings:mA,l2norm_text_embeddings:TA,l2norm_image_embeddings:WA}=await super.forward(p),ee={};return q||(ee.text_embeddings=wA,ee.l2norm_text_embeddings=TA),EA||(ee.image_embeddings=mA,ee.l2norm_image_embeddings=WA),ee}}class BI extends si{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"text_model"})}}class ri extends si{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"vision_model"})}}class ai extends V{}class wt extends ai{}class pt extends ai{}class xi extends V{}class Ti extends xi{}class yt extends xi{}class Yi extends V{}class ft extends Yi{}class Qi extends Yi{}class Ei extends V{}class Hi extends Ei{}class mt extends Ei{}class Pi extends V{}class Mt extends Pi{}class Ft extends Pi{}class vi extends V{}class E extends vi{}class S extends vi{}class L extends V{}class Y extends L{}class j extends L{}class lA extends V{}class KA extends lA{}class OA extends lA{}class te extends V{}class ne extends te{}class Re extends te{}class qe extends V{}class Xe extends qe{}class Ug extends qe{}class YI extends V{}class wo extends YI{}class Sr extends YI{}class QC extends V{}class Nr extends QC{}class Rr extends QC{}class EC extends V{}class _r extends EC{}class Gr extends EC{}class nC extends V{}class kr extends nC{}class Lr extends nC{}class lC extends V{}class Kr extends lC{}class Ur extends lC{}class cC extends V{}class Jr extends cC{}class br extends cC{}class dC extends V{}class xr extends dC{}class Tr extends dC{}class hC extends V{}class Yr extends hC{}class Hr extends hC{}class uC extends V{}class Pr extends uC{}class vr extends uC{}class DC extends V{}class qr extends DC{}class Or extends DC{}class wC extends V{}class Wr extends wC{}class jr extends wC{}class pC extends V{}class Vr extends pC{}class zr extends pC{}class yC extends V{}class $r extends yC{}class Xr extends yC{}class fC extends V{}class Zr extends fC{}class Aa extends fC{}class mC extends V{}class ea extends mC{}class ga extends mC{}class MC extends V{}class Ia extends MC{}class ia extends MC{}class ta extends V{forward_params=["input_ids","attention_mask","position_ids","past_key_values","pixel_values","image_grid_thw"]}class oa extends ta{get_rope_index(p,q,EA,wA){const{vision_config:mA,image_token_id:TA,video_token_id:WA,vision_start_token_id:ee}=this.config,Qe=mA.spatial_merge_size??2,Ge=[];if(q||EA){let Ue=p.tolist();wA||(wA=(0,r.ones_like)(p));const be=wA.tolist(),ye=Array.from({length:3},Cg=>Array.from({length:p.dims[0]},hg=>Array.from({length:p.dims[1]},_g=>1))),Ag=q?q.tolist():[],Me=EA?EA.tolist():[];let we=0,We=0;for(let Cg=0;Cgbe[Cg][bg]==1),Gg=hg.reduce((Eg,bg,ZI)=>(bg==ee&&Eg.push(ZI),Eg),[]).map(Eg=>hg[Eg+1]),Ng=Gg.filter(Eg=>Eg==TA).length,He=Gg.filter(Eg=>Eg==WA).length;let ug=[],Yg=0,li=Ng,gI=He;for(let Eg=0;EgFI>Yg&&di==TA),ZI=hg.findIndex((di,FI)=>FI>Yg&&di==WA),ci=li>0&&bg!==-1?bg:hg.length+1,Vi=gI>0&&ZI!==-1?ZI:hg.length+1;let bo,Ms,Fs,Ss;ci0?(0,c.max)(ug.at(-1))[0]+1:0;ug.push(Array.from({length:3*Rs},(di,FI)=>nl+FI%Rs));const _s=Rs+nl,To=Gp*Ns*xo,kp=Array.from({length:To},(di,FI)=>_s+Math.floor(FI/(Ns*xo))),Lp=Array.from({length:To},(di,FI)=>_s+Math.floor(FI/xo)%Ns),Kp=Array.from({length:To},(di,FI)=>_s+FI%xo);ug.push([kp,Lp,Kp].flat()),Yg=bo+To}if(Yg0?(0,c.max)(ug.at(-1))[0]+1:0,bg=hg.length-Yg;ug.push(Array.from({length:3*bg},(ZI,ci)=>Eg+ci%bg))}const MI=ug.reduce((Eg,bg)=>Eg+bg.length,0),Wi=new Array(MI);let ji=0;for(let Eg=0;Eg<3;++Eg)for(let bg=0;bgUe[we%Ue.length]),Ag=Array.from({length:be[0]},(Me,we)=>(0,c.max)(Ue.subarray(be[1]*we,be[1]*(we+1)))[0]+1n+BigInt(be[1]));return[new r.Tensor("int64",ye,[3,...be]),new r.Tensor("int64",Ag,[Ag.length,1])]}else{const[Ue,be]=p.dims,ye=BigInt64Array.from({length:3*Ue*be},(Ag,Me)=>BigInt(Math.floor(Me%be/Ue)));return[new r.Tensor("int64",ye,[3,...p.dims]),(0,r.zeros)([Ue,1])]}}async encode_image({pixel_values:p,image_grid_thw:q}){return(await T(this.sessions.vision_encoder,{pixel_values:p,grid_thw:q})).image_features}_merge_input_ids_with_image_features(p){return U({image_token_id:this.config.image_token_id,...p})}prepare_inputs_for_generation(p,q,EA){if(q.attention_mask&&!q.position_ids)if(!q.past_key_values)[q.position_ids,q.rope_deltas]=this.get_rope_index(q.input_ids,q.image_grid_thw,q.video_grid_thw,q.attention_mask);else{q.pixel_values=null;const wA=BigInt(Object.values(q.past_key_values)[0].dims.at(-2)),mA=q.rope_deltas.map(TA=>wA+TA);q.position_ids=(0,r.stack)([mA,mA,mA],0)}return q}}class FC extends V{}class Ca extends FC{}class sa extends FC{}class SC extends V{}class Ba extends SC{}class ra extends SC{}class NC extends V{}class aa extends NC{}class Qa extends NC{}class RC extends V{}class Ea extends RC{}class na extends RC{}class _C extends V{}class la extends _C{}class ca extends _C{}class GC extends V{}class da extends GC{}class ha extends GC{async _call(p){return new _e(await super._call(p))}}class kC extends V{}class ua extends kC{}class Da extends kC{async _call(p){return new _e(await super._call(p))}}class wa extends V{}class pa extends wa{}class LC extends V{}class ya extends LC{}class fa extends LC{async _call(p){return new _e(await super._call(p))}}class ma extends V{}class Ma extends ma{}class KC extends V{}class Fa extends KC{}class Sa extends KC{async _call(p){return new _e(await super._call(p))}}class Na extends V{}class Ra extends Na{}class UC extends V{}class _a extends UC{}class Ga extends UC{async _call(p){return new _e(await super._call(p))}}class ka extends V{}class La extends ka{async _call(p){return new Ql(await super._call(p))}}class JC extends V{}class Ka extends JC{}class Ua extends JC{async _call(p){return new _e(await super._call(p))}}class bC extends V{}class Ja extends bC{}class ba extends bC{async _call(p){return new _e(await super._call(p))}}class xC extends V{}class xa extends xC{}class Ta extends xC{}class TC extends V{}class Ya extends TC{}class Ha extends TC{}class YC extends V{}class Pa extends YC{}class va extends YC{async _call(p){return new _e(await super._call(p))}}class po extends V{}class qa extends po{}class Oa extends po{async _call(p){return new PC(await super._call(p))}}class HC extends po{async _call(p){return new Wa(await super._call(p))}}class PC extends fA{constructor({logits:p,pred_boxes:q}){super(),this.logits=p,this.pred_boxes=q}}class Wa extends fA{constructor({logits:p,pred_boxes:q,pred_masks:EA}){super(),this.logits=p,this.pred_boxes=q,this.pred_masks=EA}}class vC extends V{}class ja extends vC{}class Va extends vC{async _call(p){return new St(await super._call(p))}}class St extends fA{constructor({logits:p,pred_boxes:q}){super(),this.logits=p,this.pred_boxes=q}}class qC extends V{}class za extends qC{}class $a extends qC{async _call(p){return new Xa(await super._call(p))}}class Xa extends St{}class OC extends V{}class Za extends OC{}class AQ extends OC{async _call(p){return new eQ(await super._call(p))}}class eQ extends St{}class WC extends V{}class gQ extends WC{}class IQ extends WC{async _call(p){return new St(await super._call(p))}}class jC extends V{}class iQ extends jC{}class tQ extends jC{async _call(p){return new oQ(await super._call(p))}}class oQ extends PC{}class VC extends V{}class CQ extends VC{}class sQ extends VC{async _call(p){return new _e(await super._call(p))}}class zC extends V{}class BQ extends zC{}class rQ extends zC{async _call(p){return new _e(await super._call(p))}}class $C extends V{}class aQ extends $C{}class QQ extends $C{async _call(p){return new _e(await super._call(p))}}class yo extends V{}class EQ extends yo{}class nQ extends yo{async _call(p){return new _e(await super._call(p))}}class lQ extends yo{}class XC extends V{}class cQ extends XC{}class dQ extends XC{}class ZC extends V{}class hQ extends ZC{}class uQ extends ZC{}class DQ extends V{}class wQ extends DQ{}class fo extends V{}class pQ extends fo{}class yQ extends fo{}class fQ extends fo{}class mQ extends V{}class MQ extends mQ{}class FQ extends V{}class SQ extends FQ{}class NQ extends V{}class RQ extends NQ{}class As extends V{}class _Q extends As{}class GQ extends As{}class es extends V{}class kQ extends es{}class LQ extends es{}class KQ extends V{}class UQ extends KQ{}class gs extends V{}class JQ extends gs{}class bQ extends gs{async _call(p){return new _e(await super._call(p))}}class Is extends V{}class xQ extends Is{}class TQ extends Is{async _call(p){return new _e(await super._call(p))}}class is extends V{}class YQ extends is{}class HQ extends is{async _call(p){return new _e(await super._call(p))}}class ts extends V{}class PQ extends ts{}class vQ extends ts{async _call(p){return new _e(await super._call(p))}}class qQ extends V{}class OQ extends qQ{}class os extends V{}class WQ extends os{}class jQ extends os{async _call(p){return new VQ(await super._call(p))}}class VQ extends fA{constructor({logits:p,pred_boxes:q}){super(),this.logits=p,this.pred_boxes=q}}class zQ extends V{}class $Q extends zQ{async get_image_embeddings({pixel_values:p}){return await sA(this,{pixel_values:p})}async forward(p){if((!p.image_embeddings||!p.image_positional_embeddings)&&(p={...p,...await this.get_image_embeddings(p)}),!p.input_labels&&p.input_points){const EA=p.input_points.dims.slice(0,-1),wA=EA.reduce((mA,TA)=>mA*TA,1);p.input_labels=new r.Tensor("int64",new BigInt64Array(wA).fill(1n),EA)}const q={image_embeddings:p.image_embeddings,image_positional_embeddings:p.image_positional_embeddings};return p.input_points&&(q.input_points=p.input_points),p.input_labels&&(q.input_labels=p.input_labels),p.input_boxes&&(q.input_boxes=p.input_boxes),await T(this.sessions.prompt_encoder_mask_decoder,q)}async _call(p){return new XQ(await super._call(p))}}class XQ extends fA{constructor({iou_scores:p,pred_masks:q}){super(),this.iou_scores=p,this.pred_masks=q}}class Cs extends V{}class ZQ extends Cs{}class AE extends Cs{}class ss extends V{}class eE extends ss{}class gE extends ss{}class XI extends V{}class IE extends XI{}class iE extends XI{async _call(p){return new ni(await super._call(p))}}class tE extends XI{async _call(p){return new _e(await super._call(p))}}class oE extends XI{async _call(p){return new Jg(await super._call(p))}}class Bs extends V{}class CE extends Bs{}class sE extends Bs{async _call(p){return new Jg(await super._call(p))}}class BE extends V{}class rE extends BE{}class mo extends V{}class aE extends mo{}class QE extends mo{async _call(p){return new ni(await super._call(p))}}class EE extends mo{async _call(p){return new _e(await super._call(p))}}class Nt extends V{}class nE extends Nt{}class lE extends Nt{async _call(p){return new ni(await super._call(p))}}class cE extends Nt{async _call(p){return new _e(await super._call(p))}}class dE extends Nt{async _call(p){return new Jg(await super._call(p))}}class Mo extends V{}class hE extends Mo{}class uE extends Mo{async _call(p){return new ni(await super._call(p))}}class DE extends Mo{async _call(p){return new _e(await super._call(p))}}class x0 extends V{}class wE extends XI{}class pE extends XI{async _call(p){return new ni(await super._call(p))}}class yE extends XI{async _call(p){return new _e(await super._call(p))}}class qi extends V{}class fE extends qi{}class mE extends qi{async _call(p){return new ni(await super._call(p))}}class ME extends qi{async _call(p){return new _e(await super._call(p))}}class FE extends qi{async _call(p){return new al(await super._call(p))}}class SE extends qi{async _call(p){return new Jg(await super._call(p))}}class NE extends V{}class RE extends NE{}class Fo extends V{}class T0 extends Fo{}class _E extends Fo{}class GE extends Fo{async generate_speech(p,q,{threshold:EA=.5,minlenratio:wA=0,maxlenratio:mA=20,vocoder:TA=null}={}){const WA={input_ids:p},{encoder_outputs:ee,encoder_attention_mask:Qe}=await sA(this,WA),Ge=ee.dims[1]/this.config.reduction_factor,Ue=Math.floor(Ge*mA),be=Math.floor(Ge*wA),ye=this.config.num_mel_bins;let Ag=[],Me=null,we=null,We=0;for(;;){++We;const _g=tA(!!we);let Gg;we?Gg=we.output_sequence_out:Gg=new r.Tensor("float32",new Float32Array(ye),[1,1,ye]);let Ng={use_cache_branch:_g,output_sequence:Gg,encoder_attention_mask:Qe,speaker_embeddings:q,encoder_hidden_states:ee};this.addPastKeyValues(Ng,Me),we=await T(this.sessions.decoder_model_merged,Ng),Me=this.getPastKeyValues(we,Me);const{prob:He,spectrum:ug}=we;if(Ag.push(ug),We>=be&&(Array.from(He.data).filter(Yg=>Yg>=EA).length>0||We>=Ue))break}const Cg=(0,r.cat)(Ag),{waveform:hg}=await T(TA.sessions.model,{spectrogram:Cg});return{spectrogram:Cg,waveform:hg}}}class kE extends V{main_input_name="spectrogram"}class LE extends V{}class KE extends LE{}class rs extends V{}class UE extends rs{}class JE extends rs{}class as extends V{}class bE extends as{}class xE extends as{}class Qs extends V{}class TE extends Qs{}class YE extends Qs{}class Es extends V{}class HE extends Es{}class PE extends Es{}class So extends V{}class vE extends So{}class qE extends So{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"text_model"})}}class OE extends So{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"audio_model"})}}class WE extends V{}class ns extends WE{async _call(p){return new El(await super._call(p))}}class No extends V{}class Y0 extends No{}class jE extends No{}class VE extends No{}class ls extends V{}class zE extends ls{}class $E extends ls{}class cs extends V{}class XE extends cs{}class ZE extends cs{async _call(p){return new _e(await super._call(p))}}class ds extends V{}class H0 extends ds{}class P0 extends ds{}class hs extends V{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"];_apply_and_filter_by_delay_pattern_mask(p){const[q,EA]=p.dims,wA=this.config.decoder.num_codebooks,mA=EA-wA;let TA=0;for(let Qe=0;Qe0&&be<=mA&&(p.data[TA++]=p.data[Qe])}const WA=Math.floor(q/wA),ee=TA/(WA*wA);return new r.Tensor(p.type,p.data.slice(0,TA),[WA,wA,ee])}prepare_inputs_for_generation(p,q,EA){let wA=structuredClone(p);for(let TA=0;TA=WA&&(wA[TA][WA]=BigInt(this.config.decoder.pad_token_id));return EA.guidance_scale!==null&&EA.guidance_scale>1&&(wA=wA.concat(wA)),super.prepare_inputs_for_generation(wA,q,EA)}async generate(p){const q=await super.generate(p),EA=this._apply_and_filter_by_delay_pattern_mask(q).unsqueeze_(0),{audio_values:wA}=await T(this.sessions.encodec_decode,{audio_codes:EA});return wA}}class Ro extends V{}class An extends Ro{}class en extends Ro{async _call(p){return new _e(await super._call(p))}}class gn extends Ro{}class _o extends V{}class In extends _o{}class tn extends _o{async _call(p){return new _e(await super._call(p))}}class on extends _o{}class Go extends V{}class Cn extends Go{}class sn extends Go{async _call(p){return new _e(await super._call(p))}}class Bn extends Go{}class ko extends V{}class rn extends ko{}class an extends ko{async _call(p){return new _e(await super._call(p))}}class Qn extends ko{}class En extends V{}class nn extends En{}class ln extends V{}class cn extends ln{forward_params=["input_ids","pixel_values","images_seq_mask","images_emb_mask","attention_mask","position_ids","past_key_values"];constructor(...p){super(...p),this._generation_mode="text"}async forward(p){const q=this._generation_mode??"text";let EA;if(q==="text"||!p.past_key_values){const ee=this.sessions.prepare_inputs_embeds,Qe=(0,o.pick)(p,ee.inputNames);EA=await T(ee,Qe)}else{const ee=this.sessions.gen_img_embeds,Qe=(0,o.pick)({image_ids:p.input_ids},ee.inputNames);EA=await T(ee,Qe)}const wA={...p,...EA},mA=await dA(this,wA),TA=this.sessions[q==="text"?"lm_head":"gen_head"];if(!TA)throw new Error(`Unable to find "${TA}" generation head`);const WA=await T(TA,(0,o.pick)(mA,TA.inputNames));return{...EA,...mA,...WA}}async generate(p){return this._generation_mode="text",super.generate(p)}async generate_images(p){this._generation_mode="image";const q=(p.inputs??p[this.main_input_name]).dims[1],wA=(await super.generate(p)).slice(null,[q,null]),mA=this.sessions.image_decode,{decoded_image:TA}=await T(mA,{generated_tokens:wA}),WA=TA.add_(1).mul_(255/2).clamp_(0,255).to("uint8"),ee=[];for(const Qe of WA){const Ge=d.RawImage.fromTensor(Qe);ee.push(Ge)}return ee}}class dn extends fA{constructor({char_logits:p,bpe_logits:q,wp_logits:EA}){super(),this.char_logits=p,this.bpe_logits=q,this.wp_logits=EA}get logits(){return[this.char_logits,this.bpe_logits,this.wp_logits]}}class hn extends V{}class un extends hn{async _call(p){return new dn(await super._call(p))}}class us extends V{}class Dn extends us{}class wn extends us{}class Ds extends V{}class pn extends Ds{}class yn extends Ds{}class fn extends V{forward_params=["input_ids","attention_mask","position_ids","audio_values","past_key_values"]}class ws extends fn{_merge_input_ids_with_audio_features(p){const q=p.audio_features.dims.at(-1),EA=p.audio_features.view(-1,q);return z({audio_token_id:this.config.ignore_index??this.config.audio_token_id,...p,audio_features:EA})}}class mn extends ws{}class Lo extends V{main_input_name="input_values";forward_params=["input_values"]}class Mn extends fA{constructor({audio_codes:p}){super(),this.audio_codes=p}}class Fn extends fA{constructor({audio_values:p}){super(),this.audio_values=p}}class Sn extends Lo{async encode(p){return new Mn(await T(this.sessions.encoder_model,p))}async decode(p){return new Fn(await T(this.sessions.decoder_model,p))}}class Nn extends Lo{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"encoder_model"})}}class Rn extends Lo{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"decoder_model"})}}class Ko extends V{main_input_name="input_values";forward_params=["input_values"]}class _n extends fA{constructor({audio_codes:p}){super(),this.audio_codes=p}}class Gn extends fA{constructor({audio_values:p}){super(),this.audio_values=p}}class kn extends Ko{async encode(p){return new _n(await T(this.sessions.encoder_model,p))}async decode(p){return new Gn(await T(this.sessions.decoder_model,p))}}class Ln extends Ko{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"encoder_model"})}}class Kn extends Ko{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"decoder_model"})}}class Uo extends V{main_input_name="input_values";forward_params=["input_values"]}class Un extends Uo{async encode(p){return await T(this.sessions.encoder_model,p)}async decode(p){return await T(this.sessions.decoder_model,p)}}class Jn extends Uo{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"encoder_model"})}}class bn extends Uo{static async from_pretrained(p,q={}){return super.from_pretrained(p,{...q,model_file_name:q.model_file_name??"decoder_model"})}}class Ze{static MODEL_CLASS_MAPPINGS=null;static BASE_IF_FAIL=!1;static async from_pretrained(p,{progress_callback:q=null,config:EA=null,cache_dir:wA=null,local_files_only:mA=!1,revision:TA="main",model_file_name:WA=null,subfolder:ee="onnx",device:Qe=null,dtype:Ge=null,use_external_data_format:Ue=null,session_options:be={}}={}){const ye={progress_callback:q,config:EA,cache_dir:wA,local_files_only:mA,revision:TA,model_file_name:WA,subfolder:ee,device:Qe,dtype:Ge,use_external_data_format:Ue,session_options:be};if(ye.config=await I.AutoConfig.from_pretrained(p,ye),!this.MODEL_CLASS_MAPPINGS)throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: "+this.name);const Ag=ye.config.model_type;for(const Me of this.MODEL_CLASS_MAPPINGS){let we=Me.get(Ag);if(!we){for(const We of Me.values())if(We[0]===Ag){we=We;break}if(!we)continue}return await we[1].from_pretrained(p,ye)}if(this.BASE_IF_FAIL)return rl.has(Ag)||console.warn(`Unknown model class "${Ag}", attempting to construct from base class.`),await V.from_pretrained(p,ye);throw Error(`Unsupported model type: ${Ag}`)}}const v0=new Map([["bert",["BertModel",pA]],["neobert",["NeoBertModel",SA]],["modernbert",["ModernBertModel",oe]],["nomic_bert",["NomicBertModel",De]],["roformer",["RoFormerModel",kg]],["electra",["ElectraModel",O]],["esm",["EsmModel",fI]],["convbert",["ConvBertModel",J]],["camembert",["CamembertModel",Ee]],["deberta",["DebertaModel",lg]],["deberta-v2",["DebertaV2Model",Zg]],["mpnet",["MPNetModel",RA]],["albert",["AlbertModel",XA]],["distilbert",["DistilBertModel",jg]],["roberta",["RobertaModel",zt]],["xlm",["XLMModel",eo]],["xlm-roberta",["XLMRobertaModel",tt]],["clap",["ClapModel",vE]],["clip",["CLIPModel",dt]],["clipseg",["CLIPSegModel",wt]],["chinese_clip",["ChineseCLIPModel",Dt]],["siglip",["SiglipModel",ut]],["jina_clip",["JinaCLIPModel",Bi]],["mobilebert",["MobileBertModel",K]],["squeezebert",["SqueezeBertModel",$]],["wav2vec2",["Wav2Vec2Model",IE]],["wav2vec2-bert",["Wav2Vec2BertModel",hE]],["unispeech",["UniSpeechModel",aE]],["unispeech-sat",["UniSpeechSatModel",nE]],["hubert",["HubertModel",wE]],["wavlm",["WavLMModel",fE]],["audio-spectrogram-transformer",["ASTModel",st]],["vits",["VitsModel",ns]],["pyannote",["PyAnnoteModel",CE]],["wespeaker-resnet",["WeSpeakerResNetModel",rE]],["detr",["DetrModel",qa]],["rt_detr",["RTDetrModel",ja]],["rt_detr_v2",["RTDetrV2Model",za]],["rf_detr",["RFDetrModel",Za]],["d_fine",["DFineModel",gQ]],["table-transformer",["TableTransformerModel",iQ]],["vit",["ViTModel",da]],["ijepa",["IJepaModel",ua]],["pvt",["PvtModel",ya]],["vit_msn",["ViTMSNModel",Fa]],["vit_mae",["ViTMAEModel",Ma]],["groupvit",["GroupViTModel",Ra]],["fastvit",["FastViTModel",_a]],["mobilevit",["MobileViTModel",Ka]],["mobilevitv2",["MobileViTV2Model",Ja]],["owlvit",["OwlViTModel",xa]],["owlv2",["Owlv2Model",Ya]],["beit",["BeitModel",Pa]],["deit",["DeiTModel",CQ]],["hiera",["HieraModel",BQ]],["convnext",["ConvNextModel",JQ]],["convnextv2",["ConvNextV2Model",xQ]],["dinov2",["Dinov2Model",YQ]],["dinov2_with_registers",["Dinov2WithRegistersModel",PQ]],["resnet",["ResNetModel",aQ]],["swin",["SwinModel",EQ]],["swin2sr",["Swin2SRModel",cQ]],["donut-swin",["DonutSwinModel",UQ]],["yolos",["YolosModel",WQ]],["dpt",["DPTModel",hQ]],["glpn",["GLPNModel",kQ]],["hifigan",["SpeechT5HifiGan",kE]],["efficientnet",["EfficientNetModel",XE]],["decision_transformer",["DecisionTransformerModel",nn]],["patchtst",["PatchTSTForPrediction",Dn]],["patchtsmixer",["PatchTSMixerForPrediction",pn]],["mobilenet_v1",["MobileNetV1Model",An]],["mobilenet_v2",["MobileNetV2Model",In]],["mobilenet_v3",["MobileNetV3Model",Cn]],["mobilenet_v4",["MobileNetV4Model",rn]],["maskformer",["MaskFormerModel",_Q]],["mgp-str",["MgpstrForSceneTextRecognition",un]],["style_text_to_speech_2",["StyleTextToSpeech2Model",RE]]]),q0=new Map([["t5",["T5Model",Ye]],["longt5",["LongT5Model",ng]],["mt5",["MT5Model",cI]],["bart",["BartModel",Qg]],["mbart",["MBartModel",mI]],["marian",["MarianModel",ZQ]],["whisper",["WhisperModel",rt]],["m2m_100",["M2M100Model",eE]],["blenderbot",["BlenderbotModel",Sg]],["blenderbot-small",["BlenderbotSmallModel",WI]]]),O0=new Map([["mimi",["MimiModel",Sn]],["dac",["DacModel",kn]],["snac",["SnacModel",Un]]]),W0=new Map([["bloom",["BloomModel",aa]],["jais",["JAISModel",ft]],["gpt2",["GPT2Model",Ti]],["gptj",["GPTJModel",E]],["gpt_bigcode",["GPTBigCodeModel",Y]],["gpt_neo",["GPTNeoModel",Hi]],["gpt_neox",["GPTNeoXModel",Mt]],["codegen",["CodeGenModel",KA]],["llama",["LlamaModel",ne]],["arcee",["ArceeModel",Xe]],["lfm2",["Lfm2Model",wo]],["smollm3",["SmolLM3Model",Nr]],["exaone",["ExaoneModel",Kr]],["olmo",["OlmoModel",xr]],["olmo2",["Olmo2Model",Yr]],["mobilellm",["MobileLLMModel",Jr]],["granite",["GraniteModel",Pr]],["cohere",["CohereModel",qr]],["gemma",["GemmaModel",Wr]],["gemma2",["Gemma2Model",Vr]],["gemma3_text",["Gemma3Model",$r]],["helium",["HeliumModel",_r]],["glm",["GlmModel",kr]],["openelm",["OpenELMModel",Zr]],["qwen2",["Qwen2Model",ea]],["qwen3",["Qwen3Model",Ia]],["phi",["PhiModel",Ca]],["phi3",["Phi3Model",Ba]],["mpt",["MptModel",Ea]],["opt",["OPTModel",la]],["mistral",["MistralModel",UE]],["ernie4_5",["Ernie4_5_Model",bE]],["starcoder2",["Starcoder2Model",TE]],["falcon",["FalconModel",HE]],["stablelm",["StableLmModel",zE]],["modernbert-decoder",["ModernBertDecoderModel",tg]]]),ps=new Map([["speecht5",["SpeechT5ForSpeechToText",_E]],["whisper",["WhisperForConditionalGeneration",at]],["lite-whisper",["LiteWhisperForConditionalGeneration",so]],["moonshine",["MoonshineForConditionalGeneration",nt]]]),xn=new Map([["speecht5",["SpeechT5ForTextToSpeech",GE]]]),Tn=new Map([["vits",["VitsModel",ns]],["musicgen",["MusicgenForConditionalGeneration",hs]]]),Yn=new Map([["bert",["BertForSequenceClassification",MA]],["neobert",["NeoBertForSequenceClassification",HA]],["modernbert",["ModernBertForSequenceClassification",Ne]],["roformer",["RoFormerForSequenceClassification",xI]],["electra",["ElectraForSequenceClassification",rA]],["esm",["EsmForSequenceClassification",qA]],["convbert",["ConvBertForSequenceClassification",ke]],["camembert",["CamembertForSequenceClassification",Se]],["deberta",["DebertaForSequenceClassification",Ig]],["deberta-v2",["DebertaV2ForSequenceClassification",mg]],["mpnet",["MPNetForSequenceClassification",Ke]],["albert",["AlbertForSequenceClassification",ZA]],["distilbert",["DistilBertForSequenceClassification",dg]],["roberta",["RobertaForSequenceClassification",Xt]],["xlm",["XLMForSequenceClassification",Io]],["xlm-roberta",["XLMRobertaForSequenceClassification",Ct]],["bart",["BartForSequenceClassification",Vg]],["mbart",["MBartForSequenceClassification",dI]],["mobilebert",["MobileBertForSequenceClassification",iA]],["squeezebert",["SqueezeBertForSequenceClassification",DA]]]),Hn=new Map([["bert",["BertForTokenClassification",xA]],["neobert",["NeoBertForTokenClassification",zA]],["modernbert",["ModernBertForTokenClassification",Pe]],["roformer",["RoFormerForTokenClassification",pI]],["electra",["ElectraForTokenClassification",yA]],["esm",["EsmForTokenClassification",n]],["convbert",["ConvBertForTokenClassification",EI]],["camembert",["CamembertForTokenClassification",Te]],["deberta",["DebertaForTokenClassification",pg]],["deberta-v2",["DebertaV2ForTokenClassification",nI]],["mpnet",["MPNetForTokenClassification",aA]],["distilbert",["DistilBertForTokenClassification",Mg]],["roberta",["RobertaForTokenClassification",Zt]],["xlm",["XLMForTokenClassification",io]],["xlm-roberta",["XLMRobertaForTokenClassification",oo]]]),ys=new Map([["t5",["T5ForConditionalGeneration",Lg]],["longt5",["LongT5ForConditionalGeneration",ig]],["mt5",["MT5ForConditionalGeneration",Pg]],["bart",["BartForConditionalGeneration",Fg]],["mbart",["MBartForConditionalGeneration",Rg]],["marian",["MarianMTModel",AE]],["m2m_100",["M2M100ForConditionalGeneration",gE]],["blenderbot",["BlenderbotForConditionalGeneration",yg]],["blenderbot-small",["BlenderbotSmallForConditionalGeneration",_i]]]),fs=new Map([["bloom",["BloomForCausalLM",Qa]],["gpt2",["GPT2LMHeadModel",yt]],["jais",["JAISLMHeadModel",Qi]],["gptj",["GPTJForCausalLM",S]],["gpt_bigcode",["GPTBigCodeForCausalLM",j]],["gpt_neo",["GPTNeoForCausalLM",mt]],["gpt_neox",["GPTNeoXForCausalLM",Ft]],["codegen",["CodeGenForCausalLM",OA]],["llama",["LlamaForCausalLM",Re]],["arcee",["ArceeForCausalLM",Ug]],["lfm2",["Lfm2ForCausalLM",Sr]],["smollm3",["SmolLM3ForCausalLM",Rr]],["exaone",["ExaoneForCausalLM",Ur]],["olmo",["OlmoForCausalLM",Tr]],["olmo2",["Olmo2ForCausalLM",Hr]],["mobilellm",["MobileLLMForCausalLM",br]],["granite",["GraniteForCausalLM",vr]],["cohere",["CohereForCausalLM",Or]],["gemma",["GemmaForCausalLM",jr]],["gemma2",["Gemma2ForCausalLM",zr]],["gemma3_text",["Gemma3ForCausalLM",Xr]],["helium",["HeliumForCausalLM",Gr]],["glm",["GlmForCausalLM",Lr]],["openelm",["OpenELMForCausalLM",Aa]],["qwen2",["Qwen2ForCausalLM",ga]],["qwen3",["Qwen3ForCausalLM",ia]],["phi",["PhiForCausalLM",sa]],["phi3",["Phi3ForCausalLM",ra]],["mpt",["MptForCausalLM",na]],["opt",["OPTForCausalLM",ca]],["mbart",["MBartForCausalLM",Kg]],["mistral",["MistralForCausalLM",JE]],["ernie4_5",["Ernie4_5_ForCausalLM",xE]],["starcoder2",["Starcoder2ForCausalLM",YE]],["falcon",["FalconForCausalLM",PE]],["trocr",["TrOCRForCausalLM",KE]],["stablelm",["StableLmForCausalLM",$E]],["modernbert-decoder",["ModernBertDecoderForCausalLM",Og]],["phi3_v",["Phi3VForCausalLM",Ji]]]),j0=new Map([["multi_modality",["MultiModalityCausalLM",cn]]]),Pn=new Map([["bert",["BertForMaskedLM",kA]],["neobert",["NeoBertForMaskedLM",re]],["modernbert",["ModernBertForMaskedLM",se]],["roformer",["RoFormerForMaskedLM",bI]],["electra",["ElectraForMaskedLM",IA]],["esm",["EsmForMaskedLM",ve]],["convbert",["ConvBertForMaskedLM",xe]],["camembert",["CamembertForMaskedLM",Ie]],["deberta",["DebertaForMaskedLM",Wg]],["deberta-v2",["DebertaV2ForMaskedLM",oI]],["mpnet",["MPNetForMaskedLM",Ce]],["albert",["AlbertForMaskedLM",fe]],["distilbert",["DistilBertForMaskedLM",lI]],["roberta",["RobertaForMaskedLM",$t]],["xlm",["XLMWithLMHeadModel",go]],["xlm-roberta",["XLMRobertaForMaskedLM",ot]],["mobilebert",["MobileBertForMaskedLM",W]],["squeezebert",["SqueezeBertForMaskedLM",oA]]]),vn=new Map([["bert",["BertForQuestionAnswering",vA]],["neobert",["NeoBertForQuestionAnswering",Be]],["roformer",["RoFormerForQuestionAnswering",yI]],["electra",["ElectraForQuestionAnswering",JA]],["convbert",["ConvBertForQuestionAnswering",N]],["camembert",["CamembertForQuestionAnswering",wg]],["deberta",["DebertaForQuestionAnswering",iI]],["deberta-v2",["DebertaV2ForQuestionAnswering",CI]],["mpnet",["MPNetForQuestionAnswering",R]],["albert",["AlbertForQuestionAnswering",$A]],["distilbert",["DistilBertForQuestionAnswering",tI]],["roberta",["RobertaForQuestionAnswering",Ao]],["xlm",["XLMForQuestionAnswering",to]],["xlm-roberta",["XLMRobertaForQuestionAnswering",Co]],["mobilebert",["MobileBertForQuestionAnswering",QA]],["squeezebert",["SqueezeBertForQuestionAnswering",GA]]]),ms=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",lt]],["idefics3",["Idefics3ForConditionalGeneration",Ki]],["smolvlm",["SmolVLMForConditionalGeneration",oi]]]),qn=new Map([["llava",["LlavaForConditionalGeneration",ki]],["llava_onevision",["LlavaOnevisionForConditionalGeneration",Bo]],["moondream1",["Moondream1ForConditionalGeneration",ro]],["florence2",["Florence2ForConditionalGeneration",Qo]],["qwen2-vl",["Qwen2VLForConditionalGeneration",oa]],["idefics3",["Idefics3ForConditionalGeneration",Ki]],["smolvlm",["SmolVLMForConditionalGeneration",oi]],["paligemma",["PaliGemmaForConditionalGeneration",no]],["llava_qwen2",["LlavaQwen2ForCausalLM",ti]],["gemma3n",["Gemma3nForConditionalGeneration",Li]]]),On=new Map([["ultravox",["UltravoxModel",ws]],["voxtral",["VoxtralForConditionalGeneration",mn]]]),V0=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",lt]]]),Wn=new Map([["vit",["ViTForImageClassification",ha]],["ijepa",["IJepaForImageClassification",Da]],["pvt",["PvtForImageClassification",fa]],["vit_msn",["ViTMSNForImageClassification",Sa]],["fastvit",["FastViTForImageClassification",Ga]],["mobilevit",["MobileViTForImageClassification",Ua]],["mobilevitv2",["MobileViTV2ForImageClassification",ba]],["beit",["BeitForImageClassification",va]],["deit",["DeiTForImageClassification",sQ]],["hiera",["HieraForImageClassification",rQ]],["convnext",["ConvNextForImageClassification",bQ]],["convnextv2",["ConvNextV2ForImageClassification",TQ]],["dinov2",["Dinov2ForImageClassification",HQ]],["dinov2_with_registers",["Dinov2WithRegistersForImageClassification",vQ]],["resnet",["ResNetForImageClassification",QQ]],["swin",["SwinForImageClassification",nQ]],["segformer",["SegformerForImageClassification",jE]],["efficientnet",["EfficientNetForImageClassification",ZE]],["mobilenet_v1",["MobileNetV1ForImageClassification",en]],["mobilenet_v2",["MobileNetV2ForImageClassification",tn]],["mobilenet_v3",["MobileNetV3ForImageClassification",sn]],["mobilenet_v4",["MobileNetV4ForImageClassification",an]]]),jn=new Map([["detr",["DetrForObjectDetection",Oa]],["rt_detr",["RTDetrForObjectDetection",Va]],["rt_detr_v2",["RTDetrV2ForObjectDetection",$a]],["rf_detr",["RFDetrForObjectDetection",AQ]],["d_fine",["DFineForObjectDetection",IQ]],["table-transformer",["TableTransformerForObjectDetection",tQ]],["yolos",["YolosForObjectDetection",jQ]]]),Vn=new Map([["owlvit",["OwlViTForObjectDetection",Ta]],["owlv2",["Owlv2ForObjectDetection",Ha]],["grounding-dino",["GroundingDinoForObjectDetection",OQ]]]),Oi=new Map([["detr",["DetrForSegmentation",HC]],["clipseg",["CLIPSegForImageSegmentation",pt]]]),zn=new Map([["segformer",["SegformerForSemanticSegmentation",VE]],["sapiens",["SapiensForSemanticSegmentation",pQ]],["swin",["SwinForSemanticSegmentation",lQ]],["mobilenet_v1",["MobileNetV1ForSemanticSegmentation",gn]],["mobilenet_v2",["MobileNetV2ForSemanticSegmentation",on]],["mobilenet_v3",["MobileNetV3ForSemanticSegmentation",Bn]],["mobilenet_v4",["MobileNetV4ForSemanticSegmentation",Qn]]]),$n=new Map([["detr",["DetrForSegmentation",HC]],["maskformer",["MaskFormerForInstanceSegmentation",GQ]]]),Xn=new Map([["sam",["SamModel",$Q]]]),Zn=new Map([["wav2vec2",["Wav2Vec2ForCTC",iE]],["wav2vec2-bert",["Wav2Vec2BertForCTC",uE]],["unispeech",["UniSpeechForCTC",QE]],["unispeech-sat",["UniSpeechSatForCTC",lE]],["wavlm",["WavLMForCTC",mE]],["hubert",["HubertForCTC",pE]]]),Al=new Map([["wav2vec2",["Wav2Vec2ForSequenceClassification",tE]],["wav2vec2-bert",["Wav2Vec2BertForSequenceClassification",DE]],["unispeech",["UniSpeechForSequenceClassification",EE]],["unispeech-sat",["UniSpeechSatForSequenceClassification",cE]],["wavlm",["WavLMForSequenceClassification",ME]],["hubert",["HubertForSequenceClassification",yE]],["audio-spectrogram-transformer",["ASTForAudioClassification",zI]]]),el=new Map([["wavlm",["WavLMForXVector",FE]]]),gl=new Map([["unispeech-sat",["UniSpeechSatForAudioFrameClassification",dE]],["wavlm",["WavLMForAudioFrameClassification",SE]],["wav2vec2",["Wav2Vec2ForAudioFrameClassification",oE]],["pyannote",["PyAnnoteForAudioFrameClassification",sE]]]),Il=new Map([["vitmatte",["VitMatteForImageMatting",La]]]),z0=new Map([["patchtst",["PatchTSTForPrediction",wn]],["patchtsmixer",["PatchTSMixerForPrediction",yn]]]),il=new Map([["swin2sr",["Swin2SRForImageSuperResolution",dQ]]]),tl=new Map([["dpt",["DPTForDepthEstimation",uQ]],["depth_anything",["DepthAnythingForDepthEstimation",wQ]],["glpn",["GLPNForDepthEstimation",LQ]],["sapiens",["SapiensForDepthEstimation",yQ]],["depth_pro",["DepthProForDepthEstimation",MQ]],["metric3d",["Metric3DForDepthEstimation",SQ]],["metric3dv2",["Metric3Dv2ForDepthEstimation",RQ]]]),ol=new Map([["sapiens",["SapiensForNormalEstimation",fQ]]]),Cl=new Map([["vitpose",["VitPoseForPoseEstimation",pa]]]),sl=new Map([["clip",["CLIPVisionModelWithProjection",uo]],["siglip",["SiglipVisionModel",ue]],["jina_clip",["JinaCLIPVisionModel",ri]]]),Bl=[[v0,h.EncoderOnly],[q0,h.EncoderDecoder],[W0,h.DecoderOnly],[O0,h.AutoEncoder],[Yn,h.EncoderOnly],[Hn,h.EncoderOnly],[ys,h.Seq2Seq],[ps,h.Seq2Seq],[fs,h.DecoderOnly],[j0,h.MultiModality],[Pn,h.EncoderOnly],[vn,h.EncoderOnly],[ms,h.Vision2Seq],[qn,h.ImageTextToText],[On,h.AudioTextToText],[Wn,h.EncoderOnly],[Oi,h.EncoderOnly],[$n,h.EncoderOnly],[zn,h.EncoderOnly],[Il,h.EncoderOnly],[z0,h.EncoderOnly],[il,h.EncoderOnly],[tl,h.EncoderOnly],[ol,h.EncoderOnly],[Cl,h.EncoderOnly],[jn,h.EncoderOnly],[Vn,h.EncoderOnly],[Xn,h.MaskGeneration],[Zn,h.EncoderOnly],[Al,h.EncoderOnly],[xn,h.Seq2Seq],[Tn,h.EncoderOnly],[el,h.EncoderOnly],[gl,h.EncoderOnly],[sl,h.EncoderOnly]];for(const[w,p]of Bl)for(const[q,EA]of w.values())y.set(q,p),m.set(EA,q),M.set(q,EA);const $0=[["MusicgenForConditionalGeneration",hs,h.Musicgen],["Phi3VForCausalLM",Ji,h.Phi3V],["CLIPTextModelWithProjection",ht,h.EncoderOnly],["SiglipTextModel",Ci,h.EncoderOnly],["JinaCLIPTextModel",BI,h.EncoderOnly],["ClapTextModelWithProjection",qE,h.EncoderOnly],["ClapAudioModelWithProjection",OE,h.EncoderOnly],["DacEncoderModel",Ln,h.EncoderOnly],["DacDecoderModel",Kn,h.EncoderOnly],["MimiEncoderModel",Nn,h.EncoderOnly],["MimiDecoderModel",Rn,h.EncoderOnly],["SnacEncoderModel",Jn,h.EncoderOnly],["SnacDecoderModel",bn,h.EncoderOnly],["Gemma3nForConditionalGeneration",Li,h.ImageAudioTextToText]];for(const[w,p,q]of $0)y.set(w,q),m.set(p,w),M.set(w,p);const rl=new Map([["modnet",Oi],["birefnet",Oi],["isnet",Oi],["ben",Oi]]);for(const[w,p]of rl.entries())p.set(w,["PreTrainedModel",V]),y.set(w,h.EncoderOnly),m.set(V,w),M.set(w,V);class X0 extends Ze{static MODEL_CLASS_MAPPINGS=Bl.map(p=>p[0]);static BASE_IF_FAIL=!0}class Z0 extends Ze{static MODEL_CLASS_MAPPINGS=[Yn]}class Ap extends Ze{static MODEL_CLASS_MAPPINGS=[Hn]}class ep extends Ze{static MODEL_CLASS_MAPPINGS=[ys]}class gp extends Ze{static MODEL_CLASS_MAPPINGS=[ps]}class Ip extends Ze{static MODEL_CLASS_MAPPINGS=[xn]}class ip extends Ze{static MODEL_CLASS_MAPPINGS=[Tn]}class tp extends Ze{static MODEL_CLASS_MAPPINGS=[fs]}class op extends Ze{static MODEL_CLASS_MAPPINGS=[Pn]}class Cp extends Ze{static MODEL_CLASS_MAPPINGS=[vn]}class sp extends Ze{static MODEL_CLASS_MAPPINGS=[ms]}class Bp extends Ze{static MODEL_CLASS_MAPPINGS=[Wn]}class rp extends Ze{static MODEL_CLASS_MAPPINGS=[Oi]}class ap extends Ze{static MODEL_CLASS_MAPPINGS=[zn]}class Qp extends Ze{static MODEL_CLASS_MAPPINGS=[$n]}class Ep extends Ze{static MODEL_CLASS_MAPPINGS=[jn]}class np extends Ze{static MODEL_CLASS_MAPPINGS=[Vn]}class lp extends Ze{static MODEL_CLASS_MAPPINGS=[Xn]}class cp extends Ze{static MODEL_CLASS_MAPPINGS=[Zn]}class dp extends Ze{static MODEL_CLASS_MAPPINGS=[Al]}class hp extends Ze{static MODEL_CLASS_MAPPINGS=[el]}class up extends Ze{static MODEL_CLASS_MAPPINGS=[gl]}class Dp extends Ze{static MODEL_CLASS_MAPPINGS=[V0]}class wp extends Ze{static MODEL_CLASS_MAPPINGS=[Il]}class pp extends Ze{static MODEL_CLASS_MAPPINGS=[il]}class yp extends Ze{static MODEL_CLASS_MAPPINGS=[tl]}class fp extends Ze{static MODEL_CLASS_MAPPINGS=[ol]}class mp extends Ze{static MODEL_CLASS_MAPPINGS=[Cl]}class Mp extends Ze{static MODEL_CLASS_MAPPINGS=[sl]}class Fp extends Ze{static MODEL_CLASS_MAPPINGS=[qn]}class Sp extends Ze{static MODEL_CLASS_MAPPINGS=[On]}class Np extends fA{constructor({logits:p,past_key_values:q,encoder_outputs:EA,decoder_attentions:wA=null,cross_attentions:mA=null}){super(),this.logits=p,this.past_key_values=q,this.encoder_outputs=EA,this.decoder_attentions=wA,this.cross_attentions=mA}}class _e extends fA{constructor({logits:p,...q}){super(),this.logits=p;const EA=Object.values(q);EA.length>0&&(this.attentions=EA)}}class al extends fA{constructor({logits:p,embeddings:q}){super(),this.logits=p,this.embeddings=q}}class Jg extends fA{constructor({logits:p}){super(),this.logits=p}}class Tg extends fA{constructor({logits:p}){super(),this.logits=p}}class qg extends fA{constructor({start_logits:p,end_logits:q}){super(),this.start_logits=p,this.end_logits=q}}class ni extends fA{constructor({logits:p}){super(),this.logits=p}}class Rp extends fA{constructor({logits:p,past_key_values:q}){super(),this.logits=p,this.past_key_values=q}}class Ql extends fA{constructor({alphas:p}){super(),this.alphas=p}}class El extends fA{constructor({waveform:p,spectrogram:q}){super(),this.waveform=p,this.spectrogram=q}}},"./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js":(A,g,e)=>{e.r(g),e.d(g,{ASTFeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js");e("./src/utils/tensor.js");var i=e("./src/utils/audio.js");class t extends I.FeatureExtractor{constructor(o){super(o);const s=this.config.sampling_rate,B=(0,i.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(s/2),s,null,"kaldi",!0);this.mel_filters=B,this.window=(0,i.window_function)(400,"hann",{periodic:!1}),this.mean=this.config.mean,this.std=this.config.std}async _extract_fbank_features(o,s){return(0,i.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:s,transpose:!0})}async _call(o){(0,I.validate_audio_inputs)(o,"ASTFeatureExtractor");const s=await this._extract_fbank_features(o,this.config.max_length);if(this.config.do_normalize){const B=this.std*2,Q=s.data;for(let a=0;a{e.r(g),e.d(g,{AutoFeatureExtractor:()=>C});var I=e("./src/utils/constants.js"),i=e("./src/utils/hub.js");e("./src/base/feature_extraction_utils.js");var t=e("./src/models/feature_extractors.js");class C{static async from_pretrained(s,B={}){const Q=await(0,i.getModelJSON)(s,I.FEATURE_EXTRACTOR_NAME,!0,B),a=Q.feature_extractor_type,r=t[a];if(!r)throw new Error(`Unknown feature_extractor_type: '${a}'. Please report this at ${I.GITHUB_ISSUE_URL}.`);return new r(Q)}}},"./src/models/auto/image_processing_auto.js":(A,g,e)=>{e.r(g),e.d(g,{AutoImageProcessor:()=>o});var I=e("./src/utils/constants.js"),i=e("./src/utils/hub.js"),t=e("./src/base/image_processors_utils.js"),C=e("./src/models/image_processors.js");class o{static async from_pretrained(B,Q={}){const a=await(0,i.getModelJSON)(B,I.IMAGE_PROCESSOR_NAME,!0,Q),r=a.image_processor_type??a.feature_extractor_type;let d=C[r?.replace(/Fast$/,"")];return d||(r!==void 0&&console.warn(`Image processor type '${r}' not found, assuming base ImageProcessor. Please report this at ${I.GITHUB_ISSUE_URL}.`),d=t.ImageProcessor),new d(a)}}},"./src/models/auto/processing_auto.js":(A,g,e)=>{e.r(g),e.d(g,{AutoProcessor:()=>B});var I=e("./src/utils/constants.js"),i=e("./src/utils/hub.js"),t=e("./src/base/processing_utils.js"),C=e("./src/models/processors.js"),o=e("./src/models/image_processors.js"),s=e("./src/models/feature_extractors.js");class B{static async from_pretrained(a,r={}){const d=await(0,i.getModelJSON)(a,I.IMAGE_PROCESSOR_NAME,!0,r),{image_processor_type:c,feature_extractor_type:f,processor_class:k}=d;if(k&&C[k])return C[k].from_pretrained(a,r);if(!c&&!f)throw new Error("No `image_processor_type` or `feature_extractor_type` found in the config.");const u={};if(c){const G=o[c.replace(/Fast$/,"")];if(!G)throw new Error(`Unknown image_processor_type: '${c}'.`);u.image_processor=new G(d)}if(f){const G=o[f];if(G)u.image_processor=new G(d);else{const h=s[f];if(!h)throw new Error(`Unknown feature_extractor_type: '${f}'.`);u.feature_extractor=new h(d)}}const D={};return new t.Processor(D,u,null)}}},"./src/models/beit/image_processing_beit.js":(A,g,e)=>{e.r(g),e.d(g,{BeitFeatureExtractor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/bit/image_processing_bit.js":(A,g,e)=>{e.r(g),e.d(g,{BitImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/chinese_clip/image_processing_chinese_clip.js":(A,g,e)=>{e.r(g),e.d(g,{ChineseCLIPFeatureExtractor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/clap/feature_extraction_clap.js":(A,g,e)=>{e.r(g),e.d(g,{ClapFeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js");e("./src/utils/tensor.js");var i=e("./src/utils/audio.js");class t extends I.FeatureExtractor{constructor(o){super(o),this.mel_filters=(0,i.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,null,"htk"),this.mel_filters_slaney=(0,i.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,"slaney","slaney"),this.window=(0,i.window_function)(this.config.fft_window_size,"hann")}async _get_input_mel(o,s,B,Q){let a;const r=o.length-s;if(r>0)if(B==="rand_trunc"){const d=Math.floor(Math.random()*(r+1));o=o.subarray(d,d+s),a=await this._extract_fbank_features(o,this.mel_filters_slaney,this.config.nb_max_samples)}else throw new Error(`Truncation strategy "${B}" not implemented`);else{if(r<0){let d=new Float64Array(s);if(d.set(o),Q==="repeat")for(let c=o.length;c{e.r(g),e.d(g,{CLIPFeatureExtractor:()=>t,CLIPImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/convnext/image_processing_convnext.js":(A,g,e)=>{e.r(g),e.d(g,{ConvNextFeatureExtractor:()=>t,ConvNextImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{constructor(o){super(o),this.crop_pct=this.config.crop_pct??224/256}async resize(o){const s=this.size?.shortest_edge;if(s===void 0)throw new Error("Size dictionary must contain 'shortest_edge' key.");if(s<384){const B=Math.floor(s/this.crop_pct),[Q,a]=this.get_resize_output_image_size(o,{shortest_edge:B});o=await o.resize(Q,a,{resample:this.resample}),o=await o.center_crop(s,s)}else o=await o.resize(s,s,{resample:this.resample});return o}}class t extends i{}},"./src/models/dac/feature_extraction_dac.js":(A,g,e)=>{e.r(g),e.d(g,{DacFeatureExtractor:()=>i});var I=e("./src/models/encodec/feature_extraction_encodec.js");class i extends I.EncodecFeatureExtractor{}},"./src/models/deit/image_processing_deit.js":(A,g,e)=>{e.r(g),e.d(g,{DeiTFeatureExtractor:()=>t,DeiTImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/detr/image_processing_detr.js":(A,g,e)=>{e.r(g),e.d(g,{DetrFeatureExtractor:()=>C,DetrImageProcessor:()=>t});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");class t extends I.ImageProcessor{async _call(s){const B=await super._call(s),Q=[B.pixel_values.dims[0],64,64],a=(0,i.full)(Q,1n);return{...B,pixel_mask:a}}post_process_object_detection(...s){return(0,I.post_process_object_detection)(...s)}post_process_panoptic_segmentation(...s){return(0,I.post_process_panoptic_segmentation)(...s)}post_process_instance_segmentation(...s){return(0,I.post_process_instance_segmentation)(...s)}}class C extends t{}},"./src/models/donut/image_processing_donut.js":(A,g,e)=>{e.r(g),e.d(g,{DonutFeatureExtractor:()=>t,DonutImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{pad_image(o,s,B,Q={}){const[a,r,d]=s;let c=this.image_mean;Array.isArray(this.image_mean)||(c=new Array(d).fill(c));let f=this.image_std;Array.isArray(f)||(f=new Array(d).fill(c));const k=c.map((u,D)=>-u/f[D]);return super.pad_image(o,s,B,{center:!0,constant_values:k,...Q})}}class t extends i{}},"./src/models/dpt/image_processing_dpt.js":(A,g,e)=>{e.r(g),e.d(g,{DPTFeatureExtractor:()=>t,DPTImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/efficientnet/image_processing_efficientnet.js":(A,g,e)=>{e.r(g),e.d(g,{EfficientNetImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{constructor(C){super(C),this.include_top=this.config.include_top??!0,this.include_top&&(this.image_std=this.image_std.map(o=>o*o))}}},"./src/models/encodec/feature_extraction_encodec.js":(A,g,e)=>{e.r(g),e.d(g,{EncodecFeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js");class t extends I.FeatureExtractor{async _call(o){(0,I.validate_audio_inputs)(o,"EncodecFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const s=this.config.feature_size;if(o.length%s!==0)throw new Error(`The length of the audio data must be a multiple of the number of channels (${s}).`);const B=[1,s,o.length/s];return{input_values:new i.Tensor("float32",o,B)}}}},"./src/models/feature_extractors.js":(A,g,e)=>{e.r(g),e.d(g,{ASTFeatureExtractor:()=>I.ASTFeatureExtractor,ClapFeatureExtractor:()=>t.ClapFeatureExtractor,DacFeatureExtractor:()=>C.DacFeatureExtractor,EncodecFeatureExtractor:()=>i.EncodecFeatureExtractor,Gemma3nAudioFeatureExtractor:()=>o.Gemma3nAudioFeatureExtractor,ImageFeatureExtractor:()=>k.ImageProcessor,MoonshineFeatureExtractor:()=>s.MoonshineFeatureExtractor,PyAnnoteFeatureExtractor:()=>B.PyAnnoteFeatureExtractor,SeamlessM4TFeatureExtractor:()=>Q.SeamlessM4TFeatureExtractor,SnacFeatureExtractor:()=>a.SnacFeatureExtractor,SpeechT5FeatureExtractor:()=>r.SpeechT5FeatureExtractor,Wav2Vec2FeatureExtractor:()=>d.Wav2Vec2FeatureExtractor,WeSpeakerFeatureExtractor:()=>c.WeSpeakerFeatureExtractor,WhisperFeatureExtractor:()=>f.WhisperFeatureExtractor});var I=e("./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js"),i=e("./src/models/encodec/feature_extraction_encodec.js"),t=e("./src/models/clap/feature_extraction_clap.js"),C=e("./src/models/dac/feature_extraction_dac.js"),o=e("./src/models/gemma3n/feature_extraction_gemma3n.js"),s=e("./src/models/moonshine/feature_extraction_moonshine.js"),B=e("./src/models/pyannote/feature_extraction_pyannote.js"),Q=e("./src/models/seamless_m4t/feature_extraction_seamless_m4t.js"),a=e("./src/models/snac/feature_extraction_snac.js"),r=e("./src/models/speecht5/feature_extraction_speecht5.js"),d=e("./src/models/wav2vec2/feature_extraction_wav2vec2.js"),c=e("./src/models/wespeaker/feature_extraction_wespeaker.js"),f=e("./src/models/whisper/feature_extraction_whisper.js"),k=e("./src/base/image_processors_utils.js")},"./src/models/florence2/processing_florence2.js":(A,g,e)=>{e.r(g),e.d(g,{Florence2Processor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");class C extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;constructor(s,B,Q){super(s,B,Q);const{tasks_answer_post_processing_type:a,task_prompts_without_inputs:r,task_prompts_with_input:d}=this.image_processor.config;this.tasks_answer_post_processing_type=new Map(Object.entries(a??{})),this.task_prompts_without_inputs=new Map(Object.entries(r??{})),this.task_prompts_with_input=new Map(Object.entries(d??{})),this.regexes={quad_boxes:/(.+?)/gm,bboxes:/([^<]+)?/gm},this.size_per_bin=1e3}construct_prompts(s){typeof s=="string"&&(s=[s]);const B=[];for(const Q of s)if(this.task_prompts_without_inputs.has(Q))B.push(this.task_prompts_without_inputs.get(Q));else{for(const[a,r]of this.task_prompts_with_input)if(Q.includes(a)){B.push(r.replaceAll("{input}",Q).replaceAll(a,""));break}B.length!==s.length&&B.push(Q)}return B}post_process_generation(s,B,Q){const a=this.tasks_answer_post_processing_type.get(B)??"pure_text";s=s.replaceAll("","").replaceAll("","");let r;switch(a){case"pure_text":r=s;break;case"description_with_bboxes":case"bboxes":case"phrase_grounding":case"ocr":const d=a==="ocr"?"quad_boxes":"bboxes",c=s.matchAll(this.regexes[d]),f=[],k=[];for(const[u,D,...G]of c)f.push(D?D.trim():f.at(-1)??""),k.push(G.map((h,y)=>(Number(h)+.5)/this.size_per_bin*Q[y%2]));r={labels:f,[d]:k};break;default:throw new Error(`Task "${B}" (of type "${a}") not yet implemented.`)}return{[B]:r}}async _call(s,B=null,Q={}){if(!s&&!B)throw new Error("Either text or images must be provided");const a=await this.image_processor(s,Q),r=B?this.tokenizer(this.construct_prompts(B),Q):{};return{...a,...r}}}},"./src/models/gemma3n/feature_extraction_gemma3n.js":(A,g,e)=>{e.r(g),e.d(g,{Gemma3nAudioFeatureExtractor:()=>C});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js"),t=e("./src/utils/audio.js");class C extends I.FeatureExtractor{constructor(s){super(s);const{fft_length:B,feature_size:Q,min_frequency:a,max_frequency:r,sampling_rate:d,frame_length:c}=this.config,f=(0,t.mel_filter_bank)(Math.floor(1+B/2),Q,a,r,d,null,"htk",!1);this.mel_filters=f,this.window=(0,t.window_function)(c,"hann")}async _extract_fbank_features(s,B){return(0,t.spectrogram)(s,this.window,this.config.frame_length,this.config.hop_length,{fft_length:this.config.fft_length,center:!1,onesided:!0,preemphasis:this.config.preemphasis,preemphasis_htk_flavor:this.config.preemphasis_htk_flavor,mel_filters:this.mel_filters,log_mel:"log",mel_floor:this.config.mel_floor,remove_dc_offset:!1,transpose:!0})}async _call(s,{max_length:B=48e4,truncation:Q=!0,padding:a=!0,pad_to_multiple_of:r=128}={}){if((0,I.validate_audio_inputs)(s,"Gemma3nAudioFeatureExtractor"),Q&&s.length>B&&(s=s.slice(0,B)),a&&s.length%r!==0){const f=r-s.length%r,k=new Float64Array(s.length+f);k.set(s),this.config.padding_value!==0&&k.fill(this.config.padding_value,s.length),s=k}const d=await this._extract_fbank_features(s,this.config.max_length),c=(0,i.full)([1,d.dims[0]],!0);return{input_features:d.unsqueeze_(0),input_features_mask:c}}}},"./src/models/gemma3n/processing_gemma3n.js":(A,g,e)=>{e.r(g),e.d(g,{Gemma3nProcessor:()=>o});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/models/auto/feature_extraction_auto.js"),C=e("./src/tokenizers.js");e("./src/utils/image.js"),e("./src/utils/audio.js");class o extends I.Processor{static image_processor_class=i.AutoImageProcessor;static feature_extractor_class=t.AutoFeatureExtractor;static tokenizer_class=C.AutoTokenizer;static uses_processor_config=!0;static uses_chat_template_file=!0;constructor(B,Q,a){super(B,Q,a),this.audio_seq_length=this.config.audio_seq_length,this.image_seq_length=this.config.image_seq_length;const{audio_token_id:r,boa_token:d,audio_token:c,eoa_token:f,image_token_id:k,boi_token:u,image_token:D,eoi_token:G}=this.tokenizer.config;this.audio_token_id=r,this.boa_token=d,this.audio_token=c;const h=c.repeat(this.audio_seq_length);this.full_audio_sequence=` ${d}${h}${f} `,this.image_token_id=k,this.boi_token=u,this.image_token=D;const y=D.repeat(this.image_seq_length);this.full_image_sequence=` ${u}${y}${G} `}async _call(B,Q=null,a=null,r={}){typeof B=="string"&&(B=[B]);let d;a&&(d=await this.feature_extractor(a,r),B=B.map(k=>k.replaceAll(this.audio_token,this.full_audio_sequence)));let c;return Q&&(c=await this.image_processor(Q,r),B=B.map(k=>k.replaceAll(this.image_token,this.full_image_sequence))),{...this.tokenizer(B,r),...c,...d}}}},"./src/models/glpn/image_processing_glpn.js":(A,g,e)=>{e.r(g),e.d(g,{GLPNFeatureExtractor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/grounding_dino/image_processing_grounding_dino.js":(A,g,e)=>{e.r(g),e.d(g,{GroundingDinoImageProcessor:()=>t});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");class t extends I.ImageProcessor{async _call(o){const s=await super._call(o),B=s.pixel_values.dims,Q=(0,i.ones)([B[0],B[2],B[3]]);return{...s,pixel_mask:Q}}}},"./src/models/grounding_dino/processing_grounding_dino.js":(A,g,e)=>{e.r(g),e.d(g,{GroundingDinoProcessor:()=>s});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js"),C=e("./src/base/image_processors_utils.js");function o(B,Q){const r=B.dims.at(-1)-1,d=B.tolist();d.fill(!1,0,1),d.fill(!1,r);const c=Q.tolist();return d.map((f,k)=>f?k:null).filter(f=>f!==null).map(f=>c[f])}class s extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;async _call(Q,a,r={}){const d=Q?await this.image_processor(Q,r):{};return{...a?this.tokenizer(a,r):{},...d}}post_process_grounded_object_detection(Q,a,{box_threshold:r=.25,text_threshold:d=.25,target_sizes:c=null}={}){const{logits:f,pred_boxes:k}=Q,u=f.dims[0];if(c!==null&&c.length!==u)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const D=f.dims.at(1),G=f.sigmoid(),h=G.max(-1).tolist(),y=k.tolist().map(m=>m.map(_=>(0,C.center_to_corners_format)(_))),M=[];for(let m=0;mT.map((CA,eA)=>CA*_[(eA+1)%2])));const x=h[m],b=[],X=[],Z=[];for(let T=0;T{e.r(g),e.d(g,{Idefics3ImageProcessor:()=>t});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");class t extends I.ImageProcessor{constructor(o){super(o),this.do_image_splitting=o.do_image_splitting??!0,this.max_image_size=o.max_image_size}get_resize_for_vision_encoder(o,s){let[B,Q]=o.dims.slice(-2);const a=Q/B;return Q>=B?(Q=Math.ceil(Q/s)*s,B=Math.floor(Q/a),B=Math.ceil(B/s)*s):(B=Math.ceil(B/s)*s,Q=Math.floor(B*a),Q=Math.ceil(Q/s)*s),{height:B,width:Q}}async _call(o,{do_image_splitting:s=null,return_row_col_info:B=!1}={}){let Q;if(!Array.isArray(o))Q=[[o]];else{if(o.length===0||!o[0])throw new Error("No images provided.");Array.isArray(o[0])?Q=o:Q=[o]}let a=[],r=[],d=[];const c=[],f=[];for(const m of Q){let _=await Promise.all(m.map(X=>this.preprocess(X)));c.push(..._.map(X=>X.original_size)),f.push(..._.map(X=>X.reshaped_input_size)),_.forEach(X=>X.pixel_values.unsqueeze_(0));const{longest_edge:x}=this.max_image_size;let b;if(s??this.do_image_splitting){let X=new Array(_.length),Z=new Array(_.length);b=await Promise.all(_.map(async(T,CA)=>{const eA=this.get_resize_for_vision_encoder(T.pixel_values,x),tA=await(0,i.interpolate_4d)(T.pixel_values,{size:[eA.height,eA.width]}),{frames:BA,num_splits_h:sA,num_splits_w:cA}=await this.split_image(tA,this.max_image_size);return X[CA]=sA,Z[CA]=cA,(0,i.cat)(BA,0)})),r.push(X),d.push(Z)}else{const X=[x,x];b=await Promise.all(_.map(Z=>(0,i.interpolate_4d)(Z.pixel_values,{size:X}))),r.push(new Array(_.length).fill(0)),d.push(new Array(_.length).fill(0))}a.push((0,i.cat)(b,0))}const k=a.length,[u,D,G,h]=a[0].dims;let y,M;if(k===1)y=a[0].unsqueeze_(0),M=(0,i.full)([k,u,G,h],!0);else{const m=Math.max(...a.map(b=>b.dims.at(0)));M=(0,i.full)([k,m,G,h],!0);const _=M.data,x=m*G*h;for(let b=0;bB||d>Q){c=Math.ceil(r/B),f=Math.ceil(d/Q);const k=Math.ceil(r/c),u=Math.ceil(d/f);for(let h=0;h{e.r(g),e.d(g,{Idefics3Processor:()=>Q});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");e("./src/utils/image.js");var C=e("./src/utils/core.js");function o(a,r,d,c,f,k){let u="";for(let D=0;D`+f.repeat(a);u+=` `}return u+=` ${c}${k}`+f.repeat(a)+`${c}`,u}function s(a,r,d,c){return`${r}${c}`+d.repeat(a)+`${r}`}function B(a,r,d,c,f,k){return a===0&&r===0?s(d,c,f,k):o(d,a,r,c,f,k)}class Q extends I.Processor{static image_processor_class=i.AutoImageProcessor;static tokenizer_class=t.AutoTokenizer;static uses_processor_config=!0;fake_image_token="";image_token="";global_img_token="";async _call(r,d=null,c={}){c.return_row_col_info??=!0;let f;d&&(f=await this.image_processor(d,c)),Array.isArray(r)||(r=[r]);const k=f.rows??[new Array(r.length).fill(0)],u=f.cols??[new Array(r.length).fill(0)],D=this.config.image_seq_len,G=[],h=[];for(let M=0;MB(T,x[CA],D,this.fake_image_token,this.image_token,this.global_img_token)),X=m.split(this.image_token);if(X.length===0)throw new Error("The image token should be present in the text.");let Z=X[0];for(let T=0;T{e.r(g),e.d(g,{BeitFeatureExtractor:()=>I.BeitFeatureExtractor,BitImageProcessor:()=>i.BitImageProcessor,CLIPFeatureExtractor:()=>C.CLIPFeatureExtractor,CLIPImageProcessor:()=>C.CLIPImageProcessor,ChineseCLIPFeatureExtractor:()=>t.ChineseCLIPFeatureExtractor,ConvNextFeatureExtractor:()=>o.ConvNextFeatureExtractor,ConvNextImageProcessor:()=>o.ConvNextImageProcessor,DPTFeatureExtractor:()=>a.DPTFeatureExtractor,DPTImageProcessor:()=>a.DPTImageProcessor,DeiTFeatureExtractor:()=>s.DeiTFeatureExtractor,DeiTImageProcessor:()=>s.DeiTImageProcessor,DetrFeatureExtractor:()=>B.DetrFeatureExtractor,DetrImageProcessor:()=>B.DetrImageProcessor,DonutFeatureExtractor:()=>Q.DonutFeatureExtractor,DonutImageProcessor:()=>Q.DonutImageProcessor,EfficientNetImageProcessor:()=>r.EfficientNetImageProcessor,GLPNFeatureExtractor:()=>d.GLPNFeatureExtractor,GroundingDinoImageProcessor:()=>c.GroundingDinoImageProcessor,Idefics3ImageProcessor:()=>f.Idefics3ImageProcessor,JinaCLIPImageProcessor:()=>u.JinaCLIPImageProcessor,LlavaOnevisionImageProcessor:()=>D.LlavaOnevisionImageProcessor,Mask2FormerImageProcessor:()=>G.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>h.MaskFormerFeatureExtractor,MaskFormerImageProcessor:()=>h.MaskFormerImageProcessor,MobileNetV1FeatureExtractor:()=>y.MobileNetV1FeatureExtractor,MobileNetV1ImageProcessor:()=>y.MobileNetV1ImageProcessor,MobileNetV2FeatureExtractor:()=>M.MobileNetV2FeatureExtractor,MobileNetV2ImageProcessor:()=>M.MobileNetV2ImageProcessor,MobileNetV3FeatureExtractor:()=>m.MobileNetV3FeatureExtractor,MobileNetV3ImageProcessor:()=>m.MobileNetV3ImageProcessor,MobileNetV4FeatureExtractor:()=>_.MobileNetV4FeatureExtractor,MobileNetV4ImageProcessor:()=>_.MobileNetV4ImageProcessor,MobileViTFeatureExtractor:()=>x.MobileViTFeatureExtractor,MobileViTImageProcessor:()=>x.MobileViTImageProcessor,NougatImageProcessor:()=>b.NougatImageProcessor,OwlViTFeatureExtractor:()=>Z.OwlViTFeatureExtractor,OwlViTImageProcessor:()=>Z.OwlViTImageProcessor,Owlv2ImageProcessor:()=>X.Owlv2ImageProcessor,Phi3VImageProcessor:()=>T.Phi3VImageProcessor,PvtImageProcessor:()=>CA.PvtImageProcessor,Qwen2VLImageProcessor:()=>eA.Qwen2VLImageProcessor,RTDetrImageProcessor:()=>tA.RTDetrImageProcessor,SamImageProcessor:()=>BA.SamImageProcessor,SegformerFeatureExtractor:()=>sA.SegformerFeatureExtractor,SegformerImageProcessor:()=>sA.SegformerImageProcessor,SiglipImageProcessor:()=>cA.SiglipImageProcessor,SmolVLMImageProcessor:()=>dA.SmolVLMImageProcessor,Swin2SRImageProcessor:()=>P.Swin2SRImageProcessor,VLMImageProcessor:()=>k.VLMImageProcessor,ViTFeatureExtractor:()=>U.ViTFeatureExtractor,ViTImageProcessor:()=>U.ViTImageProcessor,VitMatteImageProcessor:()=>z.VitMatteImageProcessor,VitPoseImageProcessor:()=>v.VitPoseImageProcessor,YolosFeatureExtractor:()=>nA.YolosFeatureExtractor,YolosImageProcessor:()=>nA.YolosImageProcessor});var I=e("./src/models/beit/image_processing_beit.js"),i=e("./src/models/bit/image_processing_bit.js"),t=e("./src/models/chinese_clip/image_processing_chinese_clip.js"),C=e("./src/models/clip/image_processing_clip.js"),o=e("./src/models/convnext/image_processing_convnext.js"),s=e("./src/models/deit/image_processing_deit.js"),B=e("./src/models/detr/image_processing_detr.js"),Q=e("./src/models/donut/image_processing_donut.js"),a=e("./src/models/dpt/image_processing_dpt.js"),r=e("./src/models/efficientnet/image_processing_efficientnet.js"),d=e("./src/models/glpn/image_processing_glpn.js"),c=e("./src/models/grounding_dino/image_processing_grounding_dino.js"),f=e("./src/models/idefics3/image_processing_idefics3.js"),k=e("./src/models/janus/image_processing_janus.js"),u=e("./src/models/jina_clip/image_processing_jina_clip.js"),D=e("./src/models/llava_onevision/image_processing_llava_onevision.js"),G=e("./src/models/mask2former/image_processing_mask2former.js"),h=e("./src/models/maskformer/image_processing_maskformer.js"),y=e("./src/models/mobilenet_v1/image_processing_mobilenet_v1.js"),M=e("./src/models/mobilenet_v2/image_processing_mobilenet_v2.js"),m=e("./src/models/mobilenet_v3/image_processing_mobilenet_v3.js"),_=e("./src/models/mobilenet_v4/image_processing_mobilenet_v4.js"),x=e("./src/models/mobilevit/image_processing_mobilevit.js"),b=e("./src/models/nougat/image_processing_nougat.js"),X=e("./src/models/owlv2/image_processing_owlv2.js"),Z=e("./src/models/owlvit/image_processing_owlvit.js"),T=e("./src/models/phi3_v/image_processing_phi3_v.js"),CA=e("./src/models/pvt/image_processing_pvt.js"),eA=e("./src/models/qwen2_vl/image_processing_qwen2_vl.js"),tA=e("./src/models/rt_detr/image_processing_rt_detr.js"),BA=e("./src/models/sam/image_processing_sam.js"),sA=e("./src/models/segformer/image_processing_segformer.js"),cA=e("./src/models/siglip/image_processing_siglip.js"),dA=e("./src/models/smolvlm/image_processing_smolvlm.js"),P=e("./src/models/swin2sr/image_processing_swin2sr.js"),U=e("./src/models/vit/image_processing_vit.js"),z=e("./src/models/vitmatte/image_processing_vitmatte.js"),v=e("./src/models/vitpose/image_processing_vitpose.js"),nA=e("./src/models/yolos/image_processing_yolos.js")},"./src/models/janus/image_processing_janus.js":(A,g,e)=>{e.r(g),e.d(g,{VLMImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{constructor(C){super({do_pad:!0,pad_size:{width:C.image_size,height:C.image_size},...C}),this.constant_values=this.config.background_color.map(o=>o*this.rescale_factor)}pad_image(C,o,s,B){return super.pad_image(C,o,s,{constant_values:this.constant_values,center:!0,...B})}}},"./src/models/janus/processing_janus.js":(A,g,e)=>{e.r(g),e.d(g,{VLChatProcessor:()=>B});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js"),C=e("./src/utils/core.js"),o=e("./src/utils/tensor.js"),s=e("./src/utils/image.js");class B extends I.Processor{static image_processor_class=i.AutoImageProcessor;static tokenizer_class=t.AutoTokenizer;static uses_processor_config=!0;constructor(a,r,d){super(a,r,d),this.image_tag=this.config.image_tag,this.image_start_tag=this.config.image_start_tag,this.image_end_tag=this.config.image_end_tag,this.num_image_tokens=this.config.num_image_tokens}async _call(a,{images:r=null,chat_template:d="default"}={}){r?Array.isArray(r)||(r=[r]):r=await Promise.all(a.filter(b=>b.images).flatMap(b=>b.images).map(b=>s.RawImage.read(b)));const c=this.tokenizer,f=c.apply_chat_template(a,{tokenize:!1,add_generation_prompt:!0,chat_template:d}),k=b=>c.encode(b,{add_special_tokens:!1}),u=f.split(this.image_tag),D=u.length-1;if(r.length!==D)throw new Error(`Number of images provided (${r.length}) does not match number of "${this.image_tag}" image tags (${D})`);const[G,h,y]=c.model.convert_tokens_to_ids([this.image_tag,this.image_start_tag,this.image_end_tag]);let M=k(u[0]),m=new Array(M.length).fill(!1);for(let b=1;b0){const b=await this.image_processor(r);return b.pixel_values.unsqueeze_(0),{...x,...b}}return x}}},"./src/models/jina_clip/image_processing_jina_clip.js":(A,g,e)=>{e.r(g),e.d(g,{JinaCLIPImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{constructor(C){const{resize_mode:o,fill_color:s,interpolation:B,size:Q,...a}=C,r=o==="squash"?{width:Q,height:Q}:o==="shortest"?{shortest_edge:Q}:{longest_edge:Q},d=B==="bicubic"?3:2;super({...a,size:r,resample:d,do_center_crop:!0,crop_size:Q,do_normalize:!0})}}},"./src/models/jina_clip/processing_jina_clip.js":(A,g,e)=>{e.r(g),e.d(g,{JinaCLIPProcessor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");class C extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;async _call(s=null,B=null,Q={}){if(!s&&!B)throw new Error("Either text or images must be provided");const a=s?this.tokenizer(s,Q):{},r=B?await this.image_processor(B,Q):{};return{...a,...r}}}},"./src/models/llava/processing_llava.js":(A,g,e)=>{e.r(g),e.d(g,{LlavaProcessor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");class C extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;static uses_processor_config=!0;async _call(s,B=null,Q={}){const a=await this.image_processor(s,Q);if(B){const[d,c]=a.pixel_values.dims.slice(-2),{image_token:f,patch_size:k,num_additional_image_tokens:u}=this.config,D=Math.floor(d/k)*Math.floor(c/k)+u;B=structuredClone(B),Array.isArray(B)||(B=[B]);for(let G=0;G{e.r(g),e.d(g,{LlavaOnevisionImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/mask2former/image_processing_mask2former.js":(A,g,e)=>{e.r(g),e.d(g,{Mask2FormerImageProcessor:()=>i});var I=e("./src/models/maskformer/image_processing_maskformer.js");class i extends I.MaskFormerImageProcessor{}},"./src/models/maskformer/image_processing_maskformer.js":(A,g,e)=>{e.r(g),e.d(g,{MaskFormerFeatureExtractor:()=>t,MaskFormerImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_panoptic_segmentation(...o){return(0,I.post_process_panoptic_segmentation)(...o)}post_process_instance_segmentation(...o){return(0,I.post_process_instance_segmentation)(...o)}}class t extends i{}},"./src/models/mgp_str/processing_mgp_str.js":(A,g,e)=>{e.r(g),e.d(g,{MgpstrProcessor:()=>s});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js"),C=e("./src/utils/maths.js");const o={char:["char_decode",1],bpe:["bpe_decode",2],wp:["wp_decode",102]};class s extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;get char_tokenizer(){return this.components.char_tokenizer}get bpe_tokenizer(){return this.components.bpe_tokenizer}get wp_tokenizer(){return this.components.wp_tokenizer}_decode_helper(Q,a){if(!o.hasOwnProperty(a))throw new Error(`Format ${a} is not supported.`);const[r,d]=o[a],c=this[r].bind(this),[f,k]=Q.dims,u=[],D=[],G=Q.tolist();for(let y=0;y0?_.reduce((b,X)=>b*X,1):0;D.push(m),u.push(x)}return[c(D),u]}char_decode(Q){return this.char_tokenizer.batch_decode(Q).map(a=>a.replaceAll(" ",""))}bpe_decode(Q){return this.bpe_tokenizer.batch_decode(Q)}wp_decode(Q){return this.wp_tokenizer.batch_decode(Q).map(a=>a.replaceAll(" ",""))}batch_decode([Q,a,r]){const[d,c]=this._decode_helper(Q,"char"),[f,k]=this._decode_helper(a,"bpe"),[u,D]=this._decode_helper(r,"wp"),G=[],h=[];for(let y=0;y{e.r(g),e.d(g,{MobileNetV1FeatureExtractor:()=>t,MobileNetV1ImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/mobilenet_v2/image_processing_mobilenet_v2.js":(A,g,e)=>{e.r(g),e.d(g,{MobileNetV2FeatureExtractor:()=>t,MobileNetV2ImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/mobilenet_v3/image_processing_mobilenet_v3.js":(A,g,e)=>{e.r(g),e.d(g,{MobileNetV3FeatureExtractor:()=>t,MobileNetV3ImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/mobilenet_v4/image_processing_mobilenet_v4.js":(A,g,e)=>{e.r(g),e.d(g,{MobileNetV4FeatureExtractor:()=>t,MobileNetV4ImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/mobilevit/image_processing_mobilevit.js":(A,g,e)=>{e.r(g),e.d(g,{MobileViTFeatureExtractor:()=>t,MobileViTImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/moonshine/feature_extraction_moonshine.js":(A,g,e)=>{e.r(g),e.d(g,{MoonshineFeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js");class t extends I.FeatureExtractor{async _call(o){(0,I.validate_audio_inputs)(o,"MoonshineFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const s=[1,o.length];return{input_values:new i.Tensor("float32",o,s)}}}},"./src/models/moonshine/processing_moonshine.js":(A,g,e)=>{e.r(g),e.d(g,{MoonshineProcessor:()=>C});var I=e("./src/models/auto/feature_extraction_auto.js"),i=e("./src/tokenizers.js"),t=e("./src/base/processing_utils.js");class C extends t.Processor{static tokenizer_class=i.AutoTokenizer;static feature_extractor_class=I.AutoFeatureExtractor;async _call(s){return await this.feature_extractor(s)}}},"./src/models/nougat/image_processing_nougat.js":(A,g,e)=>{e.r(g),e.d(g,{NougatImageProcessor:()=>i});var I=e("./src/models/donut/image_processing_donut.js");class i extends I.DonutImageProcessor{}},"./src/models/owlv2/image_processing_owlv2.js":(A,g,e)=>{e.r(g),e.d(g,{Owlv2ImageProcessor:()=>i});var I=e("./src/models/owlvit/image_processing_owlvit.js");class i extends I.OwlViTImageProcessor{}},"./src/models/owlvit/image_processing_owlvit.js":(A,g,e)=>{e.r(g),e.d(g,{OwlViTFeatureExtractor:()=>t,OwlViTImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_object_detection(...o){return(0,I.post_process_object_detection)(...o)}}class t extends i{}},"./src/models/owlvit/processing_owlvit.js":(A,g,e)=>{e.r(g),e.d(g,{OwlViTProcessor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");class C extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor}},"./src/models/paligemma/processing_paligemma.js":(A,g,e)=>{e.r(g),e.d(g,{PaliGemmaProcessor:()=>s});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");const C="";function o(B,Q,a,r,d){return`${r.repeat(a*d)}${Q}${B} `}class s extends I.Processor{static tokenizer_class=t.AutoTokenizer;static image_processor_class=i.AutoImageProcessor;static uses_processor_config=!1;async _call(Q,a=null,r={}){a||(console.warn("You are using PaliGemma without a text prefix. It will perform as a picture-captioning model."),a=""),Array.isArray(Q)||(Q=[Q]),Array.isArray(a)||(a=[a]);const d=this.tokenizer.bos_token,c=this.image_processor.config.image_seq_length;let f;a.some(D=>D.includes(C))?f=a.map(D=>{const G=D.replaceAll(C,C.repeat(c)),h=G.lastIndexOf(C),y=h===-1?0:h+C.length;return G.slice(0,y)+d+G.slice(y)+` `}):(console.warn("You are passing both `text` and `images` to `PaliGemmaProcessor`. The processor expects special image tokens in the text, as many tokens as there are images per each text. It is recommended to add `` tokens in the very beginning of your text. For this call, we will infer how many images each text has and add special tokens."),f=a.map(D=>o(D,d,c,C,Q.length)));const k=this.tokenizer(f,r);return{...await this.image_processor(Q,r),...k}}}},"./src/models/phi3_v/image_processing_phi3_v.js":(A,g,e)=>{e.r(g),e.d(g,{Phi3VImageProcessor:()=>Q});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");const t=336,C=[2,3],{ceil:o,floor:s,sqrt:B}=Math;class Q extends I.ImageProcessor{constructor(r){super({...r,do_normalize:!0,do_pad:!0,pad_size:"custom",do_convert_rgb:!0,do_resize:!0}),this._num_crops=r.num_crops}calc_num_image_tokens_from_image_size(r,d){const{num_img_tokens:c}=this.config;return s((s(d/t)*s(r/t)+1)*c+1+(s(d/t)+1)*B(c))}get_resize_output_image_size(r,d){const c=this._num_crops,[f,k]=r.size;let u=f/k,D=1;for(;D*Math.ceil(D/u)<=c;)D+=1;D-=1;const G=Math.floor(D*336),h=Math.floor(G/u);return[G,h]}pad_image(r,d,c,f={}){const[k,u]=d,D=t*o(k/t),G=t*o(u/t),h=[1,1,1].map((y,M)=>(y-this.image_mean[M])/this.image_std[M]);return super.pad_image(r,d,{width:G,height:D},{center:!0,constant_values:h,...f})}async _call(r,{num_crops:d=null}={}){if(this._num_crops=d??=this.config.num_crops,d<4||B(d)%1!==0)throw new Error("num_crops must be a square number >= 4");Array.isArray(r)||(r=[r]);const c=r.length,f=await Promise.all(r.map(m=>this.preprocess(m))),k=f.map(m=>m.original_size),u=f.map(m=>m.reshaped_input_size),D=[];for(const{pixel_values:m}of f){m.unsqueeze_(0);const[_,x]=m.dims.slice(-2),b=await(0,i.interpolate_4d)(m,{size:[t,t],mode:"bicubic"});if(d>0){const X=[],Z=B(d),T=s(x/Z),CA=s(_/Z);for(let tA=0;tAm.map(_=>t*o(_/t))),y=new i.Tensor("int64",h.flat(),[c,2]),M=h.map(([m,_])=>this.calc_num_image_tokens_from_image_size(_,m));return{pixel_values:G,original_sizes:k,reshaped_input_sizes:u,image_sizes:y,num_img_tokens:M}}}},"./src/models/phi3_v/processing_phi3_v.js":(A,g,e)=>{e.r(g),e.d(g,{Phi3VProcessor:()=>s});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");e("./src/utils/image.js");const C="<|image|>",o=/<\|image_\d+\|>/g;class s extends I.Processor{static image_processor_class=i.AutoImageProcessor;static tokenizer_class=t.AutoTokenizer;async _call(Q,a=null,{padding:r=!0,truncation:d=!0,num_crops:c=null}={}){Array.isArray(Q)||(Q=[Q]);let f,k;if(a){k=await this.image_processor(a,{num_crops:c});const{num_img_tokens:u}=k,D=Q.map((h,y)=>h.split(o).join(C.repeat(u[y])));f=this.tokenizer(D,{padding:r,truncation:d});const G=this.tokenizer.model.convert_tokens_to_ids([C])[0];f.input_ids.map_(h=>h==G?-h:h)}else f=this.tokenizer(Q);return{...f,...k}}}},"./src/models/processors.js":(A,g,e)=>{e.r(g),e.d(g,{Florence2Processor:()=>I.Florence2Processor,Gemma3nProcessor:()=>i.Gemma3nProcessor,GroundingDinoProcessor:()=>t.GroundingDinoProcessor,Idefics3Processor:()=>C.Idefics3Processor,JinaCLIPProcessor:()=>s.JinaCLIPProcessor,LlavaProcessor:()=>B.LlavaProcessor,MgpstrProcessor:()=>Q.MgpstrProcessor,MoonshineProcessor:()=>a.MoonshineProcessor,OwlViTProcessor:()=>r.OwlViTProcessor,PaliGemmaProcessor:()=>c.PaliGemmaProcessor,Phi3VProcessor:()=>d.Phi3VProcessor,PyAnnoteProcessor:()=>f.PyAnnoteProcessor,Qwen2VLProcessor:()=>k.Qwen2VLProcessor,SamProcessor:()=>u.SamProcessor,SmolVLMProcessor:()=>D.SmolVLMProcessor,SpeechT5Processor:()=>G.SpeechT5Processor,UltravoxProcessor:()=>h.UltravoxProcessor,VLChatProcessor:()=>o.VLChatProcessor,VoxtralProcessor:()=>y.VoxtralProcessor,Wav2Vec2Processor:()=>M.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>m.Wav2Vec2ProcessorWithLM,WhisperProcessor:()=>_.WhisperProcessor});var I=e("./src/models/florence2/processing_florence2.js"),i=e("./src/models/gemma3n/processing_gemma3n.js"),t=e("./src/models/grounding_dino/processing_grounding_dino.js"),C=e("./src/models/idefics3/processing_idefics3.js"),o=e("./src/models/janus/processing_janus.js"),s=e("./src/models/jina_clip/processing_jina_clip.js"),B=e("./src/models/llava/processing_llava.js"),Q=e("./src/models/mgp_str/processing_mgp_str.js"),a=e("./src/models/moonshine/processing_moonshine.js"),r=e("./src/models/owlvit/processing_owlvit.js"),d=e("./src/models/phi3_v/processing_phi3_v.js"),c=e("./src/models/paligemma/processing_paligemma.js"),f=e("./src/models/pyannote/processing_pyannote.js"),k=e("./src/models/qwen2_vl/processing_qwen2_vl.js"),u=e("./src/models/sam/processing_sam.js"),D=e("./src/models/smolvlm/processing_smolvlm.js"),G=e("./src/models/speecht5/processing_speecht5.js"),h=e("./src/models/ultravox/processing_ultravox.js"),y=e("./src/models/voxtral/processing_voxtral.js"),M=e("./src/models/wav2vec2/processing_wav2vec2.js"),m=e("./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js"),_=e("./src/models/whisper/processing_whisper.js")},"./src/models/pvt/image_processing_pvt.js":(A,g,e)=>{e.r(g),e.d(g,{PvtImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/pyannote/feature_extraction_pyannote.js":(A,g,e)=>{e.r(g),e.d(g,{PyAnnoteFeatureExtractor:()=>C});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js"),t=e("./src/utils/maths.js");class C extends I.FeatureExtractor{async _call(s){(0,I.validate_audio_inputs)(s,"PyAnnoteFeatureExtractor"),s instanceof Float64Array&&(s=new Float32Array(s));const B=[1,1,s.length];return{input_values:new i.Tensor("float32",s,B)}}samples_to_frames(s){return(s-this.config.offset)/this.config.step}post_process_speaker_diarization(s,B){const Q=B/this.samples_to_frames(B)/this.config.sampling_rate,a=[];for(const r of s.tolist()){const d=[];let c=-1;for(let f=0;f({id:f,start:k*Q,end:u*Q,confidence:D/(u-k)})))}return a}}},"./src/models/pyannote/processing_pyannote.js":(A,g,e)=>{e.r(g),e.d(g,{PyAnnoteProcessor:()=>t});var I=e("./src/base/processing_utils.js"),i=e("./src/models/pyannote/feature_extraction_pyannote.js");class t extends I.Processor{static feature_extractor_class=i.PyAnnoteFeatureExtractor;async _call(o){return await this.feature_extractor(o)}post_process_speaker_diarization(...o){return this.feature_extractor.post_process_speaker_diarization(...o)}get sampling_rate(){return this.feature_extractor.config.sampling_rate}}},"./src/models/qwen2_vl/image_processing_qwen2_vl.js":(A,g,e)=>{e.r(g),e.d(g,{Qwen2VLImageProcessor:()=>t});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");class t extends I.ImageProcessor{async _call(o,...s){const{pixel_values:B,original_sizes:Q,reshaped_input_sizes:a}=await super._call(o,...s);let r=B;const{temporal_patch_size:d,merge_size:c,patch_size:f}=this.config;r.dims[0]===1&&(r=(0,i.cat)(Array.from({length:d},()=>r),0));const k=r.dims[0]/d,u=r.dims[1],D=Math.floor(r.dims[2]/f),G=Math.floor(r.dims[3]/f),h=r.view(k,d,u,Math.floor(D/c),c,f,Math.floor(G/c),c,f).permute(0,3,6,4,7,2,1,5,8).view(k*D*G,u*d*f*f),y=new i.Tensor("int64",[k,D,G],[1,3]);return{pixel_values:h,image_grid_thw:y,original_sizes:Q,reshaped_input_sizes:a}}}},"./src/models/qwen2_vl/processing_qwen2_vl.js":(A,g,e)=>{e.r(g),e.d(g,{Qwen2VLProcessor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js"),t=e("./src/tokenizers.js");e("./src/utils/image.js");class C extends I.Processor{static image_processor_class=i.AutoImageProcessor;static tokenizer_class=t.AutoTokenizer;async _call(s,B=null,...Q){Array.isArray(s)||(s=[s]);let a,r;if(B&&(a=await this.image_processor(B),r=a.image_grid_thw),r){let c=this.image_processor.config.merge_size**2,f=0;const k=r.tolist();s=s.map(u=>{for(;u.includes("<|image_pad|>");){const D=Number(k[f++].reduce((G,h)=>G*h,1n));u=u.replace("<|image_pad|>","<|placeholder|>".repeat(Math.floor(D/c)))}return u.replaceAll("<|placeholder|>","<|image_pad|>")})}return{...this.tokenizer(s),...a}}}},"./src/models/rt_detr/image_processing_rt_detr.js":(A,g,e)=>{e.r(g),e.d(g,{RTDetrImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_object_detection(...C){return(0,I.post_process_object_detection)(...C)}}},"./src/models/sam/image_processing_sam.js":(A,g,e)=>{e.r(g),e.d(g,{SamImageProcessor:()=>C});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/core.js"),t=e("./src/utils/tensor.js");class C extends I.ImageProcessor{reshape_input_points(s,B,Q,a=!1){s=structuredClone(s);let r=(0,i.calculateDimensions)(s);if(r.length===3)a||(r=[1,...r]),s=[s];else if(r.length!==4)throw Error("The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.");for(let d=0;da!==B.dims[r]))throw Error(`The first ${Q.length} dimensions of 'input_points' and 'input_labels' must be the same.`);return new t.Tensor("int64",s.flat(1/0).map(BigInt),Q)}async _call(s,{input_points:B=null,input_labels:Q=null,input_boxes:a=null}={}){const r=await super._call(s);if(B&&(r.input_points=this.reshape_input_points(B,r.original_sizes,r.reshaped_input_sizes)),Q){if(!r.input_points)throw Error("`input_points` must be provided if `input_labels` are provided.");r.input_labels=this.add_input_labels(Q,r.input_points)}return a&&(r.input_boxes=this.reshape_input_points(a,r.original_sizes,r.reshaped_input_sizes,!0)),r}async post_process_masks(s,B,Q,{mask_threshold:a=0,binarize:r=!0,pad_size:d=null}={}){const c=[];d=d??this.pad_size;const f=[d.height,d.width];for(let k=0;ka&&(y[M]=1);G=new t.Tensor("bool",y,G.dims)}c.push(G)}return c}generate_crop_boxes(s,B,{crop_n_layers:Q=0,overlap_ratio:a=512/1500,points_per_crop:r=32,crop_n_points_downscale_factor:d=1}={}){}}},"./src/models/sam/processing_sam.js":(A,g,e)=>{e.r(g),e.d(g,{SamProcessor:()=>t});var I=e("./src/base/processing_utils.js"),i=e("./src/models/auto/image_processing_auto.js");class t extends I.Processor{static image_processor_class=i.AutoImageProcessor;async _call(...o){return await this.image_processor(...o)}post_process_masks(...o){return this.image_processor.post_process_masks(...o)}reshape_input_points(...o){return this.image_processor.reshape_input_points(...o)}}},"./src/models/seamless_m4t/feature_extraction_seamless_m4t.js":(A,g,e)=>{e.r(g),e.d(g,{SeamlessM4TFeatureExtractor:()=>C});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js"),t=e("./src/utils/audio.js");class C extends I.FeatureExtractor{constructor(s){super(s);const B=this.config.sampling_rate,Q=(0,t.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(B/2),B,null,"kaldi",!0);this.mel_filters=Q,this.window=(0,t.window_function)(400,"povey",{periodic:!1})}async _extract_fbank_features(s,B){return s=s.map(Q=>Q*32768),(0,t.spectrogram)(s,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:B,transpose:!0})}async _call(s,{padding:B=!0,pad_to_multiple_of:Q=2,do_normalize_per_mel_bins:a=!0,return_attention_mask:r=!0}={}){(0,I.validate_audio_inputs)(s,"SeamlessM4TFeatureExtractor");let d=await this._extract_fbank_features(s,this.config.max_length);if(a){const[y,M]=d.dims,m=d.data;for(let _=0;_0){const x=new Float32Array(M*(y+_));x.set(m),x.fill(this.config.padding_value,m.length);const b=y+_;d=new i.Tensor(d.type,x,[b,M]),r&&(c=new i.Tensor("int64",new BigInt64Array(b),[1,b]),c.data.fill(1n,0,y))}}const[f,k]=d.dims,u=this.config.stride;if(f%u!==0)throw new Error(`The number of frames (${f}) must be a multiple of the stride (${u}).`);const G=d.view(1,Math.floor(f/u),k*u),h={input_features:G};if(r){const y=G.dims[1],M=new BigInt64Array(y);if(c){const m=c.data;for(let _=1,x=0;_{e.r(g),e.d(g,{SegformerFeatureExtractor:()=>t,SegformerImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_semantic_segmentation(...o){return(0,I.post_process_semantic_segmentation)(...o)}}class t extends i{}},"./src/models/siglip/image_processing_siglip.js":(A,g,e)=>{e.r(g),e.d(g,{SiglipImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}},"./src/models/smolvlm/image_processing_smolvlm.js":(A,g,e)=>{e.r(g),e.d(g,{SmolVLMImageProcessor:()=>I.Idefics3ImageProcessor});var I=e("./src/models/idefics3/image_processing_idefics3.js")},"./src/models/smolvlm/processing_smolvlm.js":(A,g,e)=>{e.r(g),e.d(g,{SmolVLMProcessor:()=>I.Idefics3Processor});var I=e("./src/models/idefics3/processing_idefics3.js")},"./src/models/snac/feature_extraction_snac.js":(A,g,e)=>{e.r(g),e.d(g,{SnacFeatureExtractor:()=>i});var I=e("./src/models/dac/feature_extraction_dac.js");class i extends I.DacFeatureExtractor{}},"./src/models/speecht5/feature_extraction_speecht5.js":(A,g,e)=>{e.r(g),e.d(g,{SpeechT5FeatureExtractor:()=>i});var I=e("./src/base/feature_extraction_utils.js");class i extends I.FeatureExtractor{}},"./src/models/speecht5/processing_speecht5.js":(A,g,e)=>{e.r(g),e.d(g,{SpeechT5Processor:()=>C});var I=e("./src/base/processing_utils.js"),i=e("./src/tokenizers.js"),t=e("./src/models/auto/feature_extraction_auto.js");class C extends I.Processor{static tokenizer_class=i.AutoTokenizer;static feature_extractor_class=t.AutoFeatureExtractor;async _call(s){return await this.feature_extractor(s)}}},"./src/models/swin2sr/image_processing_swin2sr.js":(A,g,e)=>{e.r(g),e.d(g,{Swin2SRImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{pad_image(C,o,s,B={}){const[Q,a,r]=o;return super.pad_image(C,o,{width:a+(s-a%s)%s,height:Q+(s-Q%s)%s},{mode:"symmetric",center:!1,constant_values:-1,...B})}}},"./src/models/ultravox/processing_ultravox.js":(A,g,e)=>{e.r(g),e.d(g,{UltravoxProcessor:()=>C});var I=e("./src/models/auto/feature_extraction_auto.js"),i=e("./src/tokenizers.js"),t=e("./src/base/processing_utils.js");class C extends t.Processor{static tokenizer_class=i.AutoTokenizer;static feature_extractor_class=I.AutoFeatureExtractor;static uses_processor_config=!0;async _call(s,B=null,Q={}){if(Array.isArray(s))throw new Error("Batched inputs are not supported yet.");let a={};if(B){const d=B.length,{input_features:c}=await this.feature_extractor(B,{...Q,max_length:d}),f=Math.round(d/this.config.encoder_ds_factor+1e-4),k=1+Math.ceil(f/this.config.stack_factor);a.audio_token_len=[k],a.audio_values=c;const u=this.config.audio_placeholder;if(!s.includes(u))throw new Error(`The input text does not contain the image token ${u}.`);s=s.replaceAll(u,u.repeat(k))}return{...this.tokenizer(s,{add_special_tokens:!1,...Q}),...a}}}},"./src/models/vit/image_processing_vit.js":(A,g,e)=>{e.r(g),e.d(g,{ViTFeatureExtractor:()=>t,ViTImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{}class t extends i{}},"./src/models/vitmatte/image_processing_vitmatte.js":(A,g,e)=>{e.r(g),e.d(g,{VitMatteImageProcessor:()=>t});var I=e("./src/base/image_processors_utils.js"),i=e("./src/utils/tensor.js");class t extends I.ImageProcessor{async _call(o,s){Array.isArray(o)||(o=[o]),Array.isArray(s)||(s=[s]);const B=await Promise.all(o.map(r=>this.preprocess(r))),Q=await Promise.all(s.map(r=>this.preprocess(r,{do_normalize:!1,do_convert_rgb:!1,do_convert_grayscale:!0})));return{pixel_values:(0,i.stack)(B.map((r,d)=>(0,i.cat)([r.pixel_values,Q[d].pixel_values],0)),0),original_sizes:B.map(r=>r.original_size),reshaped_input_sizes:B.map(r=>r.reshaped_input_size)}}}},"./src/models/vitpose/image_processing_vitpose.js":(A,g,e)=>{e.r(g),e.d(g,{VitPoseImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_pose_estimation(C,o,{threshold:s=null}={}){const B=C.tolist(),[Q,a,r,d]=C.dims,c=[];for(let f=0;f{e.r(g),e.d(g,{VoxtralProcessor:()=>a});var I=e("./src/models/auto/feature_extraction_auto.js"),i=e("./src/tokenizers.js"),t=e("./src/base/processing_utils.js"),C=e("./src/utils/tensor.js");const o="[AUDIO]",s="[BEGIN_AUDIO]",B=375;function Q(r,d){const c=[];for(let f=0;fQ(b,h)),M=y.map(b=>b.length),m=y.flat(),_=(await Promise.all(m.map(b=>this.feature_extractor(b,f)))).map(b=>b.input_features);k.audio_values=_.length>1?(0,C.cat)(_,0):_[0];let x=D[0];for(let b=0;b{e.r(g),e.d(g,{Wav2Vec2FeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js"),i=e("./src/utils/tensor.js");class t extends I.FeatureExtractor{_zero_mean_unit_var_norm(o){const B=o.reduce((a,r)=>a+r,0)/o.length,Q=o.reduce((a,r)=>a+(r-B)**2,0)/o.length;return o.map(a=>(a-B)/Math.sqrt(Q+1e-7))}async _call(o){(0,I.validate_audio_inputs)(o,"Wav2Vec2FeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));let s=o;this.config.do_normalize&&(s=this._zero_mean_unit_var_norm(s));const B=[1,s.length];return{input_values:new i.Tensor("float32",s,B),attention_mask:new i.Tensor("int64",new BigInt64Array(s.length).fill(1n),B)}}}},"./src/models/wav2vec2/processing_wav2vec2.js":(A,g,e)=>{e.r(g),e.d(g,{Wav2Vec2Processor:()=>C});var I=e("./src/tokenizers.js"),i=e("./src/models/auto/feature_extraction_auto.js"),t=e("./src/base/processing_utils.js");class C extends t.Processor{static tokenizer_class=I.AutoTokenizer;static feature_extractor_class=i.AutoFeatureExtractor;async _call(s){return await this.feature_extractor(s)}}},"./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js":(A,g,e)=>{e.r(g),e.d(g,{Wav2Vec2ProcessorWithLM:()=>C});var I=e("./src/tokenizers.js"),i=e("./src/models/auto/feature_extraction_auto.js"),t=e("./src/base/processing_utils.js");class C extends t.Processor{static tokenizer_class=I.AutoTokenizer;static feature_extractor_class=i.AutoFeatureExtractor;async _call(s){return await this.feature_extractor(s)}}},"./src/models/wespeaker/feature_extraction_wespeaker.js":(A,g,e)=>{e.r(g),e.d(g,{WeSpeakerFeatureExtractor:()=>t});var I=e("./src/base/feature_extraction_utils.js");e("./src/utils/tensor.js");var i=e("./src/utils/audio.js");class t extends I.FeatureExtractor{constructor(o){super(o);const s=this.config.sampling_rate,B=(0,i.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(s/2),s,null,"kaldi",!0);this.mel_filters=B,this.window=(0,i.window_function)(400,"hamming",{periodic:!1}),this.min_num_frames=this.config.min_num_frames}async _extract_fbank_features(o){return o=o.map(s=>s*32768),(0,i.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,transpose:!0,min_num_frames:this.min_num_frames})}async _call(o){(0,I.validate_audio_inputs)(o,"WeSpeakerFeatureExtractor");const s=(await this._extract_fbank_features(o)).unsqueeze_(0);if(this.config.fbank_centering_span===null){const B=s.mean(1).data,Q=s.data,[a,r,d]=s.dims;for(let c=0;c{e.r(g),e.d(g,{WHISPER_LANGUAGE_MAPPING:()=>i,WHISPER_TO_LANGUAGE_CODE_MAPPING:()=>t,whisper_language_to_code:()=>C});const I=[["en","english"],["zh","chinese"],["de","german"],["es","spanish"],["ru","russian"],["ko","korean"],["fr","french"],["ja","japanese"],["pt","portuguese"],["tr","turkish"],["pl","polish"],["ca","catalan"],["nl","dutch"],["ar","arabic"],["sv","swedish"],["it","italian"],["id","indonesian"],["hi","hindi"],["fi","finnish"],["vi","vietnamese"],["he","hebrew"],["uk","ukrainian"],["el","greek"],["ms","malay"],["cs","czech"],["ro","romanian"],["da","danish"],["hu","hungarian"],["ta","tamil"],["no","norwegian"],["th","thai"],["ur","urdu"],["hr","croatian"],["bg","bulgarian"],["lt","lithuanian"],["la","latin"],["mi","maori"],["ml","malayalam"],["cy","welsh"],["sk","slovak"],["te","telugu"],["fa","persian"],["lv","latvian"],["bn","bengali"],["sr","serbian"],["az","azerbaijani"],["sl","slovenian"],["kn","kannada"],["et","estonian"],["mk","macedonian"],["br","breton"],["eu","basque"],["is","icelandic"],["hy","armenian"],["ne","nepali"],["mn","mongolian"],["bs","bosnian"],["kk","kazakh"],["sq","albanian"],["sw","swahili"],["gl","galician"],["mr","marathi"],["pa","punjabi"],["si","sinhala"],["km","khmer"],["sn","shona"],["yo","yoruba"],["so","somali"],["af","afrikaans"],["oc","occitan"],["ka","georgian"],["be","belarusian"],["tg","tajik"],["sd","sindhi"],["gu","gujarati"],["am","amharic"],["yi","yiddish"],["lo","lao"],["uz","uzbek"],["fo","faroese"],["ht","haitian creole"],["ps","pashto"],["tk","turkmen"],["nn","nynorsk"],["mt","maltese"],["sa","sanskrit"],["lb","luxembourgish"],["my","myanmar"],["bo","tibetan"],["tl","tagalog"],["mg","malagasy"],["as","assamese"],["tt","tatar"],["haw","hawaiian"],["ln","lingala"],["ha","hausa"],["ba","bashkir"],["jw","javanese"],["su","sundanese"]],i=new Map(I),t=new Map([...I.map(([o,s])=>[s,o]),["burmese","my"],["valencian","ca"],["flemish","nl"],["haitian","ht"],["letzeburgesch","lb"],["pushto","ps"],["panjabi","pa"],["moldavian","ro"],["moldovan","ro"],["sinhalese","si"],["castilian","es"]]);function C(o){o=o.toLowerCase();let s=t.get(o);if(s===void 0){const B=o.match(/^<\|([a-z]{2})\|>$/);if(B&&(o=B[1]),i.has(o))s=o;else{const a=o.length===2?i.keys():i.values();throw new Error(`Language "${o}" is not supported. Must be one of: ${JSON.stringify(Array.from(a))}`)}}return s}},"./src/models/whisper/feature_extraction_whisper.js":(A,g,e)=>{e.r(g),e.d(g,{WhisperFeatureExtractor:()=>C});var I=e("./src/base/feature_extraction_utils.js");e("./src/utils/tensor.js");var i=e("./src/utils/audio.js"),t=e("./src/utils/maths.js");class C extends I.FeatureExtractor{constructor(s){super(s),this.config.mel_filters??=(0,i.mel_filter_bank)(Math.floor(1+this.config.n_fft/2),this.config.feature_size,0,8e3,this.config.sampling_rate,"slaney","slaney"),this.window=(0,i.window_function)(this.config.n_fft,"hann")}async _extract_fbank_features(s){const B=await(0,i.spectrogram)(s,this.window,this.config.n_fft,this.config.hop_length,{power:2,mel_filters:this.config.mel_filters,log_mel:"log10",max_num_frames:Math.min(Math.floor(s.length/this.config.hop_length),this.config.nb_max_frames)}),Q=B.data,a=(0,t.max)(Q)[0];for(let r=0;ra?(s.length>this.config.n_samples&&console.warn("Attempting to extract features for audio longer than 30 seconds. If using a pipeline to extract transcript from a long audio clip, remember to specify `chunk_length_s` and/or `stride_length_s`."),Q=s.slice(0,a)):(Q=new Float32Array(a),Q.set(s)),{input_features:(await this._extract_fbank_features(Q)).unsqueeze_(0)}}}},"./src/models/whisper/generation_whisper.js":(A,g,e)=>{e.r(g),e.d(g,{WhisperGenerationConfig:()=>i});var I=e("./src/generation/configuration_utils.js");class i extends I.GenerationConfig{return_timestamps=null;return_token_timestamps=null;num_frames=null;alignment_heads=null;task=null;language=null;no_timestamps_token_id=null;prompt_ids=null;is_multilingual=null;lang_to_id=null;task_to_id=null;max_initial_timestamp_index=1}},"./src/models/whisper/processing_whisper.js":(A,g,e)=>{e.r(g),e.d(g,{WhisperProcessor:()=>C});var I=e("./src/models/auto/feature_extraction_auto.js"),i=e("./src/tokenizers.js"),t=e("./src/base/processing_utils.js");class C extends t.Processor{static tokenizer_class=i.AutoTokenizer;static feature_extractor_class=I.AutoFeatureExtractor;async _call(s){return await this.feature_extractor(s)}}},"./src/models/yolos/image_processing_yolos.js":(A,g,e)=>{e.r(g),e.d(g,{YolosFeatureExtractor:()=>t,YolosImageProcessor:()=>i});var I=e("./src/base/image_processors_utils.js");class i extends I.ImageProcessor{post_process_object_detection(...o){return(0,I.post_process_object_detection)(...o)}}class t extends i{}},"./src/ops/registry.js":(A,g,e)=>{e.r(g),e.d(g,{TensorOpRegistry:()=>s});var I=e("./src/backends/onnx.js"),i=e("./src/utils/tensor.js"),t=e("./src/env.js");const C=t.apis.IS_BROWSER_ENV||t.apis.IS_WEBWORKER_ENV,o=async(B,Q,a)=>{const r=await(0,I.createInferenceSession)(new Uint8Array(B),Q);let d=Promise.resolve();return async c=>{const f=(0,I.isONNXProxy)(),k=Object.fromEntries(Object.entries(c).map(([D,G])=>[D,(f?G.clone():G).ort_tensor])),u=await(d=C?d.then(()=>r.run(k)):r.run(k));return Array.isArray(a)?a.map(D=>new i.Tensor(u[D])):new i.Tensor(u[a])}};class s{static session_options={};static get nearest_interpolate_4d(){return this._nearest_interpolate_4d||(this._nearest_interpolate_4d=o([8,10,18,0,58,129,1,10,41,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,18,10,4,109,111,100,101,34,7,110,101,97,114,101,115,116,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,21],this.session_options,"y")),this._nearest_interpolate_4d}static get bilinear_interpolate_4d(){return this._bilinear_interpolate_4d||(this._bilinear_interpolate_4d=o([8,9,18,0,58,128,1,10,40,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,17,10,4,109,111,100,101,34,6,108,105,110,101,97,114,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bilinear_interpolate_4d}static get bicubic_interpolate_4d(){return this._bicubic_interpolate_4d||(this._bicubic_interpolate_4d=o([8,9,18,0,58,127,10,39,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,16,10,4,109,111,100,101,34,5,99,117,98,105,99,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bicubic_interpolate_4d}static get matmul(){return this._matmul||(this._matmul=o([8,9,18,0,58,55,10,17,10,1,97,10,1,98,18,1,99,34,6,77,97,116,77,117,108,18,1,114,90,9,10,1,97,18,4,10,2,8,1,90,9,10,1,98,18,4,10,2,8,1,98,9,10,1,99,18,4,10,2,8,1,66,2,16,20],this.session_options,"c")),this._matmul}static get stft(){return this._stft||(this._stft=o([8,7,18,0,58,148,1,10,38,10,1,115,10,1,106,10,1,119,10,1,108,18,1,111,34,4,83,84,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,115,90,26,10,1,115,18,21,10,19,8,1,18,15,10,3,18,1,98,10,3,18,1,115,10,3,18,1,99,90,11,10,1,106,18,6,10,4,8,7,18,0,90,16,10,1,119,18,11,10,9,8,1,18,5,10,3,18,1,119,90,11,10,1,108,18,6,10,4,8,7,18,0,98,31,10,1,111,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,102,10,3,18,1,100,10,3,18,1,99,66,2,16,17],this.session_options,"o")),this._stft}static get rfft(){return this._rfft||(this._rfft=o([8,9,18,0,58,97,10,33,10,1,120,10,0,10,1,97,18,1,121,34,3,68,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,100,90,21,10,1,120,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,90,11,10,1,97,18,6,10,4,8,7,18,0,98,21,10,1,121,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,66,2,16,20],this.session_options,"y")),this._rfft}static get top_k(){return this._top_k||(this._top_k=o([8,10,18,0,58,73,10,18,10,1,120,10,1,107,18,1,118,18,1,105,34,4,84,111,112,75,18,1,116,90,9,10,1,120,18,4,10,2,8,1,90,15,10,1,107,18,10,10,8,8,7,18,4,10,2,8,1,98,9,10,1,118,18,4,10,2,8,1,98,9,10,1,105,18,4,10,2,8,7,66,2,16,21],this.session_options,["v","i"])),this._top_k}static get slice(){return this._slice||(this._slice=o([8,7,18,0,58,96,10,25,10,1,120,10,1,115,10,1,101,10,1,97,10,1,116,18,1,121,34,5,83,108,105,99,101,18,1,114,90,9,10,1,120,18,4,10,2,8,1,90,9,10,1,115,18,4,10,2,8,7,90,9,10,1,101,18,4,10,2,8,7,90,9,10,1,97,18,4,10,2,8,7,90,9,10,1,116,18,4,10,2,8,7,98,9,10,1,121,18,4,10,2,8,1,66,2,16,13],this.session_options,"y")),this._slice}}},"./src/pipelines.js":(A,g,e)=>{e.r(g),e.d(g,{AudioClassificationPipeline:()=>Z,AutomaticSpeechRecognitionPipeline:()=>CA,BackgroundRemovalPipeline:()=>sA,DepthEstimationPipeline:()=>nA,DocumentQuestionAnsweringPipeline:()=>U,FeatureExtractionPipeline:()=>b,FillMaskPipeline:()=>G,ImageClassificationPipeline:()=>tA,ImageFeatureExtractionPipeline:()=>X,ImageSegmentationPipeline:()=>BA,ImageToImagePipeline:()=>v,ImageToTextPipeline:()=>eA,ObjectDetectionPipeline:()=>dA,Pipeline:()=>f,QuestionAnsweringPipeline:()=>D,SummarizationPipeline:()=>y,Text2TextGenerationPipeline:()=>h,TextClassificationPipeline:()=>k,TextGenerationPipeline:()=>_,TextToAudioPipeline:()=>z,TokenClassificationPipeline:()=>u,TranslationPipeline:()=>M,ZeroShotAudioClassificationPipeline:()=>T,ZeroShotClassificationPipeline:()=>x,ZeroShotImageClassificationPipeline:()=>cA,ZeroShotObjectDetectionPipeline:()=>P,pipeline:()=>PA});var I=e("./src/tokenizers.js"),i=e("./src/models.js"),t=e("./src/models/auto/processing_auto.js");e("./src/base/processing_utils.js");var C=e("./src/utils/generic.js"),o=e("./src/utils/core.js"),s=e("./src/utils/maths.js"),B=e("./src/utils/audio.js"),Q=e("./src/utils/tensor.js"),a=e("./src/utils/image.js");async function r(LA){return Array.isArray(LA)||(LA=[LA]),await Promise.all(LA.map(AA=>a.RawImage.read(AA)))}async function d(LA,AA){return Array.isArray(LA)||(LA=[LA]),await Promise.all(LA.map(hA=>typeof hA=="string"||hA instanceof URL?(0,B.read_audio)(hA,AA):hA instanceof Float64Array?new Float32Array(hA):hA))}function c(LA,AA){AA&&(LA=LA.map(NA=>NA|0));const[hA,V,fA,bA]=LA;return{xmin:hA,ymin:V,xmax:fA,ymax:bA}}class f extends C.Callable{constructor({task:AA,model:hA,tokenizer:V=null,processor:fA=null}){super(),this.task=AA,this.model=hA,this.tokenizer=V,this.processor=fA}async dispose(){await this.model.dispose()}}class k extends f{constructor(AA){super(AA)}async _call(AA,{top_k:hA=1}={}){const V=this.tokenizer(AA,{padding:!0,truncation:!0}),fA=await this.model(V),bA=this.model.config.problem_type==="multi_label_classification"?kA=>kA.sigmoid():kA=>new Q.Tensor("float32",(0,s.softmax)(kA.data),kA.dims),NA=this.model.config.id2label,pA=[];for(const kA of fA.logits){const MA=bA(kA),xA=await(0,Q.topk)(MA,hA),vA=xA[0].tolist(),SA=xA[1].tolist().map((re,HA)=>({label:NA?NA[re]:`LABEL_${re}`,score:vA[HA]}));hA===1?pA.push(...SA):pA.push(SA)}return Array.isArray(AA)||hA===1?pA:pA[0]}}class u extends f{constructor(AA){super(AA)}async _call(AA,{ignore_labels:hA=["O"]}={}){const V=Array.isArray(AA),fA=this.tokenizer(V?AA:[AA],{padding:!0,truncation:!0}),NA=(await this.model(fA)).logits,pA=this.model.config.id2label,kA=[];for(let MA=0;MAoe==this.tokenizer.sep_token_id);kA[vA].map((oe,se)=>oe==1&&(se===0||se>SA&&MA.findIndex(Ne=>Ne==ge[se])===-1));const re=bA[vA].tolist(),HA=NA[vA].tolist();for(let oe=1;oese==ge[oe])!==-1)&&(re[oe]=-1/0,HA[oe]=-1/0);const zA=(0,s.softmax)(re).map((oe,se)=>[oe,se]),Be=(0,s.softmax)(HA).map((oe,se)=>[oe,se]);zA[0][0]=0,Be[0][0]=0;const Ae=(0,o.product)(zA,Be).filter(oe=>oe[0][1]<=oe[1][1]).map(oe=>[oe[0][1],oe[1][1],oe[0][0]*oe[1][0]]).sort((oe,se)=>se[2]-oe[2]);for(let oe=0;oere==this.tokenizer.mask_token_id);if(MA===-1)throw Error(`Mask token (${this.tokenizer.mask_token}) not found in text.`);const xA=fA[pA][MA],vA=await(0,Q.topk)(new Q.Tensor("float32",(0,s.softmax)(xA.data),xA.dims),hA),ge=vA[0].tolist(),SA=vA[1].tolist();bA.push(SA.map((re,HA)=>{const zA=kA.slice();return zA[MA]=re,{score:ge[HA],token:Number(re),token_str:this.tokenizer.decode([re]),sequence:this.tokenizer.decode(zA,{skip_special_tokens:!0})}}))}return Array.isArray(AA)?bA:bA[0]}}class h extends f{_key="generated_text";constructor(AA){super(AA)}async _call(AA,hA={}){Array.isArray(AA)||(AA=[AA]),this.model.config.prefix&&(AA=AA.map(kA=>this.model.config.prefix+kA));const V=this.model.config.task_specific_params;V&&V[this.task]&&V[this.task].prefix&&(AA=AA.map(kA=>V[this.task].prefix+kA));const fA=this.tokenizer,bA={padding:!0,truncation:!0};let NA;this instanceof M&&"_build_translation_inputs"in fA?NA=fA._build_translation_inputs(AA,bA,hA):NA=fA(AA,bA);const pA=await this.model.generate({...NA,...hA});return fA.batch_decode(pA,{skip_special_tokens:!0}).map(kA=>({[this._key]:kA}))}}class y extends h{_key="summary_text";constructor(AA){super(AA)}}class M extends h{_key="translation_text";constructor(AA){super(AA)}}function m(LA){return Array.isArray(LA)&&LA.every(AA=>"role"in AA&&"content"in AA)}class _ extends f{constructor(AA){super(AA)}async _call(AA,hA={}){let V=!1,fA=!1,bA=hA.add_special_tokens??(this.tokenizer.add_bos_token||this.tokenizer.add_eos_token)??!1,NA;if(typeof AA=="string")NA=AA=[AA];else if(Array.isArray(AA)&&AA.every(SA=>typeof SA=="string"))V=!0,NA=AA;else{if(m(AA))AA=[AA];else if(Array.isArray(AA)&&AA.every(m))V=!0;else throw new Error("Input must be a string, an array of strings, a Chat, or an array of Chats");fA=!0,NA=AA.map(SA=>this.tokenizer.apply_chat_template(SA,{tokenize:!1,add_generation_prompt:!0})),bA=!1}const pA=fA?!1:hA.return_full_text??!0;this.tokenizer.padding_side="left";const kA=this.tokenizer(NA,{add_special_tokens:bA,padding:!0,truncation:!0}),MA=await this.model.generate({...kA,...hA}),xA=this.tokenizer.batch_decode(MA,{skip_special_tokens:!0});let vA;!pA&&kA.input_ids.dims.at(-1)>0&&(vA=this.tokenizer.batch_decode(kA.input_ids,{skip_special_tokens:!0}).map(SA=>SA.length));const ge=Array.from({length:AA.length},SA=>[]);for(let SA=0;SA[hA.toLowerCase(),V])),this.entailment_id=this.label2id.entailment,this.entailment_id===void 0&&(console.warn("Could not find 'entailment' in label2id mapping. Using 2 as entailment_id."),this.entailment_id=2),this.contradiction_id=this.label2id.contradiction??this.label2id.not_entailment,this.contradiction_id===void 0&&(console.warn("Could not find 'contradiction' in label2id mapping. Using 0 as contradiction_id."),this.contradiction_id=0)}async _call(AA,hA,{hypothesis_template:V="This example is {}.",multi_label:fA=!1}={}){const bA=Array.isArray(AA);bA||(AA=[AA]),Array.isArray(hA)||(hA=[hA]);const NA=hA.map(MA=>V.replace("{}",MA)),pA=fA||hA.length===1,kA=[];for(const MA of AA){const xA=[];for(const SA of NA){const re=this.tokenizer(MA,{text_pair:SA,padding:!0,truncation:!0}),HA=await this.model(re);pA?xA.push([HA.logits.data[this.contradiction_id],HA.logits.data[this.entailment_id]]):xA.push(HA.logits.data[this.entailment_id])}const ge=(pA?xA.map(SA=>(0,s.softmax)(SA)[1]):(0,s.softmax)(xA)).map((SA,re)=>[SA,re]).sort((SA,re)=>re[0]-SA[0]);kA.push({sequence:MA,labels:ge.map(SA=>hA[SA[1]]),scores:ge.map(SA=>SA[0])})}return bA?kA:kA[0]}}class b extends f{constructor(AA){super(AA)}async _call(AA,{pooling:hA="none",normalize:V=!1,quantize:fA=!1,precision:bA="binary"}={}){const NA=this.tokenizer(AA,{padding:!0,truncation:!0}),pA=await this.model(NA);let kA=pA.last_hidden_state??pA.logits??pA.token_embeddings;switch(hA){case"none":break;case"mean":kA=(0,Q.mean_pooling)(kA,NA.attention_mask);break;case"first_token":case"cls":kA=kA.slice(null,0);break;case"last_token":case"eos":kA=kA.slice(null,-1);break;default:throw Error(`Pooling method '${hA}' not supported.`)}return V&&(kA=kA.normalize(2,-1)),fA&&(kA=(0,Q.quantize_embeddings)(kA,bA)),kA}}class X extends f{constructor(AA){super(AA)}async _call(AA,{pool:hA=null}={}){const V=await r(AA),{pixel_values:fA}=await this.processor(V),bA=await this.model({pixel_values:fA});let NA;if(hA){if(!("pooler_output"in bA))throw Error("No pooled output was returned. Make sure the model has a 'pooler' layer when using the 'pool' option.");NA=bA.pooler_output}else NA=bA.last_hidden_state??bA.logits??bA.image_embeds;return NA}}class Z extends f{constructor(AA){super(AA)}async _call(AA,{top_k:hA=5}={}){const V=this.processor.feature_extractor.config.sampling_rate,fA=await d(AA,V),bA=this.model.config.id2label,NA=[];for(const pA of fA){const kA=await this.processor(pA),xA=(await this.model(kA)).logits[0],vA=await(0,Q.topk)(new Q.Tensor("float32",(0,s.softmax)(xA.data),xA.dims),hA),ge=vA[0].tolist(),re=vA[1].tolist().map((HA,zA)=>({label:bA?bA[HA]:`LABEL_${HA}`,score:ge[zA]}));NA.push(re)}return Array.isArray(AA)?NA:NA[0]}}class T extends f{constructor(AA){super(AA)}async _call(AA,hA,{hypothesis_template:V="This is a sound of {}."}={}){const fA=!Array.isArray(AA);fA&&(AA=[AA]);const bA=hA.map(xA=>V.replace("{}",xA)),NA=this.tokenizer(bA,{padding:!0,truncation:!0}),pA=this.processor.feature_extractor.config.sampling_rate,kA=await d(AA,pA),MA=[];for(const xA of kA){const vA=await this.processor(xA),ge=await this.model({...NA,...vA}),SA=(0,s.softmax)(ge.logits_per_audio.data);MA.push([...SA].map((re,HA)=>({score:re,label:hA[HA]})))}return fA?MA[0]:MA}}class CA extends f{constructor(AA){super(AA)}async _call(AA,hA={}){switch(this.model.config.model_type){case"whisper":case"lite-whisper":return this._call_whisper(AA,hA);case"wav2vec2":case"wav2vec2-bert":case"unispeech":case"unispeech-sat":case"hubert":return this._call_wav2vec2(AA,hA);case"moonshine":return this._call_moonshine(AA,hA);default:throw new Error(`AutomaticSpeechRecognitionPipeline does not support model type '${this.model.config.model_type}'.`)}}async _call_wav2vec2(AA,hA){hA.language&&console.warn('`language` parameter is not yet supported for `wav2vec2` models, defaulting to "English".'),hA.task&&console.warn('`task` parameter is not yet supported for `wav2vec2` models, defaulting to "transcribe".');const V=!Array.isArray(AA);V&&(AA=[AA]);const fA=this.processor.feature_extractor.config.sampling_rate,bA=await d(AA,fA),NA=[];for(const pA of bA){const kA=await this.processor(pA),xA=(await this.model(kA)).logits[0],vA=[];for(const SA of xA)vA.push((0,s.max)(SA.data)[1]);const ge=this.tokenizer.decode(vA);NA.push({text:ge})}return V?NA[0]:NA}async _call_whisper(AA,hA){const V=hA.return_timestamps??!1,fA=hA.chunk_length_s??0,bA=hA.force_full_sequences??!1;let NA=hA.stride_length_s??null;const pA={...hA};V==="word"&&(pA.return_token_timestamps=!0,pA.return_timestamps=!1);const kA=!Array.isArray(AA);kA&&(AA=[AA]);const MA=this.processor.feature_extractor.config.chunk_length/this.model.config.max_source_positions,xA=this.processor.feature_extractor.config.hop_length,vA=this.processor.feature_extractor.config.sampling_rate,ge=await d(AA,vA),SA=[];for(const re of ge){let HA=[];if(fA>0){if(NA===null)NA=fA/6;else if(fA<=NA)throw Error("`chunk_length_s` must be larger than `stride_length_s`.");const Ae=vA*fA,oe=vA*NA,se=Ae-2*oe;let Ne=0;for(;;){const Pe=Ne+Ae,pe=re.subarray(Ne,Pe),tg=await this.processor(pe),Og=Ne===0,xg=Pe>=re.length;if(HA.push({stride:[pe.length,Og?0:oe,xg?0:oe],input_features:tg.input_features,is_last:xg}),xg)break;Ne+=se}}else HA=[{stride:[re.length,0,0],input_features:(await this.processor(re)).input_features,is_last:!0}];for(const Ae of HA){pA.num_frames=Math.floor(Ae.stride[0]/xA);const oe=await this.model.generate({inputs:Ae.input_features,...pA});V==="word"?(Ae.tokens=oe.sequences.tolist()[0],Ae.token_timestamps=oe.token_timestamps.tolist()[0].map(se=>(0,s.round)(se,2))):Ae.tokens=oe[0].tolist(),Ae.stride=Ae.stride.map(se=>se/vA)}const[zA,Be]=this.tokenizer._decode_asr(HA,{time_precision:MA,return_timestamps:V,force_full_sequences:bA});SA.push({text:zA,...Be})}return kA?SA[0]:SA}async _call_moonshine(AA,hA){const V=!Array.isArray(AA);V&&(AA=[AA]);const fA=this.processor.feature_extractor.config.sampling_rate,bA=await d(AA,fA),NA=[];for(const pA of bA){const kA=await this.processor(pA),MA=Math.floor(pA.length/fA)*6,xA=await this.model.generate({max_new_tokens:MA,...hA,...kA}),vA=this.processor.batch_decode(xA,{skip_special_tokens:!0})[0];NA.push({text:vA})}return V?NA[0]:NA}}class eA extends f{constructor(AA){super(AA)}async _call(AA,hA={}){const V=Array.isArray(AA),fA=await r(AA),{pixel_values:bA}=await this.processor(fA),NA=[];for(const pA of bA){pA.dims=[1,...pA.dims];const kA=await this.model.generate({inputs:pA,...hA}),MA=this.tokenizer.batch_decode(kA,{skip_special_tokens:!0}).map(xA=>({generated_text:xA.trim()}));NA.push(MA)}return V?NA:NA[0]}}class tA extends f{constructor(AA){super(AA)}async _call(AA,{top_k:hA=5}={}){const V=await r(AA),{pixel_values:fA}=await this.processor(V),bA=await this.model({pixel_values:fA}),NA=this.model.config.id2label,pA=[];for(const kA of bA.logits){const MA=await(0,Q.topk)(new Q.Tensor("float32",(0,s.softmax)(kA.data),kA.dims),hA),xA=MA[0].tolist(),ge=MA[1].tolist().map((SA,re)=>({label:NA?NA[SA]:`LABEL_${SA}`,score:xA[re]}));pA.push(ge)}return Array.isArray(AA)?pA:pA[0]}}class BA extends f{constructor(AA){super(AA),this.subtasks_mapping={panoptic:"post_process_panoptic_segmentation",instance:"post_process_instance_segmentation",semantic:"post_process_semantic_segmentation"}}async _call(AA,{threshold:hA=.5,mask_threshold:V=.5,overlap_mask_area_threshold:fA=.8,label_ids_to_fuse:bA=null,target_sizes:NA=null,subtask:pA=null}={}){if(Array.isArray(AA)&&AA.length!==1)throw Error("Image segmentation pipeline currently only supports a batch size of 1.");const MA=await r(AA),xA=MA.map(Ae=>[Ae.height,Ae.width]),vA=await this.processor(MA),{inputNames:ge,outputNames:SA}=this.model.sessions.model;if(!ge.includes("pixel_values")){if(ge.length!==1)throw Error(`Expected a single input name, but got ${ge.length} inputs: ${ge}.`);const Ae=ge[0];if(Ae in vA)throw Error(`Input name ${Ae} already exists in the inputs.`);vA[Ae]=vA.pixel_values}const re=await this.model(vA);let HA=null;if(pA!==null)HA=this.subtasks_mapping[pA];else if(this.processor.image_processor){for(const[Ae,oe]of Object.entries(this.subtasks_mapping))if(oe in this.processor.image_processor){HA=this.processor.image_processor[oe].bind(this.processor.image_processor),pA=Ae;break}}const zA=this.model.config.id2label,Be=[];if(pA)if(pA==="panoptic"||pA==="instance"){const Ae=HA(re,hA,V,fA,bA,NA??xA)[0],oe=Ae.segmentation;for(const se of Ae.segments_info){const Ne=new Uint8ClampedArray(oe.data.length);for(let pe=0;petg<-1e-5||tg>1+1e-5)&&Pe.sigmoid_();const pe=await a.RawImage.fromTensor(Pe.mul_(255).to("uint8")).resize(Ne[1],Ne[0]);Be.push({label:null,score:null,mask:pe})}}return Be}}class sA extends BA{constructor(AA){super(AA)}async _call(AA,hA={}){if(Array.isArray(AA)&&AA.length!==1)throw Error("Background removal pipeline currently only supports a batch size of 1.");const fA=await r(AA),bA=await super._call(AA,hA);return fA.map((pA,kA)=>{const MA=pA.clone();return MA.putAlpha(bA[kA].mask),MA})}}class cA extends f{constructor(AA){super(AA)}async _call(AA,hA,{hypothesis_template:V="This is a photo of {}"}={}){const fA=Array.isArray(AA),bA=await r(AA),NA=hA.map(ge=>V.replace("{}",ge)),pA=this.tokenizer(NA,{padding:this.model.config.model_type==="siglip"?"max_length":!0,truncation:!0}),{pixel_values:kA}=await this.processor(bA),MA=await this.model({...pA,pixel_values:kA}),xA=this.model.config.model_type==="siglip"?ge=>ge.sigmoid().data:ge=>(0,s.softmax)(ge.data),vA=[];for(const ge of MA.logits_per_image){const re=[...xA(ge)].map((HA,zA)=>({score:HA,label:hA[zA]}));re.sort((HA,zA)=>zA.score-HA.score),vA.push(re)}return fA?vA:vA[0]}}class dA extends f{constructor(AA){super(AA)}async _call(AA,{threshold:hA=.9,percentage:V=!1}={}){const fA=Array.isArray(AA);if(fA&&AA.length!==1)throw Error("Object detection pipeline currently only supports a batch size of 1.");const bA=await r(AA),NA=V?null:bA.map(SA=>[SA.height,SA.width]),{pixel_values:pA,pixel_mask:kA}=await this.processor(bA),MA=await this.model({pixel_values:pA,pixel_mask:kA}),xA=this.processor.image_processor.post_process_object_detection(MA,hA,NA),vA=this.model.config.id2label,ge=xA.map(SA=>SA.boxes.map((re,HA)=>({score:SA.scores[HA],label:vA[SA.classes[HA]],box:c(re,!V)})));return fA?ge:ge[0]}}class P extends f{constructor(AA){super(AA)}async _call(AA,hA,{threshold:V=.1,top_k:fA=null,percentage:bA=!1}={}){const NA=Array.isArray(AA),pA=await r(AA),kA=this.tokenizer(hA,{padding:!0,truncation:!0}),MA=await this.processor(pA),xA=[];for(let vA=0;vA({score:Be.scores[oe],label:Be.labels[oe],box:c(Ae,!bA)}))}else{const Be=this.processor.image_processor.post_process_object_detection(HA,V,SA,!0)[0];zA=Be.boxes.map((Ae,oe)=>({score:Be.scores[oe],label:hA[Be.classes[oe]],box:c(Ae,!bA)}))}zA.sort((Be,Ae)=>Ae.score-Be.score),fA!==null&&(zA=zA.slice(0,fA)),xA.push(zA)}return NA?xA:xA[0]}}class U extends f{constructor(AA){super(AA)}async _call(AA,hA,V={}){const fA=(await r(AA))[0],{pixel_values:bA}=await this.processor(fA),NA=`${hA}`,pA=this.tokenizer(NA,{add_special_tokens:!1,padding:!0,truncation:!0}).input_ids,kA=await this.model.generate({inputs:bA,max_length:this.model.config.decoder.max_position_embeddings,decoder_input_ids:pA,...V}),xA=this.tokenizer.batch_decode(kA)[0].match(/(.*?)<\/s_answer>/);let vA=null;return xA&&xA.length>=2&&(vA=xA[1].trim()),[{answer:vA}]}}class z extends f{DEFAULT_VOCODER_ID="Xenova/speecht5_hifigan";constructor(AA){super(AA),this.vocoder=AA.vocoder??null}async _call(AA,{speaker_embeddings:hA=null}={}){return this.processor?this._call_text_to_spectrogram(AA,{speaker_embeddings:hA}):this._call_text_to_waveform(AA)}async _call_text_to_waveform(AA){const hA=this.tokenizer(AA,{padding:!0,truncation:!0}),{waveform:V}=await this.model(hA),fA=this.model.config.sampling_rate;return new B.RawAudio(V.data,fA)}async _call_text_to_spectrogram(AA,{speaker_embeddings:hA}){if(this.vocoder||(console.log("No vocoder specified, using default HifiGan vocoder."),this.vocoder=await i.AutoModel.from_pretrained(this.DEFAULT_VOCODER_ID,{dtype:"fp32"})),(typeof hA=="string"||hA instanceof URL)&&(hA=new Float32Array(await(await fetch(hA)).arrayBuffer())),hA instanceof Float32Array)hA=new Q.Tensor("float32",hA,[1,hA.length]);else if(!(hA instanceof Q.Tensor))throw new Error("Speaker embeddings must be a `Tensor`, `Float32Array`, `string`, or `URL`.");const{input_ids:V}=this.tokenizer(AA,{padding:!0,truncation:!0}),{waveform:fA}=await this.model.generate_speech(V,hA,{vocoder:this.vocoder}),bA=this.processor.feature_extractor.config.sampling_rate;return new B.RawAudio(fA.data,bA)}}class v extends f{constructor(AA){super(AA)}async _call(AA){const hA=await r(AA),V=await this.processor(hA),fA=await this.model(V),bA=[];for(const NA of fA.reconstruction){const pA=NA.squeeze().clamp_(0,1).mul_(255).round_().to("uint8");bA.push(a.RawImage.fromTensor(pA))}return bA.length>1?bA:bA[0]}}class nA extends f{constructor(AA){super(AA)}async _call(AA){const hA=await r(AA),V=await this.processor(hA),{predicted_depth:fA}=await this.model(V),bA=[];for(let NA=0;NA1?bA:bA[0]}}const YA=Object.freeze({"text-classification":{tokenizer:I.AutoTokenizer,pipeline:k,model:i.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-finetuned-sst-2-english"},type:"text"},"token-classification":{tokenizer:I.AutoTokenizer,pipeline:u,model:i.AutoModelForTokenClassification,default:{model:"Xenova/bert-base-multilingual-cased-ner-hrl"},type:"text"},"question-answering":{tokenizer:I.AutoTokenizer,pipeline:D,model:i.AutoModelForQuestionAnswering,default:{model:"Xenova/distilbert-base-cased-distilled-squad"},type:"text"},"fill-mask":{tokenizer:I.AutoTokenizer,pipeline:G,model:i.AutoModelForMaskedLM,default:{model:"Xenova/bert-base-uncased"},type:"text"},summarization:{tokenizer:I.AutoTokenizer,pipeline:y,model:i.AutoModelForSeq2SeqLM,default:{model:"Xenova/distilbart-cnn-6-6"},type:"text"},translation:{tokenizer:I.AutoTokenizer,pipeline:M,model:i.AutoModelForSeq2SeqLM,default:{model:"Xenova/t5-small"},type:"text"},"text2text-generation":{tokenizer:I.AutoTokenizer,pipeline:h,model:i.AutoModelForSeq2SeqLM,default:{model:"Xenova/flan-t5-small"},type:"text"},"text-generation":{tokenizer:I.AutoTokenizer,pipeline:_,model:i.AutoModelForCausalLM,default:{model:"Xenova/gpt2"},type:"text"},"zero-shot-classification":{tokenizer:I.AutoTokenizer,pipeline:x,model:i.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-mnli"},type:"text"},"audio-classification":{pipeline:Z,model:i.AutoModelForAudioClassification,processor:t.AutoProcessor,default:{model:"Xenova/wav2vec2-base-superb-ks"},type:"audio"},"zero-shot-audio-classification":{tokenizer:I.AutoTokenizer,pipeline:T,model:i.AutoModel,processor:t.AutoProcessor,default:{model:"Xenova/clap-htsat-unfused"},type:"multimodal"},"automatic-speech-recognition":{tokenizer:I.AutoTokenizer,pipeline:CA,model:[i.AutoModelForSpeechSeq2Seq,i.AutoModelForCTC],processor:t.AutoProcessor,default:{model:"Xenova/whisper-tiny.en"},type:"multimodal"},"text-to-audio":{tokenizer:I.AutoTokenizer,pipeline:z,model:[i.AutoModelForTextToWaveform,i.AutoModelForTextToSpectrogram],processor:[t.AutoProcessor,null],default:{model:"Xenova/speecht5_tts"},type:"text"},"image-to-text":{tokenizer:I.AutoTokenizer,pipeline:eA,model:i.AutoModelForVision2Seq,processor:t.AutoProcessor,default:{model:"Xenova/vit-gpt2-image-captioning"},type:"multimodal"},"image-classification":{pipeline:tA,model:i.AutoModelForImageClassification,processor:t.AutoProcessor,default:{model:"Xenova/vit-base-patch16-224"},type:"multimodal"},"image-segmentation":{pipeline:BA,model:[i.AutoModelForImageSegmentation,i.AutoModelForSemanticSegmentation,i.AutoModelForUniversalSegmentation],processor:t.AutoProcessor,default:{model:"Xenova/detr-resnet-50-panoptic"},type:"multimodal"},"background-removal":{pipeline:sA,model:[i.AutoModelForImageSegmentation,i.AutoModelForSemanticSegmentation,i.AutoModelForUniversalSegmentation],processor:t.AutoProcessor,default:{model:"Xenova/modnet"},type:"image"},"zero-shot-image-classification":{tokenizer:I.AutoTokenizer,pipeline:cA,model:i.AutoModel,processor:t.AutoProcessor,default:{model:"Xenova/clip-vit-base-patch32"},type:"multimodal"},"object-detection":{pipeline:dA,model:i.AutoModelForObjectDetection,processor:t.AutoProcessor,default:{model:"Xenova/detr-resnet-50"},type:"multimodal"},"zero-shot-object-detection":{tokenizer:I.AutoTokenizer,pipeline:P,model:i.AutoModelForZeroShotObjectDetection,processor:t.AutoProcessor,default:{model:"Xenova/owlvit-base-patch32"},type:"multimodal"},"document-question-answering":{tokenizer:I.AutoTokenizer,pipeline:U,model:i.AutoModelForDocumentQuestionAnswering,processor:t.AutoProcessor,default:{model:"Xenova/donut-base-finetuned-docvqa"},type:"multimodal"},"image-to-image":{pipeline:v,model:i.AutoModelForImageToImage,processor:t.AutoProcessor,default:{model:"Xenova/swin2SR-classical-sr-x2-64"},type:"image"},"depth-estimation":{pipeline:nA,model:i.AutoModelForDepthEstimation,processor:t.AutoProcessor,default:{model:"Xenova/dpt-large"},type:"image"},"feature-extraction":{tokenizer:I.AutoTokenizer,pipeline:b,model:i.AutoModel,default:{model:"Xenova/all-MiniLM-L6-v2"},type:"text"},"image-feature-extraction":{processor:t.AutoProcessor,pipeline:X,model:[i.AutoModelForImageFeatureExtraction,i.AutoModel],default:{model:"Xenova/vit-base-patch16-224-in21k"},type:"image"}}),_A=Object.freeze({"sentiment-analysis":"text-classification",ner:"token-classification",asr:"automatic-speech-recognition","text-to-speech":"text-to-audio",embeddings:"feature-extraction"});async function PA(LA,AA=null,{progress_callback:hA=null,config:V=null,cache_dir:fA=null,local_files_only:bA=!1,revision:NA="main",device:pA=null,dtype:kA=null,subfolder:MA="onnx",use_external_data_format:xA=null,model_file_name:vA=null,session_options:ge={}}={}){LA=_A[LA]??LA;const SA=YA[LA.split("_",1)[0]];if(!SA)throw Error(`Unsupported pipeline: ${LA}. Must be one of [${Object.keys(YA)}]`);AA||(AA=SA.default.model,console.log(`No model specified. Using default model: "${AA}".`));const re={progress_callback:hA,config:V,cache_dir:fA,local_files_only:bA,revision:NA,device:pA,dtype:kA,subfolder:MA,use_external_data_format:xA,model_file_name:vA,session_options:ge},HA=new Map([["tokenizer",SA.tokenizer],["model",SA.model],["processor",SA.processor]]),zA=await ie(HA,AA,re);zA.task=LA,(0,o.dispatchCallback)(hA,{status:"ready",task:LA,model:AA});const Be=SA.pipeline;return new Be(zA)}async function ie(LA,AA,hA){const V=Object.create(null),fA=[];for(const[bA,NA]of LA.entries()){if(!NA)continue;let pA;Array.isArray(NA)?pA=new Promise(async(kA,MA)=>{let xA;for(const vA of NA){if(vA===null){kA(null);return}try{kA(await vA.from_pretrained(AA,hA));return}catch(ge){if(ge.message?.includes("Unsupported model type"))xA=ge;else if(ge.message?.includes("Could not locate file"))xA=ge;else{MA(ge);return}}}MA(xA)}):pA=NA.from_pretrained(AA,hA),V[bA]=pA,fA.push(pA)}await Promise.all(fA);for(const[bA,NA]of Object.entries(V))V[bA]=await NA;return V}},"./src/tokenizers.js":(A,g,e)=>{e.r(g),e.d(g,{AlbertTokenizer:()=>xe,AutoTokenizer:()=>Ke,BartTokenizer:()=>Te,BertTokenizer:()=>J,BlenderbotSmallTokenizer:()=>K,BlenderbotTokenizer:()=>F,BloomTokenizer:()=>Wg,CLIPTokenizer:()=>fI,CamembertTokenizer:()=>JA,CodeGenTokenizer:()=>AI,CodeLlamaTokenizer:()=>iI,CohereTokenizer:()=>uA,ConvBertTokenizer:()=>IA,DebertaTokenizer:()=>N,DebertaV2Tokenizer:()=>gA,DistilBertTokenizer:()=>yA,ElectraTokenizer:()=>Ee,Ernie4_5_Tokenizer:()=>Ce,EsmTokenizer:()=>nI,FalconTokenizer:()=>oI,GPT2Tokenizer:()=>Se,GPTNeoXTokenizer:()=>mg,GemmaTokenizer:()=>ag,Grok1Tokenizer:()=>jg,HerbertTokenizer:()=>O,LlamaTokenizer:()=>pg,M2M100Tokenizer:()=>tI,MBart50Tokenizer:()=>je,MBartTokenizer:()=>wg,MPNetTokenizer:()=>Zg,MarianTokenizer:()=>qA,MgpstrTokenizer:()=>RA,MobileBertTokenizer:()=>ke,NllbTokenizer:()=>Mg,NougatTokenizer:()=>iA,PreTrainedTokenizer:()=>de,Qwen2Tokenizer:()=>CI,RoFormerTokenizer:()=>rA,RobertaTokenizer:()=>lg,SiglipTokenizer:()=>ve,SpeechT5Tokenizer:()=>W,SqueezeBertTokenizer:()=>EI,T5Tokenizer:()=>Ie,TokenizerModel:()=>X,VitsTokenizer:()=>QA,Wav2Vec2CTCTokenizer:()=>n,WhisperTokenizer:()=>lI,XLMRobertaTokenizer:()=>cg,XLMTokenizer:()=>ae,is_chinese_char:()=>G});var I=e("./src/utils/generic.js"),i=e("./src/utils/core.js"),t=e("./src/utils/hub.js"),C=e("./src/utils/maths.js"),o=e("./src/utils/tensor.js"),s=e("./src/utils/data-structures.js"),B=e("./node_modules/@huggingface/jinja/dist/index.js"),Q=e("./src/models/whisper/common_whisper.js");async function a(aA,R){const H=await Promise.all([(0,t.getModelJSON)(aA,"tokenizer.json",!0,R),(0,t.getModelJSON)(aA,"tokenizer_config.json",!0,R)]);return R.legacy!==null&&(H[1].legacy=R.legacy),H}function r(aA,R){const H=[];let $=0;for(const oA of aA.matchAll(R)){const DA=oA[0];$0&&H.push(DA),$=oA.index+DA.length}return $=19968&&aA<=40959||aA>=13312&&aA<=19903||aA>=131072&&aA<=173791||aA>=173824&&aA<=177983||aA>=177984&&aA<=178207||aA>=178208&&aA<=183983||aA>=63744&&aA<=64255||aA>=194560&&aA<=195103}function h(aA,R,H){const $=[];let oA=0;for(;oAthis.tokens_to_ids.get(H)??this.unk_token_id)}convert_ids_to_tokens(R){return R.map(H=>this.vocab[H]??this.unk_token)}}class Z extends X{constructor(R){super(R),this.tokens_to_ids=c(R.vocab),this.unk_token_id=this.tokens_to_ids.get(R.unk_token),this.unk_token=R.unk_token,this.max_input_chars_per_word=R.max_input_chars_per_word??100,this.vocab=new Array(this.tokens_to_ids.size);for(const[H,$]of this.tokens_to_ids)this.vocab[$]=H}encode(R){const H=[];for(const $ of R){const oA=[...$];if(oA.length>this.max_input_chars_per_word){H.push(this.unk_token);continue}let DA=!1,GA=0;const jA=[];for(;GA0&&($A=this.config.continuing_subword_prefix+$A),this.tokens_to_ids.has($A)){ZA=$A;break}--XA}if(ZA===null){DA=!0;break}jA.push(ZA),GA=XA}DA?H.push(this.unk_token):H.push(...jA)}return H}}class T extends X{constructor(R,H){super(R);const $=R.vocab.length;this.vocab=new Array($),this.scores=new Array($);for(let oA=0;oA<$;++oA)[this.vocab[oA],this.scores[oA]]=R.vocab[oA];this.unk_token_id=R.unk_id,this.unk_token=this.vocab[R.unk_id],this.tokens_to_ids=new Map(this.vocab.map((oA,DA)=>[oA,DA])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=H.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.minScore=(0,C.min)(this.scores)[0],this.unk_score=this.minScore-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new s.CharTrie,this.trie.extend(this.vocab),this.fuse_unk=!0}populateNodes(R){const H=R.chars,$=1;let oA=0;for(;oA{const aA=[...Array.from({length:94},(oA,DA)=>DA+33),...Array.from({length:12},(oA,DA)=>DA+161),...Array.from({length:82},(oA,DA)=>DA+174)],R=aA.slice();let H=0;for(let oA=0;oA<256;++oA)aA.includes(oA)||(aA.push(oA),R.push(256+H),H+=1);const $=R.map(oA=>String.fromCharCode(oA));return Object.fromEntries(aA.map((oA,DA)=>[oA,$[DA]]))})(),eA=(0,i.reverseDictionary)(CA);class tA extends X{constructor(R){super(R),this.tokens_to_ids=c(R.vocab),this.unk_token_id=this.tokens_to_ids.get(R.unk_token),this.unk_token=R.unk_token,this.vocab=new Array(this.tokens_to_ids.size);for(const[$,oA]of this.tokens_to_ids)this.vocab[oA]=$;const H=Array.isArray(R.merges[0]);this.merges=H?R.merges:R.merges.map($=>$.split(" ",2)),this.bpe_ranks=new Map(this.merges.map(($,oA)=>[JSON.stringify($),oA])),this.end_of_word_suffix=R.end_of_word_suffix,this.continuing_subword_suffix=R.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback&&(this.text_encoder=new TextEncoder),this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new s.LRUCache(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(R){if(R.length===0)return[];const H=this.cache.get(R);if(H!==void 0)return H;const $=Array.from(R);this.end_of_word_suffix&&($[$.length-1]+=this.end_of_word_suffix);let oA=[];if($.length>1){const DA=new s.PriorityQueue((XA,ZA)=>XA.score`<0x${jA.toString(16).toUpperCase().padStart(2,"0")}>`);GA.every(jA=>this.tokens_to_ids.has(jA))?H.push(...GA):H.push(this.unk_token)}else H.push(this.unk_token)}return H}}class BA extends X{constructor(R,H){super(R),this.tokens_to_ids=c(H.target_lang?R.vocab[H.target_lang]:R.vocab),this.bos_token=H.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=H.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=H.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=H.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=new Array(this.tokens_to_ids.size);for(const[$,oA]of this.tokens_to_ids)this.vocab[oA]=$}encode(R){return R}}class sA extends I.Callable{constructor(R){super(),this.config=R}static fromConfig(R){if(R===null)return null;switch(R.type){case"BertNormalizer":return new LA(R);case"Precompiled":return new xg(R);case"Sequence":return new ie(R);case"Replace":return new cA(R);case"NFC":return new P(R);case"NFD":return new U(R);case"NFKC":return new z(R);case"NFKD":return new v(R);case"Strip":return new nA(R);case"StripAccents":return new YA(R);case"Lowercase":return new _A(R);case"Prepend":return new PA(R);default:throw new Error(`Unknown Normalizer type: ${R.type}`)}}normalize(R){throw Error("normalize should be implemented in subclass.")}_call(R){return this.normalize(R)}}class cA extends sA{normalize(R){const H=d(this.config.pattern);return H===null?R:R.replaceAll(H,this.config.content)}}class dA extends sA{form=void 0;normalize(R){return R=R.normalize(this.form),R}}class P extends dA{form="NFC"}class U extends dA{form="NFD"}class z extends dA{form="NFKC"}class v extends dA{form="NFKD"}class nA extends sA{normalize(R){return this.config.strip_left&&this.config.strip_right?R=R.trim():(this.config.strip_left&&(R=R.trimStart()),this.config.strip_right&&(R=R.trimEnd())),R}}class YA extends sA{normalize(R){return R=u(R),R}}class _A extends sA{normalize(R){return R=R.toLowerCase(),R}}class PA extends sA{normalize(R){return R=this.config.prepend+R,R}}class ie extends sA{constructor(R){super(R),this.normalizers=R.normalizers.map(H=>sA.fromConfig(H))}normalize(R){return this.normalizers.reduce((H,$)=>$.normalize(H),R)}}class LA extends sA{_tokenize_chinese_chars(R){const H=[];for(let $=0;$this.pre_tokenize_text($,H)):this.pre_tokenize_text(R,H)).flat()}_call(R,H){return this.pre_tokenize(R,H)}}class hA extends AA{constructor(R){super(),this.pattern=new RegExp(`[^\\s${M}]+|[${M}]`,"gu")}pre_tokenize_text(R,H){return R.trim().match(this.pattern)||[]}}class V extends AA{constructor(R){super(),this.config=R,this.add_prefix_space=this.config.add_prefix_space,this.trim_offsets=this.config.trim_offsets,this.use_regex=this.config.use_regex??!0,this.pattern=/'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu,this.byte_encoder=CA,this.text_encoder=new TextEncoder}pre_tokenize_text(R,H){return this.add_prefix_space&&!R.startsWith(" ")&&(R=" "+R),(this.use_regex?R.match(this.pattern)||[]:[R]).map(oA=>Array.from(this.text_encoder.encode(oA),DA=>this.byte_encoder[DA]).join(""))}}class fA extends AA{constructor(R){super(),this.config=R,this.pattern=d(this.config.pattern,this.config.invert)}pre_tokenize_text(R,H){return this.pattern===null?[]:this.config.invert?R.match(this.pattern)||[]:this.config.behavior?.toLowerCase()==="removed"?R.split(this.pattern).filter($=>$):r(R,this.pattern)}}class bA extends AA{constructor(R){super(),this.config=R,this.pattern=new RegExp(`[^${M}]+|[${M}]+`,"gu")}pre_tokenize_text(R,H){return R.match(this.pattern)||[]}}class NA extends AA{constructor(R){super(),this.config=R;const H=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(H,"gu")}pre_tokenize_text(R,H){return R.match(this.pattern)||[]}}class pA extends I.Callable{constructor(R){super(),this.config=R}static fromConfig(R){if(R===null)return null;switch(R.type){case"TemplateProcessing":return new xA(R);case"ByteLevel":return new vA(R);case"RobertaProcessing":return new MA(R);case"BertProcessing":return new kA(R);case"Sequence":return new ge(R);default:throw new Error(`Unknown PostProcessor type: ${R.type}`)}}post_process(R,...H){throw Error("post_process should be implemented in subclass.")}_call(R,...H){return this.post_process(R,...H)}}class kA extends pA{constructor(R){super(R),this.cls=R.cls[0],this.sep=R.sep[0]}post_process(R,H=null,{add_special_tokens:$=!0}={}){$&&(R=(0,i.mergeArrays)([this.cls],R,[this.sep]));let oA=new Array(R.length).fill(0);if(H!==null){const DA=$&&this instanceof MA?[this.sep]:[],GA=$?[this.sep]:[];R=(0,i.mergeArrays)(R,DA,H,GA),oA=(0,i.mergeArrays)(oA,new Array(H.length+DA.length+GA.length).fill(1))}return{tokens:R,token_type_ids:oA}}}class MA extends kA{}class xA extends pA{constructor(R){super(R),this.single=R.single,this.pair=R.pair}post_process(R,H=null,{add_special_tokens:$=!0}={}){const oA=H===null?this.single:this.pair;let DA=[],GA=[];for(const jA of oA)"SpecialToken"in jA?$&&(DA.push(jA.SpecialToken.id),GA.push(jA.SpecialToken.type_id)):"Sequence"in jA&&(jA.Sequence.id==="A"?(DA=(0,i.mergeArrays)(DA,R),GA=(0,i.mergeArrays)(GA,new Array(R.length).fill(jA.Sequence.type_id))):jA.Sequence.id==="B"&&(DA=(0,i.mergeArrays)(DA,H),GA=(0,i.mergeArrays)(GA,new Array(H.length).fill(jA.Sequence.type_id))));return{tokens:DA,token_type_ids:GA}}}class vA extends pA{post_process(R,H=null){return H&&(R=(0,i.mergeArrays)(R,H)),{tokens:R}}}class ge extends pA{constructor(R){super(R),this.processors=R.processors.map(H=>pA.fromConfig(H))}post_process(R,H=null,$={}){let oA;for(const DA of this.processors)if(DA instanceof vA)R=DA.post_process(R).tokens,H&&(H=DA.post_process(H).tokens);else{const GA=DA.post_process(R,H,$);R=GA.tokens,oA=GA.token_type_ids}return{tokens:R,token_type_ids:oA}}}class SA extends I.Callable{constructor(R){super(),this.config=R,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets=R.trim_offsets}static fromConfig(R){if(R===null)return null;switch(R.type){case"WordPiece":return new Ae(R);case"Metaspace":return new Og(R);case"ByteLevel":return new oe(R);case"Replace":return new re(R);case"ByteFallback":return new HA(R);case"Fuse":return new zA(R);case"Strip":return new Be(R);case"Sequence":return new Ne(R);case"CTC":return new se(R);case"BPEDecoder":return new Pe(R);default:throw new Error(`Unknown Decoder type: ${R.type}`)}}_call(R){return this.decode(R)}decode(R){return this.decode_chain(R).join("")}decode_chain(R){throw Error("`decode_chain` should be implemented in subclass.")}}class re extends SA{decode_chain(R){const H=d(this.config.pattern);return H===null?R:R.map($=>$.replaceAll(H,this.config.content))}}class HA extends SA{constructor(R){super(R),this.text_decoder=new TextDecoder}decode_chain(R){const H=[];let $=[];for(const oA of R){let DA=null;if(oA.length===6&&oA.startsWith("<0x")&&oA.endsWith(">")){const GA=parseInt(oA.slice(3,5),16);isNaN(GA)||(DA=GA)}if(DA!==null)$.push(DA);else{if($.length>0){const GA=this.text_decoder.decode(Uint8Array.from($));H.push(GA),$=[]}H.push(oA)}}if($.length>0){const oA=this.text_decoder.decode(Uint8Array.from($));H.push(oA),$=[]}return H}}class zA extends SA{decode_chain(R){return[R.join("")]}}class Be extends SA{constructor(R){super(R),this.content=this.config.content,this.start=this.config.start,this.stop=this.config.stop}decode_chain(R){return R.map(H=>{let $=0;for(let DA=0;DA($!==0&&(H.startsWith(this.config.prefix)?H=H.replace(this.config.prefix,""):H=" "+H),this.cleanup&&(H=k(H)),H))}}class oe extends SA{constructor(R){super(R),this.byte_decoder=eA,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(R){const H=R.join(""),$=new Uint8Array([...H].map(DA=>this.byte_decoder[DA]));return this.text_decoder.decode($)}decode_chain(R){const H=[];let $=[];for(const oA of R)this.added_tokens.find(DA=>DA.content===oA)!==void 0?($.length>0&&(H.push(this.convert_tokens_to_string($)),$=[]),H.push(oA)):$.push(oA);return $.length>0&&H.push(this.convert_tokens_to_string($)),H}}class se extends SA{constructor(R){super(R),this.pad_token=this.config.pad_token,this.word_delimiter_token=this.config.word_delimiter_token,this.cleanup=this.config.cleanup}convert_tokens_to_string(R){if(R.length===0)return"";const H=[R[0]];for(let DA=1;DADA!==this.pad_token).join("");return this.cleanup&&(oA=k(oA).replaceAll(this.word_delimiter_token," ").trim()),oA}decode_chain(R){return[this.convert_tokens_to_string(R)]}}class Ne extends SA{constructor(R){super(R),this.decoders=R.decoders.map(H=>SA.fromConfig(H))}decode_chain(R){return this.decoders.reduce((H,$)=>$.decode_chain(H),R)}}class Pe extends SA{constructor(R){super(R),this.suffix=this.config.suffix}decode_chain(R){return R.map((H,$)=>H.replaceAll(this.suffix,$===R.length-1?"":" "))}}class pe extends SA{decode_chain(R){let H="";for(let $=1;$$.normalize("NFKC")).join("~"):R=R.normalize("NFKC"),R}}class De extends AA{constructor(R){super(),this.tokenizers=R.pretokenizers.map(H=>AA.fromConfig(H))}pre_tokenize_text(R,H){return this.tokenizers.reduce(($,oA)=>oA.pre_tokenize($,H),[R])}}class gg extends AA{constructor(R){super()}pre_tokenize_text(R,H){return R.match(/\w+|[^\w\s]+/g)||[]}}class kg extends AA{constructor(R){super()}pre_tokenize_text(R,H){return y(R)}}class bI extends AA{constructor(R){super(),this.config=R,this.pattern=d(this.config.pattern),this.content=this.config.content}pre_tokenize_text(R,H){return this.pattern===null?[R]:[R.replaceAll(this.pattern,this.config.content)]}}const xI=["bos_token","eos_token","unk_token","sep_token","pad_token","cls_token","mask_token"];function pI(aA,R,H,$){for(const oA of Object.keys(aA)){const DA=R-aA[oA].length,GA=H(oA),jA=new Array(DA).fill(GA);aA[oA]=$==="right"?(0,i.mergeArrays)(aA[oA],jA):(0,i.mergeArrays)(jA,aA[oA])}}function yI(aA,R){for(const H of Object.keys(aA))aA[H].length=R}class de extends I.Callable{return_token_type_ids=!1;padding_side="right";constructor(R,H){super(),this.config=H,this.normalizer=sA.fromConfig(R.normalizer),this.pre_tokenizer=AA.fromConfig(R.pre_tokenizer),this.model=X.fromConfig(R.model,H),this.post_processor=pA.fromConfig(R.post_processor),this.decoder=SA.fromConfig(R.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[];for(const $ of R.added_tokens){const oA=new b($);this.added_tokens.push(oA),this.model.tokens_to_ids.set(oA.content,oA.id),this.model.vocab[oA.id]=oA.content,oA.special&&(this.special_tokens.push(oA.content),this.all_special_ids.push(oA.id))}if(this.additional_special_tokens=H.additional_special_tokens??[],this.special_tokens.push(...this.additional_special_tokens),this.special_tokens=[...new Set(this.special_tokens)],this.decoder&&(this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix),this.added_tokens_splitter=new s.DictionarySplitter(this.added_tokens.map($=>$.content)),this.added_tokens_map=new Map(this.added_tokens.map($=>[$.content,$])),this.mask_token=this.getToken("mask_token"),this.mask_token_id=this.model.tokens_to_ids.get(this.mask_token),this.pad_token=this.getToken("pad_token","eos_token"),this.pad_token_id=this.model.tokens_to_ids.get(this.pad_token),this.sep_token=this.getToken("sep_token"),this.sep_token_id=this.model.tokens_to_ids.get(this.sep_token),this.unk_token=this.getToken("unk_token"),this.unk_token_id=this.model.tokens_to_ids.get(this.unk_token),this.bos_token=this.getToken("bos_token"),this.bos_token_id=this.model.tokens_to_ids.get(this.bos_token),this.eos_token=this.getToken("eos_token"),this.eos_token_id=this.model.tokens_to_ids.get(this.eos_token),this.model_max_length=H.model_max_length,this.remove_space=H.remove_space,this.clean_up_tokenization_spaces=H.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=H.do_lowercase_and_remove_accent??!1,H.padding_side&&(this.padding_side=H.padding_side),this.add_bos_token=H.add_bos_token,this.add_eos_token=H.add_eos_token,this.legacy=!1,this.chat_template=H.chat_template??null,Array.isArray(this.chat_template)){const $=Object.create(null);for(const{name:oA,template:DA}of this.chat_template){if(typeof oA!="string"||typeof DA!="string")throw new Error('Chat template must be a list of objects with "name" and "template" properties');$[oA]=DA}this.chat_template=$}this._compiled_template_cache=new Map}getToken(...R){for(const H of R){const $=this.config[H];if($)if(typeof $=="object"){if($.__type==="AddedToken")return $.content;throw Error(`Unknown token: ${$}`)}else return $}return null}static async from_pretrained(R,{progress_callback:H=null,config:$=null,cache_dir:oA=null,local_files_only:DA=!1,revision:GA="main",legacy:jA=null}={}){const XA=await a(R,{progress_callback:H,config:$,cache_dir:oA,local_files_only:DA,revision:GA,legacy:jA});return new this(...XA)}_call(R,{text_pair:H=null,add_special_tokens:$=!0,padding:oA=!1,truncation:DA=null,max_length:GA=null,return_tensor:jA=!0,return_token_type_ids:XA=null}={}){const ZA=Array.isArray(R);let $A;if(ZA){if(R.length===0)throw Error("text array must be non-empty");if(H!==null){if(Array.isArray(H)){if(R.length!==H.length)throw Error("text and text_pair must have the same length")}else throw Error("text_pair must also be an array");$A=R.map((me,Ye)=>this._encode_plus(me,{text_pair:H[Ye],add_special_tokens:$,return_token_type_ids:XA}))}else $A=R.map(me=>this._encode_plus(me,{add_special_tokens:$,return_token_type_ids:XA}))}else{if(R==null)throw Error("text may not be null or undefined");if(Array.isArray(H))throw Error("When specifying `text_pair`, since `text` is a string, `text_pair` must also be a string (i.e., not an array).");$A=[this._encode_plus(R,{text_pair:H,add_special_tokens:$,return_token_type_ids:XA})]}if(GA===null?GA=this.model_max_length:DA===null&&(oA===!0?(console.warn("`max_length` is ignored when `padding: true` and there is no truncation strategy. To pad to max length, use `padding: 'max_length'`."),GA=this.model_max_length):oA===!1&&(console.warn("Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation: true` to explicitly truncate examples to max length."),DA=!0)),oA===!0&&(GA=Math.min((0,C.max)($A.map(me=>me.input_ids.length))[0],GA??1/0)),GA=Math.min(GA,this.model_max_length??1/0),oA||DA)for(let me=0;me<$A.length;++me)$A[me].input_ids.length!==GA&&($A[me].input_ids.length>GA?DA&&yI($A[me],GA):oA&&pI($A[me],GA,Ye=>Ye==="input_ids"?this.pad_token_id:0,this.padding_side));const fe={};if(jA){if(!(oA&&DA)&&$A.some(Ye=>{for(const Lg of Object.keys(Ye))if(Ye[Lg].length!==$A[0][Lg]?.length)return!0;return!1}))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=true' and 'truncation=true' to have batched tensors with the same length.");const me=[$A.length,$A[0].input_ids.length];for(const Ye of Object.keys($A[0]))fe[Ye]=new o.Tensor("int64",BigInt64Array.from($A.flatMap(Lg=>Lg[Ye]).map(BigInt)),me)}else{for(const me of Object.keys($A[0]))fe[me]=$A.map(Ye=>Ye[me]);if(!ZA)for(const me of Object.keys(fe))fe[me]=fe[me][0]}return fe}_encode_text(R){if(R===null)return null;const H=this.added_tokens_splitter.split(R);for(let oA=0;oA0&&(H[oA-1]=H[oA-1].trimEnd()),DA.rstrip&&oA{if(oA.length===0)return[];if(this.added_tokens_map.has(oA))return[oA];if(this.remove_space===!0&&(oA=oA.trim().split(/\s+/).join(" ")),this.do_lowercase_and_remove_accent&&(oA=D(oA)),this.normalizer!==null&&(oA=this.normalizer(oA)),oA.length===0)return[];const GA=this.pre_tokenizer!==null?this.pre_tokenizer(oA,{section_index:DA}):[oA];return this.model(GA)})}_encode_plus(R,{text_pair:H=null,add_special_tokens:$=!0,return_token_type_ids:oA=null}={}){const{tokens:DA,token_type_ids:GA}=this._tokenize_helper(R,{pair:H,add_special_tokens:$}),jA=this.model.convert_tokens_to_ids(DA),XA={input_ids:jA,attention_mask:new Array(jA.length).fill(1)};return(oA??this.return_token_type_ids)&&GA&&(XA.token_type_ids=GA),XA}_tokenize_helper(R,{pair:H=null,add_special_tokens:$=!1}={}){const oA=this._encode_text(R),DA=this._encode_text(H);return this.post_processor?this.post_processor(oA,DA,{add_special_tokens:$}):{tokens:(0,i.mergeArrays)(oA??[],DA??[])}}tokenize(R,{pair:H=null,add_special_tokens:$=!1}={}){return this._tokenize_helper(R,{pair:H,add_special_tokens:$}).tokens}encode(R,{text_pair:H=null,add_special_tokens:$=!0,return_token_type_ids:oA=null}={}){return this._encode_plus(R,{text_pair:H,add_special_tokens:$,return_token_type_ids:oA}).input_ids}batch_decode(R,H={}){return R instanceof o.Tensor&&(R=R.tolist()),R.map($=>this.decode($,H))}decode(R,H={}){if(R instanceof o.Tensor&&(R=f(R)),!Array.isArray(R)||R.length===0||!(0,i.isIntegralNumber)(R[0]))throw Error("token_ids must be a non-empty array of integers.");return this.decode_single(R,H)}decode_single(R,{skip_special_tokens:H=!1,clean_up_tokenization_spaces:$=null}){let oA=this.model.convert_ids_to_tokens(R);H&&(oA=oA.filter(GA=>!this.special_tokens.includes(GA)));let DA=this.decoder?this.decoder(oA):oA.join(" ");return this.decoder&&this.decoder.end_of_word_suffix&&(DA=DA.replaceAll(this.decoder.end_of_word_suffix," "),H&&(DA=DA.trim())),($??this.clean_up_tokenization_spaces)&&(DA=k(DA)),DA}get_chat_template({chat_template:R=null,tools:H=null}={}){if(this.chat_template&&typeof this.chat_template=="object"){const $=this.chat_template;if(R!==null&&Object.hasOwn($,R))R=$[R];else if(R===null)if(H!==null&&"tool_use"in $)R=$.tool_use;else if("default"in $)R=$.default;else throw Error(`This model has multiple chat templates with no default specified! Please either pass a chat template or the name of the template you wish to use to the 'chat_template' argument. Available template names are ${Object.keys($).sort()}.`)}else if(R===null)if(this.chat_template)R=this.chat_template;else throw Error("Cannot use apply_chat_template() because tokenizer.chat_template is not set and no template argument was passed! For information about writing templates and setting the tokenizer.chat_template attribute, please see the documentation at https://huggingface.co/docs/transformers/main/en/chat_templating");return R}apply_chat_template(R,{tools:H=null,documents:$=null,chat_template:oA=null,add_generation_prompt:DA=!1,tokenize:GA=!0,padding:jA=!1,truncation:XA=!1,max_length:ZA=null,return_tensor:$A=!0,return_dict:fe=!1,tokenizer_kwargs:me={},...Ye}={}){if(oA=this.get_chat_template({chat_template:oA,tools:H}),typeof oA!="string")throw Error(`chat_template must be a string, but got ${typeof oA}`);let Lg=this._compiled_template_cache.get(oA);Lg===void 0&&(Lg=new B.Template(oA),this._compiled_template_cache.set(oA,Lg));const og=Object.create(null);for(const ig of xI){const eI=this.getToken(ig);eI&&(og[ig]=eI)}const ng=Lg.render({messages:R,add_generation_prompt:DA,tools:H,documents:$,...og,...Ye});if(GA){const ig=this._call(ng,{add_special_tokens:!1,padding:jA,truncation:XA,max_length:ZA,return_tensor:$A,...me});return fe?ig:ig.input_ids}return ng}}class J extends de{return_token_type_ids=!0}class xe extends de{return_token_type_ids=!0}class ke extends de{return_token_type_ids=!0}class EI extends de{return_token_type_ids=!0}class N extends de{return_token_type_ids=!0}class gA extends de{return_token_type_ids=!0}class O extends de{return_token_type_ids=!0}class IA extends de{return_token_type_ids=!0}class rA extends de{return_token_type_ids=!0}class yA extends de{}class JA extends de{}class ae extends de{return_token_type_ids=!0;constructor(R,H){super(R,H),console.warn('WARNING: `XLMTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}}class Ee extends de{return_token_type_ids=!0}class Ie extends de{}class Se extends de{}class Te extends de{}class wg extends de{constructor(R,H){super(R,H),this.languageRegex=/^[a-z]{2}_[A-Z]{2}$/,this.language_codes=this.special_tokens.filter($=>this.languageRegex.test($)),this.lang_to_token=$=>$}_build_translation_inputs(R,H,$){return dg(this,R,H,$)}}class je extends wg{}class lg extends de{}class Wg extends de{}const Ig="▁";class pg extends de{padding_side="left";constructor(R,H){super(R,H),this.legacy=H.legacy??!0,this.legacy||(this.normalizer=null,this.pre_tokenizer=new tg({replacement:Ig,add_prefix_space:!0,prepend_scheme:"first"}))}_encode_text(R){if(R===null)return null;if(this.legacy||R.length===0)return super._encode_text(R);let H=super._encode_text(Ig+R.replaceAll(Ig," "));return H.length>1&&H[0]===Ig&&this.special_tokens.includes(H[1])&&(H=H.slice(1)),H}}class iI extends de{}class cg extends de{}class Zg extends de{}class oI extends de{}class mg extends de{}class nI extends de{}class CI extends de{}class ag extends de{}class jg extends de{}function dg(aA,R,H,$){if(!("language_codes"in aA)||!Array.isArray(aA.language_codes))throw new Error("Tokenizer must have `language_codes` attribute set and it should be an array of language ids.");if(!("languageRegex"in aA)||!(aA.languageRegex instanceof RegExp))throw new Error("Tokenizer must have `languageRegex` attribute set and it should be a regular expression.");if(!("lang_to_token"in aA)||typeof aA.lang_to_token!="function")throw new Error("Tokenizer must have `lang_to_token` attribute set and it should be a function.");const oA=$.src_lang,DA=$.tgt_lang;if(!aA.language_codes.includes(DA))throw new Error(`Target language code "${DA}" is not valid. Must be one of: {${aA.language_codes.join(", ")}}`);if(oA!==void 0){if(!aA.language_codes.includes(oA))throw new Error(`Source language code "${oA}" is not valid. Must be one of: {${aA.language_codes.join(", ")}}`);for(const GA of aA.post_processor.config.single)if("SpecialToken"in GA&&aA.languageRegex.test(GA.SpecialToken.id)){GA.SpecialToken.id=aA.lang_to_token(oA);break}}return $.forced_bos_token_id=aA.model.convert_tokens_to_ids([aA.lang_to_token(DA)])[0],aA._call(R,H)}class Mg extends de{constructor(R,H){super(R,H),this.languageRegex=/^[a-z]{3}_[A-Z][a-z]{3}$/,this.language_codes=this.special_tokens.filter($=>this.languageRegex.test($)),this.lang_to_token=$=>$}_build_translation_inputs(R,H,$){return dg(this,R,H,$)}}class tI extends de{constructor(R,H){super(R,H),this.languageRegex=/^__[a-z]{2,3}__$/,this.language_codes=this.special_tokens.filter($=>this.languageRegex.test($)).map($=>$.slice(2,-2)),this.lang_to_token=$=>`__${$}__`}_build_translation_inputs(R,H,$){return dg(this,R,H,$)}}class lI extends de{get timestamp_begin(){return this.model.convert_tokens_to_ids(["<|notimestamps|>"])[0]+1}_decode_asr(R,{return_timestamps:H=!1,return_language:$=!1,time_precision:oA=null,force_full_sequences:DA=!0}={}){if(oA===null)throw Error("Must specify time_precision");let GA=null;const jA=H==="word";function XA(){return{language:GA,timestamp:[null,null],text:""}}const ZA=[];let $A=XA(),fe=0;const me=this.timestamp_begin,Lg=me+1500;let og=[],ng=[],ig=!1,eI=null;const cI=new Set(this.all_special_ids);for(const Qg of R){const Fg=Qg.tokens,Vg=jA?Qg.token_timestamps:null;let zg=null,mI=me;if("stride"in Qg){const[Kg,Bg,Sg]=Qg.stride;if(fe-=Bg,eI=Kg-Sg,Bg&&(mI=Bg/oA+me),Sg)for(let yg=Fg.length-1;yg>=0;--yg){const $g=Number(Fg[yg]);if($g>=me){if(zg!==null&&($g-me)*oA=me&&Bg<=Lg){const Sg=(Bg-me)*oA+fe,yg=(0,C.round)(Sg,2);if(zg!==null&&Bg>=zg)ig=!0;else if(ig||og.length>0&&Bg0?(og.push(Rg),jA&&ng.push(dI)):og.every(Kg=>Kg.length===0)&&($A=XA(),og=[],Rg=[],ng=[],dI=[])}if(og.length>0){if(DA&&H)throw new Error("Whisper did not predict an ending timestamp, which can happen if audio is cut off in the middle of a word. Also make sure WhisperTimeStampLogitsProcessor was used during generation.");const[Qg,Fg]=this.findLongestCommonSequence(og,ng),Vg=this.decode(Qg);$A.text=Vg,jA&&($A.words=this.collateWordTimestamps(Qg,Fg,GA)),ZA.push($A)}let Pg=Object.create(null);const sI=ZA.map(Qg=>Qg.text).join("");if(H||$){for(let Qg=0;Qg0;let jA=GA?[]:null,XA=GA?H[0]:null;for(let ZA=1;ZABg===mI[Sg]&&XA[sI+Sg]<=H[ZA][Vg+Sg]).length:Rg=Fg.filter((Bg,Sg)=>Bg===mI[Sg]).length;const dI=Pg/1e4,Kg=Rg/Pg+dI;Rg>1&&Kg>fe&&(fe=Kg,me=[sI,Qg,Vg,zg])}const[Lg,og,ng,ig]=me,eI=Math.floor((og+Lg)/2),cI=Math.floor((ig+ng)/2);DA.push(...$.slice(0,eI)),$=$A.slice(cI),oA=$.length,GA&&(jA.push(...XA.slice(0,eI)),XA=H[ZA].slice(cI))}return DA.push(...$),GA?(jA.push(...XA),[DA,jA]):[DA,[]]}collateWordTimestamps(R,H,$){const[oA,DA,GA]=this.combineTokensIntoWords(R,$),jA=[];for(let XA=0;XA=oA){const jA=((GA-oA)*$).toFixed(2);DA.push(`<|${jA}|>`),DA.push([])}else DA[DA.length-1].push(GA);return DA=DA.map(GA=>typeof GA=="string"?GA:super.decode(GA,H)),DA.join("")}splitTokensOnUnicode(R){const H=this.decode(R,{decode_with_timestamps:!0}),$="�",oA=[],DA=[],GA=[];let jA=[],XA=[],ZA=0;for(let $A=0;$A=this.model.tokens_to_ids.get("<|endoftext|>"),Lg=$A.startsWith(" "),og=$A.trim(),ng=XA.test(og);if(Ye||Lg||ng||DA.length===0)DA.push($A),GA.push(fe),jA.push(me);else{const ig=DA.length-1;DA[ig]+=$A,GA[ig].push(...fe),jA[ig].push(...me)}}return[DA,GA,jA]}mergePunctuations(R,H,$,oA,DA){const GA=structuredClone(R),jA=structuredClone(H),XA=structuredClone($);let ZA=GA.length-2,$A=GA.length-1;for(;ZA>=0;)GA[ZA].startsWith(" ")&&oA.includes(GA[ZA].trim())?(GA[$A]=GA[ZA]+GA[$A],jA[$A]=(0,i.mergeArrays)(jA[ZA],jA[$A]),XA[$A]=(0,i.mergeArrays)(XA[ZA],XA[$A]),GA[ZA]="",jA[ZA]=[],XA[ZA]=[]):$A=ZA,--ZA;for(ZA=0,$A=1;$Afe),jA.filter(fe=>fe.length>0),XA.filter(fe=>fe.length>0)]}}class AI extends de{}class fI extends de{}class ve extends de{}class qA extends de{constructor(R,H){super(R,H),this.languageRegex=/^(>>\w+<<)\s*/g,this.supported_language_codes=this.model.vocab.filter($=>this.languageRegex.test($)),console.warn('WARNING: `MarianTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}_encode_text(R){if(R===null)return null;const[H,...$]=R.trim().split(this.languageRegex);if($.length===0)return super._encode_text(H);if($.length===2){const[oA,DA]=$;return this.supported_language_codes.includes(oA)||console.warn(`Unsupported language code "${oA}" detected, which may lead to unexpected behavior. Should be one of: ${JSON.stringify(this.supported_language_codes)}`),(0,i.mergeArrays)([oA],super._encode_text(DA))}}}class n extends de{}class F extends de{}class K extends de{}class W extends de{}class iA extends de{}class QA extends de{constructor(R,H){super(R,H),this.decoder=new pe({})}}class uA extends de{}class RA extends de{}class Ce extends de{}class Ke{static TOKENIZER_CLASS_MAPPING={T5Tokenizer:Ie,DistilBertTokenizer:yA,CamembertTokenizer:JA,DebertaTokenizer:N,DebertaV2Tokenizer:gA,BertTokenizer:J,HerbertTokenizer:O,ConvBertTokenizer:IA,RoFormerTokenizer:rA,XLMTokenizer:ae,ElectraTokenizer:Ee,MobileBertTokenizer:ke,SqueezeBertTokenizer:EI,AlbertTokenizer:xe,GPT2Tokenizer:Se,BartTokenizer:Te,MBartTokenizer:wg,MBart50Tokenizer:je,RobertaTokenizer:lg,WhisperTokenizer:lI,CodeGenTokenizer:AI,CLIPTokenizer:fI,SiglipTokenizer:ve,MarianTokenizer:qA,BloomTokenizer:Wg,NllbTokenizer:Mg,M2M100Tokenizer:tI,LlamaTokenizer:pg,CodeLlamaTokenizer:iI,XLMRobertaTokenizer:cg,MPNetTokenizer:Zg,FalconTokenizer:oI,GPTNeoXTokenizer:mg,EsmTokenizer:nI,Wav2Vec2CTCTokenizer:n,BlenderbotTokenizer:F,BlenderbotSmallTokenizer:K,SpeechT5Tokenizer:W,NougatTokenizer:iA,VitsTokenizer:QA,Qwen2Tokenizer:CI,GemmaTokenizer:ag,Grok1Tokenizer:jg,CohereTokenizer:uA,MgpstrTokenizer:RA,Ernie4_5_Tokenizer:Ce,PreTrainedTokenizer:de};static async from_pretrained(R,{progress_callback:H=null,config:$=null,cache_dir:oA=null,local_files_only:DA=!1,revision:GA="main",legacy:jA=null}={}){const[XA,ZA]=await a(R,{progress_callback:H,config:$,cache_dir:oA,local_files_only:DA,revision:GA,legacy:jA}),$A=ZA.tokenizer_class?.replace(/Fast$/,"")??"PreTrainedTokenizer";let fe=this.TOKENIZER_CLASS_MAPPING[$A];return fe||(console.warn(`Unknown tokenizer class "${$A}", attempting to construct from base class.`),fe=de),new fe(XA,ZA)}}},"./src/utils/audio.js":(A,g,e)=>{e.r(g),e.d(g,{RawAudio:()=>Z,hamming:()=>r,hanning:()=>a,mel_filter_bank:()=>G,read_audio:()=>B,spectrogram:()=>_,window_function:()=>x});var I=e("./src/utils/hub.js"),i=e("./src/utils/maths.js"),t=e("./src/utils/core.js"),C=e("./src/env.js"),o=e("./src/utils/tensor.js"),s=e("?7992");async function B(T,CA){if(typeof AudioContext>"u")throw Error("Unable to load audio from path/URL since `AudioContext` is not available in your environment. Instead, audio data should be passed directly to the pipeline/processor. For more information and some example code, see https://huggingface.co/docs/transformers.js/guides/node-audio-processing.");const eA=await(await(0,I.getFile)(T)).arrayBuffer(),tA=new AudioContext({sampleRate:CA});typeof CA>"u"&&console.warn(`No sampling rate provided, using default of ${tA.sampleRate}Hz.`);const BA=await tA.decodeAudioData(eA);let sA;if(BA.numberOfChannels===2){const cA=Math.sqrt(2),dA=BA.getChannelData(0),P=BA.getChannelData(1);sA=new Float32Array(dA.length);for(let U=0;U2595*Math.log10(1+T/700),kaldi:T=>1127*Math.log(1+T/700),slaney:(T,CA=1e3,eA=15,tA=27/Math.log(6.4))=>T>=CA?eA+Math.log(T/CA)*tA:3*T/200};function c(T,CA="htk"){const eA=d[CA];if(!eA)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof T=="number"?eA(T):T.map(tA=>eA(tA))}const f={htk:T=>700*(10**(T/2595)-1),kaldi:T=>700*(Math.exp(T/1127)-1),slaney:(T,CA=1e3,eA=15,tA=Math.log(6.4)/27)=>T>=eA?CA*Math.exp(tA*(T-eA)):200*T/3};function k(T,CA="htk"){const eA=f[CA];if(!eA)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof T=="number"?eA(T):T.map(tA=>eA(tA))}function u(T,CA){const eA=Float64Array.from({length:CA.length-1},(cA,dA)=>CA[dA+1]-CA[dA]),tA=Array.from({length:T.length},()=>new Array(CA.length));for(let cA=0;cAnew Array(T.length));for(let cA=0;cAT+tA*sA)}function G(T,CA,eA,tA,BA,sA=null,cA="htk",dA=!1){if(sA!==null&&sA!=="slaney")throw new Error('norm must be one of null or "slaney"');if(T<2)throw new Error(`Require num_frequency_bins: ${T} >= 2`);if(eA>tA)throw new Error(`Require min_frequency: ${eA} <= max_frequency: ${tA}`);const P=c(eA,cA),U=c(tA,cA),z=D(P,U,CA+2);let v=k(z,cA),nA;if(dA){const _A=BA/((T-1)*2);nA=c(Float64Array.from({length:T},(PA,ie)=>ie*_A),cA),v=z}else nA=D(0,Math.floor(BA/2),T);const YA=u(nA,v);if(sA!==null&&sA==="slaney")for(let _A=0;_ABA)throw Error(`frame_length (${eA}) may not be larger than fft_length (${BA})`);if(bA!==eA)throw new Error(`Length of the window (${bA}) must equal frame_length (${eA})`);if(tA<=0)throw new Error("hop_length must be greater than zero");if(sA===null&&v!==null)throw new Error("You have provided `mel_filters` but `power` is `None`. Mel spectrogram computation is not yet supported for complex-valued spectrogram. Specify `power` to fix this issue.");if(!z)throw new Error("`preemphasis_htk_flavor=false` is not currently supported.");if(cA){if(dA!=="reflect")throw new Error(`pad_mode="${dA}" not implemented yet.`);const Be=Math.floor((BA-1)/2)+1;T=h(T,Be,Be)}let NA=Math.floor(1+Math.floor((T.length-eA)/tA));AA!==null&&NANA?V&&(MA=hA):MA=kA=hA);const xA=new i.FFT(BA),vA=new Float64Array(BA),ge=new Float64Array(xA.outputBufferSize),SA=new Float32Array(pA*MA);for(let Be=0;Be=1;--se)vA[se]-=U*vA[se-1];vA[0]*=1-U}for(let se=0;seMath.pow(dA,.85));break;default:throw new Error(`Unknown window type ${CA}.`)}if(eA&&(cA=cA.subarray(0,T)),tA===null)return cA;if(T>tA)throw new Error(`Length of the window (${T}) may not be larger than frame_length (${tA})`);return cA}function b(T,CA){let eA=44;const tA=new ArrayBuffer(eA+T.length*4),BA=new DataView(tA);X(BA,0,"RIFF"),BA.setUint32(4,36+T.length*4,!0),X(BA,8,"WAVE"),X(BA,12,"fmt "),BA.setUint32(16,16,!0),BA.setUint16(20,3,!0),BA.setUint16(22,1,!0),BA.setUint32(24,CA,!0),BA.setUint32(28,CA*4,!0),BA.setUint16(32,4,!0),BA.setUint16(34,32,!0),X(BA,36,"data"),BA.setUint32(40,T.length*4,!0);for(let sA=0;sA{let sA=await BA.arrayBuffer();s.writeFileSync(tA,Buffer.from(sA))};else throw new Error("Unable to save because filesystem is disabled in this environment.");await eA(CA,this.toBlob())}}},"./src/utils/constants.js":(A,g,e)=>{e.r(g),e.d(g,{CHAT_TEMPLATE_NAME:()=>s,CONFIG_NAME:()=>i,FEATURE_EXTRACTOR_NAME:()=>t,GENERATION_CONFIG_NAME:()=>B,GITHUB_ISSUE_URL:()=>I,IMAGE_PROCESSOR_NAME:()=>C,PROCESSOR_NAME:()=>o});const I="https://github.com/huggingface/transformers.js/issues/new/choose",i="config.json",t="preprocessor_config.json",C=t,o="processor_config.json",s="chat_template.jinja",B="generation_config.json"},"./src/utils/core.js":(A,g,e)=>{e.r(g),e.d(g,{calculateDimensions:()=>B,calculateReflectOffset:()=>d,count:()=>u,dispatchCallback:()=>I,escapeRegExp:()=>t,isIntegralNumber:()=>o,isNullishDimension:()=>s,isTypedArray:()=>C,len:()=>k,mergeArrays:()=>a,pick:()=>f,pop:()=>Q,product:()=>r,reverseDictionary:()=>i,saveBlob:()=>c});function I(D,G){D&&D(G)}function i(D){return Object.fromEntries(Object.entries(D).map(([G,h])=>[h,G]))}function t(D){return D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function C(D){return D?.prototype?.__proto__?.constructor?.name==="TypedArray"}function o(D){return Number.isInteger(D)||typeof D=="bigint"}function s(D){return D==null||D===-1}function B(D){const G=[];let h=D;for(;Array.isArray(h);)G.push(h.length),h=h[0];return G}function Q(D,G,h=void 0){const y=D[G];if(y!==void 0)return delete D[G],y;if(h===void 0)throw Error(`Key ${G} does not exist in object.`);return h}function a(...D){return Array.prototype.concat.apply([],D)}function r(...D){return D.reduce((G,h)=>G.flatMap(y=>h.map(M=>[y,M])))}function d(D,G){return Math.abs((D+G)%(2*G)-G)}function c(D,G){const h=URL.createObjectURL(G),y=document.createElement("a");y.href=h,y.download=D,y.click(),y.remove(),URL.revokeObjectURL(h)}function f(D,G){return Object.assign({},...G.map(h=>{if(D[h]!==void 0)return{[h]:D[h]}}))}function k(D){let G=0;for(const h of D)++G;return G}function u(D,G){let h=0;for(const y of D)y===G&&++h;return h}},"./src/utils/data-structures.js":(A,g,e)=>{e.r(g),e.d(g,{CharTrie:()=>i,DictionarySplitter:()=>s,LRUCache:()=>B,PriorityQueue:()=>I,TokenLattice:()=>C});class I{constructor(a=(d,c)=>d>c,r=1/0){this._heap=[],this._comparator=a,this._maxSize=r}get size(){return this._heap.length}isEmpty(){return this.size===0}peek(){return this._heap[0]}push(...a){return this.extend(a)}extend(a){for(const r of a)if(this.size0&&this._swap(0,r),this._heap.pop(),this._siftDown(),a}replace(a){const r=this.peek();return this._heap[0]=a,this._siftDown(),r}_parent(a){return(a+1>>>1)-1}_left(a){return(a<<1)+1}_right(a){return a+1<<1}_greater(a,r){return this._comparator(this._heap[a],this._heap[r])}_swap(a,r){const d=this._heap[a];this._heap[a]=this._heap[r],this._heap[r]=d}_siftUp(){this._siftUpFrom(this.size-1)}_siftUpFrom(a){for(;a>0&&this._greater(a,this._parent(a));)this._swap(a,this._parent(a)),a=this._parent(a)}_siftDown(){let a=0;for(;this._left(a)[]),this.endNodes=Array.from({length:this.len+1},()=>[]);const c=new o(this.bosTokenId,0,0,0,0),f=new o(this.eosTokenId,1,this.len,0,0);this.nodes.push(c.clone()),this.nodes.push(f.clone()),this.beginNodes[this.len].push(f),this.endNodes[0].push(c)}insert(a,r,d,c){const f=this.nodes.length,k=new o(c,f,a,r,d);this.beginNodes[a].push(k),this.endNodes[a+r].push(k),this.nodes.push(k)}viterbi(){const a=this.len;let r=0;for(;r<=a;){if(this.beginNodes[r].length==0)return[];for(let u of this.beginNodes[r]){u.prev=null;let D=0,G=null;for(let h of this.endNodes[r]){const y=h.backtraceScore+u.score;(G===null||y>D)&&(G=h.clone(),D=y)}if(G!==null)u.prev=G,u.backtraceScore=D;else return[]}++r}const d=[],f=this.beginNodes[a][0].prev;if(f===null)return[];let k=f.clone();for(;k.prev!==null;)d.push(k.clone()),k=k.clone().prev.clone();return d.reverse(),d}piece(a){return this.chars.slice(a.pos,a.pos+a.length).join("")}tokens(){return this.viterbi().map(r=>this.piece(r))}tokenIds(){return this.viterbi().map(r=>r.tokenId)}}class o{constructor(a,r,d,c,f){this.tokenId=a,this.nodeId=r,this.pos=d,this.length=c,this.score=f,this.prev=null,this.backtraceScore=0}clone(){const a=new o(this.tokenId,this.nodeId,this.pos,this.length,this.score);return a.prev=this.prev,a.backtraceScore=this.backtraceScore,a}}class s{constructor(a){this.trie=this._buildTrie(a)}_buildTrie(a){const r=Object.create(null);for(const d of a){let c=r;for(let f=0;fc&&r.push(a.slice(c,f)),r.push(u),f+=u.length,c=f):++f}return cthis.capacity&&this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}}},"./src/utils/devices.js":(A,g,e)=>{e.r(g),e.d(g,{DEVICE_TYPES:()=>I});const I=Object.freeze({auto:"auto",gpu:"gpu",cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:"webnn","webnn-npu":"webnn-npu","webnn-gpu":"webnn-gpu","webnn-cpu":"webnn-cpu"})},"./src/utils/dtypes.js":(A,g,e)=>{e.r(g),e.d(g,{DATA_TYPES:()=>C,DEFAULT_DEVICE_DTYPE_MAPPING:()=>o,DEFAULT_DTYPE_SUFFIX_MAPPING:()=>s,isWebGpuFp16Supported:()=>t});var I=e("./src/env.js"),i=e("./src/utils/devices.js");const t=function(){let B;return async function(){if(B===void 0)if(!I.apis.IS_WEBGPU_AVAILABLE)B=!1;else try{B=(await navigator.gpu.requestAdapter()).features.has("shader-f16")}catch{B=!1}return B}}(),C=Object.freeze({auto:"auto",fp32:"fp32",fp16:"fp16",q8:"q8",int8:"int8",uint8:"uint8",q4:"q4",bnb4:"bnb4",q4f16:"q4f16"}),o=Object.freeze({[i.DEVICE_TYPES.wasm]:C.q8}),s=Object.freeze({[C.fp32]:"",[C.fp16]:"_fp16",[C.int8]:"_int8",[C.uint8]:"_uint8",[C.q8]:"_quantized",[C.q4]:"_q4",[C.q4f16]:"_q4f16",[C.bnb4]:"_bnb4"})},"./src/utils/generic.js":(A,g,e)=>{e.r(g),e.d(g,{Callable:()=>I});const I=class{constructor(){let i=function(...t){return i._call(...t)};return Object.setPrototypeOf(i,new.target.prototype)}_call(...i){throw Error("Must implement _call method in subclass")}}},"./src/utils/hub.js":(A,g,e)=>{e.r(g),e.d(g,{MAX_EXTERNAL_DATA_CHUNKS:()=>o,getFile:()=>d,getModelFile:()=>D,getModelJSON:()=>h,getModelText:()=>G});var I=e("?7992"),i=e("?5af5"),t=e("./src/env.js"),C=e("./src/utils/core.js");const o=100,s={txt:"text/plain",html:"text/html",css:"text/css",js:"text/javascript",json:"application/json",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif"};class B{constructor(_){if(this.filePath=_,this.headers=new Headers,this.exists=I.existsSync(_),this.exists){this.status=200,this.statusText="OK";let x=I.statSync(_);this.headers.set("content-length",x.size.toString()),this.updateContentType();const b=I.createReadStream(_);this.body=new ReadableStream({start(X){b.on("data",Z=>X.enqueue(Z)),b.on("end",()=>X.close()),b.on("error",Z=>X.error(Z))},cancel(){b.destroy()}})}else this.status=404,this.statusText="Not Found",this.body=null}updateContentType(){const _=this.filePath.toString().split(".").pop().toLowerCase();this.headers.set("content-type",s[_]??"application/octet-stream")}clone(){let _=new B(this.filePath);return _.exists=this.exists,_.status=this.status,_.statusText=this.statusText,_.headers=new Headers(this.headers),_}async arrayBuffer(){return(await I.promises.readFile(this.filePath)).buffer}async blob(){const _=await I.promises.readFile(this.filePath);return new Blob([_],{type:this.headers.get("content-type")})}async text(){return await I.promises.readFile(this.filePath,"utf8")}async json(){return JSON.parse(await this.text())}}function Q(m,_=null,x=null){let b;try{b=new URL(m)}catch{return!1}return!(_&&!_.includes(b.protocol)||x&&!x.includes(b.hostname))}const a=/^(\b[\w\-.]+\b\/)?\b[\w\-.]{1,96}\b$/;function r(m){return!(!a.test(m)||m.includes("..")||m.includes("--")||m.endsWith(".git")||m.endsWith(".ipynb"))}async function d(m){if(t.env.useFS&&!Q(m,["http:","https:","blob:"]))return new B(m instanceof URL?m.protocol==="file:"?m.pathname:m.toString():m);if(typeof process<"u"&&process?.release?.name==="node"){const _=!!GB?.TESTING_REMOTELY,x=t.env.version,b=new Headers;if(b.set("User-Agent",`transformers.js/${x}; is_ci/${_};`),Q(m,["http:","https:"],["huggingface.co","hf.co"])){const Z=GB?.HF_TOKEN??GB?.HF_ACCESS_TOKEN;Z&&b.set("Authorization",`Bearer ${Z}`)}return fetch(m,{headers:b})}else return fetch(m)}const c={400:"Bad request error occurred while trying to load file",401:"Unauthorized access to file",403:"Forbidden access to file",404:"Could not locate file",408:"Request timeout error occurred while trying to load file",500:"Internal server error error occurred while trying to load file",502:"Bad gateway error occurred while trying to load file",503:"Service unavailable error occurred while trying to load file",504:"Gateway timeout error occurred while trying to load file"};function f(m,_,x){if(!x)return null;const b=c[m]??`Error (${m}) occurred while trying to load file`;throw Error(`${b}: "${_}".`)}class k{constructor(_){this.path=_}async match(_){let x=i.join(this.path,_),b=new B(x);if(b.exists)return b}async put(_,x,b=void 0){let X=i.join(this.path,_);try{const Z=x.headers.get("Content-Length"),T=parseInt(Z??"0");let CA=0;await I.promises.mkdir(i.dirname(X),{recursive:!0});const eA=I.createWriteStream(X),tA=x.body.getReader();for(;;){const{done:BA,value:sA}=await tA.read();if(BA)break;await new Promise((dA,P)=>{eA.write(sA,U=>{if(U){P(U);return}dA()})}),CA+=sA.length;const cA=T?CA/T*100:0;b?.({progress:cA,loaded:CA,total:T})}eA.close()}catch(Z){try{await I.promises.unlink(X)}catch{}throw Z}}}async function u(m,..._){for(let x of _)try{let b=await m.match(x);if(b)return b}catch{continue}}async function D(m,_,x=!0,b={},X=!1){if(!t.env.allowLocalModels){if(b.local_files_only)throw Error("Invalid configuration detected: local models are disabled (`env.allowLocalModels=false`) but you have requested to only use local models (`local_files_only=true`).");if(!t.env.allowRemoteModels)throw Error("Invalid configuration detected: both local and remote models are disabled. Fix by setting `env.allowLocalModels` or `env.allowRemoteModels` to `true`.")}(0,C.dispatchCallback)(b.progress_callback,{status:"initiate",name:m,file:_});let Z;if(!Z&&t.env.useCustomCache){if(!t.env.customCache)throw Error("`env.useCustomCache=true`, but `env.customCache` is not defined.");if(!t.env.customCache.match||!t.env.customCache.put)throw new Error("`env.customCache` must be an object which implements the `match` and `put` functions of the Web Cache API. For more information, see https://developer.mozilla.org/en-US/docs/Web/API/Cache");Z=t.env.customCache}if(!Z&&t.env.useBrowserCache){if(typeof caches>"u")throw Error("Browser cache is not available in this environment.");try{Z=await caches.open("transformers-cache")}catch(nA){console.warn("An error occurred while opening the browser cache:",nA)}}if(!Z&&t.env.useFSCache){if(!t.apis.IS_FS_AVAILABLE)throw Error("File System Cache is not available in this environment.");Z=new k(b.cache_dir??t.env.cacheDir)}const T=b.revision??"main",CA=M(m,_),eA=r(m),tA=eA?M(t.env.localModelPath,CA):CA,BA=M(t.env.remoteHost,t.env.remotePathTemplate.replaceAll("{model}",m).replaceAll("{revision}",encodeURIComponent(T)),_);let sA;const cA=Z instanceof k?T==="main"?CA:M(m,T,_):BA;let dA=!1,P;Z&&(P=await u(Z,tA,cA));const U=P!==void 0;if(P===void 0){if(t.env.allowLocalModels)if(Q(CA,["http:","https:"])){if(b.local_files_only)throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${CA}.`);if(!t.env.allowRemoteModels)throw new Error(`\`env.allowRemoteModels=false\`, but attempted to load a remote file from: ${CA}.`)}else try{P=await d(tA),sA=tA}catch(YA){console.warn(`Unable to load from local path "${tA}": "${YA}"`)}if(P===void 0||P.status===404){if(b.local_files_only||!t.env.allowRemoteModels){if(x)throw Error(`\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${tA}".`);return null}if(!eA)throw Error(`Local file missing at "${tA}" and download aborted due to invalid model ID "${m}".`);if(P=await d(BA),P.status!==200)return f(P.status,BA,x);sA=cA}dA=Z&&typeof Response<"u"&&P instanceof Response&&P.status===200}(0,C.dispatchCallback)(b.progress_callback,{status:"download",name:m,file:_});let z;if(!(t.apis.IS_NODE_ENV&&X)){let nA;b.progress_callback?U&&typeof navigator<"u"&&/firefox/i.test(navigator.userAgent)?(nA=new Uint8Array(await P.arrayBuffer()),(0,C.dispatchCallback)(b.progress_callback,{status:"progress",name:m,file:_,progress:100,loaded:nA.length,total:nA.length})):nA=await y(P,YA=>{(0,C.dispatchCallback)(b.progress_callback,{status:"progress",name:m,file:_,...YA})}):nA=new Uint8Array(await P.arrayBuffer()),z=nA}if(dA&&sA&&await Z.match(sA)===void 0&&(z?await Z.put(sA,new Response(z,{headers:P.headers})).catch(nA=>{console.warn(`Unable to add response to browser cache: ${nA}.`)}):await Z.put(sA,P,b.progress_callback)),(0,C.dispatchCallback)(b.progress_callback,{status:"done",name:m,file:_}),z){if(!t.apis.IS_NODE_ENV&&X)throw new Error("Cannot return path in a browser environment.");return z}if(P instanceof B)return P.filePath;const v=await Z?.match(sA);if(v instanceof B)return v.filePath;if(v instanceof Response)return new Uint8Array(await v.arrayBuffer());if(typeof v=="string")return v;throw new Error("Unable to get model file path or buffer.")}async function G(m,_,x=!0,b={}){const X=await D(m,_,x,b,!1);return X===null?null:new TextDecoder("utf-8").decode(X)}async function h(m,_,x=!0,b={}){const X=await G(m,_,x,b);return X===null?{}:JSON.parse(X)}async function y(m,_){const x=m.headers.get("Content-Length");x===null&&console.warn("Unable to determine content-length from response headers. Will expand buffer when needed.");let b=parseInt(x??"0"),X=new Uint8Array(b),Z=0;const T=m.body.getReader();async function CA(){const{done:eA,value:tA}=await T.read();if(eA)return;const BA=Z+tA.length;if(BA>b){b=BA;const cA=new Uint8Array(b);cA.set(X),X=cA}X.set(tA,Z),Z=BA;const sA=Z/b*100;return _({progress:sA,loaded:Z,total:b}),CA()}return await CA(),X}function M(...m){return m=m.map((_,x)=>(x&&(_=_.replace(new RegExp("^/"),"")),x!==m.length-1&&(_=_.replace(new RegExp("/$"),"")),_)),m.join("/")}},"./src/utils/image.js":(A,g,e)=>{e.r(g),e.d(g,{RawImage:()=>c,load_image:()=>f});var I=e("./src/utils/core.js"),i=e("./src/utils/hub.js"),t=e("./src/env.js"),C=e("./src/utils/tensor.js"),o=e("?2b25");let s,B,Q;const a=t.apis.IS_BROWSER_ENV||t.apis.IS_WEBWORKER_ENV;if(a)s=(k,u)=>{if(!self.OffscreenCanvas)throw new Error("OffscreenCanvas not supported by this browser.");return new self.OffscreenCanvas(k,u)},Q=self.createImageBitmap,B=self.ImageData;else if(o)Q=async k=>{const D=(await k.metadata()).channels,{data:G,info:h}=await k.rotate().raw().toBuffer({resolveWithObject:!0}),y=new c(new Uint8ClampedArray(G),h.width,h.height,h.channels);return D!==void 0&&D!==h.channels&&y.convert(D),y};else throw new Error("Unable to load image processing library.");const r={0:"nearest",1:"lanczos",2:"bilinear",3:"bicubic",4:"box",5:"hamming"},d=new Map([["png","image/png"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["gif","image/gif"]]);class c{constructor(u,D,G,h){this.data=u,this.width=D,this.height=G,this.channels=h}get size(){return[this.width,this.height]}static async read(u){if(u instanceof c)return u;if(typeof u=="string"||u instanceof URL)return await this.fromURL(u);if(u instanceof Blob)return await this.fromBlob(u);if(typeof HTMLCanvasElement<"u"&&u instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&u instanceof OffscreenCanvas)return this.fromCanvas(u);throw new Error(`Unsupported input type: ${typeof u}`)}static fromCanvas(u){if(!a)throw new Error("fromCanvas() is only supported in browser environments.");const G=u.getContext("2d").getImageData(0,0,u.width,u.height).data;return new c(G,u.width,u.height,4)}static async fromURL(u){const D=await(0,i.getFile)(u);if(D.status!==200)throw new Error(`Unable to read image from "${u}" (${D.status} ${D.statusText})`);const G=await D.blob();return this.fromBlob(G)}static async fromBlob(u){if(a){const D=await Q(u),G=s(D.width,D.height).getContext("2d");return G.drawImage(D,0,0),new this(G.getImageData(0,0,D.width,D.height).data,D.width,D.height,4)}else{const D=o(await u.arrayBuffer());return await Q(D)}}static fromTensor(u,D="CHW"){if(u.dims.length!==3)throw new Error(`Tensor should have 3 dimensions, but has ${u.dims.length} dimensions.`);if(D==="CHW")u=u.transpose(1,2,0);else if(D!=="HWC")throw new Error(`Unsupported channel format: ${D}`);if(!(u.data instanceof Uint8ClampedArray||u.data instanceof Uint8Array))throw new Error(`Unsupported tensor type: ${u.type}`);switch(u.dims[2]){case 1:case 2:case 3:case 4:return new c(u.data,u.dims[1],u.dims[0],u.dims[2]);default:throw new Error(`Unsupported number of channels: ${u.dims[2]}`)}}grayscale(){if(this.channels===1)return this;const u=new Uint8ClampedArray(this.width*this.height*1);switch(this.channels){case 3:case 4:for(let D=0,G=0;D=0?_=G:b=-G,h>=0?x=h:X=-h,m.drawImage(M,_,x,u,D,b,X,u,D),new c(m.getImageData(0,0,u,D).data,u,D,4).convert(y)}else{let y=this.toSharp();if(G>=0&&h>=0)y=y.extract({left:Math.floor(G),top:Math.floor(h),width:u,height:D});else if(G<=0&&h<=0){const M=Math.floor(-h),m=Math.floor(-G);y=y.extend({top:M,left:m,right:u-this.width-m,bottom:D-this.height-M})}else{let M=[0,0],m=0;h<0?(M[0]=Math.floor(-h),M[1]=D-this.height-M[0]):m=Math.floor(h);let _=[0,0],x=0;G<0?(_[0]=Math.floor(-G),_[1]=u-this.width-_[0]):x=Math.floor(G),y=y.extend({top:M[0],bottom:M[1],left:_[0],right:_[1]}).extract({left:x,top:m,width:u,height:D})}return await Q(y)}}async toBlob(u="image/png",D=1){if(!a)throw new Error("toBlob() is only supported in browser environments.");return await this.toCanvas().convertToBlob({type:u,quality:D})}toTensor(u="CHW"){let D=new C.Tensor("uint8",new Uint8Array(this.data),[this.height,this.width,this.channels]);if(u!=="HWC")if(u==="CHW")D=D.permute(2,0,1);else throw new Error(`Unsupported channel format: ${u}`);return D}toCanvas(){if(!a)throw new Error("toCanvas() is only supported in browser environments.");const u=this.clone().rgba(),D=s(u.width,u.height),G=new B(u.data,u.width,u.height);return D.getContext("2d").putImageData(G,0,0),D}split(){const{data:u,width:D,height:G,channels:h}=this,y=u.constructor,M=u.length/h,m=Array.from({length:h},()=>new y(M));for(let _=0;_new c(_,D,G,1))}_update(u,D,G,h=null){return this.data=u,this.width=D,this.height=G,h!==null&&(this.channels=h),this}clone(){return new c(this.data.slice(),this.width,this.height,this.channels)}convert(u){if(this.channels===u)return this;switch(u){case 1:this.grayscale();break;case 3:this.rgb();break;case 4:this.rgba();break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this}async save(u){if(a){if(t.apis.IS_WEBWORKER_ENV)throw new Error("Unable to save an image from a Web Worker.");const D=u.split(".").pop().toLowerCase(),G=d.get(D)??"image/png",h=await this.toBlob(G);(0,I.saveBlob)(u,h)}else{if(t.apis.IS_FS_AVAILABLE)return await this.toSharp().toFile(u);throw new Error("Unable to save the image because filesystem is disabled in this environment.")}}toSharp(){if(a)throw new Error("toSharp() is only supported in server-side environments.");return o(this.data,{raw:{width:this.width,height:this.height,channels:this.channels}})}}const f=c.read.bind(c)},"./src/utils/maths.js":(A,g,e)=>{e.r(g),e.d(g,{FFT:()=>f,bankers_round:()=>D,cos_sim:()=>s,dot:()=>o,dynamic_time_warping:()=>G,interpolate_data:()=>I,log_softmax:()=>C,magnitude:()=>B,max:()=>a,medianFilter:()=>k,min:()=>Q,permute_data:()=>i,round:()=>u,softmax:()=>t});function I(h,[y,M,m],[_,x],b="bilinear",X=!1){const Z=x/m,T=_/M,CA=new h.constructor(_*x*y),eA=M*m,tA=_*x;for(let BA=0;BA<_;++BA)for(let sA=0;sA=0;--X)_[X]=Z,m[X]=y[M[X]],Z*=m[X];const x=M.map((X,Z)=>_[M.indexOf(Z)]),b=new h.constructor(h.length);for(let X=0;X=0;--T)Z+=CA%y[T]*x[T],CA=Math.floor(CA/y[T]);b[Z]=h[X]}return[b,m]}function t(h){const y=a(h)[0],M=h.map(x=>Math.exp(x-y)),m=M.reduce((x,b)=>x+b,0);return M.map(x=>x/m)}function C(h){const y=a(h)[0];let M=0;for(let x=0;xx-y-m)}function o(h,y){let M=0;for(let m=0;my+M*M,0))}function Q(h){if(h.length===0)throw Error("Array must not be empty");let y=h[0],M=0;for(let m=1;my&&(y=h[m],M=m);return[y,M]}function r(h){return h>0&&(h&h-1)===0}class d{constructor(y){if(this.size=y|0,this.size<=1||!r(this.size))throw new Error("FFT size must be a power of two larger than 1");this._csize=y<<1,this.table=new Float64Array(this.size*2);for(let m=0;mm;m<<=1)++M;this._width=M%2===0?M-1:M,this._bitrev=new Int32Array(1<>>_&3)<>>1);for(let _=0;_>>1]=y[_];return m}toComplexArray(y,M){const m=M||this.createComplexArray();for(let _=0;_>>1],m[_+1]=0;return m}transform(y,M){if(y===M)throw new Error("Input and output buffers must be different");this._transform4(y,M,1)}realTransform(y,M){if(y===M)throw new Error("Input and output buffers must be different");this._realTransform4(y,M,1)}inverseTransform(y,M){if(y===M)throw new Error("Input and output buffers must be different");this._transform4(y,M,-1);for(let m=0;m>=2;b>=2;b>>=2){X=_/b<<1;const tA=X>>>2;for(Z=0;Z<_;Z+=X){const BA=Z+tA-1;for(let sA=Z,cA=0;sA>>1,b>>>1)}else for(Z=0,T=0;Z<_;Z+=X,++T){const BA=CA[T];this._singleRealTransform4(M,y,Z,BA>>>1,b>>>1,m)}const eA=this.table;for(b>>=2;b>=2;b>>=2){X=_/b<<1;const BA=X>>>1,sA=BA>>>1,cA=sA>>>1;for(Z=0;Z<_;Z+=X)for(let dA=0,P=0;dA<=cA;dA+=2,P+=b){const U=Z+dA,z=U+sA,v=z+sA,nA=v+sA,YA=y[U],_A=y[U+1],PA=y[z],ie=y[z+1],LA=y[v],AA=y[v+1],hA=y[nA],V=y[nA+1],fA=YA,bA=_A,NA=eA[P],pA=m*eA[P+1],kA=PA*NA-ie*pA,MA=PA*pA+ie*NA,xA=eA[2*P],vA=m*eA[2*P+1],ge=LA*xA-AA*vA,SA=LA*vA+AA*xA,re=eA[3*P],HA=m*eA[3*P+1],zA=hA*re-V*HA,Be=hA*HA+V*re,Ae=fA+ge,oe=bA+SA,se=fA-ge,Ne=bA-SA,Pe=kA+zA,pe=MA+Be,tg=m*(kA-zA),Og=m*(MA-Be);if(y[U]=Ae+Pe,y[U+1]=oe+pe,y[z]=se+Og,y[z+1]=Ne-tg,dA===0){y[v]=Ae-Pe,y[v+1]=oe-pe;continue}if(dA===cA)continue;const xg=Z+sA-dA,De=Z+BA-dA;y[xg]=se-m*Og,y[xg+1]=-Ne-m*tg,y[De]=Ae-m*Pe,y[De+1]=-oe+m*pe}}const tA=_>>>1;for(let BA=2;BA>1;++CA){const eA=(CA+1-y)**2/2,tA=Math.sqrt(Z**2+T**2)**eA,BA=eA*Math.atan2(T,Z),sA=2*CA;x[sA]=tA*Math.cos(BA),x[sA+1]=tA*Math.sin(BA),b[sA]=x[sA],b[sA+1]=-x[sA+1]}this._slicedChirpBuffer=x.subarray(M,m),this._f=new d(_>>1),this._f.transform(this._chirpBuffer,b)}_transform(y,M,m){const _=this._buffer1,x=this._buffer2,b=this._outBuffer1,X=this._outBuffer2,Z=this._chirpBuffer,T=this._slicedChirpBuffer,CA=this._a;if(m)for(let eA=0;eA>1,sA=M[BA];_[eA]=sA*T[eA],_[tA]=sA*T[tA]}else for(let eA=0;eA=h.length&&(Z=2*(h.length-1)-Z),m[b++]=h[Z]}m.sort(),M[x]=m[_]}return M}function u(h,y){const M=Math.pow(10,y);return Math.round(h*M)/M}function D(h){const y=Math.round(h);return Math.abs(h)%1===.5?y%2===0?y:y-1:y}function G(h){const y=h.length,M=h[0].length,m=[y+1,M+1],_=Array.from({length:m[0]},()=>Array(m[1]).fill(1/0));_[0][0]=0;const x=Array.from({length:m[0]},()=>Array(m[1]).fill(-1));for(let CA=1;CA0||X>0;)switch(Z.push(b-1),T.push(X-1),x[b][X]){case 0:--b,--X;break;case 1:--b;break;case 2:--X;break;default:throw new Error(`Internal error in dynamic time warping. Unexpected trace[${b}, ${X}]. Please file a bug report.`)}return Z.reverse(),T.reverse(),[Z,T]}},"./src/utils/tensor.js":(A,g,e)=>{e.r(g),e.d(g,{DataTypeMap:()=>C,Tensor:()=>o,cat:()=>M,full:()=>T,full_like:()=>CA,interpolate:()=>Q,interpolate_4d:()=>a,layer_norm:()=>D,matmul:()=>r,mean:()=>b,mean_pooling:()=>u,ones:()=>eA,ones_like:()=>tA,permute:()=>B,quantize_embeddings:()=>dA,rand:()=>cA,rfft:()=>d,slice:()=>k,stack:()=>m,std_mean:()=>x,topk:()=>c,zeros:()=>BA,zeros_like:()=>sA});var I=e("./src/utils/maths.js"),i=e("./src/backends/onnx.js"),t=e("./src/ops/registry.js");const C=Object.freeze({float32:Float32Array,float16:typeof Float16Array<"u"?Float16Array:Uint16Array,float64:Float64Array,string:Array,int8:Int8Array,uint8:Uint8Array,int16:Int16Array,uint16:Uint16Array,int32:Int32Array,uint32:Uint32Array,int64:BigInt64Array,uint64:BigUint64Array,bool:Uint8Array,uint4:Uint8Array,int4:Int8Array});class o{get dims(){return this.ort_tensor.dims}set dims(U){this.ort_tensor.dims=U}get type(){return this.ort_tensor.type}get data(){return this.ort_tensor.data}get size(){return this.ort_tensor.size}get location(){return this.ort_tensor.location}ort_tensor;constructor(...U){return(0,i.isONNXTensor)(U[0])?this.ort_tensor=U[0]:this.ort_tensor=new i.Tensor(U[0],U[1],U[2]),new Proxy(this,{get:(z,v)=>{if(typeof v=="string"){let nA=Number(v);if(Number.isInteger(nA))return z._getitem(nA)}return z[v]},set:(z,v,nA)=>z[v]=nA})}dispose(){this.ort_tensor.dispose()}*[Symbol.iterator](){const[U,...z]=this.dims;if(z.length>0){const v=z.reduce((nA,YA)=>nA*YA);for(let nA=0;nA0){const nA=v.reduce((YA,_A)=>YA*_A);return this._subarray(U,nA,v)}else return new o(this.type,[this.data[U]],v)}indexOf(U){const z=this.data;for(let v=0;vfA)throw new Error(`Invalid slice: ${hA}`);const bA=[Math.max(V,0),Math.min(fA,this.dims[AA])];v.push(bA),z.push(bA[1]-bA[0])}else throw new Error(`Invalid slice: ${hA}`)}const nA=v.map(([AA,hA])=>hA-AA),YA=nA.reduce((AA,hA)=>AA*hA),_A=this.data,PA=new _A.constructor(YA),ie=this.stride();let LA=!0;for(let AA=1;AA=0;--V){const bA=nA[V];hA+=(fA%bA+v[V][0])*ie[V],fA=Math.floor(fA/bA)}PA[AA]=_A[hA]}return new o(this.type,PA,z)}permute(...U){return B(this,U)}transpose(...U){return this.permute(...U)}sum(U=null,z=!1){return this.norm(1,U,z)}norm(U="fro",z=null,v=!1){if(U==="fro")U=2;else if(typeof U=="string")throw Error(`Unsupported norm: ${U}`);const nA=this.data,YA=(LA,AA)=>LA+AA**U;if(z===null){const LA=nA.reduce(YA,0)**(1/U);return new o(this.type,[LA],[])}const[_A,PA,ie]=_(YA,this,z,v);if(U!==1)for(let LA=0;LA=0;--ie){const hA=this.dims[ie];if(ie!==z){const V=LA%hA;PA+=V*AA,AA*=this.dims[ie]}LA=Math.floor(LA/hA)}nA[_A]/=YA[PA]}return this}normalize(U=2,z=1){return this.clone().normalize_(U,z)}stride(){return X(this.dims)}squeeze(U=null){return new o(this.type,this.data,G(this.dims,U))}squeeze_(U=null){return this.dims=G(this.dims,U),this}unsqueeze(U=null){return new o(this.type,this.data,h(this.dims,U))}unsqueeze_(U=null){return this.dims=h(this.dims,U),this}flatten_(U=0,z=-1){z=(z+this.dims.length)%this.dims.length;let v=this.dims.slice(0,U),nA=this.dims.slice(U,z+1),YA=this.dims.slice(z+1);return this.dims=[...v,nA.reduce((_A,PA)=>_A*PA,1),...YA],this}flatten(U=0,z=-1){return this.clone().flatten_(U,z)}view(...U){let z=-1;for(let nA=0;nAPA!==z?YA*_A:YA,1);U[z]=v.length/nA}return new o(this.type,v,U)}neg_(){const U=this.data;for(let z=0;zU?1:0;return new o("bool",z,this.dims)}lt(U){const z=new Uint8Array(this.data.length),v=this.data;for(let nA=0;nAMath.min(_A,PA),this,U,z,1/0);return new o(v,nA,YA)}max(U=null,z=!1){if(U===null){const _A=(0,I.max)(this.data)[0];return new o(this.type,[_A],[])}const[v,nA,YA]=_((_A,PA)=>Math.max(_A,PA),this,U,z,-1/0);return new o(v,nA,YA)}argmin(U=null,z=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const v=(0,I.min)(this.data)[1];return new o("int64",[BigInt(v)],[])}argmax(U=null,z=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const v=(0,I.max)(this.data)[1];return new o("int64",[BigInt(v)],[])}to(U){if(this.type===U)return this;if(!C.hasOwnProperty(U))throw new Error(`Unsupported type: ${U}`);let z;const v=["int64","uint64"].includes(this.type),nA=["int64","uint64"].includes(U);return v&&!nA?z=Number:!v&&nA&&(z=BigInt),new o(U,C[U].from(this.data,z),this.dims)}}function s(P,U){const z=P.length,v=U.reduce((YA,_A)=>YA*_A);if(z!==v)throw Error(`cannot reshape array of size ${z} into shape (${U})`);let nA=P;for(let YA=U.length-1;YA>=0;YA--)nA=nA.reduce((_A,PA)=>{let ie=_A[_A.length-1];return ie.lengthnew o("int64",P,[P.length]);async function k(P,U,z,v,nA){return await(await t.TensorOpRegistry.slice)({x:P,s:f(U),e:f(z),a:f(v),t:f(nA??new Array(v.length).fill(1))})}function u(P,U){const z=P.data,v=U.data,nA=[P.dims[0],P.dims[2]],YA=new z.constructor(nA[0]*nA[1]),[_A,PA,ie]=P.dims;let LA=0;for(let AA=0;AA<_A;++AA){const hA=AA*ie*PA;for(let V=0;Vz!==1):typeof U=="number"?P[U]===1&&P.splice(U,1):Array.isArray(U)&&(P=P.filter((z,v)=>z!==1||!U.includes(v))),P}function h(P,U){return U=y(U,P.length+1),P=P.slice(),P.splice(U,0,1),P}function y(P,U,z=null,v=!0){if(P<-U||P>=U){if(v)throw new Error(`IndexError: index ${P} is out of bounds for dimension${z===null?"":" "+z} with size ${U}`);return P<-U?0:U}return P<0&&(P=(P%U+U)%U),P}function M(P,U=0){U=y(U,P[0].dims.length);const z=P[0].dims.slice();z[U]=P.reduce((_A,PA)=>_A+PA.dims[U],0);const v=z.reduce((_A,PA)=>_A*PA,1),nA=new P[0].data.constructor(v),YA=P[0].type;if(U===0){let _A=0;for(const PA of P){const ie=PA.data;nA.set(ie,_A),_A+=ie.length}}else{let _A=0;for(let PA=0;PA=0;--V){const NA=LA[V];let pA=fA%NA;V===U&&(pA+=_A),hA+=pA*bA,bA*=z[V],fA=Math.floor(fA/NA)}nA[hA]=ie[AA]}_A+=LA[U]}}return new o(YA,nA,z)}function m(P,U=0){return M(P.map(z=>z.unsqueeze(U)),U)}function _(P,U,z=null,v=!1,nA=null){const YA=U.data,_A=U.dims;z=y(z,_A.length);const PA=_A.slice();PA[z]=1;const ie=new YA.constructor(YA.length/_A[z]);nA!==null&&ie.fill(nA);for(let LA=0;LA=0;--hA){const bA=_A[hA];if(hA!==z){const NA=V%bA;AA+=NA*fA,fA*=PA[hA]}V=Math.floor(V/bA)}ie[AA]=P(ie[AA],YA[LA],LA,AA)}return v||PA.splice(z,1),[U.type,ie,PA]}function x(P,U=null,z=1,v=!1){const nA=P.data,YA=P.dims;if(U===null){const fA=nA.reduce((kA,MA)=>kA+MA,0)/nA.length,bA=Math.sqrt(nA.reduce((kA,MA)=>kA+(MA-fA)**2,0)/(nA.length-z)),NA=new o(P.type,[fA],[]);return[new o(P.type,[bA],[]),NA]}U=y(U,YA.length);const _A=b(P,U,v),PA=_A.data,[ie,LA,AA]=_((V,fA,bA,NA)=>V+(fA-PA[NA])**2,P,U,v);for(let V=0;VLA+AA,0);return new o(P.type,[ie/nA.length],[])}U=y(U,v.length);const[YA,_A,PA]=_((ie,LA)=>ie+LA,P,U,z);if(v[U]!==1)for(let ie=0;ie<_A.length;++ie)_A[ie]/=v[U];return new o(YA,_A,PA)}function X(P){const U=new Array(P.length);for(let z=P.length-1,v=1;z>=0;--z)U[z]=v,v*=P[z];return U}function Z(P,U,z,v){const nA=P.reduce((YA,_A)=>YA*_A,1);return new o(z,new v(nA).fill(U),P)}function T(P,U){let z,v;if(typeof U=="number")z="float32",v=Float32Array;else if(typeof U=="bigint")z="int64",v=BigInt64Array;else if(typeof U=="boolean")z="bool",v=Uint8Array;else throw new Error(`Unsupported data type: ${typeof U}`);return Z(P,U,z,v)}function CA(P,U){return T(P.dims,U)}function eA(P){return Z(P,1n,"int64",BigInt64Array)}function tA(P){return eA(P.dims)}function BA(P){return Z(P,0n,"int64",BigInt64Array)}function sA(P){return BA(P.dims)}function cA(P){const U=P.reduce((z,v)=>z*v,1);return new o("float32",Float32Array.from({length:U},()=>Math.random()),P)}function dA(P,U){if(P.dims.length!==2)throw new Error("The tensor must have 2 dimensions");if(P.dims.at(-1)%8!==0)throw new Error("The last dimension of the tensor must be a multiple of 8");if(!["binary","ubinary"].includes(U))throw new Error("The precision must be either 'binary' or 'ubinary'");const z=U==="binary",v=z?"int8":"uint8",nA=z?Int8Array:Uint8Array,YA=P.data,_A=new nA(YA.length/8);for(let PA=0;PA0?1:0,LA=Math.floor(PA/8),AA=PA%8;_A[LA]|=ie<<7-AA,z&&AA===0&&(_A[LA]-=128)}return new o(v,_A,[P.dims[0],P.dims[1]/8])}},"./src/utils/video.js":(A,g,e)=>{e.r(g),e.d(g,{RawVideo:()=>C,RawVideoFrame:()=>t,load_video:()=>o});var I=e("./src/utils/image.js"),i=e("./src/env.js");class t{constructor(B,Q){this.image=B,this.timestamp=Q}}class C{constructor(B,Q){B.length>0&&B[0]instanceof I.RawImage&&(B=B.map((a,r)=>new t(a,(r+1)/(B.length+1)*Q))),this.frames=B,this.duration=Q}get width(){return this.frames[0].image.width}get height(){return this.frames[0].image.height}get fps(){return this.frames.length/this.duration}}async function o(s,{num_frames:B=null,fps:Q=null}={}){if(!i.apis.IS_BROWSER_ENV)throw new Error("`load_video` is currently only supported in browser environments.");if(B==null&&Q==null)throw new Error("Either num_frames or fps must be provided.");const a=[],r=document.createElement("video");if(r.crossOrigin="anonymous",r.muted=!0,typeof s=="string")r.src=s;else if(s instanceof Blob)r.src=URL.createObjectURL(s);else if(s instanceof HTMLVideoElement)r.src=s.src;else throw new Error("Invalid URL or video element provided.");if(await new Promise(G=>r.onloadedmetadata=G),r.seekable.start(0)===r.seekable.end(0)){const h=await(await fetch(r.src)).blob();r.src=URL.createObjectURL(h),await new Promise(y=>r.onloadedmetadata=y)}const d=r.duration;let c,f;B!=null?(c=B,f=B===1?0:d/(B-1)):(f=1/Q,c=Math.floor(d/f));let k=[];for(let G=0;G{r.onseeked=m}),D.drawImage(r,0,0,u.width,u.height);const h=D.getImageData(0,0,u.width,u.height),y=new I.RawImage(h.data,u.width,u.height,4),M=new t(y,G);a.push(M)}return r.remove(),new C(a,d)}}},Vh={};function ze(A){var g=Vh[A];if(g!==void 0)return g.exports;var e=Vh[A]={exports:{}};return Ff[A](e,e.exports,ze),e.exports}(()=>{var A=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,g;ze.t=function(e,I){if(I&1&&(e=this(e)),I&8||typeof e=="object"&&e&&(I&4&&e.__esModule||I&16&&typeof e.then=="function"))return e;var i=Object.create(null);ze.r(i);var t={};g=g||[null,A({}),A([]),A(A)];for(var C=I&2&&e;typeof C=="object"&&!~g.indexOf(C);C=A(C))Object.getOwnPropertyNames(C).forEach(o=>t[o]=()=>e[o]);return t.default=()=>e,ze.d(i,t),i}})();ze.d=(A,g)=>{for(var e in g)ze.o(g,e)&&!ze.o(A,e)&&Object.defineProperty(A,e,{enumerable:!0,get:g[e]})};ze.o=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);ze.r=A=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var l={};(()=>{/*!*****************************!*\ !*** ./src/transformers.js ***! \*****************************/ze.r(l),ze.d(l,{ASTFeatureExtractor:()=>a.ASTFeatureExtractor,ASTForAudioClassification:()=>e.ASTForAudioClassification,ASTModel:()=>e.ASTModel,ASTPreTrainedModel:()=>e.ASTPreTrainedModel,AlbertForMaskedLM:()=>e.AlbertForMaskedLM,AlbertForQuestionAnswering:()=>e.AlbertForQuestionAnswering,AlbertForSequenceClassification:()=>e.AlbertForSequenceClassification,AlbertModel:()=>e.AlbertModel,AlbertPreTrainedModel:()=>e.AlbertPreTrainedModel,AlbertTokenizer:()=>I.AlbertTokenizer,ArceeForCausalLM:()=>e.ArceeForCausalLM,ArceeModel:()=>e.ArceeModel,ArceePreTrainedModel:()=>e.ArceePreTrainedModel,AudioClassificationPipeline:()=>g.AudioClassificationPipeline,AutoConfig:()=>i.AutoConfig,AutoFeatureExtractor:()=>r.AutoFeatureExtractor,AutoImageProcessor:()=>f.AutoImageProcessor,AutoModel:()=>e.AutoModel,AutoModelForAudioClassification:()=>e.AutoModelForAudioClassification,AutoModelForAudioFrameClassification:()=>e.AutoModelForAudioFrameClassification,AutoModelForAudioTextToText:()=>e.AutoModelForAudioTextToText,AutoModelForCTC:()=>e.AutoModelForCTC,AutoModelForCausalLM:()=>e.AutoModelForCausalLM,AutoModelForDepthEstimation:()=>e.AutoModelForDepthEstimation,AutoModelForDocumentQuestionAnswering:()=>e.AutoModelForDocumentQuestionAnswering,AutoModelForImageClassification:()=>e.AutoModelForImageClassification,AutoModelForImageFeatureExtraction:()=>e.AutoModelForImageFeatureExtraction,AutoModelForImageMatting:()=>e.AutoModelForImageMatting,AutoModelForImageSegmentation:()=>e.AutoModelForImageSegmentation,AutoModelForImageTextToText:()=>e.AutoModelForImageTextToText,AutoModelForImageToImage:()=>e.AutoModelForImageToImage,AutoModelForMaskGeneration:()=>e.AutoModelForMaskGeneration,AutoModelForMaskedLM:()=>e.AutoModelForMaskedLM,AutoModelForNormalEstimation:()=>e.AutoModelForNormalEstimation,AutoModelForObjectDetection:()=>e.AutoModelForObjectDetection,AutoModelForPoseEstimation:()=>e.AutoModelForPoseEstimation,AutoModelForQuestionAnswering:()=>e.AutoModelForQuestionAnswering,AutoModelForSemanticSegmentation:()=>e.AutoModelForSemanticSegmentation,AutoModelForSeq2SeqLM:()=>e.AutoModelForSeq2SeqLM,AutoModelForSequenceClassification:()=>e.AutoModelForSequenceClassification,AutoModelForSpeechSeq2Seq:()=>e.AutoModelForSpeechSeq2Seq,AutoModelForTextToSpectrogram:()=>e.AutoModelForTextToSpectrogram,AutoModelForTextToWaveform:()=>e.AutoModelForTextToWaveform,AutoModelForTokenClassification:()=>e.AutoModelForTokenClassification,AutoModelForUniversalSegmentation:()=>e.AutoModelForUniversalSegmentation,AutoModelForVision2Seq:()=>e.AutoModelForVision2Seq,AutoModelForXVector:()=>e.AutoModelForXVector,AutoModelForZeroShotObjectDetection:()=>e.AutoModelForZeroShotObjectDetection,AutoProcessor:()=>D.AutoProcessor,AutoTokenizer:()=>I.AutoTokenizer,AutomaticSpeechRecognitionPipeline:()=>g.AutomaticSpeechRecognitionPipeline,BackgroundRemovalPipeline:()=>g.BackgroundRemovalPipeline,BartForConditionalGeneration:()=>e.BartForConditionalGeneration,BartForSequenceClassification:()=>e.BartForSequenceClassification,BartModel:()=>e.BartModel,BartPretrainedModel:()=>e.BartPretrainedModel,BartTokenizer:()=>I.BartTokenizer,BaseModelOutput:()=>e.BaseModelOutput,BaseStreamer:()=>G.BaseStreamer,BeitFeatureExtractor:()=>c.BeitFeatureExtractor,BeitForImageClassification:()=>e.BeitForImageClassification,BeitModel:()=>e.BeitModel,BeitPreTrainedModel:()=>e.BeitPreTrainedModel,BertForMaskedLM:()=>e.BertForMaskedLM,BertForQuestionAnswering:()=>e.BertForQuestionAnswering,BertForSequenceClassification:()=>e.BertForSequenceClassification,BertForTokenClassification:()=>e.BertForTokenClassification,BertModel:()=>e.BertModel,BertPreTrainedModel:()=>e.BertPreTrainedModel,BertTokenizer:()=>I.BertTokenizer,BitImageProcessor:()=>c.BitImageProcessor,BlenderbotForConditionalGeneration:()=>e.BlenderbotForConditionalGeneration,BlenderbotModel:()=>e.BlenderbotModel,BlenderbotPreTrainedModel:()=>e.BlenderbotPreTrainedModel,BlenderbotSmallForConditionalGeneration:()=>e.BlenderbotSmallForConditionalGeneration,BlenderbotSmallModel:()=>e.BlenderbotSmallModel,BlenderbotSmallPreTrainedModel:()=>e.BlenderbotSmallPreTrainedModel,BlenderbotSmallTokenizer:()=>I.BlenderbotSmallTokenizer,BlenderbotTokenizer:()=>I.BlenderbotTokenizer,BloomForCausalLM:()=>e.BloomForCausalLM,BloomModel:()=>e.BloomModel,BloomPreTrainedModel:()=>e.BloomPreTrainedModel,BloomTokenizer:()=>I.BloomTokenizer,CLIPFeatureExtractor:()=>c.CLIPFeatureExtractor,CLIPImageProcessor:()=>c.CLIPImageProcessor,CLIPModel:()=>e.CLIPModel,CLIPPreTrainedModel:()=>e.CLIPPreTrainedModel,CLIPSegForImageSegmentation:()=>e.CLIPSegForImageSegmentation,CLIPSegModel:()=>e.CLIPSegModel,CLIPSegPreTrainedModel:()=>e.CLIPSegPreTrainedModel,CLIPTextModel:()=>e.CLIPTextModel,CLIPTextModelWithProjection:()=>e.CLIPTextModelWithProjection,CLIPTokenizer:()=>I.CLIPTokenizer,CLIPVisionModel:()=>e.CLIPVisionModel,CLIPVisionModelWithProjection:()=>e.CLIPVisionModelWithProjection,CamembertForMaskedLM:()=>e.CamembertForMaskedLM,CamembertForQuestionAnswering:()=>e.CamembertForQuestionAnswering,CamembertForSequenceClassification:()=>e.CamembertForSequenceClassification,CamembertForTokenClassification:()=>e.CamembertForTokenClassification,CamembertModel:()=>e.CamembertModel,CamembertPreTrainedModel:()=>e.CamembertPreTrainedModel,CamembertTokenizer:()=>I.CamembertTokenizer,CausalLMOutput:()=>e.CausalLMOutput,CausalLMOutputWithPast:()=>e.CausalLMOutputWithPast,ChineseCLIPFeatureExtractor:()=>c.ChineseCLIPFeatureExtractor,ChineseCLIPModel:()=>e.ChineseCLIPModel,ChineseCLIPPreTrainedModel:()=>e.ChineseCLIPPreTrainedModel,ClapAudioModelWithProjection:()=>e.ClapAudioModelWithProjection,ClapFeatureExtractor:()=>a.ClapFeatureExtractor,ClapModel:()=>e.ClapModel,ClapPreTrainedModel:()=>e.ClapPreTrainedModel,ClapTextModelWithProjection:()=>e.ClapTextModelWithProjection,ClassifierFreeGuidanceLogitsProcessor:()=>y.ClassifierFreeGuidanceLogitsProcessor,CodeGenForCausalLM:()=>e.CodeGenForCausalLM,CodeGenModel:()=>e.CodeGenModel,CodeGenPreTrainedModel:()=>e.CodeGenPreTrainedModel,CodeGenTokenizer:()=>I.CodeGenTokenizer,CodeLlamaTokenizer:()=>I.CodeLlamaTokenizer,CohereForCausalLM:()=>e.CohereForCausalLM,CohereModel:()=>e.CohereModel,CoherePreTrainedModel:()=>e.CoherePreTrainedModel,CohereTokenizer:()=>I.CohereTokenizer,ConvBertForMaskedLM:()=>e.ConvBertForMaskedLM,ConvBertForQuestionAnswering:()=>e.ConvBertForQuestionAnswering,ConvBertForSequenceClassification:()=>e.ConvBertForSequenceClassification,ConvBertForTokenClassification:()=>e.ConvBertForTokenClassification,ConvBertModel:()=>e.ConvBertModel,ConvBertPreTrainedModel:()=>e.ConvBertPreTrainedModel,ConvBertTokenizer:()=>I.ConvBertTokenizer,ConvNextFeatureExtractor:()=>c.ConvNextFeatureExtractor,ConvNextForImageClassification:()=>e.ConvNextForImageClassification,ConvNextImageProcessor:()=>c.ConvNextImageProcessor,ConvNextModel:()=>e.ConvNextModel,ConvNextPreTrainedModel:()=>e.ConvNextPreTrainedModel,ConvNextV2ForImageClassification:()=>e.ConvNextV2ForImageClassification,ConvNextV2Model:()=>e.ConvNextV2Model,ConvNextV2PreTrainedModel:()=>e.ConvNextV2PreTrainedModel,DFineForObjectDetection:()=>e.DFineForObjectDetection,DFineModel:()=>e.DFineModel,DFinePreTrainedModel:()=>e.DFinePreTrainedModel,DPTFeatureExtractor:()=>c.DPTFeatureExtractor,DPTForDepthEstimation:()=>e.DPTForDepthEstimation,DPTImageProcessor:()=>c.DPTImageProcessor,DPTModel:()=>e.DPTModel,DPTPreTrainedModel:()=>e.DPTPreTrainedModel,DacDecoderModel:()=>e.DacDecoderModel,DacDecoderOutput:()=>e.DacDecoderOutput,DacEncoderModel:()=>e.DacEncoderModel,DacEncoderOutput:()=>e.DacEncoderOutput,DacFeatureExtractor:()=>a.DacFeatureExtractor,DacModel:()=>e.DacModel,DacPreTrainedModel:()=>e.DacPreTrainedModel,DataTypeMap:()=>s.DataTypeMap,DebertaForMaskedLM:()=>e.DebertaForMaskedLM,DebertaForQuestionAnswering:()=>e.DebertaForQuestionAnswering,DebertaForSequenceClassification:()=>e.DebertaForSequenceClassification,DebertaForTokenClassification:()=>e.DebertaForTokenClassification,DebertaModel:()=>e.DebertaModel,DebertaPreTrainedModel:()=>e.DebertaPreTrainedModel,DebertaTokenizer:()=>I.DebertaTokenizer,DebertaV2ForMaskedLM:()=>e.DebertaV2ForMaskedLM,DebertaV2ForQuestionAnswering:()=>e.DebertaV2ForQuestionAnswering,DebertaV2ForSequenceClassification:()=>e.DebertaV2ForSequenceClassification,DebertaV2ForTokenClassification:()=>e.DebertaV2ForTokenClassification,DebertaV2Model:()=>e.DebertaV2Model,DebertaV2PreTrainedModel:()=>e.DebertaV2PreTrainedModel,DebertaV2Tokenizer:()=>I.DebertaV2Tokenizer,DecisionTransformerModel:()=>e.DecisionTransformerModel,DecisionTransformerPreTrainedModel:()=>e.DecisionTransformerPreTrainedModel,DeiTFeatureExtractor:()=>c.DeiTFeatureExtractor,DeiTForImageClassification:()=>e.DeiTForImageClassification,DeiTImageProcessor:()=>c.DeiTImageProcessor,DeiTModel:()=>e.DeiTModel,DeiTPreTrainedModel:()=>e.DeiTPreTrainedModel,DepthAnythingForDepthEstimation:()=>e.DepthAnythingForDepthEstimation,DepthAnythingPreTrainedModel:()=>e.DepthAnythingPreTrainedModel,DepthEstimationPipeline:()=>g.DepthEstimationPipeline,DepthProForDepthEstimation:()=>e.DepthProForDepthEstimation,DepthProPreTrainedModel:()=>e.DepthProPreTrainedModel,DetrFeatureExtractor:()=>c.DetrFeatureExtractor,DetrForObjectDetection:()=>e.DetrForObjectDetection,DetrForSegmentation:()=>e.DetrForSegmentation,DetrImageProcessor:()=>c.DetrImageProcessor,DetrModel:()=>e.DetrModel,DetrObjectDetectionOutput:()=>e.DetrObjectDetectionOutput,DetrPreTrainedModel:()=>e.DetrPreTrainedModel,DetrSegmentationOutput:()=>e.DetrSegmentationOutput,Dinov2ForImageClassification:()=>e.Dinov2ForImageClassification,Dinov2Model:()=>e.Dinov2Model,Dinov2PreTrainedModel:()=>e.Dinov2PreTrainedModel,Dinov2WithRegistersForImageClassification:()=>e.Dinov2WithRegistersForImageClassification,Dinov2WithRegistersModel:()=>e.Dinov2WithRegistersModel,Dinov2WithRegistersPreTrainedModel:()=>e.Dinov2WithRegistersPreTrainedModel,DistilBertForMaskedLM:()=>e.DistilBertForMaskedLM,DistilBertForQuestionAnswering:()=>e.DistilBertForQuestionAnswering,DistilBertForSequenceClassification:()=>e.DistilBertForSequenceClassification,DistilBertForTokenClassification:()=>e.DistilBertForTokenClassification,DistilBertModel:()=>e.DistilBertModel,DistilBertPreTrainedModel:()=>e.DistilBertPreTrainedModel,DistilBertTokenizer:()=>I.DistilBertTokenizer,DocumentQuestionAnsweringPipeline:()=>g.DocumentQuestionAnsweringPipeline,DonutFeatureExtractor:()=>c.DonutFeatureExtractor,DonutImageProcessor:()=>c.DonutImageProcessor,DonutSwinModel:()=>e.DonutSwinModel,DonutSwinPreTrainedModel:()=>e.DonutSwinPreTrainedModel,EfficientNetForImageClassification:()=>e.EfficientNetForImageClassification,EfficientNetImageProcessor:()=>c.EfficientNetImageProcessor,EfficientNetModel:()=>e.EfficientNetModel,EfficientNetPreTrainedModel:()=>e.EfficientNetPreTrainedModel,ElectraForMaskedLM:()=>e.ElectraForMaskedLM,ElectraForQuestionAnswering:()=>e.ElectraForQuestionAnswering,ElectraForSequenceClassification:()=>e.ElectraForSequenceClassification,ElectraForTokenClassification:()=>e.ElectraForTokenClassification,ElectraModel:()=>e.ElectraModel,ElectraPreTrainedModel:()=>e.ElectraPreTrainedModel,ElectraTokenizer:()=>I.ElectraTokenizer,EncodecFeatureExtractor:()=>a.EncodecFeatureExtractor,EosTokenCriteria:()=>h.EosTokenCriteria,Ernie4_5_ForCausalLM:()=>e.Ernie4_5_ForCausalLM,Ernie4_5_Model:()=>e.Ernie4_5_Model,Ernie4_5_PretrainedModel:()=>e.Ernie4_5_PretrainedModel,Ernie4_5_Tokenizer:()=>I.Ernie4_5_Tokenizer,EsmForMaskedLM:()=>e.EsmForMaskedLM,EsmForSequenceClassification:()=>e.EsmForSequenceClassification,EsmForTokenClassification:()=>e.EsmForTokenClassification,EsmModel:()=>e.EsmModel,EsmPreTrainedModel:()=>e.EsmPreTrainedModel,EsmTokenizer:()=>I.EsmTokenizer,ExaoneForCausalLM:()=>e.ExaoneForCausalLM,ExaoneModel:()=>e.ExaoneModel,ExaonePreTrainedModel:()=>e.ExaonePreTrainedModel,FFT:()=>B.FFT,FalconForCausalLM:()=>e.FalconForCausalLM,FalconModel:()=>e.FalconModel,FalconPreTrainedModel:()=>e.FalconPreTrainedModel,FalconTokenizer:()=>I.FalconTokenizer,FastViTForImageClassification:()=>e.FastViTForImageClassification,FastViTModel:()=>e.FastViTModel,FastViTPreTrainedModel:()=>e.FastViTPreTrainedModel,FeatureExtractionPipeline:()=>g.FeatureExtractionPipeline,FeatureExtractor:()=>Q.FeatureExtractor,FillMaskPipeline:()=>g.FillMaskPipeline,Florence2ForConditionalGeneration:()=>e.Florence2ForConditionalGeneration,Florence2PreTrainedModel:()=>e.Florence2PreTrainedModel,Florence2Processor:()=>u.Florence2Processor,ForcedBOSTokenLogitsProcessor:()=>y.ForcedBOSTokenLogitsProcessor,ForcedEOSTokenLogitsProcessor:()=>y.ForcedEOSTokenLogitsProcessor,GLPNFeatureExtractor:()=>c.GLPNFeatureExtractor,GLPNForDepthEstimation:()=>e.GLPNForDepthEstimation,GLPNModel:()=>e.GLPNModel,GLPNPreTrainedModel:()=>e.GLPNPreTrainedModel,GPT2LMHeadModel:()=>e.GPT2LMHeadModel,GPT2Model:()=>e.GPT2Model,GPT2PreTrainedModel:()=>e.GPT2PreTrainedModel,GPT2Tokenizer:()=>I.GPT2Tokenizer,GPTBigCodeForCausalLM:()=>e.GPTBigCodeForCausalLM,GPTBigCodeModel:()=>e.GPTBigCodeModel,GPTBigCodePreTrainedModel:()=>e.GPTBigCodePreTrainedModel,GPTJForCausalLM:()=>e.GPTJForCausalLM,GPTJModel:()=>e.GPTJModel,GPTJPreTrainedModel:()=>e.GPTJPreTrainedModel,GPTNeoForCausalLM:()=>e.GPTNeoForCausalLM,GPTNeoModel:()=>e.GPTNeoModel,GPTNeoPreTrainedModel:()=>e.GPTNeoPreTrainedModel,GPTNeoXForCausalLM:()=>e.GPTNeoXForCausalLM,GPTNeoXModel:()=>e.GPTNeoXModel,GPTNeoXPreTrainedModel:()=>e.GPTNeoXPreTrainedModel,GPTNeoXTokenizer:()=>I.GPTNeoXTokenizer,Gemma2ForCausalLM:()=>e.Gemma2ForCausalLM,Gemma2Model:()=>e.Gemma2Model,Gemma2PreTrainedModel:()=>e.Gemma2PreTrainedModel,Gemma3ForCausalLM:()=>e.Gemma3ForCausalLM,Gemma3Model:()=>e.Gemma3Model,Gemma3PreTrainedModel:()=>e.Gemma3PreTrainedModel,Gemma3nAudioFeatureExtractor:()=>a.Gemma3nAudioFeatureExtractor,Gemma3nForConditionalGeneration:()=>e.Gemma3nForConditionalGeneration,Gemma3nPreTrainedModel:()=>e.Gemma3nPreTrainedModel,Gemma3nProcessor:()=>u.Gemma3nProcessor,GemmaForCausalLM:()=>e.GemmaForCausalLM,GemmaModel:()=>e.GemmaModel,GemmaPreTrainedModel:()=>e.GemmaPreTrainedModel,GemmaTokenizer:()=>I.GemmaTokenizer,GlmForCausalLM:()=>e.GlmForCausalLM,GlmModel:()=>e.GlmModel,GlmPreTrainedModel:()=>e.GlmPreTrainedModel,GraniteForCausalLM:()=>e.GraniteForCausalLM,GraniteModel:()=>e.GraniteModel,GranitePreTrainedModel:()=>e.GranitePreTrainedModel,Grok1Tokenizer:()=>I.Grok1Tokenizer,GroundingDinoForObjectDetection:()=>e.GroundingDinoForObjectDetection,GroundingDinoImageProcessor:()=>c.GroundingDinoImageProcessor,GroundingDinoPreTrainedModel:()=>e.GroundingDinoPreTrainedModel,GroundingDinoProcessor:()=>u.GroundingDinoProcessor,GroupViTModel:()=>e.GroupViTModel,GroupViTPreTrainedModel:()=>e.GroupViTPreTrainedModel,HeliumForCausalLM:()=>e.HeliumForCausalLM,HeliumModel:()=>e.HeliumModel,HeliumPreTrainedModel:()=>e.HeliumPreTrainedModel,HerbertTokenizer:()=>I.HerbertTokenizer,HieraForImageClassification:()=>e.HieraForImageClassification,HieraModel:()=>e.HieraModel,HieraPreTrainedModel:()=>e.HieraPreTrainedModel,HubertForCTC:()=>e.HubertForCTC,HubertForSequenceClassification:()=>e.HubertForSequenceClassification,HubertModel:()=>e.HubertModel,HubertPreTrainedModel:()=>e.HubertPreTrainedModel,IJepaForImageClassification:()=>e.IJepaForImageClassification,IJepaModel:()=>e.IJepaModel,IJepaPreTrainedModel:()=>e.IJepaPreTrainedModel,Idefics3ForConditionalGeneration:()=>e.Idefics3ForConditionalGeneration,Idefics3ImageProcessor:()=>c.Idefics3ImageProcessor,Idefics3PreTrainedModel:()=>e.Idefics3PreTrainedModel,Idefics3Processor:()=>u.Idefics3Processor,ImageClassificationPipeline:()=>g.ImageClassificationPipeline,ImageFeatureExtractionPipeline:()=>g.ImageFeatureExtractionPipeline,ImageFeatureExtractor:()=>a.ImageFeatureExtractor,ImageMattingOutput:()=>e.ImageMattingOutput,ImageProcessor:()=>d.ImageProcessor,ImageSegmentationPipeline:()=>g.ImageSegmentationPipeline,ImageToImagePipeline:()=>g.ImageToImagePipeline,ImageToTextPipeline:()=>g.ImageToTextPipeline,InterruptableStoppingCriteria:()=>h.InterruptableStoppingCriteria,JAISLMHeadModel:()=>e.JAISLMHeadModel,JAISModel:()=>e.JAISModel,JAISPreTrainedModel:()=>e.JAISPreTrainedModel,JinaCLIPImageProcessor:()=>c.JinaCLIPImageProcessor,JinaCLIPModel:()=>e.JinaCLIPModel,JinaCLIPPreTrainedModel:()=>e.JinaCLIPPreTrainedModel,JinaCLIPProcessor:()=>u.JinaCLIPProcessor,JinaCLIPTextModel:()=>e.JinaCLIPTextModel,JinaCLIPVisionModel:()=>e.JinaCLIPVisionModel,Lfm2ForCausalLM:()=>e.Lfm2ForCausalLM,Lfm2Model:()=>e.Lfm2Model,Lfm2PreTrainedModel:()=>e.Lfm2PreTrainedModel,LiteWhisperForConditionalGeneration:()=>e.LiteWhisperForConditionalGeneration,LlamaForCausalLM:()=>e.LlamaForCausalLM,LlamaModel:()=>e.LlamaModel,LlamaPreTrainedModel:()=>e.LlamaPreTrainedModel,LlamaTokenizer:()=>I.LlamaTokenizer,LlavaForConditionalGeneration:()=>e.LlavaForConditionalGeneration,LlavaOnevisionForConditionalGeneration:()=>e.LlavaOnevisionForConditionalGeneration,LlavaOnevisionImageProcessor:()=>c.LlavaOnevisionImageProcessor,LlavaPreTrainedModel:()=>e.LlavaPreTrainedModel,LlavaProcessor:()=>u.LlavaProcessor,LlavaQwen2ForCausalLM:()=>e.LlavaQwen2ForCausalLM,LogitsProcessor:()=>y.LogitsProcessor,LogitsProcessorList:()=>y.LogitsProcessorList,LogitsWarper:()=>y.LogitsWarper,LongT5ForConditionalGeneration:()=>e.LongT5ForConditionalGeneration,LongT5Model:()=>e.LongT5Model,LongT5PreTrainedModel:()=>e.LongT5PreTrainedModel,M2M100ForConditionalGeneration:()=>e.M2M100ForConditionalGeneration,M2M100Model:()=>e.M2M100Model,M2M100PreTrainedModel:()=>e.M2M100PreTrainedModel,M2M100Tokenizer:()=>I.M2M100Tokenizer,MBart50Tokenizer:()=>I.MBart50Tokenizer,MBartForCausalLM:()=>e.MBartForCausalLM,MBartForConditionalGeneration:()=>e.MBartForConditionalGeneration,MBartForSequenceClassification:()=>e.MBartForSequenceClassification,MBartModel:()=>e.MBartModel,MBartPreTrainedModel:()=>e.MBartPreTrainedModel,MBartTokenizer:()=>I.MBartTokenizer,MPNetForMaskedLM:()=>e.MPNetForMaskedLM,MPNetForQuestionAnswering:()=>e.MPNetForQuestionAnswering,MPNetForSequenceClassification:()=>e.MPNetForSequenceClassification,MPNetForTokenClassification:()=>e.MPNetForTokenClassification,MPNetModel:()=>e.MPNetModel,MPNetPreTrainedModel:()=>e.MPNetPreTrainedModel,MPNetTokenizer:()=>I.MPNetTokenizer,MT5ForConditionalGeneration:()=>e.MT5ForConditionalGeneration,MT5Model:()=>e.MT5Model,MT5PreTrainedModel:()=>e.MT5PreTrainedModel,MarianMTModel:()=>e.MarianMTModel,MarianModel:()=>e.MarianModel,MarianPreTrainedModel:()=>e.MarianPreTrainedModel,MarianTokenizer:()=>I.MarianTokenizer,Mask2FormerImageProcessor:()=>c.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>c.MaskFormerFeatureExtractor,MaskFormerForInstanceSegmentation:()=>e.MaskFormerForInstanceSegmentation,MaskFormerImageProcessor:()=>c.MaskFormerImageProcessor,MaskFormerModel:()=>e.MaskFormerModel,MaskFormerPreTrainedModel:()=>e.MaskFormerPreTrainedModel,MaskedLMOutput:()=>e.MaskedLMOutput,MaxLengthCriteria:()=>h.MaxLengthCriteria,Metric3DForDepthEstimation:()=>e.Metric3DForDepthEstimation,Metric3DPreTrainedModel:()=>e.Metric3DPreTrainedModel,Metric3Dv2ForDepthEstimation:()=>e.Metric3Dv2ForDepthEstimation,Metric3Dv2PreTrainedModel:()=>e.Metric3Dv2PreTrainedModel,MgpstrForSceneTextRecognition:()=>e.MgpstrForSceneTextRecognition,MgpstrModelOutput:()=>e.MgpstrModelOutput,MgpstrPreTrainedModel:()=>e.MgpstrPreTrainedModel,MgpstrProcessor:()=>u.MgpstrProcessor,MgpstrTokenizer:()=>I.MgpstrTokenizer,MimiDecoderModel:()=>e.MimiDecoderModel,MimiDecoderOutput:()=>e.MimiDecoderOutput,MimiEncoderModel:()=>e.MimiEncoderModel,MimiEncoderOutput:()=>e.MimiEncoderOutput,MimiModel:()=>e.MimiModel,MimiPreTrainedModel:()=>e.MimiPreTrainedModel,MinLengthLogitsProcessor:()=>y.MinLengthLogitsProcessor,MinNewTokensLengthLogitsProcessor:()=>y.MinNewTokensLengthLogitsProcessor,MistralForCausalLM:()=>e.MistralForCausalLM,MistralModel:()=>e.MistralModel,MistralPreTrainedModel:()=>e.MistralPreTrainedModel,MobileBertForMaskedLM:()=>e.MobileBertForMaskedLM,MobileBertForQuestionAnswering:()=>e.MobileBertForQuestionAnswering,MobileBertForSequenceClassification:()=>e.MobileBertForSequenceClassification,MobileBertModel:()=>e.MobileBertModel,MobileBertPreTrainedModel:()=>e.MobileBertPreTrainedModel,MobileBertTokenizer:()=>I.MobileBertTokenizer,MobileLLMForCausalLM:()=>e.MobileLLMForCausalLM,MobileLLMModel:()=>e.MobileLLMModel,MobileLLMPreTrainedModel:()=>e.MobileLLMPreTrainedModel,MobileNetV1FeatureExtractor:()=>c.MobileNetV1FeatureExtractor,MobileNetV1ForImageClassification:()=>e.MobileNetV1ForImageClassification,MobileNetV1ForSemanticSegmentation:()=>e.MobileNetV1ForSemanticSegmentation,MobileNetV1ImageProcessor:()=>c.MobileNetV1ImageProcessor,MobileNetV1Model:()=>e.MobileNetV1Model,MobileNetV1PreTrainedModel:()=>e.MobileNetV1PreTrainedModel,MobileNetV2FeatureExtractor:()=>c.MobileNetV2FeatureExtractor,MobileNetV2ForImageClassification:()=>e.MobileNetV2ForImageClassification,MobileNetV2ForSemanticSegmentation:()=>e.MobileNetV2ForSemanticSegmentation,MobileNetV2ImageProcessor:()=>c.MobileNetV2ImageProcessor,MobileNetV2Model:()=>e.MobileNetV2Model,MobileNetV2PreTrainedModel:()=>e.MobileNetV2PreTrainedModel,MobileNetV3FeatureExtractor:()=>c.MobileNetV3FeatureExtractor,MobileNetV3ForImageClassification:()=>e.MobileNetV3ForImageClassification,MobileNetV3ForSemanticSegmentation:()=>e.MobileNetV3ForSemanticSegmentation,MobileNetV3ImageProcessor:()=>c.MobileNetV3ImageProcessor,MobileNetV3Model:()=>e.MobileNetV3Model,MobileNetV3PreTrainedModel:()=>e.MobileNetV3PreTrainedModel,MobileNetV4FeatureExtractor:()=>c.MobileNetV4FeatureExtractor,MobileNetV4ForImageClassification:()=>e.MobileNetV4ForImageClassification,MobileNetV4ForSemanticSegmentation:()=>e.MobileNetV4ForSemanticSegmentation,MobileNetV4ImageProcessor:()=>c.MobileNetV4ImageProcessor,MobileNetV4Model:()=>e.MobileNetV4Model,MobileNetV4PreTrainedModel:()=>e.MobileNetV4PreTrainedModel,MobileViTFeatureExtractor:()=>c.MobileViTFeatureExtractor,MobileViTForImageClassification:()=>e.MobileViTForImageClassification,MobileViTImageProcessor:()=>c.MobileViTImageProcessor,MobileViTModel:()=>e.MobileViTModel,MobileViTPreTrainedModel:()=>e.MobileViTPreTrainedModel,MobileViTV2ForImageClassification:()=>e.MobileViTV2ForImageClassification,MobileViTV2Model:()=>e.MobileViTV2Model,MobileViTV2PreTrainedModel:()=>e.MobileViTV2PreTrainedModel,ModelOutput:()=>e.ModelOutput,ModernBertDecoderForCausalLM:()=>e.ModernBertDecoderForCausalLM,ModernBertDecoderModel:()=>e.ModernBertDecoderModel,ModernBertDecoderPreTrainedModel:()=>e.ModernBertDecoderPreTrainedModel,ModernBertForMaskedLM:()=>e.ModernBertForMaskedLM,ModernBertForSequenceClassification:()=>e.ModernBertForSequenceClassification,ModernBertForTokenClassification:()=>e.ModernBertForTokenClassification,ModernBertModel:()=>e.ModernBertModel,ModernBertPreTrainedModel:()=>e.ModernBertPreTrainedModel,Moondream1ForConditionalGeneration:()=>e.Moondream1ForConditionalGeneration,MoonshineFeatureExtractor:()=>a.MoonshineFeatureExtractor,MoonshineForConditionalGeneration:()=>e.MoonshineForConditionalGeneration,MoonshineModel:()=>e.MoonshineModel,MoonshinePreTrainedModel:()=>e.MoonshinePreTrainedModel,MoonshineProcessor:()=>u.MoonshineProcessor,MptForCausalLM:()=>e.MptForCausalLM,MptModel:()=>e.MptModel,MptPreTrainedModel:()=>e.MptPreTrainedModel,MultiModalityCausalLM:()=>e.MultiModalityCausalLM,MultiModalityPreTrainedModel:()=>e.MultiModalityPreTrainedModel,MusicgenForCausalLM:()=>e.MusicgenForCausalLM,MusicgenForConditionalGeneration:()=>e.MusicgenForConditionalGeneration,MusicgenModel:()=>e.MusicgenModel,MusicgenPreTrainedModel:()=>e.MusicgenPreTrainedModel,NeoBertForMaskedLM:()=>e.NeoBertForMaskedLM,NeoBertForQuestionAnswering:()=>e.NeoBertForQuestionAnswering,NeoBertForSequenceClassification:()=>e.NeoBertForSequenceClassification,NeoBertForTokenClassification:()=>e.NeoBertForTokenClassification,NeoBertModel:()=>e.NeoBertModel,NeoBertPreTrainedModel:()=>e.NeoBertPreTrainedModel,NllbTokenizer:()=>I.NllbTokenizer,NoBadWordsLogitsProcessor:()=>y.NoBadWordsLogitsProcessor,NoRepeatNGramLogitsProcessor:()=>y.NoRepeatNGramLogitsProcessor,NomicBertModel:()=>e.NomicBertModel,NomicBertPreTrainedModel:()=>e.NomicBertPreTrainedModel,NougatImageProcessor:()=>c.NougatImageProcessor,NougatTokenizer:()=>I.NougatTokenizer,OPTForCausalLM:()=>e.OPTForCausalLM,OPTModel:()=>e.OPTModel,OPTPreTrainedModel:()=>e.OPTPreTrainedModel,ObjectDetectionPipeline:()=>g.ObjectDetectionPipeline,Olmo2ForCausalLM:()=>e.Olmo2ForCausalLM,Olmo2Model:()=>e.Olmo2Model,Olmo2PreTrainedModel:()=>e.Olmo2PreTrainedModel,OlmoForCausalLM:()=>e.OlmoForCausalLM,OlmoModel:()=>e.OlmoModel,OlmoPreTrainedModel:()=>e.OlmoPreTrainedModel,OpenELMForCausalLM:()=>e.OpenELMForCausalLM,OpenELMModel:()=>e.OpenELMModel,OpenELMPreTrainedModel:()=>e.OpenELMPreTrainedModel,OwlViTFeatureExtractor:()=>c.OwlViTFeatureExtractor,OwlViTForObjectDetection:()=>e.OwlViTForObjectDetection,OwlViTImageProcessor:()=>c.OwlViTImageProcessor,OwlViTModel:()=>e.OwlViTModel,OwlViTPreTrainedModel:()=>e.OwlViTPreTrainedModel,OwlViTProcessor:()=>u.OwlViTProcessor,Owlv2ForObjectDetection:()=>e.Owlv2ForObjectDetection,Owlv2ImageProcessor:()=>c.Owlv2ImageProcessor,Owlv2Model:()=>e.Owlv2Model,Owlv2PreTrainedModel:()=>e.Owlv2PreTrainedModel,PaliGemmaForConditionalGeneration:()=>e.PaliGemmaForConditionalGeneration,PaliGemmaPreTrainedModel:()=>e.PaliGemmaPreTrainedModel,PaliGemmaProcessor:()=>u.PaliGemmaProcessor,PatchTSMixerForPrediction:()=>e.PatchTSMixerForPrediction,PatchTSMixerModel:()=>e.PatchTSMixerModel,PatchTSMixerPreTrainedModel:()=>e.PatchTSMixerPreTrainedModel,PatchTSTForPrediction:()=>e.PatchTSTForPrediction,PatchTSTModel:()=>e.PatchTSTModel,PatchTSTPreTrainedModel:()=>e.PatchTSTPreTrainedModel,Phi3ForCausalLM:()=>e.Phi3ForCausalLM,Phi3Model:()=>e.Phi3Model,Phi3PreTrainedModel:()=>e.Phi3PreTrainedModel,Phi3VForCausalLM:()=>e.Phi3VForCausalLM,Phi3VImageProcessor:()=>c.Phi3VImageProcessor,Phi3VPreTrainedModel:()=>e.Phi3VPreTrainedModel,Phi3VProcessor:()=>u.Phi3VProcessor,PhiForCausalLM:()=>e.PhiForCausalLM,PhiModel:()=>e.PhiModel,PhiPreTrainedModel:()=>e.PhiPreTrainedModel,Pipeline:()=>g.Pipeline,PreTrainedModel:()=>e.PreTrainedModel,PreTrainedTokenizer:()=>I.PreTrainedTokenizer,PretrainedConfig:()=>i.PretrainedConfig,PretrainedMixin:()=>e.PretrainedMixin,Processor:()=>k.Processor,PvtForImageClassification:()=>e.PvtForImageClassification,PvtImageProcessor:()=>c.PvtImageProcessor,PvtModel:()=>e.PvtModel,PvtPreTrainedModel:()=>e.PvtPreTrainedModel,PyAnnoteFeatureExtractor:()=>a.PyAnnoteFeatureExtractor,PyAnnoteForAudioFrameClassification:()=>e.PyAnnoteForAudioFrameClassification,PyAnnoteModel:()=>e.PyAnnoteModel,PyAnnotePreTrainedModel:()=>e.PyAnnotePreTrainedModel,PyAnnoteProcessor:()=>u.PyAnnoteProcessor,QuestionAnsweringModelOutput:()=>e.QuestionAnsweringModelOutput,QuestionAnsweringPipeline:()=>g.QuestionAnsweringPipeline,Qwen2ForCausalLM:()=>e.Qwen2ForCausalLM,Qwen2Model:()=>e.Qwen2Model,Qwen2PreTrainedModel:()=>e.Qwen2PreTrainedModel,Qwen2Tokenizer:()=>I.Qwen2Tokenizer,Qwen2VLForConditionalGeneration:()=>e.Qwen2VLForConditionalGeneration,Qwen2VLImageProcessor:()=>c.Qwen2VLImageProcessor,Qwen2VLPreTrainedModel:()=>e.Qwen2VLPreTrainedModel,Qwen2VLProcessor:()=>u.Qwen2VLProcessor,Qwen3ForCausalLM:()=>e.Qwen3ForCausalLM,Qwen3Model:()=>e.Qwen3Model,Qwen3PreTrainedModel:()=>e.Qwen3PreTrainedModel,RFDetrForObjectDetection:()=>e.RFDetrForObjectDetection,RFDetrModel:()=>e.RFDetrModel,RFDetrObjectDetectionOutput:()=>e.RFDetrObjectDetectionOutput,RFDetrPreTrainedModel:()=>e.RFDetrPreTrainedModel,RTDetrForObjectDetection:()=>e.RTDetrForObjectDetection,RTDetrImageProcessor:()=>c.RTDetrImageProcessor,RTDetrModel:()=>e.RTDetrModel,RTDetrObjectDetectionOutput:()=>e.RTDetrObjectDetectionOutput,RTDetrPreTrainedModel:()=>e.RTDetrPreTrainedModel,RTDetrV2ForObjectDetection:()=>e.RTDetrV2ForObjectDetection,RTDetrV2Model:()=>e.RTDetrV2Model,RTDetrV2ObjectDetectionOutput:()=>e.RTDetrV2ObjectDetectionOutput,RTDetrV2PreTrainedModel:()=>e.RTDetrV2PreTrainedModel,RawAudio:()=>t.RawAudio,RawImage:()=>C.RawImage,RawVideo:()=>o.RawVideo,RawVideoFrame:()=>o.RawVideoFrame,RepetitionPenaltyLogitsProcessor:()=>y.RepetitionPenaltyLogitsProcessor,ResNetForImageClassification:()=>e.ResNetForImageClassification,ResNetModel:()=>e.ResNetModel,ResNetPreTrainedModel:()=>e.ResNetPreTrainedModel,RoFormerForMaskedLM:()=>e.RoFormerForMaskedLM,RoFormerForQuestionAnswering:()=>e.RoFormerForQuestionAnswering,RoFormerForSequenceClassification:()=>e.RoFormerForSequenceClassification,RoFormerForTokenClassification:()=>e.RoFormerForTokenClassification,RoFormerModel:()=>e.RoFormerModel,RoFormerPreTrainedModel:()=>e.RoFormerPreTrainedModel,RoFormerTokenizer:()=>I.RoFormerTokenizer,RobertaForMaskedLM:()=>e.RobertaForMaskedLM,RobertaForQuestionAnswering:()=>e.RobertaForQuestionAnswering,RobertaForSequenceClassification:()=>e.RobertaForSequenceClassification,RobertaForTokenClassification:()=>e.RobertaForTokenClassification,RobertaModel:()=>e.RobertaModel,RobertaPreTrainedModel:()=>e.RobertaPreTrainedModel,RobertaTokenizer:()=>I.RobertaTokenizer,SamImageProcessor:()=>c.SamImageProcessor,SamImageSegmentationOutput:()=>e.SamImageSegmentationOutput,SamModel:()=>e.SamModel,SamPreTrainedModel:()=>e.SamPreTrainedModel,SamProcessor:()=>u.SamProcessor,SapiensForDepthEstimation:()=>e.SapiensForDepthEstimation,SapiensForNormalEstimation:()=>e.SapiensForNormalEstimation,SapiensForSemanticSegmentation:()=>e.SapiensForSemanticSegmentation,SapiensPreTrainedModel:()=>e.SapiensPreTrainedModel,SeamlessM4TFeatureExtractor:()=>a.SeamlessM4TFeatureExtractor,SegformerFeatureExtractor:()=>c.SegformerFeatureExtractor,SegformerForImageClassification:()=>e.SegformerForImageClassification,SegformerForSemanticSegmentation:()=>e.SegformerForSemanticSegmentation,SegformerImageProcessor:()=>c.SegformerImageProcessor,SegformerModel:()=>e.SegformerModel,SegformerPreTrainedModel:()=>e.SegformerPreTrainedModel,Seq2SeqLMOutput:()=>e.Seq2SeqLMOutput,SequenceClassifierOutput:()=>e.SequenceClassifierOutput,SiglipImageProcessor:()=>c.SiglipImageProcessor,SiglipModel:()=>e.SiglipModel,SiglipPreTrainedModel:()=>e.SiglipPreTrainedModel,SiglipTextModel:()=>e.SiglipTextModel,SiglipTokenizer:()=>I.SiglipTokenizer,SiglipVisionModel:()=>e.SiglipVisionModel,SmolLM3ForCausalLM:()=>e.SmolLM3ForCausalLM,SmolLM3Model:()=>e.SmolLM3Model,SmolLM3PreTrainedModel:()=>e.SmolLM3PreTrainedModel,SmolVLMForConditionalGeneration:()=>e.SmolVLMForConditionalGeneration,SmolVLMImageProcessor:()=>c.SmolVLMImageProcessor,SmolVLMProcessor:()=>u.SmolVLMProcessor,SnacDecoderModel:()=>e.SnacDecoderModel,SnacEncoderModel:()=>e.SnacEncoderModel,SnacFeatureExtractor:()=>a.SnacFeatureExtractor,SnacModel:()=>e.SnacModel,SnacPreTrainedModel:()=>e.SnacPreTrainedModel,SpeechT5FeatureExtractor:()=>a.SpeechT5FeatureExtractor,SpeechT5ForSpeechToText:()=>e.SpeechT5ForSpeechToText,SpeechT5ForTextToSpeech:()=>e.SpeechT5ForTextToSpeech,SpeechT5HifiGan:()=>e.SpeechT5HifiGan,SpeechT5Model:()=>e.SpeechT5Model,SpeechT5PreTrainedModel:()=>e.SpeechT5PreTrainedModel,SpeechT5Processor:()=>u.SpeechT5Processor,SpeechT5Tokenizer:()=>I.SpeechT5Tokenizer,SqueezeBertForMaskedLM:()=>e.SqueezeBertForMaskedLM,SqueezeBertForQuestionAnswering:()=>e.SqueezeBertForQuestionAnswering,SqueezeBertForSequenceClassification:()=>e.SqueezeBertForSequenceClassification,SqueezeBertModel:()=>e.SqueezeBertModel,SqueezeBertPreTrainedModel:()=>e.SqueezeBertPreTrainedModel,SqueezeBertTokenizer:()=>I.SqueezeBertTokenizer,StableLmForCausalLM:()=>e.StableLmForCausalLM,StableLmModel:()=>e.StableLmModel,StableLmPreTrainedModel:()=>e.StableLmPreTrainedModel,Starcoder2ForCausalLM:()=>e.Starcoder2ForCausalLM,Starcoder2Model:()=>e.Starcoder2Model,Starcoder2PreTrainedModel:()=>e.Starcoder2PreTrainedModel,StoppingCriteria:()=>h.StoppingCriteria,StoppingCriteriaList:()=>h.StoppingCriteriaList,StyleTextToSpeech2Model:()=>e.StyleTextToSpeech2Model,StyleTextToSpeech2PreTrainedModel:()=>e.StyleTextToSpeech2PreTrainedModel,SummarizationPipeline:()=>g.SummarizationPipeline,SuppressTokensAtBeginLogitsProcessor:()=>y.SuppressTokensAtBeginLogitsProcessor,Swin2SRForImageSuperResolution:()=>e.Swin2SRForImageSuperResolution,Swin2SRImageProcessor:()=>c.Swin2SRImageProcessor,Swin2SRModel:()=>e.Swin2SRModel,Swin2SRPreTrainedModel:()=>e.Swin2SRPreTrainedModel,SwinForImageClassification:()=>e.SwinForImageClassification,SwinForSemanticSegmentation:()=>e.SwinForSemanticSegmentation,SwinModel:()=>e.SwinModel,SwinPreTrainedModel:()=>e.SwinPreTrainedModel,T5ForConditionalGeneration:()=>e.T5ForConditionalGeneration,T5Model:()=>e.T5Model,T5PreTrainedModel:()=>e.T5PreTrainedModel,T5Tokenizer:()=>I.T5Tokenizer,TableTransformerForObjectDetection:()=>e.TableTransformerForObjectDetection,TableTransformerModel:()=>e.TableTransformerModel,TableTransformerObjectDetectionOutput:()=>e.TableTransformerObjectDetectionOutput,TableTransformerPreTrainedModel:()=>e.TableTransformerPreTrainedModel,TemperatureLogitsWarper:()=>y.TemperatureLogitsWarper,Tensor:()=>s.Tensor,Text2TextGenerationPipeline:()=>g.Text2TextGenerationPipeline,TextClassificationPipeline:()=>g.TextClassificationPipeline,TextGenerationPipeline:()=>g.TextGenerationPipeline,TextStreamer:()=>G.TextStreamer,TextToAudioPipeline:()=>g.TextToAudioPipeline,TokenClassificationPipeline:()=>g.TokenClassificationPipeline,TokenClassifierOutput:()=>e.TokenClassifierOutput,TokenizerModel:()=>I.TokenizerModel,TopKLogitsWarper:()=>y.TopKLogitsWarper,TopPLogitsWarper:()=>y.TopPLogitsWarper,TrOCRForCausalLM:()=>e.TrOCRForCausalLM,TrOCRPreTrainedModel:()=>e.TrOCRPreTrainedModel,TranslationPipeline:()=>g.TranslationPipeline,UltravoxModel:()=>e.UltravoxModel,UltravoxPreTrainedModel:()=>e.UltravoxPreTrainedModel,UltravoxProcessor:()=>u.UltravoxProcessor,UniSpeechForCTC:()=>e.UniSpeechForCTC,UniSpeechForSequenceClassification:()=>e.UniSpeechForSequenceClassification,UniSpeechModel:()=>e.UniSpeechModel,UniSpeechPreTrainedModel:()=>e.UniSpeechPreTrainedModel,UniSpeechSatForAudioFrameClassification:()=>e.UniSpeechSatForAudioFrameClassification,UniSpeechSatForCTC:()=>e.UniSpeechSatForCTC,UniSpeechSatForSequenceClassification:()=>e.UniSpeechSatForSequenceClassification,UniSpeechSatModel:()=>e.UniSpeechSatModel,UniSpeechSatPreTrainedModel:()=>e.UniSpeechSatPreTrainedModel,VLChatProcessor:()=>u.VLChatProcessor,VLMImageProcessor:()=>c.VLMImageProcessor,ViTFeatureExtractor:()=>c.ViTFeatureExtractor,ViTForImageClassification:()=>e.ViTForImageClassification,ViTImageProcessor:()=>c.ViTImageProcessor,ViTMAEModel:()=>e.ViTMAEModel,ViTMAEPreTrainedModel:()=>e.ViTMAEPreTrainedModel,ViTMSNForImageClassification:()=>e.ViTMSNForImageClassification,ViTMSNModel:()=>e.ViTMSNModel,ViTMSNPreTrainedModel:()=>e.ViTMSNPreTrainedModel,ViTModel:()=>e.ViTModel,ViTPreTrainedModel:()=>e.ViTPreTrainedModel,VisionEncoderDecoderModel:()=>e.VisionEncoderDecoderModel,VitMatteForImageMatting:()=>e.VitMatteForImageMatting,VitMatteImageProcessor:()=>c.VitMatteImageProcessor,VitMattePreTrainedModel:()=>e.VitMattePreTrainedModel,VitPoseForPoseEstimation:()=>e.VitPoseForPoseEstimation,VitPoseImageProcessor:()=>c.VitPoseImageProcessor,VitPosePreTrainedModel:()=>e.VitPosePreTrainedModel,VitsModel:()=>e.VitsModel,VitsModelOutput:()=>e.VitsModelOutput,VitsPreTrainedModel:()=>e.VitsPreTrainedModel,VitsTokenizer:()=>I.VitsTokenizer,VoxtralForConditionalGeneration:()=>e.VoxtralForConditionalGeneration,VoxtralProcessor:()=>u.VoxtralProcessor,Wav2Vec2BertForCTC:()=>e.Wav2Vec2BertForCTC,Wav2Vec2BertForSequenceClassification:()=>e.Wav2Vec2BertForSequenceClassification,Wav2Vec2BertModel:()=>e.Wav2Vec2BertModel,Wav2Vec2BertPreTrainedModel:()=>e.Wav2Vec2BertPreTrainedModel,Wav2Vec2CTCTokenizer:()=>I.Wav2Vec2CTCTokenizer,Wav2Vec2FeatureExtractor:()=>a.Wav2Vec2FeatureExtractor,Wav2Vec2ForAudioFrameClassification:()=>e.Wav2Vec2ForAudioFrameClassification,Wav2Vec2ForCTC:()=>e.Wav2Vec2ForCTC,Wav2Vec2ForSequenceClassification:()=>e.Wav2Vec2ForSequenceClassification,Wav2Vec2Model:()=>e.Wav2Vec2Model,Wav2Vec2PreTrainedModel:()=>e.Wav2Vec2PreTrainedModel,Wav2Vec2Processor:()=>u.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>u.Wav2Vec2ProcessorWithLM,WavLMForAudioFrameClassification:()=>e.WavLMForAudioFrameClassification,WavLMForCTC:()=>e.WavLMForCTC,WavLMForSequenceClassification:()=>e.WavLMForSequenceClassification,WavLMForXVector:()=>e.WavLMForXVector,WavLMModel:()=>e.WavLMModel,WavLMPreTrainedModel:()=>e.WavLMPreTrainedModel,WeSpeakerFeatureExtractor:()=>a.WeSpeakerFeatureExtractor,WeSpeakerResNetModel:()=>e.WeSpeakerResNetModel,WeSpeakerResNetPreTrainedModel:()=>e.WeSpeakerResNetPreTrainedModel,WhisperFeatureExtractor:()=>a.WhisperFeatureExtractor,WhisperForConditionalGeneration:()=>e.WhisperForConditionalGeneration,WhisperModel:()=>e.WhisperModel,WhisperPreTrainedModel:()=>e.WhisperPreTrainedModel,WhisperProcessor:()=>u.WhisperProcessor,WhisperTextStreamer:()=>G.WhisperTextStreamer,WhisperTimeStampLogitsProcessor:()=>y.WhisperTimeStampLogitsProcessor,WhisperTokenizer:()=>I.WhisperTokenizer,XLMForQuestionAnswering:()=>e.XLMForQuestionAnswering,XLMForSequenceClassification:()=>e.XLMForSequenceClassification,XLMForTokenClassification:()=>e.XLMForTokenClassification,XLMModel:()=>e.XLMModel,XLMPreTrainedModel:()=>e.XLMPreTrainedModel,XLMRobertaForMaskedLM:()=>e.XLMRobertaForMaskedLM,XLMRobertaForQuestionAnswering:()=>e.XLMRobertaForQuestionAnswering,XLMRobertaForSequenceClassification:()=>e.XLMRobertaForSequenceClassification,XLMRobertaForTokenClassification:()=>e.XLMRobertaForTokenClassification,XLMRobertaModel:()=>e.XLMRobertaModel,XLMRobertaPreTrainedModel:()=>e.XLMRobertaPreTrainedModel,XLMRobertaTokenizer:()=>I.XLMRobertaTokenizer,XLMTokenizer:()=>I.XLMTokenizer,XLMWithLMHeadModel:()=>e.XLMWithLMHeadModel,XVectorOutput:()=>e.XVectorOutput,YolosFeatureExtractor:()=>c.YolosFeatureExtractor,YolosForObjectDetection:()=>e.YolosForObjectDetection,YolosImageProcessor:()=>c.YolosImageProcessor,YolosModel:()=>e.YolosModel,YolosObjectDetectionOutput:()=>e.YolosObjectDetectionOutput,YolosPreTrainedModel:()=>e.YolosPreTrainedModel,ZeroShotAudioClassificationPipeline:()=>g.ZeroShotAudioClassificationPipeline,ZeroShotClassificationPipeline:()=>g.ZeroShotClassificationPipeline,ZeroShotImageClassificationPipeline:()=>g.ZeroShotImageClassificationPipeline,ZeroShotObjectDetectionPipeline:()=>g.ZeroShotObjectDetectionPipeline,bankers_round:()=>B.bankers_round,cat:()=>s.cat,cos_sim:()=>B.cos_sim,dot:()=>B.dot,dynamic_time_warping:()=>B.dynamic_time_warping,env:()=>A.env,full:()=>s.full,full_like:()=>s.full_like,getCacheShapes:()=>i.getCacheShapes,hamming:()=>t.hamming,hanning:()=>t.hanning,interpolate:()=>s.interpolate,interpolate_4d:()=>s.interpolate_4d,interpolate_data:()=>B.interpolate_data,is_chinese_char:()=>I.is_chinese_char,layer_norm:()=>s.layer_norm,load_image:()=>C.load_image,load_video:()=>o.load_video,log_softmax:()=>B.log_softmax,magnitude:()=>B.magnitude,matmul:()=>s.matmul,max:()=>B.max,mean:()=>s.mean,mean_pooling:()=>s.mean_pooling,medianFilter:()=>B.medianFilter,mel_filter_bank:()=>t.mel_filter_bank,min:()=>B.min,ones:()=>s.ones,ones_like:()=>s.ones_like,permute:()=>s.permute,permute_data:()=>B.permute_data,pipeline:()=>g.pipeline,quantize_embeddings:()=>s.quantize_embeddings,rand:()=>s.rand,read_audio:()=>t.read_audio,rfft:()=>s.rfft,round:()=>B.round,slice:()=>s.slice,softmax:()=>B.softmax,spectrogram:()=>t.spectrogram,stack:()=>s.stack,std_mean:()=>s.std_mean,topk:()=>s.topk,window_function:()=>t.window_function,zeros:()=>s.zeros,zeros_like:()=>s.zeros_like});var A=ze("./src/env.js"),g=ze("./src/pipelines.js"),e=ze("./src/models.js"),I=ze("./src/tokenizers.js"),i=ze("./src/configs.js"),t=ze("./src/utils/audio.js"),C=ze("./src/utils/image.js"),o=ze("./src/utils/video.js"),s=ze("./src/utils/tensor.js"),B=ze("./src/utils/maths.js"),Q=ze("./src/base/feature_extraction_utils.js"),a=ze("./src/models/feature_extractors.js"),r=ze("./src/models/auto/feature_extraction_auto.js"),d=ze("./src/base/image_processors_utils.js"),c=ze("./src/models/image_processors.js"),f=ze("./src/models/auto/image_processing_auto.js"),k=ze("./src/base/processing_utils.js"),u=ze("./src/models/processors.js"),D=ze("./src/models/auto/processing_auto.js"),G=ze("./src/generation/streamers.js"),h=ze("./src/generation/stopping_criteria.js"),y=ze("./src/generation/logits_process.js")})();l.ASTFeatureExtractor;l.ASTForAudioClassification;l.ASTModel;l.ASTPreTrainedModel;l.AlbertForMaskedLM;l.AlbertForQuestionAnswering;l.AlbertForSequenceClassification;l.AlbertModel;l.AlbertPreTrainedModel;l.AlbertTokenizer;l.ArceeForCausalLM;l.ArceeModel;l.ArceePreTrainedModel;l.AudioClassificationPipeline;l.AutoConfig;l.AutoFeatureExtractor;l.AutoImageProcessor;l.AutoModel;l.AutoModelForAudioClassification;l.AutoModelForAudioFrameClassification;l.AutoModelForAudioTextToText;l.AutoModelForCTC;l.AutoModelForCausalLM;l.AutoModelForDepthEstimation;l.AutoModelForDocumentQuestionAnswering;l.AutoModelForImageClassification;l.AutoModelForImageFeatureExtraction;l.AutoModelForImageMatting;l.AutoModelForImageSegmentation;l.AutoModelForImageTextToText;l.AutoModelForImageToImage;l.AutoModelForMaskGeneration;l.AutoModelForMaskedLM;l.AutoModelForNormalEstimation;l.AutoModelForObjectDetection;l.AutoModelForPoseEstimation;l.AutoModelForQuestionAnswering;l.AutoModelForSemanticSegmentation;l.AutoModelForSeq2SeqLM;l.AutoModelForSequenceClassification;l.AutoModelForSpeechSeq2Seq;l.AutoModelForTextToSpectrogram;l.AutoModelForTextToWaveform;l.AutoModelForTokenClassification;l.AutoModelForUniversalSegmentation;l.AutoModelForVision2Seq;l.AutoModelForXVector;l.AutoModelForZeroShotObjectDetection;l.AutoProcessor;l.AutoTokenizer;l.AutomaticSpeechRecognitionPipeline;l.BackgroundRemovalPipeline;l.BartForConditionalGeneration;l.BartForSequenceClassification;l.BartModel;l.BartPretrainedModel;l.BartTokenizer;l.BaseModelOutput;l.BaseStreamer;l.BeitFeatureExtractor;l.BeitForImageClassification;l.BeitModel;l.BeitPreTrainedModel;l.BertForMaskedLM;l.BertForQuestionAnswering;l.BertForSequenceClassification;l.BertForTokenClassification;l.BertModel;l.BertPreTrainedModel;l.BertTokenizer;l.BitImageProcessor;l.BlenderbotForConditionalGeneration;l.BlenderbotModel;l.BlenderbotPreTrainedModel;l.BlenderbotSmallForConditionalGeneration;l.BlenderbotSmallModel;l.BlenderbotSmallPreTrainedModel;l.BlenderbotSmallTokenizer;l.BlenderbotTokenizer;l.BloomForCausalLM;l.BloomModel;l.BloomPreTrainedModel;l.BloomTokenizer;l.CLIPFeatureExtractor;l.CLIPImageProcessor;l.CLIPModel;l.CLIPPreTrainedModel;l.CLIPSegForImageSegmentation;l.CLIPSegModel;l.CLIPSegPreTrainedModel;l.CLIPTextModel;l.CLIPTextModelWithProjection;l.CLIPTokenizer;l.CLIPVisionModel;l.CLIPVisionModelWithProjection;l.CamembertForMaskedLM;l.CamembertForQuestionAnswering;l.CamembertForSequenceClassification;l.CamembertForTokenClassification;l.CamembertModel;l.CamembertPreTrainedModel;l.CamembertTokenizer;l.CausalLMOutput;l.CausalLMOutputWithPast;l.ChineseCLIPFeatureExtractor;l.ChineseCLIPModel;l.ChineseCLIPPreTrainedModel;l.ClapAudioModelWithProjection;l.ClapFeatureExtractor;l.ClapModel;l.ClapPreTrainedModel;l.ClapTextModelWithProjection;l.ClassifierFreeGuidanceLogitsProcessor;l.CodeGenForCausalLM;l.CodeGenModel;l.CodeGenPreTrainedModel;l.CodeGenTokenizer;l.CodeLlamaTokenizer;l.CohereForCausalLM;l.CohereModel;l.CoherePreTrainedModel;l.CohereTokenizer;l.ConvBertForMaskedLM;l.ConvBertForQuestionAnswering;l.ConvBertForSequenceClassification;l.ConvBertForTokenClassification;l.ConvBertModel;l.ConvBertPreTrainedModel;l.ConvBertTokenizer;l.ConvNextFeatureExtractor;l.ConvNextForImageClassification;l.ConvNextImageProcessor;l.ConvNextModel;l.ConvNextPreTrainedModel;l.ConvNextV2ForImageClassification;l.ConvNextV2Model;l.ConvNextV2PreTrainedModel;l.DFineForObjectDetection;l.DFineModel;l.DFinePreTrainedModel;l.DPTFeatureExtractor;l.DPTForDepthEstimation;l.DPTImageProcessor;l.DPTModel;l.DPTPreTrainedModel;l.DacDecoderModel;l.DacDecoderOutput;l.DacEncoderModel;l.DacEncoderOutput;l.DacFeatureExtractor;l.DacModel;l.DacPreTrainedModel;l.DataTypeMap;l.DebertaForMaskedLM;l.DebertaForQuestionAnswering;l.DebertaForSequenceClassification;l.DebertaForTokenClassification;l.DebertaModel;l.DebertaPreTrainedModel;l.DebertaTokenizer;l.DebertaV2ForMaskedLM;l.DebertaV2ForQuestionAnswering;l.DebertaV2ForSequenceClassification;l.DebertaV2ForTokenClassification;l.DebertaV2Model;l.DebertaV2PreTrainedModel;l.DebertaV2Tokenizer;l.DecisionTransformerModel;l.DecisionTransformerPreTrainedModel;l.DeiTFeatureExtractor;l.DeiTForImageClassification;l.DeiTImageProcessor;l.DeiTModel;l.DeiTPreTrainedModel;l.DepthAnythingForDepthEstimation;l.DepthAnythingPreTrainedModel;l.DepthEstimationPipeline;l.DepthProForDepthEstimation;l.DepthProPreTrainedModel;l.DetrFeatureExtractor;l.DetrForObjectDetection;l.DetrForSegmentation;l.DetrImageProcessor;l.DetrModel;l.DetrObjectDetectionOutput;l.DetrPreTrainedModel;l.DetrSegmentationOutput;l.Dinov2ForImageClassification;l.Dinov2Model;l.Dinov2PreTrainedModel;l.Dinov2WithRegistersForImageClassification;l.Dinov2WithRegistersModel;l.Dinov2WithRegistersPreTrainedModel;l.DistilBertForMaskedLM;l.DistilBertForQuestionAnswering;l.DistilBertForSequenceClassification;l.DistilBertForTokenClassification;l.DistilBertModel;l.DistilBertPreTrainedModel;l.DistilBertTokenizer;l.DocumentQuestionAnsweringPipeline;l.DonutFeatureExtractor;l.DonutImageProcessor;l.DonutSwinModel;l.DonutSwinPreTrainedModel;l.EfficientNetForImageClassification;l.EfficientNetImageProcessor;l.EfficientNetModel;l.EfficientNetPreTrainedModel;l.ElectraForMaskedLM;l.ElectraForQuestionAnswering;l.ElectraForSequenceClassification;l.ElectraForTokenClassification;l.ElectraModel;l.ElectraPreTrainedModel;l.ElectraTokenizer;l.EncodecFeatureExtractor;l.EosTokenCriteria;l.Ernie4_5_ForCausalLM;l.Ernie4_5_Model;l.Ernie4_5_PretrainedModel;l.Ernie4_5_Tokenizer;l.EsmForMaskedLM;l.EsmForSequenceClassification;l.EsmForTokenClassification;l.EsmModel;l.EsmPreTrainedModel;l.EsmTokenizer;l.ExaoneForCausalLM;l.ExaoneModel;l.ExaonePreTrainedModel;l.FFT;l.FalconForCausalLM;l.FalconModel;l.FalconPreTrainedModel;l.FalconTokenizer;l.FastViTForImageClassification;l.FastViTModel;l.FastViTPreTrainedModel;l.FeatureExtractionPipeline;l.FeatureExtractor;l.FillMaskPipeline;l.Florence2ForConditionalGeneration;l.Florence2PreTrainedModel;l.Florence2Processor;l.ForcedBOSTokenLogitsProcessor;l.ForcedEOSTokenLogitsProcessor;l.GLPNFeatureExtractor;l.GLPNForDepthEstimation;l.GLPNModel;l.GLPNPreTrainedModel;l.GPT2LMHeadModel;l.GPT2Model;l.GPT2PreTrainedModel;l.GPT2Tokenizer;l.GPTBigCodeForCausalLM;l.GPTBigCodeModel;l.GPTBigCodePreTrainedModel;l.GPTJForCausalLM;l.GPTJModel;l.GPTJPreTrainedModel;l.GPTNeoForCausalLM;l.GPTNeoModel;l.GPTNeoPreTrainedModel;l.GPTNeoXForCausalLM;l.GPTNeoXModel;l.GPTNeoXPreTrainedModel;l.GPTNeoXTokenizer;l.Gemma2ForCausalLM;l.Gemma2Model;l.Gemma2PreTrainedModel;l.Gemma3ForCausalLM;l.Gemma3Model;l.Gemma3PreTrainedModel;l.Gemma3nAudioFeatureExtractor;l.Gemma3nForConditionalGeneration;l.Gemma3nPreTrainedModel;l.Gemma3nProcessor;l.GemmaForCausalLM;l.GemmaModel;l.GemmaPreTrainedModel;l.GemmaTokenizer;l.GlmForCausalLM;l.GlmModel;l.GlmPreTrainedModel;l.GraniteForCausalLM;l.GraniteModel;l.GranitePreTrainedModel;l.Grok1Tokenizer;l.GroundingDinoForObjectDetection;l.GroundingDinoImageProcessor;l.GroundingDinoPreTrainedModel;l.GroundingDinoProcessor;l.GroupViTModel;l.GroupViTPreTrainedModel;l.HeliumForCausalLM;l.HeliumModel;l.HeliumPreTrainedModel;l.HerbertTokenizer;l.HieraForImageClassification;l.HieraModel;l.HieraPreTrainedModel;l.HubertForCTC;l.HubertForSequenceClassification;l.HubertModel;l.HubertPreTrainedModel;l.IJepaForImageClassification;l.IJepaModel;l.IJepaPreTrainedModel;l.Idefics3ForConditionalGeneration;l.Idefics3ImageProcessor;l.Idefics3PreTrainedModel;l.Idefics3Processor;l.ImageClassificationPipeline;l.ImageFeatureExtractionPipeline;l.ImageFeatureExtractor;l.ImageMattingOutput;l.ImageProcessor;l.ImageSegmentationPipeline;l.ImageToImagePipeline;l.ImageToTextPipeline;l.InterruptableStoppingCriteria;l.JAISLMHeadModel;l.JAISModel;l.JAISPreTrainedModel;l.JinaCLIPImageProcessor;l.JinaCLIPModel;l.JinaCLIPPreTrainedModel;l.JinaCLIPProcessor;l.JinaCLIPTextModel;l.JinaCLIPVisionModel;l.Lfm2ForCausalLM;l.Lfm2Model;l.Lfm2PreTrainedModel;l.LiteWhisperForConditionalGeneration;l.LlamaForCausalLM;l.LlamaModel;l.LlamaPreTrainedModel;l.LlamaTokenizer;l.LlavaForConditionalGeneration;l.LlavaOnevisionForConditionalGeneration;l.LlavaOnevisionImageProcessor;l.LlavaPreTrainedModel;l.LlavaProcessor;l.LlavaQwen2ForCausalLM;l.LogitsProcessor;l.LogitsProcessorList;l.LogitsWarper;l.LongT5ForConditionalGeneration;l.LongT5Model;l.LongT5PreTrainedModel;l.M2M100ForConditionalGeneration;l.M2M100Model;l.M2M100PreTrainedModel;l.M2M100Tokenizer;l.MBart50Tokenizer;l.MBartForCausalLM;l.MBartForConditionalGeneration;l.MBartForSequenceClassification;l.MBartModel;l.MBartPreTrainedModel;l.MBartTokenizer;l.MPNetForMaskedLM;l.MPNetForQuestionAnswering;l.MPNetForSequenceClassification;l.MPNetForTokenClassification;l.MPNetModel;l.MPNetPreTrainedModel;l.MPNetTokenizer;l.MT5ForConditionalGeneration;l.MT5Model;l.MT5PreTrainedModel;l.MarianMTModel;l.MarianModel;l.MarianPreTrainedModel;l.MarianTokenizer;l.Mask2FormerImageProcessor;l.MaskFormerFeatureExtractor;l.MaskFormerForInstanceSegmentation;l.MaskFormerImageProcessor;l.MaskFormerModel;l.MaskFormerPreTrainedModel;l.MaskedLMOutput;l.MaxLengthCriteria;l.Metric3DForDepthEstimation;l.Metric3DPreTrainedModel;l.Metric3Dv2ForDepthEstimation;l.Metric3Dv2PreTrainedModel;l.MgpstrForSceneTextRecognition;l.MgpstrModelOutput;l.MgpstrPreTrainedModel;l.MgpstrProcessor;l.MgpstrTokenizer;l.MimiDecoderModel;l.MimiDecoderOutput;l.MimiEncoderModel;l.MimiEncoderOutput;l.MimiModel;l.MimiPreTrainedModel;l.MinLengthLogitsProcessor;l.MinNewTokensLengthLogitsProcessor;l.MistralForCausalLM;l.MistralModel;l.MistralPreTrainedModel;l.MobileBertForMaskedLM;l.MobileBertForQuestionAnswering;l.MobileBertForSequenceClassification;l.MobileBertModel;l.MobileBertPreTrainedModel;l.MobileBertTokenizer;l.MobileLLMForCausalLM;l.MobileLLMModel;l.MobileLLMPreTrainedModel;l.MobileNetV1FeatureExtractor;l.MobileNetV1ForImageClassification;l.MobileNetV1ForSemanticSegmentation;l.MobileNetV1ImageProcessor;l.MobileNetV1Model;l.MobileNetV1PreTrainedModel;l.MobileNetV2FeatureExtractor;l.MobileNetV2ForImageClassification;l.MobileNetV2ForSemanticSegmentation;l.MobileNetV2ImageProcessor;l.MobileNetV2Model;l.MobileNetV2PreTrainedModel;l.MobileNetV3FeatureExtractor;l.MobileNetV3ForImageClassification;l.MobileNetV3ForSemanticSegmentation;l.MobileNetV3ImageProcessor;l.MobileNetV3Model;l.MobileNetV3PreTrainedModel;l.MobileNetV4FeatureExtractor;l.MobileNetV4ForImageClassification;l.MobileNetV4ForSemanticSegmentation;l.MobileNetV4ImageProcessor;l.MobileNetV4Model;l.MobileNetV4PreTrainedModel;l.MobileViTFeatureExtractor;l.MobileViTForImageClassification;l.MobileViTImageProcessor;l.MobileViTModel;l.MobileViTPreTrainedModel;l.MobileViTV2ForImageClassification;l.MobileViTV2Model;l.MobileViTV2PreTrainedModel;l.ModelOutput;l.ModernBertDecoderForCausalLM;l.ModernBertDecoderModel;l.ModernBertDecoderPreTrainedModel;l.ModernBertForMaskedLM;l.ModernBertForSequenceClassification;l.ModernBertForTokenClassification;l.ModernBertModel;l.ModernBertPreTrainedModel;l.Moondream1ForConditionalGeneration;l.MoonshineFeatureExtractor;l.MoonshineForConditionalGeneration;l.MoonshineModel;l.MoonshinePreTrainedModel;l.MoonshineProcessor;l.MptForCausalLM;l.MptModel;l.MptPreTrainedModel;l.MultiModalityCausalLM;l.MultiModalityPreTrainedModel;l.MusicgenForCausalLM;l.MusicgenForConditionalGeneration;l.MusicgenModel;l.MusicgenPreTrainedModel;l.NeoBertForMaskedLM;l.NeoBertForQuestionAnswering;l.NeoBertForSequenceClassification;l.NeoBertForTokenClassification;l.NeoBertModel;l.NeoBertPreTrainedModel;l.NllbTokenizer;l.NoBadWordsLogitsProcessor;l.NoRepeatNGramLogitsProcessor;l.NomicBertModel;l.NomicBertPreTrainedModel;l.NougatImageProcessor;l.NougatTokenizer;l.OPTForCausalLM;l.OPTModel;l.OPTPreTrainedModel;l.ObjectDetectionPipeline;l.Olmo2ForCausalLM;l.Olmo2Model;l.Olmo2PreTrainedModel;l.OlmoForCausalLM;l.OlmoModel;l.OlmoPreTrainedModel;l.OpenELMForCausalLM;l.OpenELMModel;l.OpenELMPreTrainedModel;l.OwlViTFeatureExtractor;l.OwlViTForObjectDetection;l.OwlViTImageProcessor;l.OwlViTModel;l.OwlViTPreTrainedModel;l.OwlViTProcessor;l.Owlv2ForObjectDetection;l.Owlv2ImageProcessor;l.Owlv2Model;l.Owlv2PreTrainedModel;l.PaliGemmaForConditionalGeneration;l.PaliGemmaPreTrainedModel;l.PaliGemmaProcessor;l.PatchTSMixerForPrediction;l.PatchTSMixerModel;l.PatchTSMixerPreTrainedModel;l.PatchTSTForPrediction;l.PatchTSTModel;l.PatchTSTPreTrainedModel;l.Phi3ForCausalLM;l.Phi3Model;l.Phi3PreTrainedModel;l.Phi3VForCausalLM;l.Phi3VImageProcessor;l.Phi3VPreTrainedModel;l.Phi3VProcessor;l.PhiForCausalLM;l.PhiModel;l.PhiPreTrainedModel;l.Pipeline;l.PreTrainedModel;l.PreTrainedTokenizer;l.PretrainedConfig;l.PretrainedMixin;l.Processor;l.PvtForImageClassification;l.PvtImageProcessor;l.PvtModel;l.PvtPreTrainedModel;l.PyAnnoteFeatureExtractor;l.PyAnnoteForAudioFrameClassification;l.PyAnnoteModel;l.PyAnnotePreTrainedModel;l.PyAnnoteProcessor;l.QuestionAnsweringModelOutput;l.QuestionAnsweringPipeline;l.Qwen2ForCausalLM;l.Qwen2Model;l.Qwen2PreTrainedModel;l.Qwen2Tokenizer;l.Qwen2VLForConditionalGeneration;l.Qwen2VLImageProcessor;l.Qwen2VLPreTrainedModel;l.Qwen2VLProcessor;l.Qwen3ForCausalLM;l.Qwen3Model;l.Qwen3PreTrainedModel;l.RFDetrForObjectDetection;l.RFDetrModel;l.RFDetrObjectDetectionOutput;l.RFDetrPreTrainedModel;l.RTDetrForObjectDetection;l.RTDetrImageProcessor;l.RTDetrModel;l.RTDetrObjectDetectionOutput;l.RTDetrPreTrainedModel;l.RTDetrV2ForObjectDetection;l.RTDetrV2Model;l.RTDetrV2ObjectDetectionOutput;l.RTDetrV2PreTrainedModel;l.RawAudio;l.RawImage;l.RawVideo;l.RawVideoFrame;l.RepetitionPenaltyLogitsProcessor;l.ResNetForImageClassification;l.ResNetModel;l.ResNetPreTrainedModel;l.RoFormerForMaskedLM;l.RoFormerForQuestionAnswering;l.RoFormerForSequenceClassification;l.RoFormerForTokenClassification;l.RoFormerModel;l.RoFormerPreTrainedModel;l.RoFormerTokenizer;l.RobertaForMaskedLM;l.RobertaForQuestionAnswering;l.RobertaForSequenceClassification;l.RobertaForTokenClassification;l.RobertaModel;l.RobertaPreTrainedModel;l.RobertaTokenizer;l.SamImageProcessor;l.SamImageSegmentationOutput;l.SamModel;l.SamPreTrainedModel;l.SamProcessor;l.SapiensForDepthEstimation;l.SapiensForNormalEstimation;l.SapiensForSemanticSegmentation;l.SapiensPreTrainedModel;l.SeamlessM4TFeatureExtractor;l.SegformerFeatureExtractor;l.SegformerForImageClassification;l.SegformerForSemanticSegmentation;l.SegformerImageProcessor;l.SegformerModel;l.SegformerPreTrainedModel;l.Seq2SeqLMOutput;l.SequenceClassifierOutput;l.SiglipImageProcessor;l.SiglipModel;l.SiglipPreTrainedModel;l.SiglipTextModel;l.SiglipTokenizer;l.SiglipVisionModel;l.SmolLM3ForCausalLM;l.SmolLM3Model;l.SmolLM3PreTrainedModel;l.SmolVLMForConditionalGeneration;l.SmolVLMImageProcessor;l.SmolVLMProcessor;l.SnacDecoderModel;l.SnacEncoderModel;l.SnacFeatureExtractor;l.SnacModel;l.SnacPreTrainedModel;l.SpeechT5FeatureExtractor;l.SpeechT5ForSpeechToText;l.SpeechT5ForTextToSpeech;l.SpeechT5HifiGan;l.SpeechT5Model;l.SpeechT5PreTrainedModel;l.SpeechT5Processor;l.SpeechT5Tokenizer;l.SqueezeBertForMaskedLM;l.SqueezeBertForQuestionAnswering;l.SqueezeBertForSequenceClassification;l.SqueezeBertModel;l.SqueezeBertPreTrainedModel;l.SqueezeBertTokenizer;l.StableLmForCausalLM;l.StableLmModel;l.StableLmPreTrainedModel;l.Starcoder2ForCausalLM;l.Starcoder2Model;l.Starcoder2PreTrainedModel;l.StoppingCriteria;l.StoppingCriteriaList;l.StyleTextToSpeech2Model;l.StyleTextToSpeech2PreTrainedModel;l.SummarizationPipeline;l.SuppressTokensAtBeginLogitsProcessor;l.Swin2SRForImageSuperResolution;l.Swin2SRImageProcessor;l.Swin2SRModel;l.Swin2SRPreTrainedModel;l.SwinForImageClassification;l.SwinForSemanticSegmentation;l.SwinModel;l.SwinPreTrainedModel;l.T5ForConditionalGeneration;l.T5Model;l.T5PreTrainedModel;l.T5Tokenizer;l.TableTransformerForObjectDetection;l.TableTransformerModel;l.TableTransformerObjectDetectionOutput;l.TableTransformerPreTrainedModel;l.TemperatureLogitsWarper;l.Tensor;l.Text2TextGenerationPipeline;l.TextClassificationPipeline;l.TextGenerationPipeline;l.TextStreamer;l.TextToAudioPipeline;l.TokenClassificationPipeline;l.TokenClassifierOutput;l.TokenizerModel;l.TopKLogitsWarper;l.TopPLogitsWarper;l.TrOCRForCausalLM;l.TrOCRPreTrainedModel;l.TranslationPipeline;l.UltravoxModel;l.UltravoxPreTrainedModel;l.UltravoxProcessor;l.UniSpeechForCTC;l.UniSpeechForSequenceClassification;l.UniSpeechModel;l.UniSpeechPreTrainedModel;l.UniSpeechSatForAudioFrameClassification;l.UniSpeechSatForCTC;l.UniSpeechSatForSequenceClassification;l.UniSpeechSatModel;l.UniSpeechSatPreTrainedModel;l.VLChatProcessor;l.VLMImageProcessor;l.ViTFeatureExtractor;l.ViTForImageClassification;l.ViTImageProcessor;l.ViTMAEModel;l.ViTMAEPreTrainedModel;l.ViTMSNForImageClassification;l.ViTMSNModel;l.ViTMSNPreTrainedModel;l.ViTModel;l.ViTPreTrainedModel;l.VisionEncoderDecoderModel;l.VitMatteForImageMatting;l.VitMatteImageProcessor;l.VitMattePreTrainedModel;l.VitPoseForPoseEstimation;l.VitPoseImageProcessor;l.VitPosePreTrainedModel;l.VitsModel;l.VitsModelOutput;l.VitsPreTrainedModel;l.VitsTokenizer;l.VoxtralForConditionalGeneration;l.VoxtralProcessor;l.Wav2Vec2BertForCTC;l.Wav2Vec2BertForSequenceClassification;l.Wav2Vec2BertModel;l.Wav2Vec2BertPreTrainedModel;l.Wav2Vec2CTCTokenizer;l.Wav2Vec2FeatureExtractor;l.Wav2Vec2ForAudioFrameClassification;l.Wav2Vec2ForCTC;l.Wav2Vec2ForSequenceClassification;l.Wav2Vec2Model;l.Wav2Vec2PreTrainedModel;l.Wav2Vec2Processor;l.Wav2Vec2ProcessorWithLM;l.WavLMForAudioFrameClassification;l.WavLMForCTC;l.WavLMForSequenceClassification;l.WavLMForXVector;l.WavLMModel;l.WavLMPreTrainedModel;l.WeSpeakerFeatureExtractor;l.WeSpeakerResNetModel;l.WeSpeakerResNetPreTrainedModel;l.WhisperFeatureExtractor;l.WhisperForConditionalGeneration;l.WhisperModel;l.WhisperPreTrainedModel;l.WhisperProcessor;l.WhisperTextStreamer;l.WhisperTimeStampLogitsProcessor;l.WhisperTokenizer;l.XLMForQuestionAnswering;l.XLMForSequenceClassification;l.XLMForTokenClassification;l.XLMModel;l.XLMPreTrainedModel;l.XLMRobertaForMaskedLM;l.XLMRobertaForQuestionAnswering;l.XLMRobertaForSequenceClassification;l.XLMRobertaForTokenClassification;l.XLMRobertaModel;l.XLMRobertaPreTrainedModel;l.XLMRobertaTokenizer;l.XLMTokenizer;l.XLMWithLMHeadModel;l.XVectorOutput;l.YolosFeatureExtractor;l.YolosForObjectDetection;l.YolosImageProcessor;l.YolosModel;l.YolosObjectDetectionOutput;l.YolosPreTrainedModel;l.ZeroShotAudioClassificationPipeline;l.ZeroShotClassificationPipeline;l.ZeroShotImageClassificationPipeline;l.ZeroShotObjectDetectionPipeline;l.bankers_round;l.cat;l.cos_sim;l.dot;l.dynamic_time_warping;l.env;l.full;l.full_like;l.getCacheShapes;l.hamming;l.hanning;l.interpolate;l.interpolate_4d;l.interpolate_data;l.is_chinese_char;l.layer_norm;var Sf=l.load_image;l.load_video;l.log_softmax;l.magnitude;l.matmul;l.max;l.mean;l.mean_pooling;l.medianFilter;l.mel_filter_bank;l.min;l.ones;l.ones_like;l.permute;l.permute_data;var zh=l.pipeline;l.quantize_embeddings;l.rand;l.read_audio;l.rfft;l.round;l.slice;l.softmax;l.spectrogram;l.stack;l.std_mean;l.topk;l.window_function;l.zeros;l.zeros_like;function Nf(A){let g="";for(let e=0;ee.charCodeAt(0)))}function $i(A,g){if(A.length{let I=new Map,i=(t,...C)=>new Promise((o,s)=>{let B=new Date().getTime()+"-"+Math.random();I.set(B,[o,s]),g.postMessage({rpc:t,id:B,args:C})});g.postMessage({ready:!0}),g.onmessage=t=>{if(t.data.ready){e(i);return}let C=I.get(t.data.id);C!=null&&(I.delete(t.data.id),t.data.error?C[1](new Error(t.data.error)):C[0](t.data.result))}})}static runtime(){let g=new Map,e=async I=>{if(I.data.ready&&postMessage({ready:!0}),I.data.rpc){let t={id:I.data.id,result:null,error:null};try{t.result=await g.get(I.data.rpc)?.(...I.data.args)}catch(C){t.error=C.toString()}postMessage(t)}};return postMessage({ready:!0}),{handler:e,register:(I,i)=>{g.set(I,i)}}}}let{handler:kf,register:Fr}=Gf.runtime();onmessage=kf;let Vt=new Map;function Xh(A){let g=[];return{async batch(e){g.push(await A(e))},async finalize(){let e=g.reduce((B,Q)=>B+Q.dims[0],0),I=g[0].dims[1],i=2,t=new Float32Array(e*I),C=0;for(let B=0;B{let g=new Date().getTime()+"-"+Math.random(),e={device:"webgpu"};if(A.type=="text"){let I=await zh("feature-extraction",A.model,e),i=Xh(async t=>{let C=t.map(s=>s?.toString()??""),o=await I(C,{pooling:"mean",normalize:!0});if(o.dims.length==3&&(o=o.mean(1)),o.dims.length!=2||o.dims[0]!=t.length)throw new Error("output embedding dimension mismatch");return o});return Vt.set(g,i),g}else if(A.type=="image"){let I=await zh("image-feature-extraction",A.model,e),i=Xh(async t=>{let C=t.map(s=>_f(s)??"");C=await Promise.all(C.map(s=>Sf(s)));let o=await I(C);if(o.dims.length==3&&(o=o.mean(1)),o.dims.length!=2||o.dims[0]!=C.length)throw new Error("output embedding dimension mismatch");return o});return Vt.set(g,i),g}else throw new Error("invalid data type")});Fr("embedding.batch",async(A,g)=>{await Vt.get(A)?.batch(g)});Fr("embedding.finalize",async A=>{let g=Vt.get(A);if(g)return Vt.delete(A),g.finalize()});