@thethingteam/colmap-viewer 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,402 @@
1
- import { parseColmap as V } from "@thethingteam/colmap-wasm";
2
- import * as r from "three";
3
- import { Controls as W, Vector3 as S, MOUSE as j, TOUCH as k, Quaternion as H, Spherical as Z, Vector2 as P, Ray as G, Plane as q, MathUtils as $ } from "three";
4
- const F = { type: "change" }, Y = { type: "start" }, B = { type: "end" }, N = new G(), K = new q(), Q = Math.cos(70 * $.DEG2RAD), _ = new S(), y = 2 * Math.PI, d = {
1
+ import * as o from "three";
2
+ import { Controls as cA, Vector3 as k, MOUSE as f, TOUCH as u, Quaternion as gA, Spherical as BA, Vector2 as G, Ray as yA, Plane as lA, MathUtils as FA } from "three";
3
+ var QA = Object.defineProperty, dA = (I, A) => {
4
+ let g = {};
5
+ for (var B in I) QA(g, B, {
6
+ get: I[B],
7
+ enumerable: !0
8
+ });
9
+ return QA(g, Symbol.toStringTag, { value: "Module" }), g;
10
+ }, GA = "data:application/wasm;base64,AGFzbQEAAAAB0gEdYAJ/fwF/YAN/f38Bf2ACf38AYAF/AGABfwFvYAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAJ/fwN/f39gBH9/f38Bf2ACf38Bb2AFf39/f38Bf2AGf39/f39/AGAAAGABfwF/YAZ/f39/f38Bf2ADf35+AGAFf39+f38AYAV/f31/fwBgBX9/fH9/AGAAAX9gC39/f39/f39/f39/AX9gBn9/f35/fwBgBn9/f31/fwBgBn9/f3x/fwBgBH98f38AYAR/fX9/AGAEf35/fwACzQIGEy4vY29sbWFwX3dhc21fYmcuanMnX193YmdfX193YmluZGdlbl90aHJvd18xNTA2ZjIyMzVkMWJkYmEwAAITLi9jb2xtYXBfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl9lZjUzYmMzMTBlYjI5OGEwAAsTLi9jb2xtYXBfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4TLi9jb2xtYXBfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMQALEy4vY29sbWFwX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDIACxMuL2NvbG1hcF93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzAAsDrAGqAQ8FAgICAAIDEAUFAQICAQoCBgACEQACAgIGFQIFAAAMBgYAAgAAAAMDAhYHBw0NBwUAAwAFBQYRAgMABwMDAwMDDQcHBwYNFxgZAQcBBgABAg8AAAACBQUAAAAMAAoDCQkJCQkJEBQHDBMSBgoBAwMCBQICAgIBBwACAAIKAgAAAAAEBAQEBAQEBAQEBAQEBAQEAQUBAAEDAQAAAg4OAgIAAAECAAAAAAIFBAkCcAFeXm8AgAgFAwEAEQYJAX8BQYCAwAALB+QGIgZtZW1vcnkCABxfX3diZ19wYXJzZWRjYW1lcmFzd2FzbV9mcmVlAB0bX193YmdfcGFyc2VkaW1hZ2Vzd2FzbV9mcmVlAB4dX193YmdfcGFyc2VkcG9pbnRzM2R3YXNtX2ZyZWUAKRFwYXJzZV9jYW1lcmFzX2JpbgBqEXBhcnNlX2NhbWVyYXNfdHh0AGYQcGFyc2VfaW1hZ2VzX2JpbgBpEHBhcnNlX2ltYWdlc190eHQAZxJwYXJzZV9wb2ludHMzZF9iaW4AZRJwYXJzZV9wb2ludHMzZF90eHQAaBlwYXJzZWRjYW1lcmFzd2FzbV9oZWlnaHRzAIgBFXBhcnNlZGNhbWVyYXN3YXNtX2lkcwCJARVwYXJzZWRjYW1lcmFzd2FzbV9sZW4AVxtwYXJzZWRjYW1lcmFzd2FzbV9tb2RlbF9pZHMAigEdcGFyc2VkY2FtZXJhc3dhc21fcGFyYW1zX2ZsYXQAiwEgcGFyc2VkY2FtZXJhc3dhc21fcGFyYW1zX29mZnNldHMAjAEYcGFyc2VkY2FtZXJhc3dhc21fd2lkdGhzAI0BG3BhcnNlZGltYWdlc3dhc21fY2FtZXJhX2lkcwCOARRwYXJzZWRpbWFnZXN3YXNtX2lkcwCPAR1wYXJzZWRpbWFnZXN3YXNtX25hbWVfb2Zmc2V0cwCQARxwYXJzZWRpbWFnZXN3YXNtX25hbWVzX2J5dGVzAJEBFnBhcnNlZGltYWdlc3dhc21fcXZlY3MAkgEWcGFyc2VkaW1hZ2Vzd2FzbV90dmVjcwCTARlwYXJzZWRwb2ludHMzZHdhc21fZXJyb3JzAJQBFnBhcnNlZHBvaW50czNkd2FzbV9pZHMAlQEWcGFyc2VkcG9pbnRzM2R3YXNtX2xlbgBXFnBhcnNlZHBvaW50czNkd2FzbV9yZ2IAlgEWcGFyc2VkcG9pbnRzM2R3YXNtX3h5egCXARRwYXJzZWRpbWFnZXN3YXNtX2xlbgBXFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBEV9fd2JpbmRnZW5fbWFsbG9jAF8ZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwA/El9fd2JpbmRnZW5fcmVhbGxvYwBjEF9fd2JpbmRnZW5fc3RhcnQAAgl7AQBBAQtddVAqmAGfAXWFAYYBqQF4f68BXoABdUBZYlR1mwFaqQF5gQGvAXVQKm5JMzVtTm1xTExvTWxwbVFPTFNIbmtHc0tyQQMFBK4BJIUBgAF1UiuaAYQBW4MBpAF0YC8+qQF7enVVLJwBpgEohwEYOacBfjcUWJ4BDAElCpHOA6oByyUCCX8BfiMAQRBrIggkAAJAAkACQCAAQfUBTwRAIABBzP97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QQghB0EIIQgMAQsgBEECdCIFQQQQoAEiA0UNASACQQA2AgggAiADNgIEIAIgBDYCACAEQQV0IgNBCBCgASIIRQ0CIAJBADYCFCACIAg2AhAgAiAFNgIMIARBGGwiA0EIEKABIgdFDQMgAkEANgIgIAIgBzYCHCACIARBA2w2AhggBUEEEKABIgNFDQQLIAJBADYCLCACIAM2AiggAiAENgIkIAJBADYCOCACQoCAgIAQNwIwIARBAWoiBUECdCIGQQQQoAEiA0UNBCADQQA2AgAgAiADNgJAIAIgBTYCPCACQQE2AkQgBEHQAGwhCyABKAIAIQwgASgCBCIJIQMgBEUNBSACQegAaiEKQQEhDUEAIQNBACEEQQAhBQNAAkACQAJAIAkgDmoiAUFAaygCACIPQYCAgIB4RwRAIAIgASkDMDcDeCACIAEpAyg3A3AgAiABKQMgNwNoIAIgASkDGDcDYCACIAEpAxA3A1ggAiABKQMINwNQIAIgASkDADcDSCABQcgAaigCACEGIAFBxABqKAIAIRAgAUE8aigCACERIAFBOGooAgAhEiACKAIIIgEgAigCAEYEQCACEEULIAIoAgQgAUECdGogEjYCACACIAFBAWo2AgggAigCDCAFa0EDTQRAIAJBDGogBUEEQQhBCBAxIAIoAhAhCCACKAIUIQULIAggBUEDdGoiASACKQNINwMAIAEgAikDYDcDGCABIAIpA1g3AxAgASACKQNQNwMIIAIgBUEEaiIFNgIUIAIoAhggBGtBAk0EQCACQRhqIARBA0EIQQgQMSACKAIcIQcgAigCICEECyAHIARBA3RqIgEgCikDADcDACABIAopAxA3AxAgASAKKQMINwMIIAIgBEEDaiIENgIgIAIoAiwiASACKAIkRgRAIAJBJGoQRQsgAigCKCABQQJ0aiARNgIAIAIgAUEBajYCLCAGIAIoAjAgA2tNDQEgAkEwaiADIAZBAUEBEDEgAigCNCENIAIoAjghAwwCCyABQdAAaiEDDAkLIAZFDQELIAZFDQAgAyANaiAQIAb8CgAACyACIAMgBmoiAzYCOCACKAJEIgEgAigCPEYEQCACQTxqEEULIAIoAkAgAUECdGogAzYCACACIAFBAWo2AkQgDwRAIBAgD0EBEJkBCyALIA5B0ABqIg5HDQALDAYLQQQgBRB2AAtB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IQ8gAigCECIBIAIoAghGBEAgAkEIahBFCyACKAIMIAFBAnRqIA02AgAgAiABQQFqNgIQIAIoAhwiASACKAIURgRAIAJBFGoQRQsgAigCGCABQQJ0aiAMNgIAIAIgAUEBajYCHCACKAIoIgEgAigCIEYEQCACQSBqEEULIAIoAiQgAUECdGogDz4CACACIAFBAWo2AiggAigCNCIBIAIoAixGBEAgAkEsahBFCyACKAIwIAFBAnRqIA4+AgAgAiABQQFqNgI0IAQgAigCOCADa00NASACQThqIAMgBEEIQQgQMSACKAI8IQkgAigCQCEDDAILIAFBKGohAwwFCyAERQ0BCyAEQQN0IgFFDQAgCSADQQN0aiALIAH8CgAACyACIAMgBGoiAzYCQCACKAJMIgEgAigCREYEQCACQcQAahBFCyACKAJIIAFBAnRqIAM2AgAgAiABQQFqNgJMIAoEQCALIApBA3RBCBCZAQsgByAFQShqIgVHDQALDAILQQQgBhB2AAsgBiAHaiIEIANrQShuIQEgAyAERg0AIANBHGohAwNAIANBBGsoAgAiBARAIAMoAgAgBEEDdEEIEJkBCyADQShqIQMgAUEBayIBDQALCyAIBEAgBiAIQShsQQgQmQELIAAgAigCEDYCCCAAIAIpAgg3AgAgACACKQIUNwIMIAAgAigCHDYCFCAAIAIpAiA3AhggACACKAIoNgIgIAAgAikCLDcCJCAAIAIoAjQ2AiwgACACKAJANgI4IAAgAikCODcCMCAAIAIoAkw2AkQgACACKQJENwI8IAJB0ABqJAAPC0EEIAMQdgALwQYBB38CQAJAIAEgAEEDakF8cSIEIABrIgZJDQAgASAGayIIQQJ2IgdFDQBBACEBIAAgBEcEQCAAIARrIgRBfE0EQANAIAEgACADaiICLAAAQb9/SmogAkEBaiwAAEG/f0pqIAJBAmosAABBv39KaiACQQNqLAAAQb9/SmohASADQQRqIgMNAAsLIAAgA2ohAgNAIAEgAiwAAEG/f0pqIQEgAkEBaiECIARBAWoiBA0ACwsgACAGaiEEAkAgCEEDcSIARQ0AIAQgCEH8////B3FqIgMsAABBv39KIQUgAEEBRg0AIAUgAywAAUG/f0pqIQUgAEECRg0AIAUgAywAAkG/f0pqIQULIAEgBWohAwNAIAQhACAH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QZifwQBqIgEhAgwBCyABQfgBcSIBQZifwQBqIQIgAUGgn8EAaigCACEBCyACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0G0ocEAIAA2AgBBrKHBAEGsocEAKAIAIAFqIgE2AgAgACABQQFyNgIEIABBsKHBACgCAEcNAUGoocEAQQA2AgBBsKHBAEEANgIADwtBsKHBACAANgIAQaihwQBBqKHBACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgALC54DAgV+A38jAEEgayIKJAAgAEH/DzYCCCAAQgA3AwACQAJAIAJQIAFCqn1Tcg0AIAFCtAJVDQEgCkEQaiABpyIJQQR0IghBoPPAAGopAwAgAiACeSIFhiIDED0gCikDECEEIAopAxgiAkL/A4NC/wNRBEAgCiAIQajzwABqKQMAIAMQPSACIAopAwgiAiAEfCIEIAJUrXwhAgsgAUIbfELTAFoEQEF/IQggBEJ/UQ0BCyACIAJCP4giBkIJfCIHiCEDIAACfiAGpyAJQeqkDWxBEHUgBadrakE/aiIJQYJ4TgRAIAlBgAhB/wcgA0L8/////////wCDIAMgAyAHhiACURsgAyADQgODQgFRGyADIARCAlQbIAMgAUIEfEIcVBsiAUIBgyABfCIBQv////////8fViIJG2oiCEH+D0sNA0IAIAFCAYhC//////////f/AIMgCRsMAQtBACEIIAlBw3dJDQEgA0GCeCAJa62IIgFCAYMgAXwiAUL/////////D1YhCCABQgGICzcDAAsgACAINgIICyAKQSBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQBiICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAZDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIg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A61CIIZCA4Q3AgAL3gECAX8BfiMAQSBrIgMkACADIAE2AhAgAyAANgIMIANBATsBHCADIAI2AhggAyADQQxqNgIUIwBBEGsiASQAIANBFGoiACkCACEEIAEgADYCDCABIAQ3AgQjAEEQayIAJAAgAUEEaiIBKAIAIgIoAgQiA0EBcQRAIAIoAgAhAiAAIANBAXY2AgQgACACNgIAIABB9JbAACABKAIEIAEoAggiAC0ACCAALQAJEDIACyAAQYCAgIB4NgIAIAAgATYCDCAAQZCXwAAgASgCBCABKAIIIgAtAAggAC0ACRAyAAvyAQECfyAAKAIAIQAgASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABEDcPCyMAQRBrIgIkACAALQAAIQNBACEAA0AgACACakEPaiADQQ9xQYKdwQBqLQAAOgAAIABBAWshACADQQR2IgMNAAsgAUEBQYCdwQBBAiAAIAJqQRBqQQAgAGsQDiACQRBqJAAPCyMAQRBrIgIkACAALQAAIQNBACEAA0AgACACakEPaiADQQ9xQfirwABqLQAAOgAAIABBAWshACADQQR2IgMNAAsgAUEBQYCdwQBBAiAAIAJqQRBqQQAgAGsQDiACQRBqJAALLwACQCABaUEBRyAAQYCAgIB4IAFrS3INACAABEAgACABEKABIgFFDQELIAEPCwALPgAgACgCAEGAgICAeEcEQCABIAAoAgQgACgCCBB8DwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEBULOAACQCACQYCAxABGDQAgACACIAEoAhARAABFDQBBAQ8LIANFBEBBAA8LIAAgAyAEIAEoAgwRAQAL4wEBAn8gASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABECgPCyMAQRBrIgIkACAAKAIAIQNBACEAA0AgACACakEPaiADQQ9xLQCCnUE6AAAgAEEBayEAIANBBHYiAw0ACyABQQFBgJ3BAEECIAAgAmpBEGpBACAAaxAOIAJBEGokAA8LIwBBEGsiAiQAIAAoAgAhA0EAIQADQCAAIAJqQQ9qIANBD3EtAPirQDoAACAAQQFrIQAgA0EEdiIDDQALIAFBAUGAncEAQQIgACACakEQakEAIABrEA4gAkEQaiQACy4AAkAgA2lBAUcgAUGAgICAeCADa0tyDQAgACABIAMgAhCCASIARQ0AIAAPCwALLAEBfyMAQRBrIgEkACABIAFBD2qtQoCAgICAC4Q3AwBB0IXAACABIAAQXQAL1A4DCH4JfwR8IwBBEGsiESQAIAAhECMAQTBrIgwkACMAQeAAayIKJAAgCkEMaiENIwBBIGsiCyQAAkACQAJAAkACQAJAIAEiDkEHTQRAQfiMwAApAwAiBUL/AYNCBFINBCALQQA2AhQgC0KAgICAgAE3AgwMAQsgECkAACIIpyIAQTBsIQEgAEGq1aoVSw0CAkAgAUUEQEEIIQ9BACEADAELQQghEiABQQgQoAEiD0UNAwsgC0EANgIUIAsgDzYCECALIAA2AgwgCFANACAOrSEDQfiMwAApAwAiBEL/AYMhBiAEQgiIIQUgBKchAUEoIQ9BASESQgghAgNAAn4CQCAOIAIgAyACIANUG6ciAGtBCE8EQCAAIBBqKQAAIQlBBCEAQgAhBAwBC0IAIQkgBSEEIAEhACADIAZCBFINARoLIAJCCHwLIQIgAEH/AXFBBEcEQCANIARCGIg+AgggDSAArUL/AYMgBEIIhoQ+AgQMBgsCfgJAIA4gAiADIAIgA1QbpyIAa0EITwRAIAAgEGorAAAhE0EEIQBCACEEDAELRAAAAAAAAAAAIRMgBSEEIAEhACADIAZCBFINARoLIAJCCHwLIQIgAEH/AXFBBEcNAgJ+AkAgDiACIAMgAiADVBunIgBrQQhPBEAgACAQaisAACEUQQQhAEIAIQQMAQtEAAAAAAAAAAAhFCAFIQQgASEAIAMgBkIEUg0BGgsgAkIIfAshAiAAQf8BcUEERw0CAn4CQCAOIAIgAyACIANUG6ciAGtBCE8EQCAAIBBqKwAAIRVBBCEAQgAhBAwBC0QAAAAAAAAAACEVIAUhBCABIQAgAyAGQgRSDQEaCyACQgh8CyECIABB/wFxQQRHDQIgC0EAOgAaIAtBADsBGAJ+AkAgDiACIAMgAiADVBunIgBrQQNPBEAgCyAAIBBqIgAtAAI6ABogCyAALwAAOwEYQQQhAAwBCyABIQAgAyAGQgRSDQEaCyACQgN8CyECIABB/wFxQQRHBEAgDSAArUL/AYMgBUIIhoQ3AgQMBgsCfgJAIA4gAiADIAIgA1QbpyIAa0EITwRAIAAgEGorAAAhFkEEIQBCACEEDAELRAAAAAAAAAAAIRYgBSEEIAEhACADIAZCBFINARoLIAJCCHwLIQcgAEH/AXFBBEcEQCANIARCGIg+AgggDSAArUL/AYMgBEIIhoQ+AgQMBgsCfgJAIA4gByADIAMgB1YbpyIAa0EITwRAIAAgEGopAABCA4YhBEEEIQBCACECDAELQgAhBCAFIQIgASEAIAMgBkIEUg0BGgsgB0IIfAshByAAQf8BcUEERwRAIA0gAkIYiD4CCCANIACtQv8BgyACQgiGhD4CBAwGCyALKAIMIBJBAWtGBEAgC0EMahBGCyAEIAd8IQIgCygCECAPaiIAIAsvARg7AQAgACALLQAaOgACIABBCGsgFjkDACAAQRBrIBU5AwAgAEEYayAUOQMAIABBIGsgEzkDACAAQShrIAk3AwAgD0EwaiEPIAsgEjYCFCASQQFqIRIgCEIBfSIIUEUNAAsLIA0gCygCFDYCCCANIAspAgw3AgAMBAsgDSAEQhiIPgIIIA0gAK1C/wGDIARCCIaEPgIEDAILIBIgARB2AAsgDUGAgICAeDYCACANIAU3AgQMAQsgDUGAgICAeDYCACALKAIMIgBFDQAgCygCECAAQTBsQQgQmQELIAtBIGokAAJAAkACQCAKKAIMQYCAgIB4RgRAIAogCikCECIFNwNIIApBADYCWCAKQoCAgIAQNwJQIApBiIDAADYCHCAKQqCAgIAGNwIgIAogCkHQAGo2AhggCkHIAGogCkEYahAjDQIgCigCUCEAIAooAlQiASAKKAJYEK0BIQ0gAARAIAEgAEEBEJkBCyAFQv8Bg0IDUQRAIAVCIIinIgAoAgAhASAAQQRqKAIAIgsoAgAiDwRAIAEgDxEDAAsgCygCBCIPBEAgASAPIAsoAggQmQELIABBDEEEEJkBCyAMQYCAgIB4NgIAIAwgDTYCBAwBCyAKQRhqIApBDGoQDCAMIAopAiQ3AgwgDCAKKQIsNwIUIAwgCikCNDcCHCAMIAopAjw3AiQgDCAKKAJENgIsIAooAhghACAMIAopAhw3AgQgDCAANgIACyAKQeAAaiQADAELQbCAwABBNyAKQd8AakGggMAAQYCMwAAQSgALIA4EQCAQIA5BARCZAQsCQAJAIBECfyAMKAIAQYCAgIB4RgRAIAwoAgQhAEEBDAELQTxBBBCgASIARQ0BIABBADYCCCAAQoGAgIAQNwIAIAAgDCkCADcCDCAAIAwpAgg3AhQgACAMKQIQNwIcIAAgDCkCGDcCJCAAIAwpAiA3AiwgACAMKQIoNwI0IABBCGohAEEACyIBNgIIIBEgAEEAIAEbNgIEIBFBACAAIAEbNgIAIAxBMGokAAwBC0EEQTwQpQEACyARKAIAIBEoAgQgESgCCCARQRBqJAALpxwDD38CfgF8IwBBEGsiDiQAIwBB0ABrIg8kACAPQQhqIQ0jAEHwAGsiByQAIAdBBGohDCMAQZABayIDJAAgA0EANgIwIANCgICAgIABNwIoAkACQAJAAkACQANAIAUhBAJ/AkAgASAJSQ0AA0AgACAJaiEIAkAgASAJayICQQhPBEAgA0EgakEKIAggAhAnIAMoAiQhAiADKAIgIQUMAQsgAkUEQEEAIQJBACEFDAELIAgtAABBCkYEQEEBIQVBACECDAELIAJBAUYEQEEAIQUMAQtBASEFIAgtAAFBCkYEQEEBIQIMAQsgAkECRgRAQQAhBQwBCyAILQACQQpGBEBBAiECDAELIAJBA0YEQEEAIQUMAQsgCC0AA0EKRgRAQQMhAgwBCyACQQRGBEBBACEFDAELIAgtAARBCkYEQEEEIQIMAQsgAkEFRgRAQQAhBQwBCyAILQAFQQpGBEBBBSECDAELIAJBBkYEQEEAIQUMAQtBBiACIAgtAAZBCkYiBRshAgsgBUEBRwRAIAEhCQwCCyACIAlqIgVBAWohCQJAIAEgBU0NACACIAhqLQAAQQpHDQBBACEQIAkhBSAJDAMLIAEgCU8NAAsLIAEgBEYNBUEBIRAgBCEFIAELIgIgBGshCCAAIARqIQYCQCACIARGBEAgCCECDAELIAAgAmoiBEEBay0AAEEKRwRAIAghAgwBCyAIQQFrIgJFDQAgBEECay0AAEENRw0AIAhBAmshAgsgA0EYaiAGIAIQDwJAAkAgAygCHCICRQ0AIAMoAhgiBC0AAEEjRg0AIANBATsBUCADQQA2AkwgAyAENgJEIAMgAjYCQCADIAQ2AjwgAyACNgI4IANBADYCNCADIAIgBGo2AkggA0EQaiADQTRqEBYCQAJAAkAgAygCECICBEACQAJAAkAgAygCFCIEDgIEAAELIAItAAAiBkEraw4DAwEDAQsgAi0AACEGCyACIAZB/wFxQStGIghqIQYgBCAIayICQQlPBEBBACELA0AgAkUNBSALrUIKfiIRQiCIpw0DIAYtAABBMGsiBEEJSw0DIAZBAWohBiACQQFrIQIgBCARp2oiCyAETw0ACwwCCyACRQRAQQAhCwwECyAGLQAAQTBrIgtBCUsNASACQQFGDQMgBi0AAUEwayIEQQlLDQEgBCALQQpsaiELIAJBAkYNAyAGLQACQTBrIgRBCUsNASAEIAtBCmxqIQsgAkEDRg0DIAYtAANBMGsiBEEJSw0BIAQgC0EKbGohCyACQQRGDQMgBi0ABEEwayIEQQlLDQEgBCALQQpsaiELIAJBBUYNAyAGLQAFQTBrIgRBCUsNASAEIAtBCmxqIQsgAkEGRg0DIAYtAAZBMGsiBEEJSw0BIAQgC0EKbGohCyACQQdGDQMgBi0AB0EwayICQQlLDQEgAiALQQpsaiELDAMLIANB+ABqQYSOwABBCRA7IAMgAygCfDYCbCADIAMoAngiAjYCaAwBCyADQegAakGEjsAAQQkQOyADLQBoIQILIAJB/wFxQQRHDQIgAygCbCELCyADQQhqIANBNGoQFgJAAkAgAygCCCICBEAgAygCDCEEIAMgAjYCVCADIAQ2AlgCQAJAAkACQAJAAkACQAJAAkACQCAEQQNrDhMGEREDAREREQURAgAREREIEREJEQsgAikAAELTkrWCxanRr9AAhSACQQZqIgQpAABC36Cl8oTpk6bFAIWEUEUNA0EAIQYMCwsgAigAAEHQkrnCBHMgAkEDaigAAEHInrGqBHNyDQ9BASEGDAoLIAIpAABC05K1gsWp0a/SAIUgAkEFaikAAELFvsmKxKjSoMwAhYRQRQ0OQQIhBgwJCyACKAAAQdKCkcoEcyACQQRqLwAAQcGYAXNyDQdBAyEGDAgLIAIpAABCz6CV8rTI1a/GAIUgBCkAAELfjKWahanRrMUAhYRQRQ0CQQUhBgwHCyACKQAAQsaqseL065OoxQCFIAJBA2opAABCzL69gtXI06HWAIWEUEUNC0EGIQYMBgsgAi8AAEHGngFzIAJBAmotAABB1gBzcg0KQQchBgwFCyACKQAAQtKCkcqUiNOvxgCFIAQpAABC34ylmoWp0azFAIWEUEUNCUEJIQYMBAsgAikAAELUkKXy9IuUqckAhSACQQhqKQAAQtOa/bKU6ZSkxQCFhCACQRBqMwAAQtmKAYWEUEUNCEEKIQYMAwtBCCEGIAIpAABC05K1gsWp0a/SAIUgAkEIaikAAELBiKWKxOmXo8kAhYQgAkENaikAAELfjKWahanRrMUAhYRQDQIMBwsgA0H4AGpBjY7AAEENEDsgAykCeCERIAxBgICAgHg2AgAgDCARNwIEDAcLQQQhBiACKAAAQc+glfIEcyACQQRqLwAAQcOsAXNyDQULIANB+ABqIANBNGpBoJDAAEEFEB8gAygCeEEBRgRAIAMpAnwhESAMQYCAgIB4NgIAIAwgETcCBAwGCyADKQOAASERIANB+ABqIANBNGpBpZDAAEEGEB8gAygCeEEBRgRAIAMpAnwhESAMQYCAgIB4NgIAIAwgETcCBAwGC0EAIQIgBkEMbCgCpI9AIgRBA3QiCEH4////B0sNAyADKQOAASESIAgEf0EIIQIgCCIKQQgQoAEiCEUNBCAEIQIgCAVBCAshCiADQQA2AmQgAyAKNgJgIAMgAjYCXEEBIAQgBEEBTRshAgNAIAMgA0E0ahAWAkACQCADKAIAIgQEQCADQfgAaiAEIAMoAgQQByADLQB4RQ0CIANB6ABqQQRyQauQwABBBRA7DAELIANBiAFqQauQwABBBRA7IAMgAykCiAE3AmwLIAMpAmwhESAMQYCAgIB4NgIAIAwgETcCBCADKAJcIgJFDQcgAygCYCACQQN0QQgQmQEMBwsgAysDgAEhEyADKAJkIgQgAygCXEYEQCADQdwAahBCCyADKAJgIARBA3RqIBM5AwAgAyAEQQFqNgJkIAJBAWsiAg0ACyADIAMoAmQ2AoABIAMgAykCXDcDeCADKAIwIgQgAygCKEYEQCADQShqEEMLIAMoAiwgBEEobGoiAiAGNgIUIAIgCzYCECACIBI3AwggAiARNwMAIAIgAykDeDcDGCACIAMoAoABNgIgIAMgBEEBajYCMAsgEEUNAQwFCwsgAykDaCERIAxBgICAgHg2AgAgDCARNwIEDAILIAIgChB2AAsgAyADQdQAaq1CgICAgOABhDcDaCADQfgAaiEGQQAhCUEAIQIjAEEQayIFJAACQAJAAkACQAJAAkAgA0HoAGoiCEEBcQRAIAhBAXYhCgwBC0G6hcAALQAAIgpFDQFBuoXAACEEA0AgBEEBaiEEAkAgCsBBAEgEQCAKQf8BcUGAAUYEQCAJIAQvAAAiCmohCSAEIApqQQJqIQQMAgsgBCAKQQNxQQh4IgtBBXRBgICAgARxIAtBB3RyQR12aiAKQQF2QQJxaiAKQQJ2QQJxaiEEIAlFIAJyIQIMAQsgBCAKQf8BcSIKaiEEIAkgCmohCQsgBC0AACIKDQALQQAhCiACIAlBEElxDQBBACECIAlBAXQiCkEASA0ECyAKDQELQQEhBEEAIQoMAQtBASECIApBARCgASIERQ0BCyAFQQA2AgggBSAENgIEIAUgCjYCACAFQeShwABBuoXAACAIEBVFDQFBjKLAAEHWACAFQQ9qQfyhwABB5KLAABBKAAsgAiAKEHYACyAGIAUoAgg2AgggBiAFKQIANwIAIAVBEGokACAIIAMoAnwiAiADKAKAARA7IAMoAngiBQRAIAIgBUEBEJkBCyAMIAMvAGk7AAUgDCADLQBrOgAHIAMtAGghAiAMIAMoAmw2AgggDCACOgAEIAxBgICAgHg2AgALIAMoAjAiAgRAIAMoAixBHGohCQNAIAlBBGsoAgAiBQRAIAkoAgAgBUEDdEEIEJkBCyAJQShqIQkgAkEBayICDQALCyADKAIoIgJFDQEgAygCLCACQShsQQgQmQEMAQsgDCADKAIwNgIIIAwgAykCKDcCAAsgA0GQAWokAAJAAkACQCAHKAIEQYCAgIB4RgRAIAcgBykCCCIRNwNYIAdBADYCaCAHQoCAgIAQNwJgIAdBiIDAADYCFCAHQqCAgIAGNwIYIAcgB0HgAGo2AhAgB0HYAGogB0EQahAjDQIgBygCYCECIAcoAmQiBSAHKAJoEK0BIQQgAgRAIAUgAkEBEJkBCyARQv8Bg0IDUQRAIBFCIIinIgIoAgAhBSACQQRqKAIAIgkoAgAiCARAIAUgCBEDAAsgCSgCBCIIBEAgBSAIIAkoAggQmQELIAJBDEEEEJkBCyANQYCAgIB4NgIAIA0gBDYCBAwBCyAHQRBqIAdBBGoQCiANIAcpAhw3AgwgDSAHKQIkNwIUIA0gBykCLDcCHCANIAcpAjQ3AiQgDSAHKQI8NwIsIA0gBykCRDcCNCANIAcpAkw3AjwgDSAHKAJUNgJEIAcoAhAhAiANIAcpAhQ3AgQgDSACNgIACyAHQfAAaiQADAELQbCAwABBNyAHQe8AakGggMAAQYCMwAAQSgALIAEEQCAAIAFBARCZAQsCQAJAAn8gDygCCEGAgICAeEYEQEEBIQAgDygCDAwBC0HUAEEEEKABIgFFDQFBACEAIAFBADYCCCABQoGAgIAQNwIAIAFBDGogD0EIakHIAPwKAAAgAUEIagshASAOIAA2AgggDiABQQAgABs2AgQgDkEAIAEgABs2AgAgD0HQAGokAAwBC0EEQdQAEKUBAAsgDigCACAOKAIEIA4oAgggDkEQaiQAC78RAwx/AX4HfCMAQRBrIgokACMAQdAAayILJAAgC0EIaiEIIwBB8ABrIgQkACAEQQRqIQcjAEHgAWsiAiQAIAJBADYCbCACQoCAgICAATcCZCACQQA7AZQBIAIgATYCkAEgAkEANgKMASACQQE6AIgBIAJBCjYChAEgAiABNgKAASACQQA2AnwgAiABNgJ4IAIgADYCdCACQQo2AnAgAkHYAGogAkHwAGoQCQJAAkAgAigCWCIFRQ0AIAIoAlwhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIAJB0ABqIAJB8ABqEAkgAkEBOwG0ASACQQA2ArABIAIgBTYCqAEgAiADNgKkASACIAU2AqABIAIgAzYCnAEgAkEANgKYASACIAMgBWo2AqwBIAJByAFqIAJBmAFqQcCQwABBCBAXIAItAMgBQQRHBEAgByACKQPIATcCBAwQCyACKALMASEMIAJByABqIAJBmAFqEBYgAigCSCIDRQ0BIAJByAFqIAMgAigCTBAHIAItAMgBBEAgAkG4AWpBBHJByJDAAEECEDsMDwsgAisD0AEhDyACQUBrIAJBmAFqEBYgAigCQCIDRQ0CIAJByAFqIAMgAigCRBAHIAItAMgBBEAgAkG4AWpBBHJBypDAAEECEDsMDgsgAisD0AEhECACQThqIAJBmAFqEBYgAigCOCIDRQ0DIAJByAFqIAMgAigCPBAHIAItAMgBBEAgAkG4AWpBBHJBzJDAAEECEDsMDQsgAisD0AEhESACQTBqIAJBmAFqEBYgAigCMCIDRQ0EIAJByAFqIAMgAigCNBAHIAItAMgBBEAgAkG4AWpBBHJBzpDAAEECEDsMDAsgAisD0AEhEiACQShqIAJBmAFqEBYgAigCKCIDRQ0FIAJByAFqIAMgAigCLBAHIAItAMgBBEAgAkG4AWpBBHJB0JDAAEECEDsMCwsgAisD0AEhEyACQSBqIAJBmAFqEBYgAigCICIDRQ0GIAJByAFqIAMgAigCJBAHIAItAMgBBEAgAkG4AWpBBHJB0pDAAEECEDsMCgsgAisD0AEhFCACQRhqIAJBmAFqEBYgAigCGCIDRQ0HIAJByAFqIAMgAigCHBAHIAItAMgBBEAgAkG4AWpBBHJB1JDAAEECEDsMCQsgAisD0AEhFSACQcgBaiACQZgBakHWkMAAQQkQFyACLQDIAUEERwRAIAcgAikDyAE3AgQMEAsgAigCzAEhDSACQRBqIAJBmAFqEBYgAigCECIJBEBBACEFAkACQCACKAIUIgNBAE4EQCADRQRAQQEhBgwDC0EBIQUgA0EBEKABIgYNASADIQYLIAUgBhB2AAsgA0UNACAGIAkgA/wKAAALIAIoAmwiCSACKAJkRgRAIAJB5ABqEEQLIAIoAmggCUHQAGxqIgUgAzYCSCAFIAY2AkQgBSADNgJAIAUgDTYCPCAFIAw2AjggBSAVOQMwIAUgFDkDKCAFIBM5AyAgBSASOQMYIAUgETkDECAFIBA5AwggBSAPOQMAIAIgCUEBajYCbCACQQhqIAJB8ABqEAkgAigCDCEDIAIoAggiBQ0BDBELCyACQcgBakHfkMAAQQwQOyAHIAIpAsgBNwIEDA4LIAJB2AFqQciQwABBAhA7IAIgAikC2AE3ArwBDAwLIAJB2AFqQcqQwABBAhA7IAIgAikC2AE3ArwBDAoLIAJB2AFqQcyQwABBAhA7IAIgAikC2AE3ArwBDAgLIAJB2AFqQc6QwABBAhA7IAIgAikC2AE3ArwBDAYLIAJB2AFqQdCQwABBAhA7IAIgAikC2AE3ArwBDAQLIAJB2AFqQdKQwABBAhA7IAIgAikC2AE3ArwBDAILIAJB2AFqQdSQwABBAhA7IAIgAikC2AE3ArwBCyAHIAIpArwBNwIEDAYLIAcgAikCvAE3AgQMBQsgByACKQK8ATcCBAwECyAHIAIpArwBNwIEDAMLIAcgAikCvAE3AgQMAgsgByACKQK8ATcCBAwBCyAHIAIpArwBNwIECyAHQYCAgIB4NgIAIAIoAmwiAwRAIAIoAmhBxABqIQUDQCAFQQRrKAIAIgYEQCAFKAIAIAZBARCZAQsgBUHQAGohBSADQQFrIgMNAAsLIAIoAmQiBkUNASACKAJoIAZB0ABsQQgQmQEMAQsgByACKAJsNgIIIAcgAikCZDcCAAsgAkHgAWokAAJAAkACQCAEKAIEQYCAgIB4RgRAIAQgBCkCCCIONwNYIARBADYCaCAEQoCAgIAQNwJgIARBiIDAADYCFCAEQqCAgIAGNwIYIAQgBEHgAGo2AhAgBEHYAGogBEEQahAjDQIgBCgCYCEJIAQoAmQiBiAEKAJoEK0BIQMgCQRAIAYgCUEBEJkBCyAOQv8Bg0IDUQRAIA5CIIinIgwoAgAhDSAMQQRqKAIAIgkoAgAiBgRAIA0gBhEDAAsgCSgCBCIGBEAgDSAGIAkoAggQmQELIAxBDEEEEJkBCyAIQYCAgIB4NgIAIAggAzYCBAwBCyAEQRBqIARBBGoQCCAIIAQpAhw3AgwgCCAEKQIkNwIUIAggBCkCLDcCHCAIIAQpAjQ3AiQgCCAEKQI8NwIsIAggBCkCRDcCNCAIIAQpAkw3AjwgCCAEKAJUNgJEIAQoAhAhBiAIIAQpAhQ3AgQgCCAGNgIACyAEQfAAaiQADAELQbCAwABBNyAEQe8AakGggMAAQYCMwAAQSgALIAEEQCAAIAFBARCZAQsCQAJAAn8gCygCCEGAgICAeEYEQEEBIQEgCygCDAwBC0HUAEEEEKABIgBFDQFBACEBIABBADYCCCAAQoGAgIAQNwIAIABBDGogC0EIakHIAPwKAAAgAEEIagshACAKIAE2AgggCiAAQQAgARs2AgQgCkEAIAAgARs2AgAgC0HQAGokAAwBC0EEQdQAEKUBAAsgCigCACAKKAIEIAooAgggCkEQaiQAC5cSAw5/An4EfCMAQRBrIgkkACAAIQogASEIQQAhACMAQTBrIgYkACMAQeAAayIEJAAgBEEMaiELIwBBoAFrIgIkACACQQA2AlQgAkKAgICAgAE3AkwgAkGIAWpBBHIhDgJAAkACfgJAAkACQAJAAkACQANAIAAhBQJ/AkAgByAISw0AA0AgByAKaiEAAkAgCCAHayIBQQhPBEAgAkFAa0EKIAAgARAnIAIoAkQhASACKAJAIQMMAQsgAUUEQEEAIQFBACEDDAELIAAtAABBCkYEQEEBIQNBACEBDAELIAFBAUYEQEEAIQMMAQtBASEDIAAtAAFBCkYEQEEBIQEMAQsgAUECRgRAQQAhAwwBCyAALQACQQpGBEBBAiEBDAELIAFBA0YEQEEAIQMMAQsgAC0AA0EKRgRAQQMhAQwBCyABQQRGBEBBACEDDAELIAAtAARBCkYEQEEEIQEMAQsgAUEFRgRAQQAhAwwBCyAALQAFQQpGBEBBBSEBDAELIAFBBkYEQEEAIQMMAQtBBiABIAAtAAZBCkYiAxshAQsgA0EBRwRAIAghBwwCCyABIAdqIgNBAWohBwJAIAMgCE8NACAAIAFqLQAAQQpHDQBBACENIAciAAwDCyAHIAhNDQALCyAFIAhGDQlBASENIAUhACAICyIBIAVrIQMgBSAKaiEMAkAgASAFRgRAIAMhAQwBCyABIApqIgVBAWstAABBCkcEQCADIQEMAQsgA0EBayIBRQ0AIAVBAmstAABBDUcNACADQQJrIQELIAJBOGogDCABEA8CQAJAIAIoAjwiAUUNACACKAI4IgUtAABBI0YNACACQQE7AXQgAkEANgJwIAIgBTYCaCACIAE2AmQgAiAFNgJgIAIgATYCXCACQQA2AlggAiABIAVqNgJsIAJBMGogAkHYAGoQFiACKAIwIgFFDQECQAJAAkAgAigCNCIFDgIKAAELIAEtAAAiA0Eraw4DCQEJAQsgAS0AACEDCyABIANB/wFxQStGIgNqIQECQCAFIANrIgVBEU8EQEIAIRADQCAFRQ0CIAJBIGogEEIKED0gAikDKEIAUg0KIAEtAABBMGsiA0EJSw0KIAFBAWohASAFQQFrIQUgAikDICIRIAOtfCIQIBFaDQALDAkLQgAhECAFRQ0AA0AgAS0AAEEwayIDQQlLDQkgAUEBaiEBIAOtIBBCCn58IRAgBUEBayIFDQALCyACQRhqIAJB2ABqEBYgAigCGCIBRQ0DIAJBiAFqIAEgAigCHBAHIAItAIgBBEAgAkH4AGpBBHJBkpXAAEEBEDsgAikCfAwKCyACKwOQASESIAJBEGogAkHYAGoQFiACKAIQIgFFDQQgAkGIAWogASACKAIUEAcgAi0AiAEEQCACQfgAakEEckGTlcAAQQEQOyACKQJ8DAoLIAIrA5ABIRMgAkEIaiACQdgAahAWIAIoAggiAUUNBSACQYgBaiABIAIoAgwQByACLQCIAQRAIAJB+ABqQQRyQZSVwABBARA7IAIpAnwMCgsgAisDkAEhFCACQYgBaiACQdgAakGVlcAAECIgAi0AiAFBBEcEQCACKQOIAQwKCyACLQCJASEDIAJBiAFqIAJB2ABqQZaVwAAQIiACLQCIAUEERwRAIAIpA4gBDAoLIAItAIkBIQwgAkGIAWogAkHYAGpBl5XAABAiIAItAIgBQQRHBEAgAikDiAEMCgsgAi0AiQEhDyACIAJB2ABqEBYgAigCACIBRQ0GIAJBiAFqIAEgAigCBBAHIAItAIgBBEAgAkH4AGpBBHJBmJXAAEEFEDsgAikCfAwKCyACKwOQASEVIAIoAlQiBSACKAJMRgRAIAJBzABqEEYLIAIoAlAgBUEwbGoiASAPOgAqIAEgDDoAKSABIAM6ACggASAVOQMgIAEgFDkDGCABIBM5AxAgASASOQMIIAEgEDcDACACIAVBAWo2AlQLIA1FDQEMCQsLIAJB+ABqQYiVwABBChA7IAIgAikCeDcCjAEMBQsgAkGYAWpBkpXAAEEBEDsgAiACKQKYATcCfCACKQJ8DAULIAJBmAFqQZOVwABBARA7IAIgAikCmAE3AnwgAikCfAwECyACQZgBakGUlcAAQQEQOyACIAIpApgBNwJ8IAIpAnwMAwsgAkGYAWpBmJXAAEEFEDsgAiACKQKYATcCfCACKQJ8DAILIA5BiJXAAEEKEDsLIAIpAowBCyEQIAtBgICAgHg2AgAgCyAQNwIEIAIoAkwiAEUNASACKAJQIABBMGxBCBCZAQwBCyALIAIoAlQ2AgggCyACKQJMNwIACyACQaABaiQAAkACQAJAIAQoAgxBgICAgHhGBEAgBCAEKQIQIhA3A0ggBEEANgJYIARCgICAgBA3AlAgBEGIgMAANgIcIARCoICAgAY3AiAgBCAEQdAAajYCGCAEQcgAaiAEQRhqECMNAiAEKAJQIQAgBCgCVCIBIAQoAlgQrQEhBSAABEAgASAAQQEQmQELIBBC/wGDQgNRBEAgEEIgiKciACgCACEBIABBBGooAgAiBygCACIDBEAgASADEQMACyAHKAIEIgMEQCABIAMgBygCCBCZAQsgAEEMQQQQmQELIAZBgICAgHg2AgAgBiAFNgIEDAELIARBGGogBEEMahAMIAYgBCkCJDcCDCAGIAQpAiw3AhQgBiAEKQI0NwIcIAYgBCkCPDcCJCAGIAQoAkQ2AiwgBCgCGCEAIAYgBCkCHDcCBCAGIAA2AgALIARB4ABqJAAMAQtBsIDAAEE3IARB3wBqQaCAwABBgIzAABBKAAsgCARAIAogCEEBEJkBCwJAAkAgCQJ/IAYoAgBBgICAgHhGBEAgBigCBCEAQQEMAQtBPEEEEKABIgBFDQEgAEEANgIIIABCgYCAgBA3AgAgACAGKQIANwIMIAAgBikCCDcCFCAAIAYpAhA3AhwgACAGKQIYNwIkIAAgBikCIDcCLCAAIAYpAig3AjQgAEEIaiEAQQALIgE2AgggCSAAQQAgARs2AgQgCUEAIAAgARs2AgAgBkEwaiQADAELQQRBPBClAQALIAkoAgAgCSgCBCAJKAIIIAlBEGokAAunGwMUfwl+B3wjAEEQayIMJAAjAEHQAGsiDiQAIA5BCGohCiMAQfAAayIGJAAgBkEEaiEHIwBB0ABrIgQkAAJAAkACQAJAAkACQCABQQdNBEBB+IzAACkDACIZQv8Bg0IEUg0EIARBADYCFCAEQoCAgICAATcCDAwBCyAAKQAAIh6nIgJB0ABsIQUgAkGZs+YMSw0BAkAgBUUEQEEIIQlBACECDAELQQghAyAFQQgQoAEiCUUNAgsgBEEANgIUIAQgCTYCECAEIAI2AgwgHlANACABrSEXQQAhA0H4jMAAKQMAIhxC/wGDIRsgHEIIiCEZIARBHGohFCAcpyEFQgghFgNAAn4CQCABIBYgFyAWIBdUG6ciAmtBBE8EQCAAIAJqKAAAIRFBBCECQgAhGAwBC0EAIREgGSEYIAUhAiAXIBtCBFINARoLIBZCBHwLIRogAkH/AXFBBEcEQCAHIAI6AAQgB0GAgICAeDYCACAHIBinIgU7AAUgByAYQhiIPgIIIAdBB2ogBUEQdjoAAAwGCwJ+AkAgASAaIBcgFyAaVhunIgJrQQhPBEAgACACaisAACEfQQQhAkIAIRYMAQtEAAAAAAAAAAAhHyAZIRYgBSECIBcgG0IEUg0BGgsgGkIIfAshGAJ+AkACQAJAIAJB/wFxQQRHDQACfgJAIAEgGCAXIBcgGFYbpyICa0EITwRAIAAgAmorAAAhIEEEIQJCACEWDAELRAAAAAAAAAAAISAgGSEWIAUhAiAXIBtCBFINARoLIBhCCHwLIRggAkH/AXFBBEcNAAJ+AkAgASAYIBcgFyAYVhunIgJrQQhPBEAgACACaisAACEhQQQhAkIAIRYMAQtEAAAAAAAAAAAhISAZIRYgBSECIBcgG0IEUg0BGgsgGEIIfAshGCACQf8BcUEERw0AAn4CQCABIBggFyAXIBhWG6ciAmtBCE8EQCAAIAJqKwAAISJBBCECQgAhFgwBC0QAAAAAAAAAACEiIBkhFiAFIQIgFyAbQgRSDQEaCyAYQgh8CyEYIAJB/wFxQQRHDQACfgJAIAEgGCAXIBcgGFYbpyICa0EITwRAIAAgAmorAAAhI0EEIQJCACEWDAELRAAAAAAAAAAAISMgGSEWIAUhAiAXIBtCBFINARoLIBhCCHwLIRgCQCACQf8BcUEERw0AAn4CQCABIBggFyAXIBhWG6ciAmtBCE8EQCAAIAJqKwAAISRBBCECQgAhFgwBC0QAAAAAAAAAACEkIBkhFiAFIQIgFyAbQgRSDQEaCyAYQgh8CyEYIAJB/wFxQQRHDQACfgJAIAEgGCAXIBcgGFYbpyICa0EITwRAIAAgAmorAAAhJUEEIQJCACEWDAELRAAAAAAAAAAAISUgGSEWIAUhAiAXIBtCBFINARoLIBhCCHwLIRogAkH/AXFBBEcNAAJ+AkAgASAaIBcgFyAaVhunIgJrQQRPBEAgACACaigAACESQQQhAkIAIRgMAQtBACESIBkhGCAFIQIgFyAbQgRSDQEaCyAaQgR8CyEWIAJB/wFxQQRHBEAgByACOgAEIAdBgICAgHg2AgAgByAYpyIFOwAFIAcgGEIYiD4CCCAHQQdqIAVBEHY6AAAMCwtBACECIARBADYCLCAEQoCAgIAQNwIkIAEgFiAXIBYgF1QbpyIDRg0CA0AgACADai0AACIIRQ0EIAQoAiQgAkYEQCMAQRBrIgMkACADQQRqIARBJGoiCSgCACILIAkoAgRBCCALQQF0IgsgC0EITRsiCxA8IAMoAgRBAUYEQCADKAIIIAMoAgwQdgALIAMoAgghDSAJIAs2AgAgCSANNgIEIANBEGokAAsgBCgCKCACaiAIOgAAIAQgAkEBaiICNgIsIAEgFkIBfCIWIBcgFiAXVBunIgNHDQALDAILIAdBgICAgHg2AgAgByAWQhiIPgIIIAcgAq1C/wGDIBZCCIaEPgIEDAkLIAdBgICAgHg2AgAgByAWQhiIPgIIIAcgAq1C/wGDIBZCCIaEPgIEDAgLAkAgG0IEUQRAIAVB/wFxQQRGDQIMAQsgFyAFQf8BcUEERg0CGgsgBCAcNwIcIAQoAiQiBUUNBSAEKAIoIAVBARCZAQwFCyAWQgF8CyEaIAQoAiQhCyAEQTBqIQ0gBCgCKCEJAkACQCACRQ0AIAJBB2siA0EAIAIgA08bIRMgCUEDakF8cSAJayEVQQAhAwNAAkACQAJAIAMgCWotAAAiD8AiEEEATgRAIBUgA2tBA3ENASADIBNPDQIDQCADIAlqIghBBGooAgAgCCgCAHJBgIGChHhxDQMgA0EIaiIDIBNJDQALDAILQoCAgICQICEWAkACQAJAAkACQAJAAkACQAJAIA8tAIWvQEECaw4DAAECBwsgA0EBaiIIIAJJDQJCACEWDAYLIANBAWoiCCACSQ0CQgAhFgwFCyADQQFqIgggAkkNAkIAIRYMBAsgCCAJaiwAAEG/f0oNAwwECyAIIAlqLAAAIQgCQAJAIA9B4AFrIg8EQCAPQQ1GBEAMAgUMAwsACyAIQWBxQaB/Rg0DDAQLIAhBn39KDQMMAgsgEEEfakH/AXFBDE8EQCAQQX5xQW5HDQMgCEFASA0CDAMLIAhBQEgNAQwCCyAIIAlqLAAAIQgCQAJAAkACQCAPQfABaw4FAQAAAAIACyAQQQ9qQf8BcUECSw0EIAhBQEgNAgwECyAIQfAAakH/AXFBMEkNAQwDCyAIQY9/Sg0CCyACIANBAmoiCE0EQEIAIRYMAgsgCCAJaiwAAEG/f0oEQEKAgICAkMAAIRYMAgtCACEWIANBA2oiCCACTw0BIAggCWosAABBQEgNAkKAgICAkOAAIRYMAQtCACEWIANBAmoiCCACTw0AIAggCWosAABBv39MDQFCgICAgJDAACEWCyANIBYgA62ENwIEIA1BATYCAAwGCyAIQQFqIQMMAgsgA0EBaiEDDAELIAIgA00NAANAIAMgCWosAABBAEgNASACIANBAWoiA0cNAAsMAgsgAiADSw0ACwsgDSACNgIIIA0gCTYCBCANQQA2AgALIAQoAjAEQCAEIAQpAjQ3AkggBCACNgJEIAQgCTYCQCAEIAs2AjxBFEEEEKABIgVFBEBBBEEUEKUBAAsgBSAEQTxqIgIoAhA2AhAgBSACKQIINwIIIAUgAikCADcCACAUIAVBrJTAABBcDAQLIAQgAjYCICAEIAk2AhwgC0GAgICAeEYNAwJ+AkAgASAaIBcgFyAaVhunIgNrQQhPBEAgACADaikAAEIYfiEYQQQhA0IAIRYMAQtCACEYIBkhFiAFIQMgFyAbQgRSDQEaCyAaQgh8CyEaIANB/wFxQQRHBEAgB0GAgICAeDYCACAHIBZCGIg+AgggByADrUL/AYMgFkIIhoQ+AgQgCwRAIAkgC0EBEJkBCyAEKAIUIQMMBgsgBCgCFCIIIAQoAgxGBEAgBEEMahBECyAYIBp8IRYgBCgCECAIQdAAbGoiAyACNgJIIAMgCTYCRCADIAs2AkAgAyASNgI8IAMgETYCOCADICU5AzAgAyAkOQMoIAMgIzkDICADICI5AxggAyAhOQMQIAMgIDkDCCADIB85AwAgBCAIQQFqIgM2AhQgHUIBfCIdIB5SDQALCyAHIAQoAhQ2AgggByAEKQIMNwIADAQLIAMgBRB2AAsgBCkCHCEZIAdBgICAgHg2AgAgByAZNwIEIAQoAhQhAwwBCyAHQYCAgIB4NgIAIAcgGTcCBAwBCyADBEAgBCgCEEHEAGohAgNAIAJBBGsoAgAiBQRAIAIoAgAgBUEBEJkBCyACQdAAaiECIANBAWsiAw0ACwsgBCgCDCIFRQ0AIAQoAhAgBUHQAGxBCBCZAQsgBEHQAGokAAJAAkACQCAGKAIEQYCAgIB4RgRAIAYgBikCCCIZNwNYIAZBADYCaCAGQoCAgIAQNwJgIAZBiIDAADYCFCAGQqCAgIAGNwIYIAYgBkHgAGo2AhAgBkHYAGogBkEQahAjDQIgBigCYCEFIAYoAmQiAiAGKAJoEK0BIQQgBQRAIAIgBUEBEJkBCyAZQv8Bg0IDUQRAIBlCIIinIgUoAgAhAiAFQQRqKAIAIgMoAgAiBwRAIAIgBxEDAAsgAygCBCIHBEAgAiAHIAMoAggQmQELIAVBDEEEEJkBCyAKQYCAgIB4NgIAIAogBDYCBAwBCyAGQRBqIAZBBGoQCCAKIAYpAhw3AgwgCiAGKQIkNwIUIAogBikCLDcCHCAKIAYpAjQ3AiQgCiAGKQI8NwIsIAogBikCRDcCNCAKIAYpAkw3AjwgCiAGKAJUNgJEIAYoAhAhBSAKIAYpAhQ3AgQgCiAFNgIACyAGQfAAaiQADAELQbCAwABBNyAGQe8AakGggMAAQYCMwAAQSgALIAEEQCAAIAFBARCZAQsCQAJAAn8gDigCCEGAgICAeEYEQEEBIQAgDigCDAwBC0HUAEEEEKABIgFFDQFBACEAIAFBADYCCCABQoGAgIAQNwIAIAFBDGogDkEIakHIAPwKAAAgAUEIagshASAMIAA2AgggDCABQQAgABs2AgQgDEEAIAEgABs2AgAgDkHQAGokAAwBC0EEQdQAEKUBAAsgDCgCACAMKAIEIAwoAgggDEEQaiQAC4kQAxF/CX4BfCMAQRBrIg0kACAAIQwjAEHQAGsiDiQAIA5BCGohCCMAQfAAayIDJAAgA0EEaiEGIwBBIGsiAiQAAkACQAJAAkACQAJAIAEiC0EHTQRAQfiMwAApAgAiFEL/AYNCBFINBCACQQA2AhAgAkKAgICAgAE3AggMAQsgDCkAACIZpyIEQShsIQAgBEGz5swZSw0CAkAgAEUEQEEIIQdBACEEDAELQQghBSAAQQgQoAEiB0UNAwsgAkEANgIQIAIgBzYCDCACIAQ2AgggGVANACALrSEUQfiMwAApAgAiFkL/AYMhFSAWQgiIIRcgFqciAUGAfnEhESAWQiCIpyESQgghE0EAIQQDQAJ+AkAgCyATIBQgEyAUVBunIgBrQQRPBEAgACAMaigAACEQQQQhAAwBC0EAIRAgASEAIBQgFUIEUg0BGgsgE0IEfAshEyAAQf8BcUEERwRAIAZBgICAgHg2AgAgBiAArUL/AYMgF0IIhoQ3AgQMBgsCfgJAIAsgEyAUIBMgFFQbpyIAa0EETwRAIAAgDGooAAAhD0EEIQAMAQtBACEPIAEhACAUIBVCBFINARoLIBNCBHwLIRMgAEH/AXFBBEcEQCAGQYCAgIB4NgIAIAYgAK1C/wGDIBdCCIaENwIEDAYLAn4CQCALIBMgFCATIBRUG6ciAGtBCE8EQCAAIAxqKQAAIRpBBCEADAELQgAhGiABIQAgFCAVQgRSDQEaCyATQgh8CyETIABB/wFxQQRHBEAgBkGAgICAeDYCACAGIACtQv8BgyAXQgiGhDcCBAwGCwJ+AkAgCyATIBQgEyAUVBunIgBrQQhPBEAgACAMaikAACEbQQQhAAwBC0IAIRsgASEAIBQgFUIEUg0BGgsgE0IIfAshEyAAQf8BcUEERwRAIAZBgICAgHg2AgAgBiAArUL/AYMgF0IIhoQ3AgQMBgtBACEHQQAhACAPQQpNBEAgD0EMbCgC6JJAIQALAkACQAJAAkAgAEH/////AUsNACAAQQN0IglB+P///wdLDQACfyAJRQRAQQAhBUEIDAELQQghByAJIgpBCBCgASIJRQ0BIAAhBSAJCyEKIAJBADYCHCACIAo2AhggAiAFNgIUIABFDQMgFUIEUQ0BQQAhBSAKIQlBACEEA0ACQCALIBMgFCATIBRUG6ciB2tBCE8EQCATQgh8IRMgByAMaisAACEcDAELRAAAAAAAAAAAIRwgFCETIAFB/wFxQQRHDQgLIAIoAhQgBEYEQCACQRRqEEIgAigCGCEJCyAFIAlqIBw5AwAgAiAEQQFqIgQ2AhwgBUEIaiEFIAAgBEcNAAsMAgsgByAKEHYAC0EAIQUgCiEJQQAhBANAAkAgCyATIBQgEyAUVBunIgdrQQhPBEAgByAMaisAACEcDAELRAAAAAAAAAAAIRwgAUH/AXFBBEcNBgsgAigCFCAERgRAIAJBFGoQQiACKAIYIQkLIAUgCWogHDkDACATQgh8IRMgBUEIaiEFIAIgBEEBaiIENgIcIAAgBEcNAAsLIAIoAhAhBAsgAigCCCAERgRAIAJBCGoQQwsgAigCDCIHIARBKGxqIgAgDzYCFCAAIBA2AhAgACAbNwMIIAAgGjcDACAAIAIpAhQ3AhggACACKAIcNgIgIAIgBEEBaiIENgIQIBhCAXwiGCAZUg0ACwsgBiACKAIQNgIIIAYgAikCCDcCAAwECyAGIBI2AgggBkGAgICAeDYCACAGIBEgFqdB/wFxcjYCBCACKAIUIgAEQCACKAIYIABBA3RBCBCZAQsgAigCECEEIAIoAgwhBwwCCyAFIAAQdgALIAZBgICAgHg2AgAgBiAUNwIEDAELIAQEQCAHQRxqIQADQCAAQQRrKAIAIgEEQCAAKAIAIAFBA3RBCBCZAQsgAEEoaiEAIARBAWsiBA0ACwsgAigCCCIARQ0AIAcgAEEobEEIEJkBCyACQSBqJAACQAJAAkAgAygCBEGAgICAeEYEQCADIAMpAggiFDcDWCADQQA2AmggA0KAgICAEDcCYCADQYiAwAA2AhQgA0KggICABjcCGCADIANB4ABqNgIQIANB2ABqIANBEGoQIw0CIAMoAmAhACADKAJkIgEgAygCaBCtASEJIAAEQCABIABBARCZAQsgFEL/AYNCA1EEQCAUQiCIpyIAKAIAIQEgAEEEaigCACIKKAIAIgUEQCABIAURAwALIAooAgQiBQRAIAEgBSAKKAIIEJkBCyAAQQxBBBCZAQsgCEGAgICAeDYCACAIIAk2AgQMAQsgA0EQaiADQQRqEAogCCADKQIcNwIMIAggAykCJDcCFCAIIAMpAiw3AhwgCCADKQI0NwIkIAggAykCPDcCLCAIIAMpAkQ3AjQgCCADKQJMNwI8IAggAygCVDYCRCADKAIQIQAgCCADKQIUNwIEIAggADYCAAsgA0HwAGokAAwBC0GwgMAAQTcgA0HvAGpBoIDAAEGAjMAAEEoACyALBEAgDCALQQEQmQELAkACQAJ/IA4oAghBgICAgHhGBEBBASEAIA4oAgwMAQtB1ABBBBCgASIBRQ0BQQAhACABQQA2AgggAUKBgICAEDcCACABQQxqIA5BCGpByAD8CgAAIAFBCGoLIQEgDSAANgIIIA0gAUEAIAAbNgIEIA1BACABIAAbNgIAIA5B0ABqJAAMAQtBBEHUABClAQALIA0oAgAgDSgCBCANKAIIIA1BEGokAAslACAARQRAQZ2VwABBMhChAQALIAAgAiADIAQgBSABKAIQEQwACyMAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgBCABKAIQERoACyMAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgBCABKAIQEQoACyMAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgBCABKAIQERsACyMAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgBCABKAIQERwACyEAIABFBEBBnZXAAEEyEKEBAAsgACACIAMgASgCEBEFAAshACAARQRAQZ2VwABBMhChAQALIAAgAiADIAEoAhARAQALHwAgAEUEQEGdlcAAQTIQoQEACyAAIAIgASgCEBEAAAsdAQF/IAAoAgAiAUEASgRAIAAoAgQgAUEBEJkBCwsaAQF/IAAoAgAiAQRAIAAoAgQgAUEBEJkBCwseACAABEAgACABEKUBAAtBwKHAAEEjQdShwAAQXQALEQAgACABQQF0QQFyIAIQXQALHAAgAEH8jcAAKQIANwIIIABB9I3AACkCADcCAAscACAAQZSUwAApAgA3AgggAEGMlMAAKQIANwIACxwAIABBxJfAACkCADcCCCAAQbyX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AEEEajYCBCAAKAIIIAAoAgwQqwEgACAAKAIAQQFrNgIAIAMgAygCAEEBayIANgIAIABFBEAgAUEMahAtCyABQRBqJAAMAwsQogELAAsQowEACyIAJQEgABA/C7cBAgN/AW8CfyMAQRBrIgEkAAJAAkAgAARAIABBCGsiAyADKAIAQQFqIgI2AgAgAkUNASAAKAIAIgJB/////wdPDQIgACACQQFqNgIAIAEgAzYCDCABIAA2AgggASAAQQRqNgIEIAAoAhQgACgCGBCrASAAIAAoAgBBAWs2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCABQQxqEC0LIAFBEGokAAwDCxCiAQsACxCjAQALIgAlASAAED8LtwECA38BbwJ/IwBBEGsiASQAAkACQCAABEAgAEEIayIDIAMoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgASADNgIMIAEgADYCCCABIABBBGo2AgQgACgCOCAAKAI8EKwBIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBDGoQLQsgAUEQaiQADAMLEKIBCwALEKMBAAsiACUBIAAQPwu3AQIDfwFvAn8jAEEQayIBJAACQAJAIAAEQCAAQQhrIgMgAygCAEEBaiICNgIAIAJFDQEgACgCACICQf////8HTw0CIAAgAkEBajYCACABIAM2AgwgASAANgIIIAEgAEEEajYCBCAAKAJEIAAoAkgQqwEgACAAKAIAQQFrNgIAIAMgAygCAEEBayIANgIAIABFBEAgAUEMahAtCyABQRBqJAAMAwsQogELAAsQowEACyIAJQEgABA/C7cBAgN/AW8CfyMAQRBrIgEkAAJAAkAgAARAIABBCGsiAyADKAIAQQFqIgI2AgAgAkUNASAAKAIAIgJB/////wdPDQIgACACQQFqNgIAIAEgAzYCDCABIAA2AgggASAAQQRqNgIEIAAoAiAgACgCJBCrASAAIAAoAgBBAWs2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCABQQxqEC0LIAFBEGokAAwDCxCiAQsACxCjAQALIgAlASAAED8LtwECA38BbwJ/IwBBEGsiASQAAkACQCAABEAgAEEIayIDIAMoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgASADNgIMIAEgADYCCCABIABBBGo2AgQgACgCLCAAKAIwEKsBIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBDGoQLgsgAUEQaiQADAMLEKIBCwALEKMBAAsiACUBIAAQPwu3AQIDfwFvAn8jAEEQayIBJAACQAJAIAAEQCAAQQhrIgMgAygCAEEBaiICNgIAIAJFDQEgACgCACICQf////8HTw0CIAAgAkEBajYCACABIAM2AgwgASAANgIIIAEgAEEEajYCBCAAKAIIIAAoAgwQqwEgACAAKAIAQQFrNgIAIAMgAygCAEEBayIANgIAIABFBEAgAUEMahAuCyABQRBqJAAMAwsQogELAAsQowEACyIAJQEgABA/C7cBAgN/AW8CfyMAQRBrIgEkAAJAAkAgAARAIABBCGsiAyADKAIAQQFqIgI2AgAgAkUNASAAKAIAIgJB/////wdPDQIgACACQQFqNgIAIAEgAzYCDCABIAA2AgggASAAQQRqNgIEIAAoAkQgACgCSBCrASAAIAAoAgBBAWs2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCABQQxqEC4LIAFBEGokAAwDCxCiAQsACxCjAQALIgAlASAAED8LtwECA38BbwJ/IwBBEGsiASQAAkACQCAABEAgAEEIayIDIAMoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgASADNgIMIAEgADYCCCABIABBBGo2AgQgACgCOCAAKAI8EKoBIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBDGoQLgsgAUEQaiQADAMLEKIBCwALEKMBAAsiACUBIAAQPwu3AQIDfwFvAn8jAEEQayIBJAACQAJAIAAEQCAAQQhrIgMgAygCAEEBaiICNgIAIAJFDQEgACgCACICQf////8HTw0CIAAgAkEBajYCACABIAM2AgwgASAANgIIIAEgAEEEajYCBCAAKAIUIAAoAhgQrAEgACAAKAIAQQFrNgIAIAMgAygCAEEBayIANgIAIABFBEAgAUEMahAuCyABQRBqJAAMAwsQogELAAsQowEACyIAJQEgABA/C7cBAgN/AW8CfyMAQRBrIgEkAAJAAkAgAARAIABBCGsiAyADKAIAQQFqIgI2AgAgAkUNASAAKAIAIgJB/////wdPDQIgACACQQFqNgIAIAEgAzYCDCABIAA2AgggASAAQQRqNgIEIAAoAiAgACgCJBCsASAAIAAoAgBBAWs2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCABQQxqEC4LIAFBEGokAAwDCxCiAQsACxCjAQALIgAlASAAED8LtwECA38BbwJ/IwBBEGsiASQAAkACQCAABEAgAEEIayIDIAMoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgASADNgIMIAEgADYCCCABIABBBGo2AgQgACgCLCAAKAIwEKwBIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBDGoQOAsgAUEQaiQADAMLEKIBCwALEKMBAAsiACUBIAAQPwu3AQIDfwFvAn8jAEEQayIBJAACQAJAIAAEQCAAQQhrIgMgAygCAEEBaiICNgIAIAJFDQEgACgCACICQf////8HTw0CIAAgAkEBajYCACABIAM2AgwgASAANgIIIAEgAEEEajYCBCAAKAIIIAAoAgwQrAEgACAAKAIAQQFrNgIAIAMgAygCAEEBayIANgIAIABFBEAgAUEMahA4CyABQRBqJAAMAwsQogELAAsQowEACyIAJQEgABA/C7cBAgN/AW8CfyMAQRBrIgEkAAJAAkAgAARAIABBCGsiAyADKAIAQQFqIgI2AgAgAkUNASAAKAIAIgJB/////wdPDQIgACACQQFqNgIAIAEgAzYCDCABIAA2AgggASAAQQRqNgIEIAAoAiAgACgCJBCqASAAIAAoAgBBAWs2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCABQQxqEDgLIAFBEGokAAwDCxCiAQsACxCjAQALIgAlASAAED8LtwECA38BbwJ/IwBBEGsiASQAAkACQCAABEAgAEEIayIDIAMoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgASADNgIMIAEgADYCCCABIABBBGo2AgQgACgCFCAAKAIYEKwBIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBDGoQOAsgAUEQaiQADAMLEKIBCwALEKMBAAsiACUBIAAQPwsPACAAQfCUwAAgASACEBULXwEBfwJAAkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABANDAILQcyXwABBLkH8l8AAEHcAC0GMmMAAQS5BvJjAABB3AAsLDwAgAEHclsAAIAEgAhAVC5IBAQF/IwBBIGsiAiQAAn8gAEEMaiIALQAEQQFGBEAgAiAALQAFOgAPIAIgAK1CgICAgMAKhDcDGCACIAJBD2qtQoCAgICgC4Q3AxAgASgCACABKAIEQY2DwAAgAkEQahAVDAELIAIgAK1CgICAgMAKhDcDECABKAIAIAEoAgRBvoPAACACQRBqEBULIAJBIGokAAsPACAAQeShwAAgASACEBULDgBBka3AAEErIAAQdwALDwAgAEG0rMAAIAEgAhAVCw0AIAFBgIDAAEEFEHwLGQACfyABQQlPBEAgASAAEBsMAQsgABAGCwsJACAAIAEQAAALDQBBz5XAAEEbEKEBAAsOAEHqlcAAQc8AEKEBAAsMACAAIAEpAgA3AwALPQEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoiACgCACAAKAIEQfSdwQAoAgAiAEE8IAAbEQIAAAsNACABQfSiwABBBRB8Cw0AIAFBtJ3BAEEYEBELCgAgAiAAIAEQEQsJACAAQQA2AgALFgEBbyAAIAEQBSECECAiACACJgEgAAsWAQFvIAAgARAEIQIQICIAIAImASAACxYBAW8gACABEAMhAhAgIgAgAiYBIAALFgEBbyAAIAEQASECECAiACACJgEgAAsMAEHMocEAQQE6AAALAgALC7yaASUAQYCAwAALHUVycm9yAAAAAQAAAAwAAAAEAAAAAgAAAAMAAAAEAEGogMAAC9EhAQAAAAUAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5DWJlZ2luID4gZW5kICjAAyA+IMAQKSB3aGVuIHNsaWNpbmcgYMABYMAAEXN0YXJ0IGJ5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAAPZW5kIGJ5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAARc3RhcnQgYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMAGKSBvZiBgwAFgwAAPZW5kIGJ5dGUgaW5kZXggwCYgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlIMAIIChieXRlcyDABikgb2YgYMABYMAAGmludmFsaWQgdXRmLTggc2VxdWVuY2Ugb2YgwBIgYnl0ZXMgZnJvbSBpbmRleCDAACppbmNvbXBsZXRlIHV0Zi04IGJ5dGUgc2VxdWVuY2UgZnJvbSBpbmRleCDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAA91bmtub3duIG1vZGVsOiDAAMACOiDAAC9ydXN0Yy81OTgwNzYxNmUxZmEyNTQwNzI0YmZiYWMxNGQ3OTc2ZDdlNGEzODYwL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL251bS9kZWMyZmx0L2RlY2ltYWxfc2VxLnJzAC9ydXN0Yy81OTgwNzYxNmUxZmEyNTQwNzI0YmZiYWMxNGQ3OTc2ZDdlNGEzODYwL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTIyL3NyYy9leHRlcm5yZWYucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9jb3JlL3NyYy9udW0vZGVjMmZsdC9wYXJzZS5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvcHJpbnRhYmxlLnJzAC9ydXN0Yy81OTgwNzYxNmUxZmEyNTQwNzI0YmZiYWMxNGQ3OTc2ZDdlNGEzODYwL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAwAsgKG9zIGVycm9yIMABKQDHAxAASwAAAGQLAAAOAAAAYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyAABPBhAAGwAAACUAAAACAAAAbAYQAAYAAAAMAAAABAAAAAcAAAAGAAAADAAAAAQAAAAIAAAABwAAAIAGEAAJAAAACgAAAAsAAAAJAAAADAAAAAAAAAAEAAAABAAAAA0AAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF58m+HWZL/RDZX7IFmqHlgp2NhbWVyYV9pZG1pc3NpbmcgbW9kZWxTSU1QTEVfUElOSE9MRVBJTkhPTEVTSU1QTEVfUkFESUFMUkFESUFMT1BFTkNWT1BFTkNWX0ZJU0hFWUVGVUxMX09QRU5DVkZPVlNJTVBMRV9SQURJQUxfRklTSEVZRVJBRElBTF9GSVNIRVlFVEhJTl9QUklTTV9GSVNIRVlFAAAAGgcQAA4AAAADAAAAKAcQAAcAAAAEAAAALwcQAA0AAAAEAAAAPAcQAAYAAAAFAAAAQgcQAAYAAAAIAAAASAcQAA4AAAAIAAAAVgcQAAsAAAAMAAAAYQcQAAMAAAAFAAAAZAcQABUAAAAEAAAAeQcQAA4AAAAFAAAAhwcQABIAAAAMAAAAd2lkdGhoZWlnaHRwYXJhbXcDEABPAAAAzQEAADcAAABpbWFnZV9pZHF3cXhxeXF6dHh0eXR6Y2FtZXJhX2lkbWlzc2luZyBuYW1lAA8AAAAMAAAABAAAABAAAAAAAAAABAAAAAQAAAARAAAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3IAAAAAAAQAAAAEAAAAEgAAAAAAAAAEAAAABAAAABMAAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblNJTVBMRV9QSU5IT0xFUElOSE9MRVNJTVBMRV9SQURJQUxSQURJQUxPUEVOQ1ZPUEVOQ1ZfRklTSEVZRUZVTExfT1BFTkNWRk9WU0lNUExFX1JBRElBTF9GSVNIRVlFUkFESUFMX0ZJU0hFWUVUSElOX1BSSVNNX0ZJU0hFWUXhCBAADgAAAAMAAADvCBAABwAAAAQAAAD2CBAADQAAAAQAAAADCRAABgAAAAUAAAAJCRAABgAAAAgAAAAPCRAADgAAAAgAAAAdCRAACwAAAAwAAAAoCRAAAwAAAAUAAAArCRAAFQAAAAQAAABACRAADgAAAAUAAABOCRAAEgAAAAwAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5AALvkJkI9sFdEKGzejihQRQAAAAUAAAABAAAABUAAAAUAAAAFAAAAAQAAAAWAAAAFQAAABwKEAAXAAAAGAAAABkAAAAXAAAAGgAAAE5vbmUAAAAABAAAAAQAAAANAAAAU29tZRsAAAAMAAAABAAAABwAAAAdAAAABAAAAHBvaW50M2RfaWR4eXpyZ2JlcnJvcmNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAAAABMEEABnAAAAhAAAABEAAAATBBAAZwAAAJIAAAARAAAAQAAAAAwAAAAEAAAAQQAAAEIAAABDAAAAAAAAAAgAAAAEAAAARAAAAEUAAABGAAAARwAAAEgAAAAQAAAABAAAAEkAAABKAAAASwAAAEwAAABtXcvWLFDrY3hBpldxG4u5FaJcVTRVB9RTeK2BUfCj92Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAMQFEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADEBRAAKgAAALcEAAANAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBl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", NA = async (I = {}, A) => {
11
+ let g;
12
+ if (A.startsWith("data:")) {
13
+ let B = A.replace(/^data:.*?base64,/, ""), Q;
14
+ if (typeof Buffer == "function" && typeof Buffer.from == "function") Q = Buffer.from(B, "base64");
15
+ else if (typeof atob == "function") {
16
+ let E = atob(B);
17
+ Q = new Uint8Array(E.length);
18
+ for (let C = 0; C < E.length; C++) Q[C] = E.charCodeAt(C);
19
+ } else throw Error("Cannot decode base64-encoded data URL");
20
+ g = await WebAssembly.instantiate(Q, I);
21
+ } else {
22
+ let B = await fetch(A), Q = B.headers.get("Content-Type") || "";
23
+ if ("instantiateStreaming" in WebAssembly && Q.startsWith("application/wasm")) g = await WebAssembly.instantiateStreaming(B, I);
24
+ else {
25
+ let E = await B.arrayBuffer();
26
+ g = await WebAssembly.instantiate(E, I);
27
+ }
28
+ }
29
+ return g.instance.exports;
30
+ }, X = class eA {
31
+ static __wrap(A) {
32
+ let g = Object.create(eA.prototype);
33
+ return g.__wbg_ptr = A, CA.register(g, g.__wbg_ptr, g), g;
34
+ }
35
+ __destroy_into_raw() {
36
+ let A = this.__wbg_ptr;
37
+ return this.__wbg_ptr = 0, CA.unregister(this), A;
38
+ }
39
+ free() {
40
+ let A = this.__destroy_into_raw();
41
+ s.__wbg_parsedcameraswasm_free(A, 0);
42
+ }
43
+ heights() {
44
+ return s.parsedcameraswasm_heights(this.__wbg_ptr);
45
+ }
46
+ ids() {
47
+ return s.parsedcameraswasm_ids(this.__wbg_ptr);
48
+ }
49
+ len() {
50
+ return s.parsedcameraswasm_len(this.__wbg_ptr) >>> 0;
51
+ }
52
+ model_ids() {
53
+ return s.parsedcameraswasm_model_ids(this.__wbg_ptr);
54
+ }
55
+ params_flat() {
56
+ return s.parsedcameraswasm_params_flat(this.__wbg_ptr);
57
+ }
58
+ params_offsets() {
59
+ return s.parsedcameraswasm_params_offsets(this.__wbg_ptr);
60
+ }
61
+ widths() {
62
+ return s.parsedcameraswasm_widths(this.__wbg_ptr);
63
+ }
64
+ };
65
+ Symbol.dispose && (X.prototype[Symbol.dispose] = X.prototype.free);
66
+ var V = class oA {
67
+ static __wrap(A) {
68
+ let g = Object.create(oA.prototype);
69
+ return g.__wbg_ptr = A, EA.register(g, g.__wbg_ptr, g), g;
70
+ }
71
+ __destroy_into_raw() {
72
+ let A = this.__wbg_ptr;
73
+ return this.__wbg_ptr = 0, EA.unregister(this), A;
74
+ }
75
+ free() {
76
+ let A = this.__destroy_into_raw();
77
+ s.__wbg_parsedimageswasm_free(A, 0);
78
+ }
79
+ camera_ids() {
80
+ return s.parsedimageswasm_camera_ids(this.__wbg_ptr);
81
+ }
82
+ ids() {
83
+ return s.parsedimageswasm_ids(this.__wbg_ptr);
84
+ }
85
+ len() {
86
+ return s.parsedimageswasm_len(this.__wbg_ptr) >>> 0;
87
+ }
88
+ name_offsets() {
89
+ return s.parsedimageswasm_name_offsets(this.__wbg_ptr);
90
+ }
91
+ names_bytes() {
92
+ return s.parsedimageswasm_names_bytes(this.__wbg_ptr);
93
+ }
94
+ qvecs() {
95
+ return s.parsedimageswasm_qvecs(this.__wbg_ptr);
96
+ }
97
+ tvecs() {
98
+ return s.parsedimageswasm_tvecs(this.__wbg_ptr);
99
+ }
100
+ };
101
+ Symbol.dispose && (V.prototype[Symbol.dispose] = V.prototype.free);
102
+ var P = class aA {
103
+ static __wrap(A) {
104
+ let g = Object.create(aA.prototype);
105
+ return g.__wbg_ptr = A, tA.register(g, g.__wbg_ptr, g), g;
106
+ }
107
+ __destroy_into_raw() {
108
+ let A = this.__wbg_ptr;
109
+ return this.__wbg_ptr = 0, tA.unregister(this), A;
110
+ }
111
+ free() {
112
+ let A = this.__destroy_into_raw();
113
+ s.__wbg_parsedpoints3dwasm_free(A, 0);
114
+ }
115
+ errors() {
116
+ return s.parsedpoints3dwasm_errors(this.__wbg_ptr);
117
+ }
118
+ ids() {
119
+ return s.parsedpoints3dwasm_ids(this.__wbg_ptr);
120
+ }
121
+ len() {
122
+ return s.parsedpoints3dwasm_len(this.__wbg_ptr) >>> 0;
123
+ }
124
+ rgb() {
125
+ return s.parsedpoints3dwasm_rgb(this.__wbg_ptr);
126
+ }
127
+ xyz() {
128
+ return s.parsedpoints3dwasm_xyz(this.__wbg_ptr);
129
+ }
130
+ };
131
+ Symbol.dispose && (P.prototype[Symbol.dispose] = P.prototype.free);
132
+ function RA(I) {
133
+ let A = $(I, s.__wbindgen_malloc), g = m, B = s.parse_cameras_bin(A, g);
134
+ if (B[2]) throw b(B[1]);
135
+ return X.__wrap(B[0]);
136
+ }
137
+ function MA(I) {
138
+ let A = AA(I, s.__wbindgen_malloc, s.__wbindgen_realloc), g = m, B = s.parse_cameras_txt(A, g);
139
+ if (B[2]) throw b(B[1]);
140
+ return X.__wrap(B[0]);
141
+ }
142
+ function kA(I) {
143
+ let A = $(I, s.__wbindgen_malloc), g = m, B = s.parse_images_bin(A, g);
144
+ if (B[2]) throw b(B[1]);
145
+ return V.__wrap(B[0]);
146
+ }
147
+ function YA(I) {
148
+ let A = AA(I, s.__wbindgen_malloc, s.__wbindgen_realloc), g = m, B = s.parse_images_txt(A, g);
149
+ if (B[2]) throw b(B[1]);
150
+ return V.__wrap(B[0]);
151
+ }
152
+ function JA(I) {
153
+ let A = $(I, s.__wbindgen_malloc), g = m, B = s.parse_points3d_bin(A, g);
154
+ if (B[2]) throw b(B[1]);
155
+ return P.__wrap(B[0]);
156
+ }
157
+ function UA(I) {
158
+ let A = AA(I, s.__wbindgen_malloc, s.__wbindgen_realloc), g = m, B = s.parse_points3d_txt(A, g);
159
+ if (B[2]) throw b(B[1]);
160
+ return P.__wrap(B[0]);
161
+ }
162
+ function mA(I, A) {
163
+ return Error(nA(I, A));
164
+ }
165
+ function pA(I, A) {
166
+ throw Error(nA(I, A));
167
+ }
168
+ function SA(I, A) {
169
+ return fA(I, A);
170
+ }
171
+ function LA(I, A) {
172
+ return HA(I, A);
173
+ }
174
+ function KA(I, A) {
175
+ return bA(I, A);
176
+ }
177
+ function uA() {
178
+ let I = s.__wbindgen_externrefs, A = I.grow(4);
179
+ I.set(0, void 0), I.set(A + 0, void 0), I.set(A + 1, null), I.set(A + 2, !0), I.set(A + 3, !1);
180
+ }
181
+ var CA = typeof FinalizationRegistry > "u" ? {
182
+ register: () => {
183
+ },
184
+ unregister: () => {
185
+ }
186
+ } : new FinalizationRegistry((I) => s.__wbg_parsedcameraswasm_free(I, 1)), EA = typeof FinalizationRegistry > "u" ? {
187
+ register: () => {
188
+ },
189
+ unregister: () => {
190
+ }
191
+ } : new FinalizationRegistry((I) => s.__wbg_parsedimageswasm_free(I, 1)), tA = typeof FinalizationRegistry > "u" ? {
192
+ register: () => {
193
+ },
194
+ unregister: () => {
195
+ }
196
+ } : new FinalizationRegistry((I) => s.__wbg_parsedpoints3dwasm_free(I, 1));
197
+ function fA(I, A) {
198
+ return I >>>= 0, qA().subarray(I / 8, I / 8 + A);
199
+ }
200
+ function HA(I, A) {
201
+ return I >>>= 0, ZA().subarray(I / 4, I / 4 + A);
202
+ }
203
+ function bA(I, A) {
204
+ return I >>>= 0, H().subarray(I / 1, I / 1 + A);
205
+ }
206
+ var Z = null;
207
+ function qA() {
208
+ return (Z === null || Z.byteLength === 0) && (Z = new Float64Array(s.memory.buffer)), Z;
209
+ }
210
+ function nA(I, A) {
211
+ return xA(I >>> 0, A);
212
+ }
213
+ var _ = null;
214
+ function ZA() {
215
+ return (_ === null || _.byteLength === 0) && (_ = new Uint32Array(s.memory.buffer)), _;
216
+ }
217
+ var x = null;
218
+ function H() {
219
+ return (x === null || x.byteLength === 0) && (x = new Uint8Array(s.memory.buffer)), x;
220
+ }
221
+ function $(I, A) {
222
+ let g = A(I.length * 1, 1) >>> 0;
223
+ return H().set(I, g / 1), m = I.length, g;
224
+ }
225
+ function AA(I, A, g) {
226
+ if (g === void 0) {
227
+ let t = q.encode(I), e = A(t.length, 1) >>> 0;
228
+ return H().subarray(e, e + t.length).set(t), m = t.length, e;
229
+ }
230
+ let B = I.length, Q = A(B, 1) >>> 0, E = H(), C = 0;
231
+ for (; C < B; C++) {
232
+ let t = I.charCodeAt(C);
233
+ if (t > 127) break;
234
+ E[Q + C] = t;
235
+ }
236
+ if (C !== B) {
237
+ C !== 0 && (I = I.slice(C)), Q = g(Q, B, B = C + I.length * 3, 1) >>> 0;
238
+ let t = H().subarray(Q + C, Q + B), e = q.encodeInto(I, t);
239
+ C += e.written, Q = g(Q, B, C, 1) >>> 0;
240
+ }
241
+ return m = C, Q;
242
+ }
243
+ function b(I) {
244
+ let A = s.__wbindgen_externrefs.get(I);
245
+ return s.__externref_table_dealloc(I), A;
246
+ }
247
+ var W = new TextDecoder("utf-8", {
248
+ ignoreBOM: !0,
249
+ fatal: !0
250
+ });
251
+ W.decode();
252
+ var _A = 2146435072, j = 0;
253
+ function xA(I, A) {
254
+ return j += A, j >= _A && (W = new TextDecoder("utf-8", {
255
+ ignoreBOM: !0,
256
+ fatal: !0
257
+ }), W.decode(), j = A), W.decode(H().subarray(I, I + A));
258
+ }
259
+ var q = new TextEncoder();
260
+ "encodeInto" in q || (q.encodeInto = function(I, A) {
261
+ let g = q.encode(I);
262
+ return A.set(g), {
263
+ read: I.length,
264
+ written: g.length
265
+ };
266
+ });
267
+ var m = 0, s;
268
+ function TA(I) {
269
+ s = I;
270
+ }
271
+ var WA = /* @__PURE__ */ dA({
272
+ __externref_table_dealloc: () => GI,
273
+ __wbg_parsedcameraswasm_free: () => VA,
274
+ __wbg_parsedimageswasm_free: () => PA,
275
+ __wbg_parsedpoints3dwasm_free: () => zA,
276
+ __wbindgen_externrefs: () => FI,
277
+ __wbindgen_malloc: () => dI,
278
+ __wbindgen_realloc: () => NI,
279
+ __wbindgen_start: () => hA,
280
+ memory: () => XA,
281
+ parse_cameras_bin: () => jA,
282
+ parse_cameras_txt: () => vA,
283
+ parse_images_bin: () => OA,
284
+ parse_images_txt: () => $A,
285
+ parse_points3d_bin: () => AI,
286
+ parse_points3d_txt: () => II,
287
+ parsedcameraswasm_heights: () => gI,
288
+ parsedcameraswasm_ids: () => BI,
289
+ parsedcameraswasm_len: () => QI,
290
+ parsedcameraswasm_model_ids: () => CI,
291
+ parsedcameraswasm_params_flat: () => EI,
292
+ parsedcameraswasm_params_offsets: () => tI,
293
+ parsedcameraswasm_widths: () => iI,
294
+ parsedimageswasm_camera_ids: () => sI,
295
+ parsedimageswasm_ids: () => eI,
296
+ parsedimageswasm_len: () => lI,
297
+ parsedimageswasm_name_offsets: () => oI,
298
+ parsedimageswasm_names_bytes: () => aI,
299
+ parsedimageswasm_qvecs: () => nI,
300
+ parsedimageswasm_tvecs: () => hI,
301
+ parsedpoints3dwasm_errors: () => wI,
302
+ parsedpoints3dwasm_ids: () => DI,
303
+ parsedpoints3dwasm_len: () => rI,
304
+ parsedpoints3dwasm_rgb: () => cI,
305
+ parsedpoints3dwasm_xyz: () => yI
306
+ });
307
+ URL = globalThis.URL;
308
+ var { memory: XA, __wbg_parsedcameraswasm_free: VA, __wbg_parsedimageswasm_free: PA, __wbg_parsedpoints3dwasm_free: zA, parse_cameras_bin: jA, parse_cameras_txt: vA, parse_images_bin: OA, parse_images_txt: $A, parse_points3d_bin: AI, parse_points3d_txt: II, parsedcameraswasm_heights: gI, parsedcameraswasm_ids: BI, parsedcameraswasm_len: QI, parsedcameraswasm_model_ids: CI, parsedcameraswasm_params_flat: EI, parsedcameraswasm_params_offsets: tI, parsedcameraswasm_widths: iI, parsedimageswasm_camera_ids: sI, parsedimageswasm_ids: eI, parsedimageswasm_name_offsets: oI, parsedimageswasm_names_bytes: aI, parsedimageswasm_qvecs: nI, parsedimageswasm_tvecs: hI, parsedpoints3dwasm_errors: wI, parsedpoints3dwasm_ids: DI, parsedpoints3dwasm_len: rI, parsedpoints3dwasm_rgb: cI, parsedpoints3dwasm_xyz: yI, parsedimageswasm_len: lI, __wbindgen_externrefs: FI, __wbindgen_malloc: dI, __externref_table_dealloc: GI, __wbindgen_realloc: NI, __wbindgen_start: hA } = await NA({ "./colmap_wasm_bg.js": {
309
+ __wbg___wbindgen_throw_1506f2235d1bdba0: pA,
310
+ __wbg_Error_ef53bc310eb298a0: mA,
311
+ __wbindgen_init_externref_table: uA,
312
+ __wbindgen_cast_0000000000000001: SA,
313
+ __wbindgen_cast_0000000000000002: LA,
314
+ __wbindgen_cast_0000000000000003: KA
315
+ } }, GA);
316
+ TA(WA), hA();
317
+ var RI = {
318
+ 0: "SIMPLE_PINHOLE",
319
+ 1: "PINHOLE",
320
+ 2: "SIMPLE_RADIAL",
321
+ 3: "RADIAL",
322
+ 4: "OPENCV",
323
+ 5: "OPENCV_FISHEYE",
324
+ 6: "FULL_OPENCV",
325
+ 7: "FOV",
326
+ 8: "SIMPLE_RADIAL_FISHEYE",
327
+ 9: "RADIAL_FISHEYE",
328
+ 10: "THIN_PRISM_FISHEYE"
329
+ };
330
+ function MI(I) {
331
+ let A = I.len(), g = I.ids(), B = I.model_ids(), Q = I.widths(), E = I.heights(), C = I.params_flat(), t = I.params_offsets(), e = Array(A);
332
+ for (let i = 0; i < A; i++) {
333
+ let a = t[i], h = t[i + 1];
334
+ e[i] = {
335
+ id: g[i],
336
+ model: RI[B[i]] ?? `UNKNOWN_${B[i]}`,
337
+ width: Q[i],
338
+ height: E[i],
339
+ params: Array.from(C.subarray(a, h))
340
+ };
341
+ }
342
+ return I.free(), e;
343
+ }
344
+ function kI(I) {
345
+ let A = I.len(), g = I.ids(), B = I.qvecs(), Q = I.tvecs(), E = I.camera_ids(), C = I.names_bytes(), t = I.name_offsets(), e = new TextDecoder("utf-8"), i = Array(A);
346
+ for (let a = 0; a < A; a++) i[a] = {
347
+ id: g[a],
348
+ qvec: [
349
+ B[a * 4],
350
+ B[a * 4 + 1],
351
+ B[a * 4 + 2],
352
+ B[a * 4 + 3]
353
+ ],
354
+ tvec: [
355
+ Q[a * 3],
356
+ Q[a * 3 + 1],
357
+ Q[a * 3 + 2]
358
+ ],
359
+ cameraId: E[a],
360
+ name: e.decode(C.subarray(t[a], t[a + 1]))
361
+ };
362
+ return I.free(), i;
363
+ }
364
+ function YI(I) {
365
+ let A = I.len(), g = I.ids(), B = I.xyz(), Q = I.rgb(), E = I.errors(), C = Array(A);
366
+ for (let t = 0; t < A; t++) C[t] = {
367
+ id: g[t],
368
+ xyz: [
369
+ B[t * 3],
370
+ B[t * 3 + 1],
371
+ B[t * 3 + 2]
372
+ ],
373
+ rgb: [
374
+ Q[t * 3],
375
+ Q[t * 3 + 1],
376
+ Q[t * 3 + 2]
377
+ ],
378
+ error: E[t]
379
+ };
380
+ return I.free(), C;
381
+ }
382
+ async function JI(I) {
383
+ return MI(I instanceof ArrayBuffer ? RA(new Uint8Array(I)) : MA(I));
384
+ }
385
+ async function UI(I) {
386
+ return kI(I instanceof ArrayBuffer ? kA(new Uint8Array(I)) : YA(I));
387
+ }
388
+ async function mI(I) {
389
+ return YI(I instanceof ArrayBuffer ? JA(new Uint8Array(I)) : UA(I));
390
+ }
391
+ async function wA(I) {
392
+ let [A, g] = await Promise.all([JI(I.cameras), UI(I.images)]);
393
+ return {
394
+ cameras: A,
395
+ images: g,
396
+ points3d: I.points3d ? await mI(I.points3d) : []
397
+ };
398
+ }
399
+ const iA = { type: "change" }, IA = { type: "start" }, DA = { type: "end" }, T = new yA(), sA = new lA(), pI = Math.cos(70 * FA.DEG2RAD), r = new k(), l = 2 * Math.PI, n = {
5
400
  NONE: -1,
6
401
  ROTATE: 0,
7
402
  DOLLY: 1,
@@ -10,19 +405,19 @@ const F = { type: "change" }, Y = { type: "start" }, B = { type: "end" }, N = ne
10
405
  TOUCH_PAN: 4,
11
406
  TOUCH_DOLLY_PAN: 5,
12
407
  TOUCH_DOLLY_ROTATE: 6
13
- }, I = 1e-6;
14
- class J extends W {
408
+ }, v = 1e-6;
409
+ class SI extends cA {
15
410
  /**
16
411
  * Constructs a new controls instance.
17
412
  *
18
413
  * @param {Object3D} object - The object that is managed by the controls.
19
414
  * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
20
415
  */
21
- constructor(t, e = null) {
22
- super(t, e), this.state = d.NONE, this.target = new S(), this.cursor = new S(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: j.ROTATE, MIDDLE: j.DOLLY, RIGHT: j.PAN }, this.touches = { ONE: k.ROTATE, TWO: k.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new S(), this._lastQuaternion = new H(), this._lastTargetPosition = new S(), this._quat = new H().setFromUnitVectors(t.up, new S(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new Z(), this._sphericalDelta = new Z(), this._scale = 1, this._panOffset = new S(), this._rotateStart = new P(), this._rotateEnd = new P(), this._rotateDelta = new P(), this._panStart = new P(), this._panEnd = new P(), this._panDelta = new P(), this._dollyStart = new P(), this._dollyEnd = new P(), this._dollyDelta = new P(), this._dollyDirection = new S(), this._mouse = new P(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = et.bind(this), this._onPointerDown = tt.bind(this), this._onPointerUp = st.bind(this), this._onContextMenu = lt.bind(this), this._onMouseWheel = nt.bind(this), this._onKeyDown = at.bind(this), this._onTouchStart = rt.bind(this), this._onTouchMove = ht.bind(this), this._onMouseDown = it.bind(this), this._onMouseMove = ot.bind(this), this._interceptControlDown = ct.bind(this), this._interceptControlUp = dt.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
416
+ constructor(A, g = null) {
417
+ super(A, g), this.state = n.NONE, this.target = new k(), this.cursor = new k(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: f.ROTATE, MIDDLE: f.DOLLY, RIGHT: f.PAN }, this.touches = { ONE: u.ROTATE, TWO: u.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new k(), this._lastQuaternion = new gA(), this._lastTargetPosition = new k(), this._quat = new gA().setFromUnitVectors(A.up, new k(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new BA(), this._sphericalDelta = new BA(), this._scale = 1, this._panOffset = new k(), this._rotateStart = new G(), this._rotateEnd = new G(), this._rotateDelta = new G(), this._panStart = new G(), this._panEnd = new G(), this._panDelta = new G(), this._dollyStart = new G(), this._dollyEnd = new G(), this._dollyDelta = new G(), this._dollyDirection = new k(), this._mouse = new G(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = KI.bind(this), this._onPointerDown = LI.bind(this), this._onPointerUp = uI.bind(this), this._onContextMenu = xI.bind(this), this._onMouseWheel = bI.bind(this), this._onKeyDown = qI.bind(this), this._onTouchStart = ZI.bind(this), this._onTouchMove = _I.bind(this), this._onMouseDown = fI.bind(this), this._onMouseMove = HI.bind(this), this._interceptControlDown = TI.bind(this), this._interceptControlUp = WI.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
23
418
  }
24
- connect(t) {
25
- super.connect(t), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, { passive: !0, capture: !0 }), this.domElement.style.touchAction = "none";
419
+ connect(A) {
420
+ super.connect(A), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, { passive: !0, capture: !0 }), this.domElement.style.touchAction = "none";
26
421
  }
27
422
  disconnect() {
28
423
  this.domElement.removeEventListener("pointerdown", this._onPointerDown), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.domElement.removeEventListener("pointercancel", this._onPointerUp), this.domElement.removeEventListener("wheel", this._onMouseWheel), this.domElement.removeEventListener("contextmenu", this._onContextMenu), this.stopListenToKeyEvents(), this.domElement.getRootNode().removeEventListener("keydown", this._interceptControlDown, { capture: !0 }), this.domElement.style.touchAction = "auto";
@@ -60,8 +455,8 @@ class J extends W {
60
455
  *
61
456
  * @param {HTMLDOMElement} domElement - The DOM element
62
457
  */
63
- listenToKeyEvents(t) {
64
- t.addEventListener("keydown", this._onKeyDown), this._domElementKeyEvents = t;
458
+ listenToKeyEvents(A) {
459
+ A.addEventListener("keydown", this._onKeyDown), this._domElementKeyEvents = A;
65
460
  }
66
461
  /**
67
462
  * Removes the key event listener previously defined with `listenToKeyEvents()`.
@@ -80,502 +475,502 @@ class J extends W {
80
475
  * was called, or the initial state.
81
476
  */
82
477
  reset() {
83
- this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(F), this.update(), this.state = d.NONE;
84
- }
85
- update(t = null) {
86
- const e = this.object.position;
87
- _.copy(e).sub(this.target), _.applyQuaternion(this._quat), this._spherical.setFromVector3(_), this.autoRotate && this.state === d.NONE && this._rotateLeft(this._getAutoRotationAngle(t)), this.enableDamping ? (this._spherical.theta += this._sphericalDelta.theta * this.dampingFactor, this._spherical.phi += this._sphericalDelta.phi * this.dampingFactor) : (this._spherical.theta += this._sphericalDelta.theta, this._spherical.phi += this._sphericalDelta.phi);
88
- let i = this.minAzimuthAngle, o = this.maxAzimuthAngle;
89
- isFinite(i) && isFinite(o) && (i < -Math.PI ? i += y : i > Math.PI && (i -= y), o < -Math.PI ? o += y : o > Math.PI && (o -= y), i <= o ? this._spherical.theta = Math.max(i, Math.min(o, this._spherical.theta)) : this._spherical.theta = this._spherical.theta > (i + o) / 2 ? Math.max(i, this._spherical.theta) : Math.min(o, this._spherical.theta)), this._spherical.phi = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, this._spherical.phi)), this._spherical.makeSafe(), this.enableDamping === !0 ? this.target.addScaledVector(this._panOffset, this.dampingFactor) : this.target.add(this._panOffset), this.target.sub(this.cursor), this.target.clampLength(this.minTargetRadius, this.maxTargetRadius), this.target.add(this.cursor);
90
- let n = !1;
478
+ this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(iA), this.update(), this.state = n.NONE;
479
+ }
480
+ update(A = null) {
481
+ const g = this.object.position;
482
+ r.copy(g).sub(this.target), r.applyQuaternion(this._quat), this._spherical.setFromVector3(r), this.autoRotate && this.state === n.NONE && this._rotateLeft(this._getAutoRotationAngle(A)), this.enableDamping ? (this._spherical.theta += this._sphericalDelta.theta * this.dampingFactor, this._spherical.phi += this._sphericalDelta.phi * this.dampingFactor) : (this._spherical.theta += this._sphericalDelta.theta, this._spherical.phi += this._sphericalDelta.phi);
483
+ let B = this.minAzimuthAngle, Q = this.maxAzimuthAngle;
484
+ isFinite(B) && isFinite(Q) && (B < -Math.PI ? B += l : B > Math.PI && (B -= l), Q < -Math.PI ? Q += l : Q > Math.PI && (Q -= l), B <= Q ? this._spherical.theta = Math.max(B, Math.min(Q, this._spherical.theta)) : this._spherical.theta = this._spherical.theta > (B + Q) / 2 ? Math.max(B, this._spherical.theta) : Math.min(Q, this._spherical.theta)), this._spherical.phi = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, this._spherical.phi)), this._spherical.makeSafe(), this.enableDamping === !0 ? this.target.addScaledVector(this._panOffset, this.dampingFactor) : this.target.add(this._panOffset), this.target.sub(this.cursor), this.target.clampLength(this.minTargetRadius, this.maxTargetRadius), this.target.add(this.cursor);
485
+ let E = !1;
91
486
  if (this.zoomToCursor && this._performCursorZoom || this.object.isOrthographicCamera)
92
487
  this._spherical.radius = this._clampDistance(this._spherical.radius);
93
488
  else {
94
- const a = this._spherical.radius;
95
- this._spherical.radius = this._clampDistance(this._spherical.radius * this._scale), n = a != this._spherical.radius;
489
+ const C = this._spherical.radius;
490
+ this._spherical.radius = this._clampDistance(this._spherical.radius * this._scale), E = C != this._spherical.radius;
96
491
  }
97
- if (_.setFromSpherical(this._spherical), _.applyQuaternion(this._quatInverse), e.copy(this.target).add(_), this.object.lookAt(this.target), this.enableDamping === !0 ? (this._sphericalDelta.theta *= 1 - this.dampingFactor, this._sphericalDelta.phi *= 1 - this.dampingFactor, this._panOffset.multiplyScalar(1 - this.dampingFactor)) : (this._sphericalDelta.set(0, 0, 0), this._panOffset.set(0, 0, 0)), this.zoomToCursor && this._performCursorZoom) {
98
- let a = null;
492
+ if (r.setFromSpherical(this._spherical), r.applyQuaternion(this._quatInverse), g.copy(this.target).add(r), this.object.lookAt(this.target), this.enableDamping === !0 ? (this._sphericalDelta.theta *= 1 - this.dampingFactor, this._sphericalDelta.phi *= 1 - this.dampingFactor, this._panOffset.multiplyScalar(1 - this.dampingFactor)) : (this._sphericalDelta.set(0, 0, 0), this._panOffset.set(0, 0, 0)), this.zoomToCursor && this._performCursorZoom) {
493
+ let C = null;
99
494
  if (this.object.isPerspectiveCamera) {
100
- const l = _.length();
101
- a = this._clampDistance(l * this._scale);
102
- const c = l - a;
103
- this.object.position.addScaledVector(this._dollyDirection, c), this.object.updateMatrixWorld(), n = !!c;
495
+ const t = r.length();
496
+ C = this._clampDistance(t * this._scale);
497
+ const e = t - C;
498
+ this.object.position.addScaledVector(this._dollyDirection, e), this.object.updateMatrixWorld(), E = !!e;
104
499
  } else if (this.object.isOrthographicCamera) {
105
- const l = new S(this._mouse.x, this._mouse.y, 0);
106
- l.unproject(this.object);
107
- const c = this.object.zoom;
108
- this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), this.object.updateProjectionMatrix(), n = c !== this.object.zoom;
109
- const h = new S(this._mouse.x, this._mouse.y, 0);
110
- h.unproject(this.object), this.object.position.sub(h).add(l), this.object.updateMatrixWorld(), a = _.length();
500
+ const t = new k(this._mouse.x, this._mouse.y, 0);
501
+ t.unproject(this.object);
502
+ const e = this.object.zoom;
503
+ this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), this.object.updateProjectionMatrix(), E = e !== this.object.zoom;
504
+ const i = new k(this._mouse.x, this._mouse.y, 0);
505
+ i.unproject(this.object), this.object.position.sub(i).add(t), this.object.updateMatrixWorld(), C = r.length();
111
506
  } else
112
507
  console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), this.zoomToCursor = !1;
113
- a !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position) : (N.origin.copy(this.object.position), N.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(N.direction)) < Q ? this.object.lookAt(this.target) : (K.setFromNormalAndCoplanarPoint(this.object.up, this.target), N.intersectPlane(K, this.target))));
508
+ C !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(C).add(this.object.position) : (T.origin.copy(this.object.position), T.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(T.direction)) < pI ? this.object.lookAt(this.target) : (sA.setFromNormalAndCoplanarPoint(this.object.up, this.target), T.intersectPlane(sA, this.target))));
114
509
  } else if (this.object.isOrthographicCamera) {
115
- const a = this.object.zoom;
116
- this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), a !== this.object.zoom && (this.object.updateProjectionMatrix(), n = !0);
510
+ const C = this.object.zoom;
511
+ this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), C !== this.object.zoom && (this.object.updateProjectionMatrix(), E = !0);
117
512
  }
118
- return this._scale = 1, this._performCursorZoom = !1, n || this._lastPosition.distanceToSquared(this.object.position) > I || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > I || this._lastTargetPosition.distanceToSquared(this.target) > I ? (this.dispatchEvent(F), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
513
+ return this._scale = 1, this._performCursorZoom = !1, E || this._lastPosition.distanceToSquared(this.object.position) > v || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > v || this._lastTargetPosition.distanceToSquared(this.target) > v ? (this.dispatchEvent(iA), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
119
514
  }
120
- _getAutoRotationAngle(t) {
121
- return t !== null ? y / 60 * this.autoRotateSpeed * t : y / 60 / 60 * this.autoRotateSpeed;
515
+ _getAutoRotationAngle(A) {
516
+ return A !== null ? l / 60 * this.autoRotateSpeed * A : l / 60 / 60 * this.autoRotateSpeed;
122
517
  }
123
- _getZoomScale(t) {
124
- const e = Math.abs(t * 0.01);
125
- return Math.pow(0.95, this.zoomSpeed * e);
518
+ _getZoomScale(A) {
519
+ const g = Math.abs(A * 0.01);
520
+ return Math.pow(0.95, this.zoomSpeed * g);
126
521
  }
127
- _rotateLeft(t) {
128
- this._sphericalDelta.theta -= t;
522
+ _rotateLeft(A) {
523
+ this._sphericalDelta.theta -= A;
129
524
  }
130
- _rotateUp(t) {
131
- this._sphericalDelta.phi -= t;
525
+ _rotateUp(A) {
526
+ this._sphericalDelta.phi -= A;
132
527
  }
133
- _panLeft(t, e) {
134
- _.setFromMatrixColumn(e, 0), _.multiplyScalar(-t), this._panOffset.add(_);
528
+ _panLeft(A, g) {
529
+ r.setFromMatrixColumn(g, 0), r.multiplyScalar(-A), this._panOffset.add(r);
135
530
  }
136
- _panUp(t, e) {
137
- this.screenSpacePanning === !0 ? _.setFromMatrixColumn(e, 1) : (_.setFromMatrixColumn(e, 0), _.crossVectors(this.object.up, _)), _.multiplyScalar(t), this._panOffset.add(_);
531
+ _panUp(A, g) {
532
+ this.screenSpacePanning === !0 ? r.setFromMatrixColumn(g, 1) : (r.setFromMatrixColumn(g, 0), r.crossVectors(this.object.up, r)), r.multiplyScalar(A), this._panOffset.add(r);
138
533
  }
139
534
  // deltaX and deltaY are in pixels; right and down are positive
140
- _pan(t, e) {
141
- const i = this.domElement;
535
+ _pan(A, g) {
536
+ const B = this.domElement;
142
537
  if (this.object.isPerspectiveCamera) {
143
- const o = this.object.position;
144
- _.copy(o).sub(this.target);
145
- let n = _.length();
146
- n *= Math.tan(this.object.fov / 2 * Math.PI / 180), this._panLeft(2 * t * n / i.clientHeight, this.object.matrix), this._panUp(2 * e * n / i.clientHeight, this.object.matrix);
147
- } else this.object.isOrthographicCamera ? (this._panLeft(t * (this.object.right - this.object.left) / this.object.zoom / i.clientWidth, this.object.matrix), this._panUp(e * (this.object.top - this.object.bottom) / this.object.zoom / i.clientHeight, this.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), this.enablePan = !1);
538
+ const Q = this.object.position;
539
+ r.copy(Q).sub(this.target);
540
+ let E = r.length();
541
+ E *= Math.tan(this.object.fov / 2 * Math.PI / 180), this._panLeft(2 * A * E / B.clientHeight, this.object.matrix), this._panUp(2 * g * E / B.clientHeight, this.object.matrix);
542
+ } else this.object.isOrthographicCamera ? (this._panLeft(A * (this.object.right - this.object.left) / this.object.zoom / B.clientWidth, this.object.matrix), this._panUp(g * (this.object.top - this.object.bottom) / this.object.zoom / B.clientHeight, this.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), this.enablePan = !1);
148
543
  }
149
- _dollyOut(t) {
150
- this.object.isPerspectiveCamera || this.object.isOrthographicCamera ? this._scale /= t : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), this.enableZoom = !1);
544
+ _dollyOut(A) {
545
+ this.object.isPerspectiveCamera || this.object.isOrthographicCamera ? this._scale /= A : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), this.enableZoom = !1);
151
546
  }
152
- _dollyIn(t) {
153
- this.object.isPerspectiveCamera || this.object.isOrthographicCamera ? this._scale *= t : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), this.enableZoom = !1);
547
+ _dollyIn(A) {
548
+ this.object.isPerspectiveCamera || this.object.isOrthographicCamera ? this._scale *= A : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), this.enableZoom = !1);
154
549
  }
155
- _updateZoomParameters(t, e) {
550
+ _updateZoomParameters(A, g) {
156
551
  if (!this.zoomToCursor)
157
552
  return;
158
553
  this._performCursorZoom = !0;
159
- const i = this.domElement.getBoundingClientRect(), o = t - i.left, n = e - i.top, a = i.width, l = i.height;
160
- this._mouse.x = o / a * 2 - 1, this._mouse.y = -(n / l) * 2 + 1, this._dollyDirection.set(this._mouse.x, this._mouse.y, 1).unproject(this.object).sub(this.object.position).normalize();
554
+ const B = this.domElement.getBoundingClientRect(), Q = A - B.left, E = g - B.top, C = B.width, t = B.height;
555
+ this._mouse.x = Q / C * 2 - 1, this._mouse.y = -(E / t) * 2 + 1, this._dollyDirection.set(this._mouse.x, this._mouse.y, 1).unproject(this.object).sub(this.object.position).normalize();
161
556
  }
162
- _clampDistance(t) {
163
- return Math.max(this.minDistance, Math.min(this.maxDistance, t));
557
+ _clampDistance(A) {
558
+ return Math.max(this.minDistance, Math.min(this.maxDistance, A));
164
559
  }
165
560
  //
166
561
  // event callbacks - update the object state
167
562
  //
168
- _handleMouseDownRotate(t) {
169
- this._rotateStart.set(t.clientX, t.clientY);
563
+ _handleMouseDownRotate(A) {
564
+ this._rotateStart.set(A.clientX, A.clientY);
170
565
  }
171
- _handleMouseDownDolly(t) {
172
- this._updateZoomParameters(t.clientX, t.clientX), this._dollyStart.set(t.clientX, t.clientY);
566
+ _handleMouseDownDolly(A) {
567
+ this._updateZoomParameters(A.clientX, A.clientX), this._dollyStart.set(A.clientX, A.clientY);
173
568
  }
174
- _handleMouseDownPan(t) {
175
- this._panStart.set(t.clientX, t.clientY);
569
+ _handleMouseDownPan(A) {
570
+ this._panStart.set(A.clientX, A.clientY);
176
571
  }
177
- _handleMouseMoveRotate(t) {
178
- this._rotateEnd.set(t.clientX, t.clientY), this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart).multiplyScalar(this.rotateSpeed);
179
- const e = this.domElement;
180
- this._rotateLeft(y * this._rotateDelta.x / e.clientHeight), this._rotateUp(y * this._rotateDelta.y / e.clientHeight), this._rotateStart.copy(this._rotateEnd), this.update();
572
+ _handleMouseMoveRotate(A) {
573
+ this._rotateEnd.set(A.clientX, A.clientY), this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart).multiplyScalar(this.rotateSpeed);
574
+ const g = this.domElement;
575
+ this._rotateLeft(l * this._rotateDelta.x / g.clientHeight), this._rotateUp(l * this._rotateDelta.y / g.clientHeight), this._rotateStart.copy(this._rotateEnd), this.update();
181
576
  }
182
- _handleMouseMoveDolly(t) {
183
- this._dollyEnd.set(t.clientX, t.clientY), this._dollyDelta.subVectors(this._dollyEnd, this._dollyStart), this._dollyDelta.y > 0 ? this._dollyOut(this._getZoomScale(this._dollyDelta.y)) : this._dollyDelta.y < 0 && this._dollyIn(this._getZoomScale(this._dollyDelta.y)), this._dollyStart.copy(this._dollyEnd), this.update();
577
+ _handleMouseMoveDolly(A) {
578
+ this._dollyEnd.set(A.clientX, A.clientY), this._dollyDelta.subVectors(this._dollyEnd, this._dollyStart), this._dollyDelta.y > 0 ? this._dollyOut(this._getZoomScale(this._dollyDelta.y)) : this._dollyDelta.y < 0 && this._dollyIn(this._getZoomScale(this._dollyDelta.y)), this._dollyStart.copy(this._dollyEnd), this.update();
184
579
  }
185
- _handleMouseMovePan(t) {
186
- this._panEnd.set(t.clientX, t.clientY), this._panDelta.subVectors(this._panEnd, this._panStart).multiplyScalar(this.panSpeed), this._pan(this._panDelta.x, this._panDelta.y), this._panStart.copy(this._panEnd), this.update();
580
+ _handleMouseMovePan(A) {
581
+ this._panEnd.set(A.clientX, A.clientY), this._panDelta.subVectors(this._panEnd, this._panStart).multiplyScalar(this.panSpeed), this._pan(this._panDelta.x, this._panDelta.y), this._panStart.copy(this._panEnd), this.update();
187
582
  }
188
- _handleMouseWheel(t) {
189
- this._updateZoomParameters(t.clientX, t.clientY), t.deltaY < 0 ? this._dollyIn(this._getZoomScale(t.deltaY)) : t.deltaY > 0 && this._dollyOut(this._getZoomScale(t.deltaY)), this.update();
583
+ _handleMouseWheel(A) {
584
+ this._updateZoomParameters(A.clientX, A.clientY), A.deltaY < 0 ? this._dollyIn(this._getZoomScale(A.deltaY)) : A.deltaY > 0 && this._dollyOut(this._getZoomScale(A.deltaY)), this.update();
190
585
  }
191
- _handleKeyDown(t) {
192
- let e = !1;
193
- switch (t.code) {
586
+ _handleKeyDown(A) {
587
+ let g = !1;
588
+ switch (A.code) {
194
589
  case this.keys.UP:
195
- t.ctrlKey || t.metaKey || t.shiftKey ? this.enableRotate && this._rotateUp(y * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, this.keyPanSpeed), e = !0;
590
+ A.ctrlKey || A.metaKey || A.shiftKey ? this.enableRotate && this._rotateUp(l * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, this.keyPanSpeed), g = !0;
196
591
  break;
197
592
  case this.keys.BOTTOM:
198
- t.ctrlKey || t.metaKey || t.shiftKey ? this.enableRotate && this._rotateUp(-y * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, -this.keyPanSpeed), e = !0;
593
+ A.ctrlKey || A.metaKey || A.shiftKey ? this.enableRotate && this._rotateUp(-l * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, -this.keyPanSpeed), g = !0;
199
594
  break;
200
595
  case this.keys.LEFT:
201
- t.ctrlKey || t.metaKey || t.shiftKey ? this.enableRotate && this._rotateLeft(y * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(this.keyPanSpeed, 0), e = !0;
596
+ A.ctrlKey || A.metaKey || A.shiftKey ? this.enableRotate && this._rotateLeft(l * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(this.keyPanSpeed, 0), g = !0;
202
597
  break;
203
598
  case this.keys.RIGHT:
204
- t.ctrlKey || t.metaKey || t.shiftKey ? this.enableRotate && this._rotateLeft(-y * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(-this.keyPanSpeed, 0), e = !0;
599
+ A.ctrlKey || A.metaKey || A.shiftKey ? this.enableRotate && this._rotateLeft(-l * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(-this.keyPanSpeed, 0), g = !0;
205
600
  break;
206
601
  }
207
- e && (t.preventDefault(), this.update());
602
+ g && (A.preventDefault(), this.update());
208
603
  }
209
- _handleTouchStartRotate(t) {
604
+ _handleTouchStartRotate(A) {
210
605
  if (this._pointers.length === 1)
211
- this._rotateStart.set(t.pageX, t.pageY);
606
+ this._rotateStart.set(A.pageX, A.pageY);
212
607
  else {
213
- const e = this._getSecondPointerPosition(t), i = 0.5 * (t.pageX + e.x), o = 0.5 * (t.pageY + e.y);
214
- this._rotateStart.set(i, o);
608
+ const g = this._getSecondPointerPosition(A), B = 0.5 * (A.pageX + g.x), Q = 0.5 * (A.pageY + g.y);
609
+ this._rotateStart.set(B, Q);
215
610
  }
216
611
  }
217
- _handleTouchStartPan(t) {
612
+ _handleTouchStartPan(A) {
218
613
  if (this._pointers.length === 1)
219
- this._panStart.set(t.pageX, t.pageY);
614
+ this._panStart.set(A.pageX, A.pageY);
220
615
  else {
221
- const e = this._getSecondPointerPosition(t), i = 0.5 * (t.pageX + e.x), o = 0.5 * (t.pageY + e.y);
222
- this._panStart.set(i, o);
616
+ const g = this._getSecondPointerPosition(A), B = 0.5 * (A.pageX + g.x), Q = 0.5 * (A.pageY + g.y);
617
+ this._panStart.set(B, Q);
223
618
  }
224
619
  }
225
- _handleTouchStartDolly(t) {
226
- const e = this._getSecondPointerPosition(t), i = t.pageX - e.x, o = t.pageY - e.y, n = Math.sqrt(i * i + o * o);
227
- this._dollyStart.set(0, n);
620
+ _handleTouchStartDolly(A) {
621
+ const g = this._getSecondPointerPosition(A), B = A.pageX - g.x, Q = A.pageY - g.y, E = Math.sqrt(B * B + Q * Q);
622
+ this._dollyStart.set(0, E);
228
623
  }
229
- _handleTouchStartDollyPan(t) {
230
- this.enableZoom && this._handleTouchStartDolly(t), this.enablePan && this._handleTouchStartPan(t);
624
+ _handleTouchStartDollyPan(A) {
625
+ this.enableZoom && this._handleTouchStartDolly(A), this.enablePan && this._handleTouchStartPan(A);
231
626
  }
232
- _handleTouchStartDollyRotate(t) {
233
- this.enableZoom && this._handleTouchStartDolly(t), this.enableRotate && this._handleTouchStartRotate(t);
627
+ _handleTouchStartDollyRotate(A) {
628
+ this.enableZoom && this._handleTouchStartDolly(A), this.enableRotate && this._handleTouchStartRotate(A);
234
629
  }
235
- _handleTouchMoveRotate(t) {
630
+ _handleTouchMoveRotate(A) {
236
631
  if (this._pointers.length == 1)
237
- this._rotateEnd.set(t.pageX, t.pageY);
632
+ this._rotateEnd.set(A.pageX, A.pageY);
238
633
  else {
239
- const i = this._getSecondPointerPosition(t), o = 0.5 * (t.pageX + i.x), n = 0.5 * (t.pageY + i.y);
240
- this._rotateEnd.set(o, n);
634
+ const B = this._getSecondPointerPosition(A), Q = 0.5 * (A.pageX + B.x), E = 0.5 * (A.pageY + B.y);
635
+ this._rotateEnd.set(Q, E);
241
636
  }
242
637
  this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart).multiplyScalar(this.rotateSpeed);
243
- const e = this.domElement;
244
- this._rotateLeft(y * this._rotateDelta.x / e.clientHeight), this._rotateUp(y * this._rotateDelta.y / e.clientHeight), this._rotateStart.copy(this._rotateEnd);
638
+ const g = this.domElement;
639
+ this._rotateLeft(l * this._rotateDelta.x / g.clientHeight), this._rotateUp(l * this._rotateDelta.y / g.clientHeight), this._rotateStart.copy(this._rotateEnd);
245
640
  }
246
- _handleTouchMovePan(t) {
641
+ _handleTouchMovePan(A) {
247
642
  if (this._pointers.length === 1)
248
- this._panEnd.set(t.pageX, t.pageY);
643
+ this._panEnd.set(A.pageX, A.pageY);
249
644
  else {
250
- const e = this._getSecondPointerPosition(t), i = 0.5 * (t.pageX + e.x), o = 0.5 * (t.pageY + e.y);
251
- this._panEnd.set(i, o);
645
+ const g = this._getSecondPointerPosition(A), B = 0.5 * (A.pageX + g.x), Q = 0.5 * (A.pageY + g.y);
646
+ this._panEnd.set(B, Q);
252
647
  }
253
648
  this._panDelta.subVectors(this._panEnd, this._panStart).multiplyScalar(this.panSpeed), this._pan(this._panDelta.x, this._panDelta.y), this._panStart.copy(this._panEnd);
254
649
  }
255
- _handleTouchMoveDolly(t) {
256
- const e = this._getSecondPointerPosition(t), i = t.pageX - e.x, o = t.pageY - e.y, n = Math.sqrt(i * i + o * o);
257
- this._dollyEnd.set(0, n), this._dollyDelta.set(0, Math.pow(this._dollyEnd.y / this._dollyStart.y, this.zoomSpeed)), this._dollyOut(this._dollyDelta.y), this._dollyStart.copy(this._dollyEnd);
258
- const a = (t.pageX + e.x) * 0.5, l = (t.pageY + e.y) * 0.5;
259
- this._updateZoomParameters(a, l);
650
+ _handleTouchMoveDolly(A) {
651
+ const g = this._getSecondPointerPosition(A), B = A.pageX - g.x, Q = A.pageY - g.y, E = Math.sqrt(B * B + Q * Q);
652
+ this._dollyEnd.set(0, E), this._dollyDelta.set(0, Math.pow(this._dollyEnd.y / this._dollyStart.y, this.zoomSpeed)), this._dollyOut(this._dollyDelta.y), this._dollyStart.copy(this._dollyEnd);
653
+ const C = (A.pageX + g.x) * 0.5, t = (A.pageY + g.y) * 0.5;
654
+ this._updateZoomParameters(C, t);
260
655
  }
261
- _handleTouchMoveDollyPan(t) {
262
- this.enableZoom && this._handleTouchMoveDolly(t), this.enablePan && this._handleTouchMovePan(t);
656
+ _handleTouchMoveDollyPan(A) {
657
+ this.enableZoom && this._handleTouchMoveDolly(A), this.enablePan && this._handleTouchMovePan(A);
263
658
  }
264
- _handleTouchMoveDollyRotate(t) {
265
- this.enableZoom && this._handleTouchMoveDolly(t), this.enableRotate && this._handleTouchMoveRotate(t);
659
+ _handleTouchMoveDollyRotate(A) {
660
+ this.enableZoom && this._handleTouchMoveDolly(A), this.enableRotate && this._handleTouchMoveRotate(A);
266
661
  }
267
662
  // pointers
268
- _addPointer(t) {
269
- this._pointers.push(t.pointerId);
270
- }
271
- _removePointer(t) {
272
- delete this._pointerPositions[t.pointerId];
273
- for (let e = 0; e < this._pointers.length; e++)
274
- if (this._pointers[e] == t.pointerId) {
275
- this._pointers.splice(e, 1);
663
+ _addPointer(A) {
664
+ this._pointers.push(A.pointerId);
665
+ }
666
+ _removePointer(A) {
667
+ delete this._pointerPositions[A.pointerId];
668
+ for (let g = 0; g < this._pointers.length; g++)
669
+ if (this._pointers[g] == A.pointerId) {
670
+ this._pointers.splice(g, 1);
276
671
  return;
277
672
  }
278
673
  }
279
- _isTrackingPointer(t) {
280
- for (let e = 0; e < this._pointers.length; e++)
281
- if (this._pointers[e] == t.pointerId) return !0;
674
+ _isTrackingPointer(A) {
675
+ for (let g = 0; g < this._pointers.length; g++)
676
+ if (this._pointers[g] == A.pointerId) return !0;
282
677
  return !1;
283
678
  }
284
- _trackPointer(t) {
285
- let e = this._pointerPositions[t.pointerId];
286
- e === void 0 && (e = new P(), this._pointerPositions[t.pointerId] = e), e.set(t.pageX, t.pageY);
679
+ _trackPointer(A) {
680
+ let g = this._pointerPositions[A.pointerId];
681
+ g === void 0 && (g = new G(), this._pointerPositions[A.pointerId] = g), g.set(A.pageX, A.pageY);
287
682
  }
288
- _getSecondPointerPosition(t) {
289
- const e = t.pointerId === this._pointers[0] ? this._pointers[1] : this._pointers[0];
290
- return this._pointerPositions[e];
683
+ _getSecondPointerPosition(A) {
684
+ const g = A.pointerId === this._pointers[0] ? this._pointers[1] : this._pointers[0];
685
+ return this._pointerPositions[g];
291
686
  }
292
687
  //
293
- _customWheelEvent(t) {
294
- const e = t.deltaMode, i = {
295
- clientX: t.clientX,
296
- clientY: t.clientY,
297
- deltaY: t.deltaY
688
+ _customWheelEvent(A) {
689
+ const g = A.deltaMode, B = {
690
+ clientX: A.clientX,
691
+ clientY: A.clientY,
692
+ deltaY: A.deltaY
298
693
  };
299
- switch (e) {
694
+ switch (g) {
300
695
  case 1:
301
- i.deltaY *= 16;
696
+ B.deltaY *= 16;
302
697
  break;
303
698
  case 2:
304
- i.deltaY *= 100;
699
+ B.deltaY *= 100;
305
700
  break;
306
701
  }
307
- return t.ctrlKey && !this._controlActive && (i.deltaY *= 10), i;
702
+ return A.ctrlKey && !this._controlActive && (B.deltaY *= 10), B;
308
703
  }
309
704
  }
310
- function tt(s) {
311
- this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(s.pointerId), this.domElement.addEventListener("pointermove", this._onPointerMove), this.domElement.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(s) && (this._addPointer(s), s.pointerType === "touch" ? this._onTouchStart(s) : this._onMouseDown(s)));
705
+ function LI(I) {
706
+ this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(I.pointerId), this.domElement.addEventListener("pointermove", this._onPointerMove), this.domElement.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(I) && (this._addPointer(I), I.pointerType === "touch" ? this._onTouchStart(I) : this._onMouseDown(I)));
312
707
  }
313
- function et(s) {
314
- this.enabled !== !1 && (s.pointerType === "touch" ? this._onTouchMove(s) : this._onMouseMove(s));
708
+ function KI(I) {
709
+ this.enabled !== !1 && (I.pointerType === "touch" ? this._onTouchMove(I) : this._onMouseMove(I));
315
710
  }
316
- function st(s) {
317
- switch (this._removePointer(s), this._pointers.length) {
711
+ function uI(I) {
712
+ switch (this._removePointer(I), this._pointers.length) {
318
713
  case 0:
319
- this.domElement.releasePointerCapture(s.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(B), this.state = d.NONE;
714
+ this.domElement.releasePointerCapture(I.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(DA), this.state = n.NONE;
320
715
  break;
321
716
  case 1:
322
- const t = this._pointers[0], e = this._pointerPositions[t];
323
- this._onTouchStart({ pointerId: t, pageX: e.x, pageY: e.y });
717
+ const A = this._pointers[0], g = this._pointerPositions[A];
718
+ this._onTouchStart({ pointerId: A, pageX: g.x, pageY: g.y });
324
719
  break;
325
720
  }
326
721
  }
327
- function it(s) {
328
- let t;
329
- switch (s.button) {
722
+ function fI(I) {
723
+ let A;
724
+ switch (I.button) {
330
725
  case 0:
331
- t = this.mouseButtons.LEFT;
726
+ A = this.mouseButtons.LEFT;
332
727
  break;
333
728
  case 1:
334
- t = this.mouseButtons.MIDDLE;
729
+ A = this.mouseButtons.MIDDLE;
335
730
  break;
336
731
  case 2:
337
- t = this.mouseButtons.RIGHT;
732
+ A = this.mouseButtons.RIGHT;
338
733
  break;
339
734
  default:
340
- t = -1;
735
+ A = -1;
341
736
  }
342
- switch (t) {
343
- case j.DOLLY:
737
+ switch (A) {
738
+ case f.DOLLY:
344
739
  if (this.enableZoom === !1) return;
345
- this._handleMouseDownDolly(s), this.state = d.DOLLY;
740
+ this._handleMouseDownDolly(I), this.state = n.DOLLY;
346
741
  break;
347
- case j.ROTATE:
348
- if (s.ctrlKey || s.metaKey || s.shiftKey) {
742
+ case f.ROTATE:
743
+ if (I.ctrlKey || I.metaKey || I.shiftKey) {
349
744
  if (this.enablePan === !1) return;
350
- this._handleMouseDownPan(s), this.state = d.PAN;
745
+ this._handleMouseDownPan(I), this.state = n.PAN;
351
746
  } else {
352
747
  if (this.enableRotate === !1) return;
353
- this._handleMouseDownRotate(s), this.state = d.ROTATE;
748
+ this._handleMouseDownRotate(I), this.state = n.ROTATE;
354
749
  }
355
750
  break;
356
- case j.PAN:
357
- if (s.ctrlKey || s.metaKey || s.shiftKey) {
751
+ case f.PAN:
752
+ if (I.ctrlKey || I.metaKey || I.shiftKey) {
358
753
  if (this.enableRotate === !1) return;
359
- this._handleMouseDownRotate(s), this.state = d.ROTATE;
754
+ this._handleMouseDownRotate(I), this.state = n.ROTATE;
360
755
  } else {
361
756
  if (this.enablePan === !1) return;
362
- this._handleMouseDownPan(s), this.state = d.PAN;
757
+ this._handleMouseDownPan(I), this.state = n.PAN;
363
758
  }
364
759
  break;
365
760
  default:
366
- this.state = d.NONE;
761
+ this.state = n.NONE;
367
762
  }
368
- this.state !== d.NONE && this.dispatchEvent(Y);
763
+ this.state !== n.NONE && this.dispatchEvent(IA);
369
764
  }
370
- function ot(s) {
765
+ function HI(I) {
371
766
  switch (this.state) {
372
- case d.ROTATE:
767
+ case n.ROTATE:
373
768
  if (this.enableRotate === !1) return;
374
- this._handleMouseMoveRotate(s);
769
+ this._handleMouseMoveRotate(I);
375
770
  break;
376
- case d.DOLLY:
771
+ case n.DOLLY:
377
772
  if (this.enableZoom === !1) return;
378
- this._handleMouseMoveDolly(s);
773
+ this._handleMouseMoveDolly(I);
379
774
  break;
380
- case d.PAN:
775
+ case n.PAN:
381
776
  if (this.enablePan === !1) return;
382
- this._handleMouseMovePan(s);
777
+ this._handleMouseMovePan(I);
383
778
  break;
384
779
  }
385
780
  }
386
- function nt(s) {
387
- this.enabled === !1 || this.enableZoom === !1 || this.state !== d.NONE || (s.preventDefault(), this.dispatchEvent(Y), this._handleMouseWheel(this._customWheelEvent(s)), this.dispatchEvent(B));
781
+ function bI(I) {
782
+ this.enabled === !1 || this.enableZoom === !1 || this.state !== n.NONE || (I.preventDefault(), this.dispatchEvent(IA), this._handleMouseWheel(this._customWheelEvent(I)), this.dispatchEvent(DA));
388
783
  }
389
- function at(s) {
390
- this.enabled !== !1 && this._handleKeyDown(s);
784
+ function qI(I) {
785
+ this.enabled !== !1 && this._handleKeyDown(I);
391
786
  }
392
- function rt(s) {
393
- switch (this._trackPointer(s), this._pointers.length) {
787
+ function ZI(I) {
788
+ switch (this._trackPointer(I), this._pointers.length) {
394
789
  case 1:
395
790
  switch (this.touches.ONE) {
396
- case k.ROTATE:
791
+ case u.ROTATE:
397
792
  if (this.enableRotate === !1) return;
398
- this._handleTouchStartRotate(s), this.state = d.TOUCH_ROTATE;
793
+ this._handleTouchStartRotate(I), this.state = n.TOUCH_ROTATE;
399
794
  break;
400
- case k.PAN:
795
+ case u.PAN:
401
796
  if (this.enablePan === !1) return;
402
- this._handleTouchStartPan(s), this.state = d.TOUCH_PAN;
797
+ this._handleTouchStartPan(I), this.state = n.TOUCH_PAN;
403
798
  break;
404
799
  default:
405
- this.state = d.NONE;
800
+ this.state = n.NONE;
406
801
  }
407
802
  break;
408
803
  case 2:
409
804
  switch (this.touches.TWO) {
410
- case k.DOLLY_PAN:
805
+ case u.DOLLY_PAN:
411
806
  if (this.enableZoom === !1 && this.enablePan === !1) return;
412
- this._handleTouchStartDollyPan(s), this.state = d.TOUCH_DOLLY_PAN;
807
+ this._handleTouchStartDollyPan(I), this.state = n.TOUCH_DOLLY_PAN;
413
808
  break;
414
- case k.DOLLY_ROTATE:
809
+ case u.DOLLY_ROTATE:
415
810
  if (this.enableZoom === !1 && this.enableRotate === !1) return;
416
- this._handleTouchStartDollyRotate(s), this.state = d.TOUCH_DOLLY_ROTATE;
811
+ this._handleTouchStartDollyRotate(I), this.state = n.TOUCH_DOLLY_ROTATE;
417
812
  break;
418
813
  default:
419
- this.state = d.NONE;
814
+ this.state = n.NONE;
420
815
  }
421
816
  break;
422
817
  default:
423
- this.state = d.NONE;
818
+ this.state = n.NONE;
424
819
  }
425
- this.state !== d.NONE && this.dispatchEvent(Y);
820
+ this.state !== n.NONE && this.dispatchEvent(IA);
426
821
  }
427
- function ht(s) {
428
- switch (this._trackPointer(s), this.state) {
429
- case d.TOUCH_ROTATE:
822
+ function _I(I) {
823
+ switch (this._trackPointer(I), this.state) {
824
+ case n.TOUCH_ROTATE:
430
825
  if (this.enableRotate === !1) return;
431
- this._handleTouchMoveRotate(s), this.update();
826
+ this._handleTouchMoveRotate(I), this.update();
432
827
  break;
433
- case d.TOUCH_PAN:
828
+ case n.TOUCH_PAN:
434
829
  if (this.enablePan === !1) return;
435
- this._handleTouchMovePan(s), this.update();
830
+ this._handleTouchMovePan(I), this.update();
436
831
  break;
437
- case d.TOUCH_DOLLY_PAN:
832
+ case n.TOUCH_DOLLY_PAN:
438
833
  if (this.enableZoom === !1 && this.enablePan === !1) return;
439
- this._handleTouchMoveDollyPan(s), this.update();
834
+ this._handleTouchMoveDollyPan(I), this.update();
440
835
  break;
441
- case d.TOUCH_DOLLY_ROTATE:
836
+ case n.TOUCH_DOLLY_ROTATE:
442
837
  if (this.enableZoom === !1 && this.enableRotate === !1) return;
443
- this._handleTouchMoveDollyRotate(s), this.update();
838
+ this._handleTouchMoveDollyRotate(I), this.update();
444
839
  break;
445
840
  default:
446
- this.state = d.NONE;
841
+ this.state = n.NONE;
447
842
  }
448
843
  }
449
- function lt(s) {
450
- this.enabled !== !1 && s.preventDefault();
844
+ function xI(I) {
845
+ this.enabled !== !1 && I.preventDefault();
451
846
  }
452
- function ct(s) {
453
- s.key === "Control" && (this._controlActive = !0, this.domElement.getRootNode().addEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
847
+ function TI(I) {
848
+ I.key === "Control" && (this._controlActive = !0, this.domElement.getRootNode().addEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
454
849
  }
455
- function dt(s) {
456
- s.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
850
+ function WI(I) {
851
+ I.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
457
852
  }
458
- function ut(s) {
459
- const t = s.length, e = new Float32Array(t * 3), i = new Float32Array(t * 3);
460
- for (let a = 0; a < t; a++) {
461
- const l = s[a];
462
- e[a * 3] = l.xyz[0], e[a * 3 + 1] = -l.xyz[1], e[a * 3 + 2] = -l.xyz[2], i[a * 3] = l.rgb[0] / 255, i[a * 3 + 1] = l.rgb[1] / 255, i[a * 3 + 2] = l.rgb[2] / 255;
463
- }
464
- const o = new r.BufferGeometry();
465
- o.setAttribute("position", new r.BufferAttribute(e, 3)), o.setAttribute("color", new r.BufferAttribute(i, 3));
466
- const n = new r.PointsMaterial({
853
+ function XI(I) {
854
+ const A = I.length, g = new Float32Array(A * 3), B = new Float32Array(A * 3);
855
+ for (let C = 0; C < A; C++) {
856
+ const t = I[C];
857
+ g[C * 3] = t.xyz[0], g[C * 3 + 1] = -t.xyz[1], g[C * 3 + 2] = -t.xyz[2], B[C * 3] = t.rgb[0] / 255, B[C * 3 + 1] = t.rgb[1] / 255, B[C * 3 + 2] = t.rgb[2] / 255;
858
+ }
859
+ const Q = new o.BufferGeometry();
860
+ Q.setAttribute("position", new o.BufferAttribute(g, 3)), Q.setAttribute("color", new o.BufferAttribute(B, 3));
861
+ const E = new o.PointsMaterial({
467
862
  size: 0.02,
468
863
  vertexColors: !0,
469
864
  sizeAttenuation: !0
470
865
  });
471
- return new r.Points(o, n);
472
- }
473
- function mt(s) {
474
- const [t, e, i, o] = s, n = new r.Matrix3();
475
- return n.set(
476
- 1 - 2 * (i * i + o * o),
477
- 2 * (e * i - t * o),
478
- 2 * (e * o + t * i),
479
- 2 * (e * i + t * o),
480
- 1 - 2 * (e * e + o * o),
481
- 2 * (i * o - t * e),
482
- 2 * (e * o - t * i),
483
- 2 * (i * o + t * e),
484
- 1 - 2 * (e * e + i * i)
485
- ), n;
486
- }
487
- function pt(s, t) {
488
- const e = s.clone().transpose(), i = new r.Vector3(t[0], t[1], t[2]);
489
- return i.applyMatrix3(e).negate(), new r.Vector3(i.x, -i.y, -i.z);
490
- }
491
- function _t(s, t, e, i, o) {
492
- const a = t.clone().transpose(), l = [
493
- new r.Vector3(-i / 2 / e, -o / 2 / e, 1),
494
- new r.Vector3(i / 2 / e, -o / 2 / e, 1),
495
- new r.Vector3(i / 2 / e, o / 2 / e, 1),
496
- new r.Vector3(-i / 2 / e, o / 2 / e, 1)
497
- ].map((h) => (h.multiplyScalar(0.3), h.applyMatrix3(a), h.set(h.x, -h.y, -h.z), h.add(s), h)), c = [];
498
- for (const h of l)
499
- c.push(s.x, s.y, s.z, h.x, h.y, h.z);
500
- for (let h = 0; h < 4; h++) {
501
- const f = l[h], u = l[(h + 1) % 4];
502
- c.push(f.x, f.y, f.z, u.x, u.y, u.z);
503
- }
504
- return new Float32Array(c);
505
- }
506
- function ft(s, t) {
507
- const e = new Map(t.map((n) => [n.id, n])), i = new r.Group(), o = [];
508
- for (const n of s) {
509
- const a = e.get(n.cameraId);
510
- if (!a) continue;
511
- const l = mt(n.qvec), c = pt(l, n.tvec), h = a.params[0] ?? 500, f = _t(c, l, h, a.width, a.height), u = new r.BufferGeometry();
512
- u.setAttribute("position", new r.BufferAttribute(f, 3));
513
- const E = new r.LineBasicMaterial({ color: 52479, opacity: 0.7, transparent: !0 });
514
- i.add(new r.LineSegments(u, E)), o.push(c.x, c.y, c.z);
515
- }
516
- return i;
517
- }
518
- function bt(s) {
519
- return new r.AxesHelper(Math.max(s * 0.1, 1));
520
- }
521
- function gt(s) {
522
- const [t, e, i, o] = s, n = new r.Matrix3();
523
- return n.set(
524
- 1 - 2 * (i * i + o * o),
525
- 2 * (e * i - t * o),
526
- 2 * (e * o + t * i),
527
- 2 * (e * i + t * o),
528
- 1 - 2 * (e * e + o * o),
529
- 2 * (i * o - t * e),
530
- 2 * (e * o - t * i),
531
- 2 * (i * o + t * e),
532
- 1 - 2 * (e * e + i * i)
533
- ), n;
534
- }
535
- async function yt(s) {
536
- const t = URL.createObjectURL(s);
537
- return new Promise((e, i) => {
538
- new r.TextureLoader().load(
539
- t,
540
- (o) => {
541
- URL.revokeObjectURL(t), e(o);
866
+ return new o.Points(Q, E);
867
+ }
868
+ function VI(I) {
869
+ const [A, g, B, Q] = I, E = new o.Matrix3();
870
+ return E.set(
871
+ 1 - 2 * (B * B + Q * Q),
872
+ 2 * (g * B - A * Q),
873
+ 2 * (g * Q + A * B),
874
+ 2 * (g * B + A * Q),
875
+ 1 - 2 * (g * g + Q * Q),
876
+ 2 * (B * Q - A * g),
877
+ 2 * (g * Q - A * B),
878
+ 2 * (B * Q + A * g),
879
+ 1 - 2 * (g * g + B * B)
880
+ ), E;
881
+ }
882
+ function PI(I, A) {
883
+ const g = I.clone().transpose(), B = new o.Vector3(A[0], A[1], A[2]);
884
+ return B.applyMatrix3(g).negate(), new o.Vector3(B.x, -B.y, -B.z);
885
+ }
886
+ function zI(I, A, g, B, Q) {
887
+ const C = A.clone().transpose(), t = [
888
+ new o.Vector3(-B / 2 / g, -Q / 2 / g, 1),
889
+ new o.Vector3(B / 2 / g, -Q / 2 / g, 1),
890
+ new o.Vector3(B / 2 / g, Q / 2 / g, 1),
891
+ new o.Vector3(-B / 2 / g, Q / 2 / g, 1)
892
+ ].map((i) => (i.multiplyScalar(0.3), i.applyMatrix3(C), i.set(i.x, -i.y, -i.z), i.add(I), i)), e = [];
893
+ for (const i of t)
894
+ e.push(I.x, I.y, I.z, i.x, i.y, i.z);
895
+ for (let i = 0; i < 4; i++) {
896
+ const a = t[i], h = t[(i + 1) % 4];
897
+ e.push(a.x, a.y, a.z, h.x, h.y, h.z);
898
+ }
899
+ return new Float32Array(e);
900
+ }
901
+ function jI(I, A) {
902
+ const g = new Map(A.map((E) => [E.id, E])), B = new o.Group(), Q = [];
903
+ for (const E of I) {
904
+ const C = g.get(E.cameraId);
905
+ if (!C) continue;
906
+ const t = VI(E.qvec), e = PI(t, E.tvec), i = C.params[0] ?? 500, a = zI(e, t, i, C.width, C.height), h = new o.BufferGeometry();
907
+ h.setAttribute("position", new o.BufferAttribute(a, 3));
908
+ const F = new o.LineBasicMaterial({ color: 52479, opacity: 0.7, transparent: !0 });
909
+ B.add(new o.LineSegments(h, F)), Q.push(e.x, e.y, e.z);
910
+ }
911
+ return B;
912
+ }
913
+ function vI(I) {
914
+ return new o.AxesHelper(Math.max(I * 0.1, 1));
915
+ }
916
+ function OI(I) {
917
+ const [A, g, B, Q] = I, E = new o.Matrix3();
918
+ return E.set(
919
+ 1 - 2 * (B * B + Q * Q),
920
+ 2 * (g * B - A * Q),
921
+ 2 * (g * Q + A * B),
922
+ 2 * (g * B + A * Q),
923
+ 1 - 2 * (g * g + Q * Q),
924
+ 2 * (B * Q - A * g),
925
+ 2 * (g * Q - A * B),
926
+ 2 * (B * Q + A * g),
927
+ 1 - 2 * (g * g + B * B)
928
+ ), E;
929
+ }
930
+ async function $I(I) {
931
+ const A = URL.createObjectURL(I);
932
+ return new Promise((g, B) => {
933
+ new o.TextureLoader().load(
934
+ A,
935
+ (Q) => {
936
+ URL.revokeObjectURL(A), g(Q);
542
937
  },
543
938
  void 0,
544
- (o) => {
545
- URL.revokeObjectURL(t), i(o);
939
+ (Q) => {
940
+ URL.revokeObjectURL(A), B(Q);
546
941
  }
547
942
  );
548
943
  });
549
944
  }
550
- async function Et(s, t, e) {
551
- const i = new Map(t.map((a) => [a.id, a])), o = new r.Group();
552
- o.visible = !1;
553
- const n = s.map(async (a) => {
554
- const l = a.name.split("/").pop() ?? a.name, c = e.get(l) ?? e.get(a.name);
555
- if (!c) return;
556
- const h = i.get(a.cameraId);
557
- if (!h) return;
558
- const f = await yt(c), u = h.width / h.height, E = 0.3, A = new r.PlaneGeometry(E * u, E), C = new r.MeshBasicMaterial({ map: f, side: r.DoubleSide }), p = new r.Mesh(A, C), x = gt(a.qvec).clone().transpose(), M = new r.Vector3(a.tvec[0], a.tvec[1], a.tvec[2]);
559
- M.applyMatrix3(x).negate(), p.position.set(M.x, -M.y, -M.z);
560
- const b = new r.Vector3(0, 0, 1).applyMatrix3(x);
561
- b.set(b.x, -b.y, -b.z), p.lookAt(p.position.clone().add(b)), o.add(p);
945
+ async function Ag(I, A, g) {
946
+ const B = new Map(A.map((C) => [C.id, C])), Q = new o.Group();
947
+ Q.visible = !1;
948
+ const E = I.map(async (C) => {
949
+ const t = C.name.split("/").pop() ?? C.name, e = g.get(t) ?? g.get(C.name);
950
+ if (!e) return;
951
+ const i = B.get(C.cameraId);
952
+ if (!i) return;
953
+ const a = await $I(e), h = i.width / i.height, F = 0.3, p = new o.PlaneGeometry(F * h, F), N = new o.MeshBasicMaterial({ map: a, side: o.DoubleSide }), D = new o.Mesh(p, N), R = OI(C.qvec).clone().transpose(), M = new o.Vector3(C.tvec[0], C.tvec[1], C.tvec[2]);
954
+ M.applyMatrix3(R).negate(), D.position.set(M.x, -M.y, -M.z);
955
+ const c = new o.Vector3(0, 0, 1).applyMatrix3(R);
956
+ c.set(c.x, -c.y, -c.z), D.lookAt(D.position.clone().add(c)), Q.add(D);
562
957
  });
563
- return await Promise.allSettled(n), o;
958
+ return await Promise.allSettled(E), Q;
564
959
  }
565
- function X(s) {
566
- return s ? new r.Color(11845341) : new r.Color(6581890);
960
+ function rA(I) {
961
+ return I ? new o.Color(11845341) : new o.Color(6581890);
567
962
  }
568
- function wt(s, t, e) {
569
- const i = e * 2, o = i * 2, n = e / 10, a = new r.PlaneGeometry(o, o);
570
- a.rotateX(-Math.PI / 2);
571
- const l = document.documentElement.dataset.theme === "dark", c = new r.ShaderMaterial({
963
+ function Ig(I, A, g) {
964
+ const B = g * 2, Q = B * 2, E = g / 10, C = new o.PlaneGeometry(Q, Q);
965
+ C.rotateX(-Math.PI / 2);
966
+ const t = document.documentElement.dataset.theme === "dark", e = new o.ShaderMaterial({
572
967
  transparent: !0,
573
968
  depthWrite: !1,
574
- side: r.DoubleSide,
969
+ side: o.DoubleSide,
575
970
  uniforms: {
576
- uColor: { value: X(l) },
577
- uRadius: { value: i },
578
- uCellSize: { value: n }
971
+ uColor: { value: rA(t) },
972
+ uRadius: { value: B },
973
+ uCellSize: { value: E }
579
974
  },
580
975
  vertexShader: (
581
976
  /* glsl */
@@ -610,261 +1005,261 @@ function wt(s, t, e) {
610
1005
  }
611
1006
  `
612
1007
  )
613
- }), h = new r.Mesh(a, c);
614
- return h.position.set(s.x, t, s.z), h;
615
- }
616
- async function Pt(s, t, e, i) {
617
- const o = new r.WebGLRenderer({ antialias: !0 });
618
- o.setPixelRatio(window.devicePixelRatio), o.setSize(s.clientWidth, s.clientHeight);
619
- const n = () => document.documentElement.dataset.theme === "dark" ? 855320 : 15265016;
620
- o.setClearColor(n()), s.appendChild(o.domElement);
621
- let a;
622
- const l = new MutationObserver(() => {
623
- o.setClearColor(n());
624
- const m = document.documentElement.dataset.theme === "dark";
625
- a.material.uniforms.uColor.value = X(m);
1008
+ }), i = new o.Mesh(C, e);
1009
+ return i.position.set(I.x, A, I.z), i;
1010
+ }
1011
+ async function gg(I, A, g, B) {
1012
+ const Q = new o.WebGLRenderer({ antialias: !0 });
1013
+ Q.setPixelRatio(window.devicePixelRatio), Q.setSize(I.clientWidth, I.clientHeight);
1014
+ const E = () => document.documentElement.dataset.theme === "dark" ? 855320 : 15265016;
1015
+ Q.setClearColor(E()), I.appendChild(Q.domElement);
1016
+ let C;
1017
+ const t = new MutationObserver(() => {
1018
+ Q.setClearColor(E());
1019
+ const w = document.documentElement.dataset.theme === "dark";
1020
+ C.material.uniforms.uColor.value = rA(w);
626
1021
  });
627
- l.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-theme"] });
628
- const c = new r.PerspectiveCamera(
1022
+ t.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-theme"] });
1023
+ const e = new o.PerspectiveCamera(
629
1024
  60,
630
- s.clientWidth / s.clientHeight,
1025
+ I.clientWidth / I.clientHeight,
631
1026
  1e-3,
632
1027
  1e4
633
1028
  );
634
- c.position.set(0, 0, 5);
635
- const h = new J(c, o.domElement);
636
- h.enableDamping = !1;
637
- const f = new r.Scene();
638
- i?.("Building point cloud…");
639
- const u = t.points3d.length > 0 ? ut(t.points3d) : null;
640
- u && f.add(u), i?.("Building camera frustums…");
641
- const E = ft(t.images, t.cameras);
642
- f.add(E);
643
- const A = new r.Group();
644
- u && A.add(u.clone()), A.add(E.clone());
645
- const C = new r.Box3().setFromObject(
646
- u ?? E
647
- ), p = new r.Vector3(), T = new r.Sphere();
648
- C.getBoundingSphere(T), C.getCenter(p), a = wt(p, C.min.y, T.radius), f.add(a);
649
- const x = bt(T.radius);
650
- f.add(x), i?.("Loading image planes…");
651
- const M = await Et(t.images, t.cameras, e);
652
- f.add(M);
653
- const b = () => {
654
- const m = T.radius / Math.sin(c.fov * Math.PI / 360);
655
- c.position.copy(p).add(new r.Vector3(0, 0, m * 1.5)), c.near = m * 1e-3, c.far = m * 100, c.updateProjectionMatrix(), h.target.copy(p), h.update();
1029
+ e.position.set(0, 0, 5);
1030
+ const i = new SI(e, Q.domElement);
1031
+ i.enableDamping = !1;
1032
+ const a = new o.Scene();
1033
+ B?.("Building point cloud…");
1034
+ const h = A.points3d.length > 0 ? XI(A.points3d) : null;
1035
+ h && a.add(h), B?.("Building camera frustums…");
1036
+ const F = jI(A.images, A.cameras);
1037
+ a.add(F);
1038
+ const p = new o.Group();
1039
+ h && p.add(h.clone()), p.add(F.clone());
1040
+ const N = new o.Box3().setFromObject(
1041
+ h ?? F
1042
+ ), D = new o.Vector3(), Y = new o.Sphere();
1043
+ N.getBoundingSphere(Y), N.getCenter(D), C = Ig(D, N.min.y, Y.radius), a.add(C);
1044
+ const R = vI(Y.radius);
1045
+ a.add(R), B?.("Loading image planes…");
1046
+ const M = await Ag(A.images, A.cameras, g);
1047
+ a.add(M);
1048
+ const c = () => {
1049
+ const w = Y.radius / Math.sin(e.fov * Math.PI / 360);
1050
+ e.position.copy(D).add(new o.Vector3(0, 0, w * 1.5)), e.near = w * 1e-3, e.far = w * 100, e.updateProjectionMatrix(), i.target.copy(D), i.update();
656
1051
  };
657
- b();
658
- const R = T.radius * 5e-3;
659
- u && (u.material.size = R);
660
- let O;
661
- const w = () => {
662
- O = requestAnimationFrame(w), h.update(), o.render(f, c);
1052
+ c();
1053
+ const S = Y.radius * 5e-3;
1054
+ h && (h.material.size = S);
1055
+ let L;
1056
+ const d = () => {
1057
+ L = requestAnimationFrame(d), i.update(), Q.render(a, e);
663
1058
  };
664
- w();
665
- const g = new ResizeObserver(() => {
666
- const m = s.clientWidth, v = s.clientHeight;
667
- o.setSize(m, v), c.aspect = m / v, c.updateProjectionMatrix();
1059
+ d();
1060
+ const y = new ResizeObserver(() => {
1061
+ const w = I.clientWidth, U = I.clientHeight;
1062
+ Q.setSize(w, U), e.aspect = w / U, e.updateProjectionMatrix();
668
1063
  });
669
- return g.observe(s), {
670
- objects: { pointCloud: u, frustums: E, axes: x, imagePlanes: M, grid: a },
671
- canvas: o.domElement,
672
- controls: h,
673
- defaultPointSize: R,
674
- resetView: b,
1064
+ return y.observe(I), {
1065
+ objects: { pointCloud: h, frustums: F, axes: R, imagePlanes: M, grid: C },
1066
+ canvas: Q.domElement,
1067
+ controls: i,
1068
+ defaultPointSize: S,
1069
+ resetView: c,
675
1070
  dispose: () => {
676
- cancelAnimationFrame(O), g.disconnect(), l.disconnect(), o.dispose(), s.removeChild(o.domElement);
1071
+ cancelAnimationFrame(L), y.disconnect(), t.disconnect(), Q.dispose(), I.removeChild(Q.domElement);
677
1072
  }
678
1073
  };
679
1074
  }
680
- function Ct(s) {
681
- return s >= 1e6 ? `${(s / 1e6).toFixed(1)}M` : s >= 1e3 ? `${(s / 1e3).toFixed(0)}k` : String(s);
1075
+ function Bg(I) {
1076
+ return I >= 1e6 ? `${(I / 1e6).toFixed(1)}M` : I >= 1e3 ? `${(I / 1e3).toFixed(0)}k` : String(I);
682
1077
  }
683
- function xt(s, t, e, i) {
684
- const o = document.createElement("label");
685
- o.className = "hud-toggle" + (e ? "" : " hud-toggle--disabled");
686
- const n = document.createElement("input");
687
- return n.type = "checkbox", n.checked = t, n.disabled = !e, e && n.addEventListener("change", () => i(n.checked)), o.append(n, document.createTextNode(" " + s)), o;
1078
+ function Qg(I, A, g, B) {
1079
+ const Q = document.createElement("label");
1080
+ Q.className = "hud-toggle" + (g ? "" : " hud-toggle--disabled");
1081
+ const E = document.createElement("input");
1082
+ return E.type = "checkbox", E.checked = A, E.disabled = !g, g && E.addEventListener("change", () => B(E.checked)), Q.append(E, document.createTextNode(" " + I)), Q;
688
1083
  }
689
- function Mt(s, t) {
1084
+ function Cg(I, A) {
1085
+ const g = document.createElement("div");
1086
+ g.className = "hud";
1087
+ const B = document.createElement("div");
1088
+ B.className = "hud-title", B.textContent = "COLMAP Viewer";
1089
+ const Q = document.createElement("div");
1090
+ Q.className = "hud-stats";
1091
+ const E = document.createElement("div");
1092
+ E.textContent = `📷 Cameras: ${A.cameraCount}`;
1093
+ const C = document.createElement("div");
1094
+ C.textContent = `⚫ Points: ${Bg(A.pointCount)}`, Q.append(E, C);
1095
+ const t = document.createElement("hr");
1096
+ t.className = "hud-divider";
690
1097
  const e = document.createElement("div");
691
- e.className = "hud";
692
- const i = document.createElement("div");
693
- i.className = "hud-title", i.textContent = "COLMAP Viewer";
694
- const o = document.createElement("div");
695
- o.className = "hud-stats";
696
- const n = document.createElement("div");
697
- n.textContent = `📷 Cameras: ${t.cameraCount}`;
698
- const a = document.createElement("div");
699
- a.textContent = `⚫ Points: ${Ct(t.pointCount)}`, o.append(n, a);
700
- const l = document.createElement("hr");
701
- l.className = "hud-divider";
702
- const c = document.createElement("div");
703
- c.className = "hud-toggles";
704
- const h = [
1098
+ e.className = "hud-toggles";
1099
+ const i = [
705
1100
  ["grid", "Grid", !0],
706
- ["pointCloud", "Point Cloud", t.pointCount > 0],
707
- ["frustums", "Camera Frustums", t.cameraCount > 0],
1101
+ ["pointCloud", "Point Cloud", A.pointCount > 0],
1102
+ ["frustums", "Camera Frustums", A.cameraCount > 0],
708
1103
  ["axes", "Axes", !0],
709
- ["imagePlanes", "Image Planes", t.hasImagePlanes]
1104
+ ["imagePlanes", "Image Planes", A.hasImagePlanes]
710
1105
  ];
711
- for (const [w, g, D] of h) {
712
- const m = t.objects[w], v = xt(g, m?.visible ?? !0, D, (L) => {
713
- m && (m.visible = L);
1106
+ for (const [d, y, J] of i) {
1107
+ const w = A.objects[d], U = Qg(y, w?.visible ?? !0, J, (K) => {
1108
+ w && (w.visible = K);
714
1109
  });
715
- c.appendChild(v);
716
- }
717
- const f = document.createElement("hr");
718
- f.className = "hud-divider";
719
- const u = document.createElement("div");
720
- u.className = "hud-size-section", u.style.display = t.pointCount > 0 ? "" : "none";
721
- const E = document.createElement("div");
722
- E.style.cssText = "display:flex;justify-content:space-between;align-items:baseline";
723
- const A = document.createElement("div");
724
- A.className = "hud-size-label", A.textContent = "Point Size";
725
- const C = document.createElement("div");
726
- C.className = "hud-size-label", C.textContent = "1.0×", E.append(A, C);
727
- const p = document.createElement("input");
728
- p.type = "range", p.className = "hud-slider", p.min = "0.1", p.max = "5", p.step = "0.05", p.value = "1", p.addEventListener("input", () => {
729
- const { pointCloud: w } = t.objects;
730
- if (!w) return;
731
- const g = parseFloat(p.value), D = w.material;
732
- D.size = t.defaultPointSize * g, C.textContent = g.toFixed(1) + "×";
733
- }), u.append(E, p);
734
- const T = document.createElement("hr");
735
- T.className = "hud-divider";
736
- const x = document.createElement("button");
737
- x.className = "hud-btn", x.textContent = "Reset View", x.addEventListener("click", t.onReset);
738
- const M = [i, o, l, c, f, u, T, x];
739
- if (t.showThemeToggle !== !1) {
740
- const w = document.createElement("hr");
741
- w.className = "hud-divider";
742
- const g = document.createElement("button");
743
- g.className = "hud-theme-btn";
744
- const D = () => {
745
- const m = document.documentElement.dataset.theme === "dark";
746
- g.textContent = m ? "☀ Light Mode" : "◑ Dark Mode";
1110
+ e.appendChild(U);
1111
+ }
1112
+ const a = document.createElement("hr");
1113
+ a.className = "hud-divider";
1114
+ const h = document.createElement("div");
1115
+ h.className = "hud-size-section", h.style.display = A.pointCount > 0 ? "" : "none";
1116
+ const F = document.createElement("div");
1117
+ F.style.cssText = "display:flex;justify-content:space-between;align-items:baseline";
1118
+ const p = document.createElement("div");
1119
+ p.className = "hud-size-label", p.textContent = "Point Size";
1120
+ const N = document.createElement("div");
1121
+ N.className = "hud-size-label", N.textContent = "1.0×", F.append(p, N);
1122
+ const D = document.createElement("input");
1123
+ D.type = "range", D.className = "hud-slider", D.min = "0.1", D.max = "5", D.step = "0.05", D.value = "1", D.addEventListener("input", () => {
1124
+ const { pointCloud: d } = A.objects;
1125
+ if (!d) return;
1126
+ const y = parseFloat(D.value), J = d.material;
1127
+ J.size = A.defaultPointSize * y, N.textContent = y.toFixed(1) + "×";
1128
+ }), h.append(F, D);
1129
+ const Y = document.createElement("hr");
1130
+ Y.className = "hud-divider";
1131
+ const R = document.createElement("button");
1132
+ R.className = "hud-btn", R.textContent = "Reset View", R.addEventListener("click", A.onReset);
1133
+ const M = [B, Q, t, e, a, h, Y, R];
1134
+ if (A.showThemeToggle !== !1) {
1135
+ const d = document.createElement("hr");
1136
+ d.className = "hud-divider";
1137
+ const y = document.createElement("button");
1138
+ y.className = "hud-theme-btn";
1139
+ const J = () => {
1140
+ const w = document.documentElement.dataset.theme === "dark";
1141
+ y.textContent = w ? "☀ Light Mode" : "◑ Dark Mode";
747
1142
  };
748
- D(), g.addEventListener("click", () => {
749
- const m = document.documentElement.dataset.theme === "dark" ? "light" : "dark";
750
- document.documentElement.dataset.theme = m, localStorage.setItem("theme", m), D();
751
- }), M.push(w, g);
752
- }
753
- e.append(...M), s.appendChild(e);
754
- let b;
755
- t.onUploadNew && (b = document.createElement("button"), b.className = "upload-new-btn", b.textContent = "⬆ Upload New", b.addEventListener("click", t.onUploadNew), s.appendChild(b));
756
- let R;
757
- t.showControlsHint !== !1 && (R = document.createElement("div"), R.className = "controls-hint", R.textContent = "Rotate: drag | Zoom: scroll | Pan: right-drag", s.appendChild(R));
758
- let O;
759
- if (t.showAxisLegend !== !1) {
760
- O = document.createElement("div"), O.className = "axis-legend";
761
- const w = [
1143
+ J(), y.addEventListener("click", () => {
1144
+ const w = document.documentElement.dataset.theme === "dark" ? "light" : "dark";
1145
+ document.documentElement.dataset.theme = w, localStorage.setItem("theme", w), J();
1146
+ }), M.push(d, y);
1147
+ }
1148
+ g.append(...M), I.appendChild(g);
1149
+ let c;
1150
+ A.onUploadNew && (c = document.createElement("button"), c.className = "upload-new-btn", c.textContent = "⬆ Upload New", c.addEventListener("click", A.onUploadNew), I.appendChild(c));
1151
+ let S;
1152
+ A.showControlsHint !== !1 && (S = document.createElement("div"), S.className = "controls-hint", S.textContent = "Rotate: drag | Zoom: scroll | Pan: right-drag", I.appendChild(S));
1153
+ let L;
1154
+ if (A.showAxisLegend !== !1) {
1155
+ L = document.createElement("div"), L.className = "axis-legend";
1156
+ const d = [
762
1157
  ["X", "#ff2222", null],
763
1158
  ["Y ↑", "#00cc00", "COLMAP −Y ↓"],
764
1159
  ["Z", "#2266ff", "COLMAP −Z"]
765
1160
  ];
766
- for (const [g, D, m] of w) {
767
- const v = document.createElement("div");
768
- v.className = "axis-legend-row";
769
- const L = document.createElement("span");
770
- if (L.className = "axis-legend-name", L.textContent = g, L.style.color = D, v.appendChild(L), m) {
1161
+ for (const [y, J, w] of d) {
1162
+ const U = document.createElement("div");
1163
+ U.className = "axis-legend-row";
1164
+ const K = document.createElement("span");
1165
+ if (K.className = "axis-legend-name", K.textContent = y, K.style.color = J, U.appendChild(K), w) {
771
1166
  const z = document.createElement("span");
772
- z.className = "axis-legend-sub", z.textContent = m, v.appendChild(z);
1167
+ z.className = "axis-legend-sub", z.textContent = w, U.appendChild(z);
773
1168
  }
774
- O.appendChild(v);
1169
+ L.appendChild(U);
775
1170
  }
776
- s.appendChild(O);
1171
+ I.appendChild(L);
777
1172
  }
778
1173
  return () => {
779
- e.remove(), b?.remove(), R?.remove(), O?.remove();
1174
+ g.remove(), c?.remove(), S?.remove(), L?.remove();
780
1175
  };
781
1176
  }
782
- class St {
1177
+ class Eg {
783
1178
  container;
784
1179
  options;
785
1180
  scene = null;
786
1181
  disposeHud;
787
1182
  statusEl = null;
788
1183
  abortController = null;
789
- constructor(t, e = {}) {
790
- this.container = t, this.options = e;
1184
+ constructor(A, g = {}) {
1185
+ this.container = A, this.options = g;
791
1186
  }
792
- async loadFromUrls(t) {
1187
+ async loadFromUrls(A) {
793
1188
  this.abortController?.abort();
794
- const e = new AbortController();
795
- this.abortController = e, this._setStatus("Fetching COLMAP files…");
1189
+ const g = new AbortController();
1190
+ this.abortController = g, this._setStatus("Fetching COLMAP files…");
796
1191
  try {
797
- const [i, o, n] = await Promise.all([
798
- U(t.cameras),
799
- U(t.images),
800
- t.points3d ? U(t.points3d) : Promise.resolve(void 0)
1192
+ const [B, Q, E] = await Promise.all([
1193
+ O(A.cameras),
1194
+ O(A.images),
1195
+ A.points3d ? O(A.points3d) : Promise.resolve(void 0)
801
1196
  ]);
802
- if (e.signal.aborted) return;
803
- await this._render({ cameras: i, images: o, points3d: n }, e.signal);
804
- } catch (i) {
805
- if (e.signal.aborted) return;
806
- this._setError(i instanceof Error ? i.message : String(i));
1197
+ if (g.signal.aborted) return;
1198
+ await this._render({ cameras: B, images: Q, points3d: E }, g.signal);
1199
+ } catch (B) {
1200
+ if (g.signal.aborted) return;
1201
+ this._setError(B instanceof Error ? B.message : String(B));
807
1202
  }
808
1203
  }
809
- async loadFromBuffers(t) {
1204
+ async loadFromBuffers(A) {
810
1205
  this.abortController?.abort();
811
- const e = new AbortController();
812
- this.abortController = e, await this._render(t, e.signal);
1206
+ const g = new AbortController();
1207
+ this.abortController = g, await this._render(A, g.signal);
813
1208
  }
814
1209
  dispose() {
815
1210
  this.abortController?.abort(), this.abortController = null, this._teardown();
816
1211
  }
817
- async _render(t, e) {
1212
+ async _render(A, g) {
818
1213
  this._teardown(), this._setStatus("Parsing…");
819
1214
  try {
820
- const i = await V(t);
821
- if (e.aborted) return;
1215
+ const B = await wA(A);
1216
+ if (g.aborted) return;
822
1217
  this._setStatus("Building scene…");
823
- const o = await Pt(
1218
+ const Q = await gg(
824
1219
  this.container,
825
- i,
1220
+ B,
826
1221
  /* @__PURE__ */ new Map(),
827
- (n) => this._setStatus(n)
1222
+ (E) => this._setStatus(E)
828
1223
  );
829
- if (e.aborted) {
830
- o.dispose();
1224
+ if (g.aborted) {
1225
+ Q.dispose();
831
1226
  return;
832
1227
  }
833
- this.scene = o, this._clearStatus(), this.disposeHud = Mt(this.container, {
834
- cameraCount: i.images.length,
835
- pointCount: i.points3d.length,
1228
+ this.scene = Q, this._clearStatus(), this.disposeHud = Cg(this.container, {
1229
+ cameraCount: B.images.length,
1230
+ pointCount: B.points3d.length,
836
1231
  hasImagePlanes: !1,
837
- objects: o.objects,
838
- defaultPointSize: o.defaultPointSize,
839
- onReset: o.resetView,
1232
+ objects: Q.objects,
1233
+ defaultPointSize: Q.defaultPointSize,
1234
+ onReset: Q.resetView,
840
1235
  showThemeToggle: this.options.showThemeToggle,
841
1236
  showAxisLegend: this.options.showAxisLegend,
842
1237
  showControlsHint: this.options.showControlsHint
843
1238
  });
844
- } catch (i) {
845
- if (e.aborted) return;
846
- this._setError(i instanceof Error ? i.message : String(i));
1239
+ } catch (B) {
1240
+ if (g.aborted) return;
1241
+ this._setError(B instanceof Error ? B.message : String(B));
847
1242
  }
848
1243
  }
849
1244
  _teardown() {
850
1245
  this.disposeHud?.(), this.disposeHud = void 0, this.scene?.dispose(), this.scene = null, this._clearStatus();
851
1246
  }
852
- _setStatus(t) {
853
- this.statusEl || (this.statusEl = document.createElement("div"), this.statusEl.className = "colmap-renderer-status", this.container.appendChild(this.statusEl)), this.statusEl.textContent = t;
1247
+ _setStatus(A) {
1248
+ this.statusEl || (this.statusEl = document.createElement("div"), this.statusEl.className = "colmap-renderer-status", this.container.appendChild(this.statusEl)), this.statusEl.textContent = A;
854
1249
  }
855
1250
  _clearStatus() {
856
1251
  this.statusEl?.remove(), this.statusEl = null;
857
1252
  }
858
- _setError(t) {
859
- this._teardown(), this.statusEl || (this.statusEl = document.createElement("div"), this.container.appendChild(this.statusEl)), this.statusEl.className = "colmap-renderer-error", this.statusEl.textContent = `Error: ${t}`;
1253
+ _setError(A) {
1254
+ this._teardown(), this.statusEl || (this.statusEl = document.createElement("div"), this.container.appendChild(this.statusEl)), this.statusEl.className = "colmap-renderer-error", this.statusEl.textContent = `Error: ${A}`;
860
1255
  }
861
1256
  }
862
- async function U(s) {
863
- const t = await fetch(s);
864
- if (!t.ok) throw new Error(`fetch failed: ${t.status} ${t.statusText}`);
865
- return t.arrayBuffer();
1257
+ async function O(I) {
1258
+ const A = await fetch(I);
1259
+ if (!A.ok) throw new Error(`fetch failed: ${A.status} ${A.statusText}`);
1260
+ return A.arrayBuffer();
866
1261
  }
867
- class Tt extends HTMLElement {
1262
+ class tg extends HTMLElement {
868
1263
  static observedAttributes = [
869
1264
  "cameras-url",
870
1265
  "images-url",
@@ -875,7 +1270,7 @@ class Tt extends HTMLElement {
875
1270
  ];
876
1271
  renderer = null;
877
1272
  connectedCallback() {
878
- getComputedStyle(this).position === "static" && (this.style.position = "relative"), this.renderer = new St(this, this._readOptions()), this._maybeLoad();
1273
+ getComputedStyle(this).position === "static" && (this.style.position = "relative"), this.renderer = new Eg(this, this._readOptions()), this._maybeLoad();
879
1274
  }
880
1275
  disconnectedCallback() {
881
1276
  this.renderer?.dispose(), this.renderer = null;
@@ -890,34 +1285,34 @@ class Tt extends HTMLElement {
890
1285
  showControlsHint: this._boolAttr("show-controls-hint")
891
1286
  };
892
1287
  }
893
- _boolAttr(t) {
894
- const e = this.getAttribute(t);
895
- if (e !== null)
896
- return e !== "false";
1288
+ _boolAttr(A) {
1289
+ const g = this.getAttribute(A);
1290
+ if (g !== null)
1291
+ return g !== "false";
897
1292
  }
898
1293
  _maybeLoad() {
899
- const t = this.getAttribute("cameras-url"), e = this.getAttribute("images-url");
900
- !t || !e || this.renderer?.loadFromUrls({
901
- cameras: t,
902
- images: e,
1294
+ const A = this.getAttribute("cameras-url"), g = this.getAttribute("images-url");
1295
+ !A || !g || this.renderer?.loadFromUrls({
1296
+ cameras: A,
1297
+ images: g,
903
1298
  points3d: this.getAttribute("points3d-url") ?? void 0
904
1299
  });
905
1300
  }
906
1301
  }
907
- customElements.get("colmap-viewer") || customElements.define("colmap-viewer", Tt);
908
- async function At(s, t) {
909
- t?.("Parsing cameras…");
910
- const e = await V({
911
- cameras: s.cameras,
912
- images: s.images,
913
- points3d: s.points3d
1302
+ customElements.get("colmap-viewer") || customElements.define("colmap-viewer", tg);
1303
+ async function sg(I, A) {
1304
+ A?.("Parsing cameras…");
1305
+ const g = await wA({
1306
+ cameras: I.cameras,
1307
+ images: I.images,
1308
+ points3d: I.points3d
914
1309
  });
915
- return t?.(`Parsed ${e.cameras.length} cameras, ${e.points3d.length} points`), e;
1310
+ return A?.(`Parsed ${g.cameras.length} cameras, ${g.points3d.length} points`), g;
916
1311
  }
917
1312
  export {
918
- St as ColmapRenderer,
919
- Tt as ColmapViewerElement,
920
- Pt as buildScene,
921
- Mt as createHud,
922
- At as parse
1313
+ Eg as ColmapRenderer,
1314
+ tg as ColmapViewerElement,
1315
+ gg as buildScene,
1316
+ Cg as createHud,
1317
+ sg as parse
923
1318
  };