angular-three-postprocessing 4.0.0-next.99 → 4.0.0

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.
Files changed (44) hide show
  1. package/README.md +80 -21
  2. package/fesm2022/angular-three-postprocessing-n8ao.mjs +42 -7
  3. package/fesm2022/angular-three-postprocessing-n8ao.mjs.map +1 -1
  4. package/fesm2022/angular-three-postprocessing.mjs +1185 -241
  5. package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
  6. package/n8ao/README.md +143 -0
  7. package/package.json +7 -7
  8. package/types/angular-three-postprocessing-n8ao.d.ts +167 -0
  9. package/types/angular-three-postprocessing.d.ts +1887 -0
  10. package/index.d.ts +0 -3
  11. package/lib/effect-composer.d.ts +0 -38
  12. package/lib/effect.d.ts +0 -52
  13. package/lib/effects/ascii.d.ts +0 -24
  14. package/lib/effects/bloom.d.ts +0 -11
  15. package/lib/effects/brightness-contrast.d.ts +0 -16
  16. package/lib/effects/chromatic-abberation.d.ts +0 -17
  17. package/lib/effects/color-average.d.ts +0 -12
  18. package/lib/effects/color-depth.d.ts +0 -15
  19. package/lib/effects/depth-of-field.d.ts +0 -20
  20. package/lib/effects/depth.d.ts +0 -15
  21. package/lib/effects/dot-screen.d.ts +0 -16
  22. package/lib/effects/fxaa.d.ts +0 -14
  23. package/lib/effects/glitch.d.ts +0 -32
  24. package/lib/effects/god-rays.d.ts +0 -32
  25. package/lib/effects/grid.d.ts +0 -18
  26. package/lib/effects/hue-saturation.d.ts +0 -16
  27. package/lib/effects/index.d.ts +0 -29
  28. package/lib/effects/lens-flare.d.ts +0 -94
  29. package/lib/effects/lut.d.ts +0 -18
  30. package/lib/effects/noise.d.ts +0 -15
  31. package/lib/effects/outline.d.ts +0 -73
  32. package/lib/effects/pixelation.d.ts +0 -17
  33. package/lib/effects/scanline.d.ts +0 -18
  34. package/lib/effects/selective-bloom.d.ts +0 -42
  35. package/lib/effects/sepia.d.ts +0 -15
  36. package/lib/effects/shock-wave.d.ts +0 -12
  37. package/lib/effects/smaa.d.ts +0 -16
  38. package/lib/effects/tilt-shift-2.d.ts +0 -35
  39. package/lib/effects/tilt-shift.d.ts +0 -23
  40. package/lib/effects/tone-mapping.d.ts +0 -23
  41. package/lib/effects/vignette.d.ts +0 -18
  42. package/lib/effects/water.d.ts +0 -21
  43. package/n8ao/index.d.ts +0 -1
  44. package/n8ao/lib/n8ao.d.ts +0 -35
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-postprocessing.mjs","sources":["../../../../libs/postprocessing/src/lib/effect.ts","../../../../libs/postprocessing/src/lib/effect-composer.ts","../../../../libs/postprocessing/src/lib/effects/ascii.ts","../../../../libs/postprocessing/src/lib/effects/bloom.ts","../../../../libs/postprocessing/src/lib/effects/brightness-contrast.ts","../../../../libs/postprocessing/src/lib/effects/chromatic-abberation.ts","../../../../libs/postprocessing/src/lib/effects/color-average.ts","../../../../libs/postprocessing/src/lib/effects/color-depth.ts","../../../../libs/postprocessing/src/lib/effects/depth.ts","../../../../libs/postprocessing/src/lib/effects/depth-of-field.ts","../../../../libs/postprocessing/src/lib/effects/dot-screen.ts","../../../../libs/postprocessing/src/lib/effects/fxaa.ts","../../../../libs/postprocessing/src/lib/effects/glitch.ts","../../../../libs/postprocessing/src/lib/effects/god-rays.ts","../../../../libs/postprocessing/src/lib/effects/grid.ts","../../../../libs/postprocessing/src/lib/effects/hue-saturation.ts","../../../../libs/postprocessing/src/lib/effects/lens-flare.ts","../../../../libs/postprocessing/src/lib/effects/lut.ts","../../../../libs/postprocessing/src/lib/effects/noise.ts","../../../../libs/postprocessing/src/lib/effects/outline.ts","../../../../libs/postprocessing/src/lib/effects/pixelation.ts","../../../../libs/postprocessing/src/lib/effects/scanline.ts","../../../../libs/postprocessing/src/lib/effects/selective-bloom.ts","../../../../libs/postprocessing/src/lib/effects/sepia.ts","../../../../libs/postprocessing/src/lib/effects/shock-wave.ts","../../../../libs/postprocessing/src/lib/effects/smaa.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift-2.ts","../../../../libs/postprocessing/src/lib/effects/tone-mapping.ts","../../../../libs/postprocessing/src/lib/effects/vignette.ts","../../../../libs/postprocessing/src/lib/effects/water.ts","../../../../libs/postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, inject, input } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { createNoopInjectionToken } from 'ngxtension/create-injection-token';\nimport { BlendFunction } from 'postprocessing';\n\nexport const [injectDefaultEffectOptions, provideDefaultEffectOptions] = createNoopInjectionToken<{\n\tblendFunction?: BlendFunction;\n\topacity?: number;\n}>('Default Effect options');\n\n@Component({\n\tselector: 'ngtp-effect-blend-mode',\n\ttemplate: `\n\t\t@if (effect) {\n\t\t\t<ngt-value [rawValue]=\"effect.blendFunction()\" attach=\"blendMode.blendFunction\" />\n\t\t\t<ngt-value [rawValue]=\"effect.opacity()\" attach=\"blendMode.opacity.value\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectBlendMode {\n\teffect = inject(NgtpEffect, { optional: true });\n}\n\n@Directive()\nexport class NgtpEffect {\n\tdefaultEffectOptions = injectDefaultEffectOptions({ optional: true });\n\n\tblendFunction = input(this.defaultEffectOptions?.blendFunction);\n\topacity = input(this.defaultEffectOptions?.opacity);\n\n\tprivate store = injectStore();\n\tcamera = this.store.camera;\n\tinvalidate = this.store.invalidate;\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, getInstanceState, injectStore, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthDownsamplingPass,\n\tEffect,\n\tEffectAttribute,\n\tEffectComposer,\n\tEffectPass,\n\tNormalPass,\n\tPass,\n\tRenderPass,\n} from 'postprocessing';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\nexport interface NgtpEffectComposerOptions {\n\tenabled: boolean;\n\tdepthBuffer?: boolean;\n\t/** Only used for SSGI currently, leave it disabled for everything else unless it's needed */\n\tenableNormalPass?: boolean;\n\tstencilBuffer?: boolean;\n\tautoClear: boolean;\n\tresolutionScale?: number;\n\tmultisampling: number;\n\tframeBufferType: THREE.TextureDataType;\n\trenderPriority: number;\n\tcamera?: THREE.Camera;\n\tscene?: THREE.Scene;\n}\n\nconst defaultOptions: NgtpEffectComposerOptions = {\n\tenabled: true,\n\trenderPriority: 1,\n\tautoClear: true,\n\tmultisampling: 8,\n\tframeBufferType: THREE.HalfFloatType,\n};\n\nfunction isConvolution(effect: Effect) {\n\treturn (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;\n}\n\n@Component({\n\tselector: 'ngtp-effect-composer',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectComposer {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate depthBuffer = pick(this.options, 'depthBuffer');\n\tprivate stencilBuffer = pick(this.options, 'stencilBuffer');\n\tprivate multisampling = pick(this.options, 'multisampling');\n\tprivate frameBufferType = pick(this.options, 'frameBufferType');\n\tprivate enableNormalPass = pick(this.options, 'enableNormalPass');\n\tprivate resolutionScale = pick(this.options, 'resolutionScale');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate renderPriority = pick(this.options, 'renderPriority');\n\n\tscene = computed(() => this.options().scene ?? this.store.scene());\n\tcamera = computed(() => this.options().camera ?? this.store.camera());\n\n\tprivate groupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate priority = computed(() => {\n\t\tconst enabled = this.enabled();\n\t\tif (!enabled) return 0;\n\t\treturn this.renderPriority();\n\t});\n\n\tprivate composerData = computed(() => {\n\t\tconst webGL2Available = isWebGL2Available();\n\t\tconst [\n\t\t\tgl,\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling,\n\t\t\tframeBufferType,\n\t\t\tenableNormalPass,\n\t\t\tresolutionScale,\n\t\t] = [\n\t\t\tthis.store.gl(),\n\t\t\tthis.scene(),\n\t\t\tthis.camera(),\n\t\t\tthis.depthBuffer(),\n\t\t\tthis.stencilBuffer(),\n\t\t\tthis.multisampling(),\n\t\t\tthis.frameBufferType(),\n\t\t\tthis.enableNormalPass(),\n\t\t\tthis.resolutionScale(),\n\t\t];\n\n\t\t// initialize composer\n\t\tconst composer = new EffectComposer(gl, {\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n\t\t\tframeBufferType,\n\t\t});\n\n\t\t// add render pass\n\t\tcomposer.addPass(new RenderPass(scene, camera));\n\n\t\t// create normal pass\n\t\tlet downSamplingPass = null;\n\t\tlet normalPass = null;\n\t\tif (enableNormalPass) {\n\t\t\tnormalPass = new NormalPass(scene, camera);\n\t\t\tnormalPass.enabled = false;\n\t\t\tcomposer.addPass(normalPass);\n\t\t\tif (resolutionScale !== undefined && webGL2Available) {\n\t\t\t\tdownSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });\n\t\t\t\tdownSamplingPass.enabled = false;\n\t\t\t\tcomposer.addPass(downSamplingPass);\n\t\t\t}\n\t\t}\n\n\t\treturn { composer, normalPass, downSamplingPass };\n\t});\n\n\teffectComposer = pick(this.composerData, 'composer');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\t// NOTE: Disable tone mapping because threejs disallows tonemapping on render targets\n\t\teffect((onCleanup) => {\n\t\t\tconst gl = this.store.gl();\n\t\t\tconst currentTonemapping = gl.toneMapping;\n\t\t\tgl.toneMapping = THREE.NoToneMapping;\n\t\t\tonCleanup(() => {\n\t\t\t\tgl.toneMapping = currentTonemapping;\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [composer, width, height] = [\n\t\t\t\tthis.effectComposer(),\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tif (composer) {\n\t\t\t\tcomposer.setSize(width, height);\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [group, { composer, normalPass, downSamplingPass }, camera] = [\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.composerData(),\n\t\t\t\tthis.camera(),\n\t\t\t];\n\n\t\t\tconst passes: Pass[] = [];\n\n\t\t\tif (composer) {\n\t\t\t\tconst instanceState = getInstanceState(group);\n\t\t\t\tif (!instanceState) return;\n\n\t\t\t\tconst children = instanceState.nonObjects();\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst child = children[i];\n\t\t\t\t\tif (child instanceof Effect) {\n\t\t\t\t\t\tconst effects: Effect[] = [child];\n\n\t\t\t\t\t\tif (!isConvolution(child)) {\n\t\t\t\t\t\t\tlet next: unknown = null;\n\t\t\t\t\t\t\twhile ((next = children[i + 1]) instanceof Effect) {\n\t\t\t\t\t\t\t\tif (isConvolution(next)) break;\n\t\t\t\t\t\t\t\teffects.push(next as Effect);\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst pass = new EffectPass(camera, ...effects);\n\t\t\t\t\t\tpasses.push(pass);\n\t\t\t\t\t} else if (child instanceof Pass) {\n\t\t\t\t\t\tpasses.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (const pass of passes) {\n\t\t\t\t\tcomposer.addPass(pass);\n\t\t\t\t}\n\n\t\t\t\tif (normalPass) normalPass.enabled = true;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = true;\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tfor (const pass of passes) composer?.removePass(pass);\n\t\t\t\tif (normalPass) normalPass.enabled = false;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = false;\n\t\t\t});\n\t\t});\n\n\t\tbeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst [composer, { enabled, autoClear, stencilBuffer }, gl] = [\n\t\t\t\t\tthis.effectComposer(),\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.store.snapshot.gl,\n\t\t\t\t];\n\n\t\t\t\tif (enabled) {\n\t\t\t\t\tconst currentAutoClear = gl.autoClear;\n\t\t\t\t\tgl.autoClear = autoClear;\n\t\t\t\t\tif (stencilBuffer && !autoClear) gl.clearStencil();\n\t\t\t\t\tcomposer.render(delta);\n\t\t\t\t\tgl.autoClear = currentAutoClear;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: this.priority },\n\t\t);\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Effect } from 'postprocessing';\nimport * as THREE from 'three';\n\nconst fragment = /* language=glsl glsl */ `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`;\n\ninterface ASCIIEffectOptions {\n\tfont?: string;\n\tcharacters?: string;\n\tfontSize?: number;\n\tcellSize?: number;\n\tcolor?: string;\n\tinvert?: boolean;\n}\n\nexport class ASCIIEffect extends Effect {\n\tconstructor({\n\t\tfont = 'arial',\n\t\tcharacters = ` .:,'-^=*+?!|0#X%WM@`,\n\t\tfontSize = 54,\n\t\tcellSize = 16,\n\t\tcolor = '#ffffff',\n\t\tinvert = false,\n\t}: ASCIIEffectOptions = {}) {\n\t\tconst uniforms = new Map<string, THREE.Uniform>([\n\t\t\t['uCharacters', new THREE.Uniform(new THREE.Texture())],\n\t\t\t['uCellSize', new THREE.Uniform(cellSize)],\n\t\t\t['uCharactersCount', new THREE.Uniform(characters.length)],\n\t\t\t['uColor', new THREE.Uniform(new THREE.Color(color))],\n\t\t\t['uInvert', new THREE.Uniform(invert)],\n\t\t]);\n\n\t\tsuper('ASCIIEffect', fragment, { uniforms });\n\n\t\tconst charactersTextureUniform = this.uniforms.get('uCharacters');\n\n\t\tif (charactersTextureUniform) {\n\t\t\tcharactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);\n\t\t}\n\t}\n\n\t/** Draws the characters on a Canvas and returns a texture */\n\tpublic createCharactersTexture(characters: string, font: string, fontSize: number): THREE.Texture {\n\t\tconst canvas = document.createElement('canvas');\n\t\tconst SIZE = 1024;\n\t\tconst MAX_PER_ROW = 16;\n\t\tconst CELL = SIZE / MAX_PER_ROW;\n\n\t\tcanvas.width = canvas.height = SIZE;\n\t\tconst texture = new THREE.CanvasTexture(\n\t\t\tcanvas,\n\t\t\tundefined,\n\t\t\tTHREE.RepeatWrapping,\n\t\t\tTHREE.RepeatWrapping,\n\t\t\tTHREE.NearestFilter,\n\t\t\tTHREE.NearestFilter,\n\t\t);\n\t\tconst context = canvas.getContext('2d');\n\n\t\tif (!context) {\n\t\t\tthrow new Error('Context not available');\n\t\t}\n\n\t\tcontext.clearRect(0, 0, SIZE, SIZE);\n\t\tcontext.font = `${fontSize}px ${font}`;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.textBaseline = 'middle';\n\t\tcontext.fillStyle = '#fff';\n\n\t\tfor (let i = 0; i < characters.length; i++) {\n\t\t\tconst char = characters[i];\n\t\t\tconst x = i % MAX_PER_ROW;\n\t\t\tconst y = Math.floor(i / MAX_PER_ROW);\n\t\t\tcontext.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\t}\n}\n\nconst defaultOptions: ASCIIEffectOptions = {\n\tfont: 'arial',\n\tcharacters: ` .:,'-^=*+?!|0#X%WM@`,\n\tfontSize: 54,\n\tcellSize: 16,\n\tcolor: '#ffffff',\n\tinvert: false,\n};\n\n@Component({\n\tselector: 'ngtp-ascii',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpASCII {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected effect = computed(() => new ASCIIEffect(this.options()));\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, BloomEffect, BloomEffectOptions } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n@Component({\n\tselector: 'ngtp-bloom',\n\ttemplate: `\n\t\t<ngt-bloom-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-bloom-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpBloom {\n\toptions = input({} as Omit<BloomEffectOptions, 'blendFunction'>);\n\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ BloomEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BrightnessContrastEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type BrightnessEffectOptions = NonNullable<ConstructorParameters<typeof BrightnessContrastEffect>[0]>;\n\n@Component({\n\tselector: 'ngtp-brightness-contrast',\n\ttemplate: `\n\t\t<ngt-brightness-contrast-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-brightness-contrast-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpBrightnessContrast {\n\toptions = input({} as Omit<BrightnessEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ BrightnessContrastEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ChromaticAberrationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type ChromaticAberrationEffectOptions = Partial<\n\tNonNullable<ConstructorParameters<typeof ChromaticAberrationEffect>[0]>\n>;\n\n@Component({\n\tselector: 'ngtp-chromatic-aberration',\n\ttemplate: `\n\t\t<ngt-chromatic-aberration-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-chromatic-aberration-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpChromaticAberration {\n\toptions = input({} as Omit<ChromaticAberrationEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ ChromaticAberrationEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ColorAverageEffect } from 'postprocessing';\n\n@Component({\n\tselector: 'ngtp-color-average',\n\ttemplate: `\n\t\t<ngt-color-average-effect *args=\"[options().blendFunction]\">\n\t\t\t<ng-content />\n\t\t</ngt-color-average-effect>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpColorAverage {\n\toptions = input(\n\t\t{ blendFunction: BlendFunction.NORMAL },\n\t\t{ transform: mergeInputs({ blendFunction: BlendFunction.NORMAL }) },\n\t);\n\n\tconstructor() {\n\t\textend({ ColorAverageEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ColorDepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type ColorDepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ColorDepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-color-depth',\n\ttemplate: `\n\t\t<ngt-color-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-color-depth-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpColorDepth {\n\toptions = input({} as Omit<ColorDepthEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ ColorDepthEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type DepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-depth',\n\ttemplate: `\n\t\t<ngt-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-depth-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpDepth {\n\toptions = input({} as Omit<DepthEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ DepthEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtAnyRecord, NgtArgs, NgtVector3 } from 'angular-three';\nimport { DepthOfFieldEffect, MaskFunction } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype DOFOptions = NonNullable<ConstructorParameters<typeof DepthOfFieldEffect>[1]> &\n\tPartial<{ target: NgtVector3; depthTexture: { texture: THREE.Texture; packing: THREE.DepthPackingStrategies } }>;\n\n@Component({\n\tselector: 'ngtp-depth-of-field',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpDepthOfField {\n\toptions = input({} as DOFOptions);\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\tprotected effect = computed(() => {\n\t\tconst [camera, options] = [this.effectComposer.camera(), this.options()];\n\n\t\tconst autoFocus = options.target != null;\n\n\t\tconst effect = new DepthOfFieldEffect(camera, options);\n\n\t\t// Creating a target enables autofocus, NGT will set via props\n\t\tif (autoFocus) effect.target = new THREE.Vector3();\n\t\t// Depth texture for depth picking with optional packing strategy\n\t\tif (options.depthTexture) {\n\t\t\teffect.setDepthTexture(\n\t\t\t\toptions.depthTexture.texture,\n\t\t\t\toptions.depthTexture.packing as THREE.DepthPackingStrategies,\n\t\t\t);\n\t\t}\n\t\t// Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur\n\t\tconst maskPass = (effect as NgtAnyRecord)['maskPass'];\n\t\tmaskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst depthOfFieldEffect = this.effect();\n\t\t\tonCleanup(() => depthOfFieldEffect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DotScreenEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type DotScreenEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DotScreenEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-dot-screen',\n\ttemplate: `\n\t\t<ngt-dot-screen-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-dot-screen-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpDotScreen {\n\toptions = input({} as Omit<DotScreenEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ DotScreenEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { FXAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type FXAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof FXAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-fxaa',\n\ttemplate: `\n\t\t<ngt-fXAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-fXAA-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpFXAA {\n\toptions = input({} as Omit<FXAAEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ FXAAEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, NgtVector2, injectStore, pick, vector2 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { GlitchEffect, GlitchMode } from 'postprocessing';\n\nexport type GlitchOptions = NonNullable<ConstructorParameters<typeof GlitchEffect>[0]> &\n\tPartial<{\n\t\tmode: GlitchMode;\n\t\tactive: boolean;\n\t\tdelay: NgtVector2;\n\t\tduration: NgtVector2;\n\t\tchromaticAberrationOffset: NgtVector2;\n\t\tstrength: NgtVector2;\n\t}>;\n\n@Component({\n\tselector: 'ngtp-glitch',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpGlitch {\n\toptions = input({ active: true } as GlitchOptions, { transform: mergeInputs({ active: true }) });\n\n\tprivate active = pick(this.options, 'active');\n\tprivate mode = pick(this.options, 'mode');\n\tprivate ratio = pick(this.options, 'ratio');\n\tprivate dtSize = pick(this.options, 'dtSize');\n\tprivate columns = pick(this.options, 'columns');\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate perturbationMap = pick(this.options, 'perturbationMap');\n\n\tprivate delay = vector2(this.options, 'delay');\n\tprivate duration = vector2(this.options, 'duration');\n\tprivate chromaticAberrationOffset = vector2(this.options, 'chromaticAberrationOffset');\n\tprivate strength = vector2(this.options, 'strength');\n\n\tprivate store = injectStore();\n\n\teffect = computed(\n\t\t() =>\n\t\t\tnew GlitchEffect({\n\t\t\t\tratio: this.ratio(),\n\t\t\t\tdtSize: this.dtSize(),\n\t\t\t\tcolumns: this.columns(),\n\t\t\t\tblendFunction: this.blendFunction(),\n\t\t\t\tperturbationMap: this.perturbationMap(),\n\t\t\t\tdelay: this.delay(),\n\t\t\t\tduration: this.duration(),\n\t\t\t\tchromaticAberrationOffset: this.chromaticAberrationOffset(),\n\t\t\t\tstrength: this.strength(),\n\t\t\t}),\n\t);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [glitchEffect, invalidate, mode, active] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.mode(),\n\t\t\t\tthis.active(),\n\t\t\t];\n\t\t\tglitchEffect.mode = active ? mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, omit, pick, resolveRef } from 'angular-three';\nimport { GodRaysEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype GodRaysOptions = ConstructorParameters<typeof GodRaysEffect>[2] & {\n\tsun:\n\t\t| THREE.Mesh\n\t\t| THREE.Points\n\t\t| ElementRef<THREE.Mesh | THREE.Points>\n\t\t| (() => THREE.Mesh | THREE.Points | ElementRef<THREE.Mesh | THREE.Points> | undefined);\n};\n\n@Component({\n\tselector: 'ngtp-god-rays',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGodRays {\n\toptions = input({} as GodRaysOptions);\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\tprivate effectOptions = omit(this.options, ['sun']);\n\tprivate sun = pick(this.options, 'sun');\n\n\tprivate sunElement = computed(() => {\n\t\tconst sun = this.sun();\n\t\tif (typeof sun === 'function') return resolveRef(sun());\n\t\treturn resolveRef(sun);\n\t});\n\n\tprotected effect = computed(() => {\n\t\tconst [camera, sunElement, options] = [this.effectComposer.camera(), this.sunElement(), this.effectOptions()];\n\t\treturn new GodRaysEffect(camera, sunElement, options);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst sunElement = this.sunElement();\n\t\t\tif (!sunElement) return;\n\n\t\t\tconst godRaysEffect = this.effect();\n\t\t\tgodRaysEffect.lightSource = sunElement;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, omit, pick } from 'angular-three';\nimport { GridEffect } from 'postprocessing';\n\ntype GridOptions = NonNullable<ConstructorParameters<typeof GridEffect>[0]> &\n\tPartial<{ size: { width: number; height: number } }>;\n\n@Component({\n\tselector: 'ngtp-grid',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGrid {\n\toptions = input({} as GridOptions);\n\tprivate effectOptions = omit(this.options, ['size']);\n\tprivate size = pick(this.options, 'size');\n\n\tprotected effect = computed(() => new GridEffect(this.effectOptions()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [size, effect] = [this.size(), this.effect()];\n\t\t\tif (size) {\n\t\t\t\teffect.setSize(size.width, size.height);\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { HueSaturationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type HueSaturationEffectOptions = Partial<NonNullable<ConstructorParameters<typeof HueSaturationEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-hue-saturation',\n\ttemplate: `\n\t\t<ngt-hue-saturation-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-hue-saturation-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpHueSaturation {\n\toptions = input({} as Omit<HueSaturationEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ HueSaturationEffect });\n\t}\n}\n","// Created by Anderson Mancini 2023\n// React Three Fiber Ultimate LensFlare\n\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, NgtVector3, beforeRender, injectStore, is, omit, vector3 } from 'angular-three';\nimport { easing } from 'maath';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\nconst LensFlareShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}\n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}\n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}\n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n};\n\nexport class LensFlareEffect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tenabled = true,\n\t\tglareSize = 0.2,\n\t\tlensPosition = [0.01, 0.01],\n\t\tiResolution = [0, 0],\n\t\tstarPoints = 6,\n\t\tflareSize = 0.01,\n\t\tflareSpeed = 0.01,\n\t\tflareShape = 0.01,\n\t\tanimated = true,\n\t\tanamorphic = false,\n\t\tcolorGain = new THREE.Color(20, 20, 20),\n\t\tlensDirtTexture = null as THREE.Texture | null,\n\t\thaloScale = 0.5,\n\t\tsecondaryGhosts = true,\n\t\taditionalStreaks = true,\n\t\tghostScale = 0.0,\n\t\topacity = 1.0,\n\t\tstarBurst = false,\n\t} = {}) {\n\t\tsuper('LensFlareEffect', LensFlareShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tuniforms: new Map<string, THREE.Uniform>([\n\t\t\t\t['enabled', new THREE.Uniform(enabled)],\n\t\t\t\t['glareSize', new THREE.Uniform(glareSize)],\n\t\t\t\t['lensPosition', new THREE.Uniform(lensPosition)],\n\t\t\t\t['iTime', new THREE.Uniform(0)],\n\t\t\t\t['iResolution', new THREE.Uniform(iResolution)],\n\t\t\t\t['starPoints', new THREE.Uniform(starPoints)],\n\t\t\t\t['flareSize', new THREE.Uniform(flareSize)],\n\t\t\t\t['flareSpeed', new THREE.Uniform(flareSpeed)],\n\t\t\t\t['flareShape', new THREE.Uniform(flareShape)],\n\t\t\t\t['animated', new THREE.Uniform(animated)],\n\t\t\t\t['anamorphic', new THREE.Uniform(anamorphic)],\n\t\t\t\t['colorGain', new THREE.Uniform(colorGain)],\n\t\t\t\t['lensDirtTexture', new THREE.Uniform(lensDirtTexture)],\n\t\t\t\t['haloScale', new THREE.Uniform(haloScale)],\n\t\t\t\t['secondaryGhosts', new THREE.Uniform(secondaryGhosts)],\n\t\t\t\t['aditionalStreaks', new THREE.Uniform(aditionalStreaks)],\n\t\t\t\t['ghostScale', new THREE.Uniform(ghostScale)],\n\t\t\t\t['starBurst', new THREE.Uniform(starBurst)],\n\t\t\t\t['opacity', new THREE.Uniform(opacity)],\n\t\t\t]),\n\t\t});\n\t}\n\n\toverride update(_renderer: THREE.WebGLRenderer, _inputBuffer: THREE.WebGLRenderTarget, deltaTime: number) {\n\t\tconst iTime = this.uniforms.get('iTime');\n\t\tif (iTime) {\n\t\t\tiTime.value += deltaTime;\n\t\t}\n\t}\n}\n\nexport type LensFlareOptions = ConstructorParameters<typeof LensFlareEffect>[0] & {\n\tposition: NgtVector3;\n\tfollowMouse: boolean;\n\tsmoothTime: number;\n};\n\nconst defaultOptions: LensFlareOptions = {\n\tposition: new THREE.Vector3(-25, 6, -60),\n\tfollowMouse: false,\n\tsmoothTime: 0.7,\n};\n\n@Component({\n\tselector: 'ngtp-lens-flare',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [parameters]=\"{ dispose: null }\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLensFlare {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\tprivate effectOptions = omit(this.options, ['position', 'followMouse', 'smoothTime']);\n\tprivate position = vector3(this.options, 'position');\n\n\tprivate projectedPosition = new THREE.Vector3();\n\tprivate mouse2d = new THREE.Vector2();\n\n\tprotected effect = computed(() => new LensFlareEffect(this.effectOptions()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lensFlareEffect, width, height] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.viewport.width(),\n\t\t\t\tthis.store.viewport.height(),\n\t\t\t];\n\t\t\tconst iResolution = lensFlareEffect.uniforms.get('iResolution');\n\t\t\tif (iResolution) {\n\t\t\t\tiResolution.value.x = width;\n\t\t\t\tiResolution.value.y = height;\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\n\t\tbeforeRender(({ delta }) => {\n\t\t\tconst [effect] = [this.effect()];\n\t\t\tif (!effect) return;\n\n\t\t\tconst [{ followMouse, smoothTime }, position, pointer, camera, scene, raycaster] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.store.snapshot.pointer,\n\t\t\t\tthis.effectComposer.camera(),\n\t\t\t\tthis.effectComposer.scene(),\n\t\t\t\tthis.store.snapshot.raycaster,\n\t\t\t];\n\n\t\t\tconst uLensPosition = effect.uniforms.get('lensPosition');\n\t\t\tconst uOpacity = effect.uniforms.get('opacity');\n\t\t\tif (!uLensPosition || !uOpacity) return;\n\n\t\t\tlet target = 1;\n\n\t\t\tif (followMouse) {\n\t\t\t\tuLensPosition.value.x = pointer.x;\n\t\t\t\tuLensPosition.value.y = pointer.y;\n\t\t\t\ttarget = 0;\n\t\t\t} else {\n\t\t\t\tthis.projectedPosition.copy(position).project(camera);\n\t\t\t\tif (this.projectedPosition.z > 1) return;\n\n\t\t\t\tuLensPosition.value.x = this.projectedPosition.x;\n\t\t\t\tuLensPosition.value.y = this.projectedPosition.y;\n\n\t\t\t\tthis.mouse2d.set(this.projectedPosition.x, this.projectedPosition.y);\n\t\t\t\traycaster.setFromCamera(this.mouse2d, camera);\n\t\t\t\tconst intersects = raycaster.intersectObjects(scene.children, true);\n\t\t\t\tconst { object } = intersects[0] ?? {};\n\t\t\t\tif (object) {\n\t\t\t\t\tif (object.userData?.['lensflare'] === 'no-occlusion') {\n\t\t\t\t\t\ttarget = 0;\n\t\t\t\t\t} else if (is.three<THREE.Mesh<THREE.BufferGeometry, THREE.ShaderMaterial>>(object, 'isMesh')) {\n\t\t\t\t\t\tif (object.material.uniforms?.['_transmission']?.value > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshTransmissionMaterial\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t'_transmission' in object.material &&\n\t\t\t\t\t\t\ttypeof object.material._transmission === 'number' &&\n\t\t\t\t\t\t\tobject.material._transmission > 0.2\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t//Check for MeshPhysicalMaterial with transmission setting\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material.transparent) {\n\t\t\t\t\t\t\t// Check for OtherMaterials with transparent parameter\n\t\t\t\t\t\t\ttarget = object.material.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teasing.damp(uOpacity, 'value', target, smoothTime, delta);\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, injectStore, pick } from 'angular-three';\nimport { BlendFunction, LUT3DEffect } from 'postprocessing';\nimport * as THREE from 'three';\n\nexport interface LUTOptions {\n\tlut: THREE.Texture;\n\tblendFunction?: BlendFunction;\n\ttetrahedralInterpolation?: boolean;\n}\n\n@Component({\n\tselector: 'ngtp-lut',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLUT {\n\toptions = input({} as LUTOptions);\n\n\tprivate lut = pick(this.options, 'lut');\n\tprivate tetrahedralInterpolation = pick(this.options, 'tetrahedralInterpolation');\n\n\tprivate store = injectStore();\n\n\tprotected effect = computed(() => {\n\t\tconst { lut, ...options } = this.options();\n\t\treturn new LUT3DEffect(lut, options);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [effect, lut, tetrahedralInterpolation, invalidate] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.lut(),\n\t\t\t\tthis.tetrahedralInterpolation(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t];\n\n\t\t\tif (tetrahedralInterpolation) effect.tetrahedralInterpolation = tetrahedralInterpolation;\n\t\t\tif (lut) effect.lut = lut;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, NoiseEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\nexport type NoiseEffectOptions = Partial<NonNullable<ConstructorParameters<typeof NoiseEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-noise',\n\ttemplate: `\n\t\t<ngt-noise-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-noise-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],\n})\nexport class NgtpNoise {\n\toptions = input({} as Omit<NoiseEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ NoiseEffect });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtSelectionApi, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { OutlineEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\nexport type NgtpOutlineOptions = ConstructorParameters<typeof OutlineEffect>[2] & {\n\tselection?: Array<THREE.Object3D | ElementRef<THREE.Object3D>>;\n\tselectionLayer: number;\n};\n\nconst defaultOptions: NgtpOutlineOptions = {\n\tselectionLayer: 10,\n};\n\n@Component({\n\tselector: 'ngtp-outline',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtpOutline {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate selectionApi = inject(NgtSelectionApi, { optional: true });\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\tprivate store = injectStore();\n\n\tprivate selection = pick(this.options, 'selection');\n\tprivate selectionLayer = pick(this.options, 'selectionLayer');\n\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate patternTexture = pick(this.options, 'patternTexture');\n\tprivate edgeStrength = pick(this.options, 'edgeStrength');\n\tprivate pulseSpeed = pick(this.options, 'pulseSpeed');\n\tprivate visibleEdgeColor = pick(this.options, 'visibleEdgeColor');\n\tprivate hiddenEdgeColor = pick(this.options, 'hiddenEdgeColor');\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate kernelSize = pick(this.options, 'kernelSize');\n\tprivate blur = pick(this.options, 'blur');\n\tprivate xRay = pick(this.options, 'xRay');\n\tprivate restOptions = omit(this.options, [\n\t\t'blendFunction',\n\t\t'patternTexture',\n\t\t'edgeStrength',\n\t\t'pulseSpeed',\n\t\t'visibleEdgeColor',\n\t\t'hiddenEdgeColor',\n\t\t'width',\n\t\t'height',\n\t\t'kernelSize',\n\t\t'blur',\n\t\t'xRay',\n\t]);\n\n\teffect = computed(() => {\n\t\tconst [\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tblendFunction,\n\t\t\tpatternTexture,\n\t\t\tedgeStrength,\n\t\t\tpulseSpeed,\n\t\t\tvisibleEdgeColor,\n\t\t\thiddenEdgeColor,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tkernelSize,\n\t\t\tblur,\n\t\t\txRay,\n\t\t\trestOptions,\n\t\t] = [\n\t\t\tthis.effectComposer.scene(),\n\t\t\tthis.effectComposer.camera(),\n\t\t\tthis.blendFunction(),\n\t\t\tthis.patternTexture(),\n\t\t\tthis.edgeStrength(),\n\t\t\tthis.pulseSpeed(),\n\t\t\tthis.visibleEdgeColor(),\n\t\t\tthis.hiddenEdgeColor(),\n\t\t\tthis.width(),\n\t\t\tthis.height(),\n\t\t\tthis.kernelSize(),\n\t\t\tthis.blur(),\n\t\t\tthis.xRay(),\n\t\t\tuntracked(this.restOptions),\n\t\t];\n\n\t\treturn new OutlineEffect(scene, camera, {\n\t\t\tblendFunction,\n\t\t\tpatternTexture,\n\t\t\tedgeStrength,\n\t\t\tpulseSpeed,\n\t\t\tvisibleEdgeColor,\n\t\t\thiddenEdgeColor,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tkernelSize,\n\t\t\tblur,\n\t\t\txRay,\n\t\t\t...restOptions,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [effect, invalidate, selectionLayer] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.selectionLayer(),\n\t\t\t];\n\t\t\teffect.selectionLayer = selectionLayer;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\t// NOTE: we run this effect if declarative NgtSelection is not enabled\n\t\t\tif (!this.selectionApi) {\n\t\t\t\t// NOTE: if NgtSelection is not used and selection is not provided, we throw\n\t\t\t\tif (this.selection() === undefined) {\n\t\t\t\t\tthrow new Error('[NGT PostProcessing]: ngtp-outline requires selection input or use NgtSelection');\n\t\t\t\t}\n\t\t\t\tconst cleanup = this.handleSelectionChangeEffect(this.selection, this.effect, this.store.invalidate);\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tcleanup?.();\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// NOTE: we run this effect if declarative NgtSelection is enabled\n\t\t\tconst selectionEnabled = this.selectionApi.enabled();\n\t\t\tif (!selectionEnabled) return;\n\t\t\tconst cleanup = this.handleSelectionChangeEffect(\n\t\t\t\tthis.selectionApi.selected,\n\t\t\t\tthis.effect,\n\t\t\t\tthis.store.invalidate,\n\t\t\t);\n\t\t\tonCleanup(() => {\n\t\t\t\tcleanup?.();\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate handleSelectionChangeEffect(\n\t\tselected: () => Array<THREE.Object3D | ElementRef<THREE.Object3D>> | undefined,\n\t\t_effect: () => OutlineEffect,\n\t\t_invalidate: () => () => void,\n\t) {\n\t\tconst selection = selected();\n\t\tif (!selection || selection.length === 0) return;\n\n\t\tconst [effect, invalidate] = [_effect(), _invalidate()];\n\n\t\tconst objects: THREE.Object3D[] = [];\n\t\tfor (const el of selection) {\n\t\t\tconst obj = resolveRef(el);\n\t\t\tif (!obj) continue;\n\t\t\tobjects.push(obj);\n\t\t}\n\n\t\tif (objects.length === 0) return;\n\n\t\teffect.selection.set(objects);\n\t\tinvalidate();\n\n\t\treturn () => {\n\t\t\teffect.selection.clear();\n\t\t\tinvalidate();\n\t\t};\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { PixelationEffect } from 'postprocessing';\n\nexport interface PixelationOptions {\n\tgranularity: number;\n}\n\n@Component({\n\tselector: 'ngtp-pixelation',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n})\nexport class NgtpPixelation {\n\toptions = input({ granularity: 5 } as PixelationOptions, { transform: mergeInputs({ granularity: 5 }) });\n\tprivate granularity = pick(this.options, 'granularity');\n\n\tprotected effect = computed(() => new PixelationEffect(this.granularity()));\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ScanlineEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\nexport type ScanlineEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ScanlineEffect>[0]>>;\n\nconst defaultOptions: Omit<ScanlineEffectOptions, 'blendFunction'> = {\n\tdensity: 1.25,\n};\n\n@Component({\n\tselector: 'ngtp-scanline',\n\ttemplate: `\n\t\t<ngt-scanline-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-scanline-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],\n})\nexport class NgtpScanline {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ ScanlineEffect });\n\t}\n}\n","// const addLight = (light: Object3D, effect: SelectiveBloomEffect) => light.layers.enable(effect.selection.layer)\n// const removeLight = (light: Object3D, effect: SelectiveBloomEffect) => light.layers.disable(effect.selection.layer)\n\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtSelectionApi, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, BloomEffectOptions, SelectiveBloomEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\nexport type SelectiveBloomOptions = BloomEffectOptions & {\n\tselectionLayer: number;\n\tinverted: boolean;\n\tignoreBackground: boolean;\n};\n\nconst defaultOptions: SelectiveBloomOptions = {\n\tselectionLayer: 10,\n\tinverted: false,\n\tignoreBackground: false,\n};\n\n@Component({\n\tselector: 'ngtp-selective-bloom',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpSelectiveBloom {\n\tlights = input.required<THREE.Object3D[] | ElementRef<THREE.Object3D | undefined>[]>();\n\tselection = input<\n\t\t| THREE.Object3D\n\t\t| THREE.Object3D[]\n\t\t| ElementRef<THREE.Object3D | undefined>\n\t\t| ElementRef<THREE.Object3D | undefined>[]\n\t>([]);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate luminanceThreshold = pick(this.options, 'luminanceThreshold');\n\tprivate luminanceSmoothing = pick(this.options, 'luminanceSmoothing');\n\tprivate mipmapBlur = pick(this.options, 'mipmapBlur');\n\tprivate intensity = pick(this.options, 'intensity');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate levels = pick(this.options, 'levels');\n\tprivate kernelSize = pick(this.options, 'kernelSize');\n\tprivate resolutionScale = pick(this.options, 'resolutionScale');\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate resolutionX = pick(this.options, 'resolutionX');\n\tprivate resolutionY = pick(this.options, 'resolutionY');\n\tprivate inverted = pick(this.options, 'inverted');\n\tprivate ignoreBackground = pick(this.options, 'ignoreBackground');\n\tprivate selectionLayer = pick(this.options, 'selectionLayer');\n\n\tprivate store = injectStore();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\tprivate selectionApi = inject(NgtSelectionApi, { optional: true });\n\n\tprivate resolvedLights = computed(() => this.lights().map((light) => resolveRef(light)));\n\tprivate resolvedSelected = computed(() => {\n\t\tconst selection = this.selection();\n\t\tif (!selection) return [];\n\t\tconst array = Array.isArray(selection) ? selection : [selection];\n\t\treturn array.map((selected) => resolveRef(selected));\n\t});\n\tprivate resolvedNgtSelected = computed(() => {\n\t\tif (!this.selectionApi || !this.selectionApi.enabled) return [];\n\t\treturn this.selectionApi.selected().map((selected) => resolveRef(selected));\n\t});\n\n\tprotected effect = computed(() => {\n\t\tconst effect = new SelectiveBloomEffect(this.effectComposer.scene(), this.effectComposer.camera(), {\n\t\t\tblendFunction: this.blendFunction() || BlendFunction.ADD,\n\t\t\tluminanceThreshold: this.luminanceThreshold(),\n\t\t\tluminanceSmoothing: this.luminanceSmoothing(),\n\t\t\tmipmapBlur: this.mipmapBlur(),\n\t\t\tintensity: this.intensity(),\n\t\t\tradius: this.radius(),\n\t\t\tlevels: this.levels(),\n\t\t\tkernelSize: this.kernelSize(),\n\t\t\tresolutionScale: this.resolutionScale(),\n\t\t\twidth: this.width(),\n\t\t\theight: this.height(),\n\t\t\tresolutionX: this.resolutionX(),\n\t\t\tresolutionY: this.resolutionY(),\n\t\t});\n\n\t\teffect.inverted = this.inverted();\n\t\teffect.ignoreBackground = this.ignoreBackground();\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\t// skip input selection altogether if NgtSelection is used\n\t\t\tif (this.selectionApi) return;\n\t\t\tconst selection = this.resolvedSelected();\n\t\t\tif (!selection.length) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\t\t\teffect.selection.set(selection as THREE.Object3D[]);\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\teffect.selection.clear();\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [selectionLayer, invalidate, effect] = [\n\t\t\t\tthis.selectionLayer(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.effect(),\n\t\t\t];\n\t\t\teffect.selection.layer = selectionLayer;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.resolvedLights();\n\t\t\tif (lights.length <= 0) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\n\t\t\tlights.forEach((light) => light && this.addLight(effect, light));\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\tlights.forEach((light) => light && this.removeLight(effect, light));\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst selected = this.resolvedNgtSelected();\n\t\t\tif (!selected.length) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\t\t\teffect.selection.set(selected as THREE.Object3D[]);\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\teffect.selection.clear();\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate addLight(effect: SelectiveBloomEffect, light: THREE.Object3D) {\n\t\tlight.layers.enable(effect.selection.layer);\n\t}\n\n\tprivate removeLight(effect: SelectiveBloomEffect, light: THREE.Object3D) {\n\t\tlight.layers.disable(effect.selection.layer);\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SepiaEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type SepiaEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SepiaEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-sepia',\n\ttemplate: `\n\t\t<ngt-sepia-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sepia-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpSepia {\n\toptions = input({} as Omit<SepiaEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ SepiaEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ShockWaveEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type ShockWaveEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ShockWaveEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-shock-wave',\n\ttemplate: `\n\t\t<ngt-shock-wave-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-shock-wave-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpShockWave {\n\toptions = input({} as Omit<ShockWaveEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ ShockWaveEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SMAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type SMAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SMAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-smaa',\n\ttemplate: `\n\t\t<ngt-sMAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sMAA-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpSMAA {\n\toptions = input({} as Omit<SMAAEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ SMAAEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, TiltShiftEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\nexport type TiltShiftEffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShiftEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-tilt-shift',\n\ttemplate: `\n\t\t<ngt-tilt-shift-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpTiltShift {\n\toptions = input({} as Omit<TiltShiftEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ TiltShiftEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\nconst TiltShiftShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n // original shader by Evan Wallace\n\n #define MAX_ITERATIONS 100\n\n uniform float blur;\n uniform float taper;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 direction;\n uniform int samples;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n float f_samples = float(samples);\n float half_samples = f_samples / 2.0;\n\n // use screen diagonal to normalize blur radii\n float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n float gradientRadius = taper * (maxScreenDistance);\n float blurRadius = blur * (maxScreenDistance / 16.0);\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n #pragma unroll_loop_start\n for (int i = 0; i <= MAX_ITERATIONS; i++) {\n if (i >= samples) { break; } // return early if over sample count\n float f_i = float(i);\n float s_i = -half_samples + f_i;\n float percent = (s_i + offset - 0.5) / half_samples;\n float weight = 1.0 - abs(percent);\n vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n sample_i.rgb *= sample_i.a;\n color += sample_i * weight;\n total += weight;\n }\n #pragma unroll_loop_end\n\n outputColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n outputColor.rgb /= outputColor.a + 0.00001;\n }\n `,\n};\n\nexport class TiltShift2Effect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tblur = 0.15, // [0, 1], can go beyond 1 for extra\n\t\ttaper = 0.5, // [0, 1], can go beyond 1 for extra\n\t\tstart = [0.5, 0.0], // [0,1] percentage x,y of screenspace\n\t\tend = [0.5, 1.0], // [0,1] percentage x,y of screenspace\n\t\tsamples = 10.0, // number of blur samples\n\t\tdirection = [1, 1], // direction of blur\n\t} = {}) {\n\t\tsuper('TiltShiftEffect', TiltShiftShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, THREE.Uniform<number | number[]>>([\n\t\t\t\t['blur', new THREE.Uniform(blur)],\n\t\t\t\t['taper', new THREE.Uniform(taper)],\n\t\t\t\t['start', new THREE.Uniform(start)],\n\t\t\t\t['end', new THREE.Uniform(end)],\n\t\t\t\t['samples', new THREE.Uniform(samples)],\n\t\t\t\t['direction', new THREE.Uniform(direction)],\n\t\t\t]),\n\t\t});\n\t}\n}\n\nexport type TiltShift2EffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShift2Effect>[0]>>;\n\nextend({ TiltShift2Effect });\n\n@Component({\n\tselector: 'ngtp-tilt-shift2',\n\ttemplate: `\n\t\t<ngt-tilt-shift2-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift2-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpTiltShift2 {\n\toptions = input({} as Omit<TiltShift2EffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ToneMappingEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type ToneMappingEffectOptions = NonNullable<ConstructorParameters<typeof ToneMappingEffect>[0]>;\n\n@Component({\n\tselector: 'ngtp-tone-mapping',\n\ttemplate: `\n\t\t<ngt-tone-mapping-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tone-mapping-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpToneMapping {\n\toptions = input({} as Omit<ToneMappingEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ ToneMappingEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { VignetteEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\nexport type VignetteEffectOptions = Partial<NonNullable<ConstructorParameters<typeof VignetteEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-vignette',\n\ttemplate: `\n\t\t<ngt-vignette-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-vignette-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpVignette {\n\toptions = input({} as Omit<VignetteEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ VignetteEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\nconst WaterShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n uniform float factor;\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 vUv = uv;\n float frequency = 6.0 * factor;\n float amplitude = 0.015 * factor;\n float x = vUv.y * frequency + time * .7;\n float y = vUv.x * frequency + time * .3;\n vUv.x += cos(x+y) * amplitude * cos(y);\n vUv.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(inputBuffer, vUv);\n outputColor = rgba;\n }`,\n};\n\nexport class WaterEffect extends Effect {\n\tconstructor({ blendFunction = BlendFunction.NORMAL, factor = 0 } = {}) {\n\t\tsuper('WaterEffect', WaterShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, THREE.Uniform<number | number[]>>([['factor', new THREE.Uniform(factor)]]),\n\t\t});\n\t}\n}\n\nexport type WaterEffectOptions = Partial<NonNullable<ConstructorParameters<typeof WaterEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-water',\n\ttemplate: `\n\t\t<ngt-water-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-water-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpWater {\n\toptions = input({} as Omit<WaterEffectOptions, 'blendFunction'>);\n\tprotected effect = inject(NgtpEffect, { host: true });\n\n\tconstructor() {\n\t\textend({ WaterEffect });\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","i1.NgtpEffect"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-postprocessing.mjs","sources":["../../../../libs/postprocessing/src/lib/effect.ts","../../../../libs/postprocessing/src/lib/effect-composer.ts","../../../../libs/postprocessing/src/lib/effects/ascii.ts","../../../../libs/postprocessing/src/lib/effects/bloom.ts","../../../../libs/postprocessing/src/lib/effects/brightness-contrast.ts","../../../../libs/postprocessing/src/lib/effects/chromatic-abberation.ts","../../../../libs/postprocessing/src/lib/effects/color-average.ts","../../../../libs/postprocessing/src/lib/effects/color-depth.ts","../../../../libs/postprocessing/src/lib/effects/depth.ts","../../../../libs/postprocessing/src/lib/effects/depth-of-field.ts","../../../../libs/postprocessing/src/lib/effects/dot-screen.ts","../../../../libs/postprocessing/src/lib/effects/fxaa.ts","../../../../libs/postprocessing/src/lib/effects/glitch.ts","../../../../libs/postprocessing/src/lib/effects/god-rays.ts","../../../../libs/postprocessing/src/lib/effects/grid.ts","../../../../libs/postprocessing/src/lib/effects/hue-saturation.ts","../../../../libs/postprocessing/src/lib/effects/lens-flare.ts","../../../../libs/postprocessing/src/lib/effects/lut.ts","../../../../libs/postprocessing/src/lib/effects/noise.ts","../../../../libs/postprocessing/src/lib/effects/outline.ts","../../../../libs/postprocessing/src/lib/effects/pixelation.ts","../../../../libs/postprocessing/src/lib/effects/scanline.ts","../../../../libs/postprocessing/src/lib/effects/selective-bloom.ts","../../../../libs/postprocessing/src/lib/effects/sepia.ts","../../../../libs/postprocessing/src/lib/effects/shock-wave.ts","../../../../libs/postprocessing/src/lib/effects/smaa.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift-2.ts","../../../../libs/postprocessing/src/lib/effects/tone-mapping.ts","../../../../libs/postprocessing/src/lib/effects/vignette.ts","../../../../libs/postprocessing/src/lib/effects/water.ts","../../../../libs/postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, inject, input } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { createNoopInjectionToken } from 'ngxtension/create-injection-token';\nimport { BlendFunction } from 'postprocessing';\n\n/**\n * Injection token for providing default effect options.\n *\n * Use `injectDefaultEffectOptions` to inject default options in effect components.\n * Use `provideDefaultEffectOptions` to provide default options for effects.\n *\n * @example\n * ```typescript\n * @Component({\n * providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD, opacity: 0.5 })]\n * })\n * export class MyEffect {}\n * ```\n */\nexport const [injectDefaultEffectOptions, provideDefaultEffectOptions] = createNoopInjectionToken<{\n\tblendFunction?: BlendFunction;\n\topacity?: number;\n}>('Default Effect options');\n\n/**\n * Component that applies blend mode settings to a postprocessing effect.\n *\n * This component is used internally by effect components to apply `blendFunction`\n * and `opacity` values to the effect's blend mode.\n *\n * @example\n * ```html\n * <ngt-bloom-effect *args=\"[options()]\">\n * <ngtp-effect-blend-mode />\n * </ngt-bloom-effect>\n * ```\n */\n@Component({\n\tselector: 'ngtp-effect-blend-mode',\n\ttemplate: `\n\t\t@if (effect) {\n\t\t\t<ngt-value [rawValue]=\"effect.blendFunction()\" attach=\"blendMode.blendFunction\" />\n\t\t\t<ngt-value [rawValue]=\"effect.opacity()\" attach=\"blendMode.opacity.value\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectBlendMode {\n\t/** Reference to the parent NgtpEffect directive, if available */\n\teffect = inject(NgtpEffect, { optional: true });\n}\n\n/**\n * Base directive for postprocessing effects that provides common functionality.\n *\n * This directive is used as a host directive by effect components to provide:\n * - `blendFunction`: Controls how the effect blends with the scene\n * - `opacity`: Controls the effect's opacity\n * - Access to the camera and invalidate function from the store\n *\n * @example\n * ```typescript\n * @Component({\n * hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }]\n * })\n * export class NgtpBloom {}\n * ```\n */\n@Directive()\nexport class NgtpEffect {\n\t/** Default effect options injected from parent providers */\n\tdefaultEffectOptions = injectDefaultEffectOptions({ optional: true });\n\n\t/**\n\t * The blend function used to combine this effect with the scene.\n\t * @see BlendFunction from postprocessing library\n\t */\n\tblendFunction = input(this.defaultEffectOptions?.blendFunction);\n\n\t/**\n\t * The opacity of the effect.\n\t * @default undefined (uses effect's default)\n\t */\n\topacity = input(this.defaultEffectOptions?.opacity);\n\n\tprivate store = injectStore();\n\n\t/** The current camera from the store */\n\tcamera = this.store.camera;\n\n\t/** Function to invalidate the render loop, triggering a re-render */\n\tinvalidate = this.store.invalidate;\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, getInstanceState, injectStore, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthDownsamplingPass,\n\tEffect,\n\tEffectAttribute,\n\tEffectComposer,\n\tEffectPass,\n\tNormalPass,\n\tPass,\n\tRenderPass,\n} from 'postprocessing';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\n/**\n * Configuration options for the effect composer.\n */\nexport interface NgtpEffectComposerOptions {\n\t/**\n\t * Whether the effect composer is enabled.\n\t * @default true\n\t */\n\tenabled: boolean;\n\n\t/**\n\t * Whether to use a depth buffer.\n\t * @default undefined\n\t */\n\tdepthBuffer?: boolean;\n\n\t/**\n\t * Whether to enable the normal pass.\n\t * Only used for SSGI currently, leave it disabled for everything else unless it's needed.\n\t * @default undefined\n\t */\n\tenableNormalPass?: boolean;\n\n\t/**\n\t * Whether to use a stencil buffer.\n\t * @default undefined\n\t */\n\tstencilBuffer?: boolean;\n\n\t/**\n\t * Whether to auto-clear before rendering.\n\t * @default true\n\t */\n\tautoClear: boolean;\n\n\t/**\n\t * Resolution scale for the effect composer.\n\t * @default undefined\n\t */\n\tresolutionScale?: number;\n\n\t/**\n\t * Number of samples for multisampling anti-aliasing.\n\t * Set to 0 to disable multisampling.\n\t * @default 8\n\t */\n\tmultisampling: number;\n\n\t/**\n\t * The texture data type for the frame buffer.\n\t * @default THREE.HalfFloatType\n\t */\n\tframeBufferType: THREE.TextureDataType;\n\n\t/**\n\t * The render priority for the effect composer.\n\t * Higher values render later.\n\t * @default 1\n\t */\n\trenderPriority: number;\n\n\t/**\n\t * Custom camera to use for rendering effects.\n\t * If not provided, uses the default camera from the store.\n\t * @default undefined\n\t */\n\tcamera?: THREE.Camera;\n\n\t/**\n\t * Custom scene to use for rendering effects.\n\t * If not provided, uses the default scene from the store.\n\t * @default undefined\n\t */\n\tscene?: THREE.Scene;\n}\n\nconst defaultOptions: NgtpEffectComposerOptions = {\n\tenabled: true,\n\trenderPriority: 1,\n\tautoClear: true,\n\tmultisampling: 8,\n\tframeBufferType: THREE.HalfFloatType,\n};\n\n/**\n * Checks if an effect has the convolution attribute.\n *\n * @param effect - The effect to check\n * @returns True if the effect has the convolution attribute\n */\nfunction isConvolution(effect: Effect) {\n\treturn (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;\n}\n\n/**\n * Angular component that manages postprocessing effects for a Three.js scene.\n *\n * The effect composer wraps the postprocessing library's EffectComposer and provides\n * a declarative way to add effects to your scene. Effects are added as children of\n * this component and are automatically composed into an effect pass.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-bloom [options]=\"{ intensity: 1, luminanceThreshold: 0.9 }\" />\n * <ngtp-vignette [options]=\"{ darkness: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With custom options -->\n * <ngtp-effect-composer [options]=\"{ multisampling: 4, autoClear: false }\">\n * <ngtp-smaa />\n * <ngtp-tone-mapping />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-effect-composer',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectComposer {\n\t/**\n\t * Configuration options for the effect composer.\n\t * @see NgtpEffectComposerOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate depthBuffer = pick(this.options, 'depthBuffer');\n\tprivate stencilBuffer = pick(this.options, 'stencilBuffer');\n\tprivate multisampling = pick(this.options, 'multisampling');\n\tprivate frameBufferType = pick(this.options, 'frameBufferType');\n\tprivate enableNormalPass = pick(this.options, 'enableNormalPass');\n\tprivate resolutionScale = pick(this.options, 'resolutionScale');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate renderPriority = pick(this.options, 'renderPriority');\n\n\t/**\n\t * The scene used for rendering effects.\n\t * Uses custom scene from options if provided, otherwise uses the store's scene.\n\t */\n\tscene = computed(() => this.options().scene ?? this.store.scene());\n\n\t/**\n\t * The camera used for rendering effects.\n\t * Uses custom camera from options if provided, otherwise uses the store's camera.\n\t */\n\tcamera = computed(() => this.options().camera ?? this.store.camera());\n\n\tprivate groupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\t/**\n\t * Computed render priority based on whether the composer is enabled.\n\t * Returns 0 when disabled, otherwise returns the configured renderPriority.\n\t */\n\tprivate priority = computed(() => {\n\t\tconst enabled = this.enabled();\n\t\tif (!enabled) return 0;\n\t\treturn this.renderPriority();\n\t});\n\n\t/**\n\t * Creates and configures the effect composer with render pass, normal pass,\n\t * and depth downsampling pass based on options.\n\t */\n\tprivate composerData = computed(() => {\n\t\tconst webGL2Available = isWebGL2Available();\n\t\tconst [\n\t\t\tgl,\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling,\n\t\t\tframeBufferType,\n\t\t\tenableNormalPass,\n\t\t\tresolutionScale,\n\t\t] = [\n\t\t\tthis.store.gl(),\n\t\t\tthis.scene(),\n\t\t\tthis.camera(),\n\t\t\tthis.depthBuffer(),\n\t\t\tthis.stencilBuffer(),\n\t\t\tthis.multisampling(),\n\t\t\tthis.frameBufferType(),\n\t\t\tthis.enableNormalPass(),\n\t\t\tthis.resolutionScale(),\n\t\t];\n\n\t\t// initialize composer\n\t\tconst composer = new EffectComposer(gl, {\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n\t\t\tframeBufferType,\n\t\t});\n\n\t\t// add render pass\n\t\tcomposer.addPass(new RenderPass(scene, camera));\n\n\t\t// create normal pass\n\t\tlet downSamplingPass = null;\n\t\tlet normalPass = null;\n\t\tif (enableNormalPass) {\n\t\t\tnormalPass = new NormalPass(scene, camera);\n\t\t\tnormalPass.enabled = false;\n\t\t\tcomposer.addPass(normalPass);\n\t\t\tif (resolutionScale !== undefined && webGL2Available) {\n\t\t\t\tdownSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });\n\t\t\t\tdownSamplingPass.enabled = false;\n\t\t\t\tcomposer.addPass(downSamplingPass);\n\t\t\t}\n\t\t}\n\n\t\treturn { composer, normalPass, downSamplingPass };\n\t});\n\n\t/**\n\t * The underlying postprocessing EffectComposer instance.\n\t * Can be used to access the composer directly for advanced use cases.\n\t */\n\teffectComposer = pick(this.composerData, 'composer');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\t// NOTE: Disable tone mapping because threejs disallows tonemapping on render targets\n\t\teffect((onCleanup) => {\n\t\t\tconst gl = this.store.gl();\n\t\t\tconst currentTonemapping = gl.toneMapping;\n\t\t\tgl.toneMapping = THREE.NoToneMapping;\n\t\t\tonCleanup(() => {\n\t\t\t\tgl.toneMapping = currentTonemapping;\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [composer, width, height] = [\n\t\t\t\tthis.effectComposer(),\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tif (composer) {\n\t\t\t\tcomposer.setSize(width, height);\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [group, { composer, normalPass, downSamplingPass }, camera] = [\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.composerData(),\n\t\t\t\tthis.camera(),\n\t\t\t];\n\n\t\t\tconst passes: Pass[] = [];\n\n\t\t\tif (composer) {\n\t\t\t\tconst instanceState = getInstanceState(group);\n\t\t\t\tif (!instanceState) return;\n\n\t\t\t\tconst children = instanceState.nonObjects();\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst child = children[i];\n\t\t\t\t\tif (child instanceof Effect) {\n\t\t\t\t\t\tconst effects: Effect[] = [child];\n\n\t\t\t\t\t\tif (!isConvolution(child)) {\n\t\t\t\t\t\t\tlet next: unknown = null;\n\t\t\t\t\t\t\twhile ((next = children[i + 1]) instanceof Effect) {\n\t\t\t\t\t\t\t\tif (isConvolution(next)) break;\n\t\t\t\t\t\t\t\teffects.push(next as Effect);\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst pass = new EffectPass(camera, ...effects);\n\t\t\t\t\t\tpasses.push(pass);\n\t\t\t\t\t} else if (child instanceof Pass) {\n\t\t\t\t\t\tpasses.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (const pass of passes) {\n\t\t\t\t\tcomposer.addPass(pass);\n\t\t\t\t}\n\n\t\t\t\tif (normalPass) normalPass.enabled = true;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = true;\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tfor (const pass of passes) composer?.removePass(pass);\n\t\t\t\tif (normalPass) normalPass.enabled = false;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = false;\n\t\t\t});\n\t\t});\n\n\t\tbeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst [composer, { enabled, autoClear, stencilBuffer }, gl] = [\n\t\t\t\t\tthis.effectComposer(),\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.store.snapshot.gl,\n\t\t\t\t];\n\n\t\t\t\tif (enabled) {\n\t\t\t\t\tconst currentAutoClear = gl.autoClear;\n\t\t\t\t\tgl.autoClear = autoClear;\n\t\t\t\t\tif (stencilBuffer && !autoClear) gl.clearStencil();\n\t\t\t\t\tcomposer.render(delta);\n\t\t\t\t\tgl.autoClear = currentAutoClear;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: this.priority },\n\t\t);\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Effect } from 'postprocessing';\nimport * as THREE from 'three';\n\n/**\n * Fragment shader for the ASCII effect.\n * Converts the scene into ASCII character representation based on pixel brightness.\n */\nconst fragment = /* language=glsl glsl */ `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`;\n\n/**\n * Configuration options for the ASCII effect.\n */\ninterface ASCIIEffectOptions {\n\t/**\n\t * The font family to use for rendering characters.\n\t * @default 'arial'\n\t */\n\tfont?: string;\n\n\t/**\n\t * The character set to use for rendering, ordered from darkest to brightest.\n\t * @default \" .:,'-^=*+?!|0#X%WM@\"\n\t */\n\tcharacters?: string;\n\n\t/**\n\t * The font size in pixels for the character texture.\n\t * @default 54\n\t */\n\tfontSize?: number;\n\n\t/**\n\t * The size of each cell in pixels.\n\t * @default 16\n\t */\n\tcellSize?: number;\n\n\t/**\n\t * The color of the ASCII characters in hex format.\n\t * @default '#ffffff'\n\t */\n\tcolor?: string;\n\n\t/**\n\t * Whether to invert the brightness mapping.\n\t * @default false\n\t */\n\tinvert?: boolean;\n}\n\n/**\n * A postprocessing effect that renders the scene as ASCII art.\n *\n * This effect converts the rendered scene into a grid of ASCII characters,\n * where the character used depends on the brightness of the underlying pixels.\n *\n * @example\n * ```typescript\n * const effect = new ASCIIEffect({\n * cellSize: 12,\n * color: '#00ff00',\n * characters: ' .:-=+*#%@'\n * });\n * ```\n */\nexport class ASCIIEffect extends Effect {\n\tconstructor({\n\t\tfont = 'arial',\n\t\tcharacters = ` .:,'-^=*+?!|0#X%WM@`,\n\t\tfontSize = 54,\n\t\tcellSize = 16,\n\t\tcolor = '#ffffff',\n\t\tinvert = false,\n\t}: ASCIIEffectOptions = {}) {\n\t\tconst uniforms = new Map<string, THREE.Uniform>([\n\t\t\t['uCharacters', new THREE.Uniform(new THREE.Texture())],\n\t\t\t['uCellSize', new THREE.Uniform(cellSize)],\n\t\t\t['uCharactersCount', new THREE.Uniform(characters.length)],\n\t\t\t['uColor', new THREE.Uniform(new THREE.Color(color))],\n\t\t\t['uInvert', new THREE.Uniform(invert)],\n\t\t]);\n\n\t\tsuper('ASCIIEffect', fragment, { uniforms });\n\n\t\tconst charactersTextureUniform = this.uniforms.get('uCharacters');\n\n\t\tif (charactersTextureUniform) {\n\t\t\tcharactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a texture containing all the ASCII characters.\n\t *\n\t * Draws each character in the character set onto a canvas and creates\n\t * a texture that can be sampled in the shader.\n\t *\n\t * @param characters - The character set to render\n\t * @param font - The font family to use\n\t * @param fontSize - The font size in pixels\n\t * @returns A Three.js texture containing the rendered characters\n\t */\n\tpublic createCharactersTexture(characters: string, font: string, fontSize: number): THREE.Texture {\n\t\tconst canvas = document.createElement('canvas');\n\t\tconst SIZE = 1024;\n\t\tconst MAX_PER_ROW = 16;\n\t\tconst CELL = SIZE / MAX_PER_ROW;\n\n\t\tcanvas.width = canvas.height = SIZE;\n\t\tconst texture = new THREE.CanvasTexture(\n\t\t\tcanvas,\n\t\t\tundefined,\n\t\t\tTHREE.RepeatWrapping,\n\t\t\tTHREE.RepeatWrapping,\n\t\t\tTHREE.NearestFilter,\n\t\t\tTHREE.NearestFilter,\n\t\t);\n\t\tconst context = canvas.getContext('2d');\n\n\t\tif (!context) {\n\t\t\tthrow new Error('Context not available');\n\t\t}\n\n\t\tcontext.clearRect(0, 0, SIZE, SIZE);\n\t\tcontext.font = `${fontSize}px ${font}`;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.textBaseline = 'middle';\n\t\tcontext.fillStyle = '#fff';\n\n\t\tfor (let i = 0; i < characters.length; i++) {\n\t\t\tconst char = characters[i];\n\t\t\tconst x = i % MAX_PER_ROW;\n\t\t\tconst y = Math.floor(i / MAX_PER_ROW);\n\t\t\tcontext.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\t}\n}\n\nconst defaultOptions: ASCIIEffectOptions = {\n\tfont: 'arial',\n\tcharacters: ` .:,'-^=*+?!|0#X%WM@`,\n\tfontSize: 54,\n\tcellSize: 16,\n\tcolor: '#ffffff',\n\tinvert: false,\n};\n\n/**\n * Angular component that applies an ASCII art postprocessing effect to the scene.\n *\n * Renders the scene as ASCII characters, where character selection is based on\n * the brightness of the underlying pixels.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-ascii [options]=\"{ cellSize: 12, color: '#00ff00' }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-ascii',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpASCII {\n\t/**\n\t * Configuration options for the ASCII effect.\n\t * @see ASCIIEffectOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\t/** The underlying ASCIIEffect instance */\n\teffect = computed(() => new ASCIIEffect(this.options()));\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, BloomEffect, BloomEffectOptions } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Angular component that applies a bloom postprocessing effect to the scene.\n *\n * The bloom effect creates a glow around bright areas of the scene, simulating\n * the way bright light bleeds in cameras and the human eye.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-bloom [options]=\"{ intensity: 1, luminanceThreshold: 0.9 }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With custom blend function -->\n * <ngtp-effect-composer>\n * <ngtp-bloom\n * [blendFunction]=\"BlendFunction.SCREEN\"\n * [options]=\"{ intensity: 0.5, luminanceSmoothing: 0.9 }\"\n * />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-bloom',\n\ttemplate: `\n\t\t<ngt-bloom-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-bloom-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpBloom {\n\t/**\n\t * Configuration options for the bloom effect.\n\t * Accepts all BloomEffectOptions except blendFunction (use the blendFunction input instead).\n\t * @see BloomEffectOptions from postprocessing library\n\t */\n\toptions = input({} as Omit<BloomEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<BloomEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ BloomEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BrightnessContrastEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the brightness/contrast effect.\n * Derived from BrightnessContrastEffect constructor parameters.\n */\nexport type BrightnessEffectOptions = NonNullable<ConstructorParameters<typeof BrightnessContrastEffect>[0]>;\n\n/**\n * Angular component that applies brightness and contrast adjustments to the scene.\n *\n * This effect allows you to modify the overall brightness and contrast of the\n * rendered scene as a postprocessing step.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-brightness-contrast [options]=\"{ brightness: 0.1, contrast: 0.2 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-brightness-contrast',\n\ttemplate: `\n\t\t<ngt-brightness-contrast-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-brightness-contrast-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpBrightnessContrast {\n\t/**\n\t * Configuration options for the brightness/contrast effect.\n\t * @see BrightnessEffectOptions\n\t */\n\toptions = input({} as Omit<BrightnessEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<BrightnessContrastEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ BrightnessContrastEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ChromaticAberrationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the chromatic aberration effect.\n * Derived from ChromaticAberrationEffect constructor parameters.\n */\nexport type ChromaticAberrationEffectOptions = Partial<\n\tNonNullable<ConstructorParameters<typeof ChromaticAberrationEffect>[0]>\n>;\n\n/**\n * Angular component that applies a chromatic aberration effect to the scene.\n *\n * Chromatic aberration simulates the color fringing that occurs in real camera lenses\n * when different wavelengths of light are focused at different distances.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-chromatic-aberration [options]=\"{ offset: [0.002, 0.002] }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-chromatic-aberration',\n\ttemplate: `\n\t\t<ngt-chromatic-aberration-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-chromatic-aberration-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpChromaticAberration {\n\t/**\n\t * Configuration options for the chromatic aberration effect.\n\t * @see ChromaticAberrationEffectOptions\n\t */\n\toptions = input({} as Omit<ChromaticAberrationEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<ChromaticAberrationEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ChromaticAberrationEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ColorAverageEffect } from 'postprocessing';\n\n/**\n * Angular component that applies a color averaging effect to the scene.\n *\n * This effect converts the scene to grayscale by averaging the color channels,\n * which can create a desaturated or monochrome look.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-color-average />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With custom blend function -->\n * <ngtp-effect-composer>\n * <ngtp-color-average [options]=\"{ blendFunction: BlendFunction.MULTIPLY }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-color-average',\n\ttemplate: `\n\t\t<ngt-color-average-effect #effect *args=\"[options().blendFunction]\">\n\t\t\t<ng-content />\n\t\t</ngt-color-average-effect>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpColorAverage {\n\t/**\n\t * Configuration options for the color average effect.\n\t * @default { blendFunction: BlendFunction.NORMAL }\n\t */\n\toptions = input(\n\t\t{ blendFunction: BlendFunction.NORMAL },\n\t\t{ transform: mergeInputs({ blendFunction: BlendFunction.NORMAL }) },\n\t);\n\n\teffectRef = viewChild<ElementRef<ColorAverageEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ColorAverageEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ColorDepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the color depth effect.\n * Derived from ColorDepthEffect constructor parameters.\n */\nexport type ColorDepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ColorDepthEffect>[0]>>;\n\n/**\n * Angular component that applies a color depth reduction effect to the scene.\n *\n * This effect reduces the number of colors in the scene, creating a posterized\n * or retro look similar to older display hardware with limited color palettes.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-color-depth [options]=\"{ bits: 4 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-color-depth',\n\ttemplate: `\n\t\t<ngt-color-depth-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-color-depth-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpColorDepth {\n\t/**\n\t * Configuration options for the color depth effect.\n\t * @see ColorDepthEffectOptions\n\t */\n\toptions = input({} as Omit<ColorDepthEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<ColorDepthEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ColorDepthEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the depth effect.\n * Derived from DepthEffect constructor parameters.\n */\nexport type DepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DepthEffect>[0]>>;\n\n/**\n * Angular component that visualizes the scene's depth buffer.\n *\n * This effect renders the depth information of the scene, which can be useful\n * for debugging or creating stylized depth-based visualizations.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-depth [options]=\"{ inverted: true }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-depth',\n\ttemplate: `\n\t\t<ngt-depth-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-depth-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpDepth {\n\t/**\n\t * Configuration options for the depth effect.\n\t * @see DepthEffectOptions\n\t */\n\toptions = input({} as Omit<DepthEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<DepthEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ DepthEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtAnyRecord, NgtArgs, NgtVector3 } from 'angular-three';\nimport { DepthOfFieldEffect, MaskFunction } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\n/**\n * Configuration options for the depth of field effect.\n * Extends DepthOfFieldEffect options with additional target and depth texture support.\n */\ntype DOFOptions = NonNullable<ConstructorParameters<typeof DepthOfFieldEffect>[1]> &\n\tPartial<{ target: NgtVector3; depthTexture: { texture: THREE.Texture; packing: THREE.DepthPackingStrategies } }>;\n\n/**\n * Angular component that applies a depth of field effect to the scene.\n *\n * This effect simulates the focus behavior of real camera lenses, blurring\n * objects that are outside the focal range. Can be configured for autofocus\n * by providing a target position.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-depth-of-field [options]=\"{ focusDistance: 0, focalLength: 0.02, bokehScale: 2 }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With autofocus target -->\n * <ngtp-effect-composer>\n * <ngtp-depth-of-field [options]=\"{ target: [0, 0, 5], bokehScale: 3 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-depth-of-field',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpDepthOfField {\n\t/**\n\t * Configuration options for the depth of field effect.\n\t * @see DOFOptions\n\t */\n\toptions = input({} as DOFOptions);\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\t/**\n\t * Creates the DepthOfFieldEffect instance with the configured options.\n\t * Enables autofocus if a target is provided and applies depth texture settings.\n\t */\n\teffect = computed(() => {\n\t\tconst [camera, options] = [this.effectComposer.camera(), this.options()];\n\n\t\tconst autoFocus = options.target != null;\n\n\t\tconst effect = new DepthOfFieldEffect(camera, options);\n\n\t\t// Creating a target enables autofocus, NGT will set via props\n\t\tif (autoFocus) effect.target = new THREE.Vector3();\n\t\t// Depth texture for depth picking with optional packing strategy\n\t\tif (options.depthTexture) {\n\t\t\teffect.setDepthTexture(\n\t\t\t\toptions.depthTexture.texture,\n\t\t\t\toptions.depthTexture.packing as THREE.DepthPackingStrategies,\n\t\t\t);\n\t\t}\n\t\t// Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur\n\t\tconst maskPass = (effect as NgtAnyRecord)['maskPass'];\n\t\tmaskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst depthOfFieldEffect = this.effect();\n\t\t\tonCleanup(() => depthOfFieldEffect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DotScreenEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the dot screen effect.\n * Derived from DotScreenEffect constructor parameters.\n */\nexport type DotScreenEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DotScreenEffect>[0]>>;\n\n/**\n * Angular component that applies a dot screen effect to the scene.\n *\n * This effect overlays a pattern of dots on the scene, creating a halftone\n * or comic book style appearance.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-dot-screen [options]=\"{ scale: 1.5, angle: Math.PI * 0.25 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-dot-screen',\n\ttemplate: `\n\t\t<ngt-dot-screen-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-dot-screen-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpDotScreen {\n\t/**\n\t * Configuration options for the dot screen effect.\n\t * @see DotScreenEffectOptions\n\t */\n\toptions = input({} as Omit<DotScreenEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<DotScreenEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ DotScreenEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { FXAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the FXAA effect.\n * Derived from FXAAEffect constructor parameters.\n */\nexport type FXAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof FXAAEffect>[0]>>;\n\n/**\n * Angular component that applies Fast Approximate Anti-Aliasing (FXAA) to the scene.\n *\n * FXAA is a fast, single-pass anti-aliasing technique that smooths jagged edges\n * in the rendered image. It's less demanding than multisampling but may blur\n * some fine details.\n *\n * @example\n * ```html\n * <ngtp-effect-composer [options]=\"{ multisampling: 0 }\">\n * <ngtp-fxaa />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-fxaa',\n\ttemplate: `\n\t\t<ngt-fXAA-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-fXAA-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpFXAA {\n\t/**\n\t * Configuration options for the FXAA effect.\n\t * @see FXAAEffectOptions\n\t */\n\toptions = input({} as Omit<FXAAEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<FXAAEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ FXAAEffect });\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, NgtVector2, injectStore, pick, vector2 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { GlitchEffect, GlitchMode } from 'postprocessing';\n\n/**\n * Configuration options for the glitch effect.\n * Extends GlitchEffect options with additional control properties.\n */\nexport type GlitchOptions = NonNullable<ConstructorParameters<typeof GlitchEffect>[0]> &\n\tPartial<{\n\t\t/** The glitch mode (SPORADIC, CONSTANT_MILD, CONSTANT_WILD, DISABLED) */\n\t\tmode: GlitchMode;\n\t\t/** Whether the glitch effect is active */\n\t\tactive: boolean;\n\t\t/** Delay range between glitches [min, max] in seconds */\n\t\tdelay: NgtVector2;\n\t\t/** Duration range of glitches [min, max] in seconds */\n\t\tduration: NgtVector2;\n\t\t/** Chromatic aberration offset */\n\t\tchromaticAberrationOffset: NgtVector2;\n\t\t/** Strength of the glitch effect [x, y] */\n\t\tstrength: NgtVector2;\n\t}>;\n\n/**\n * Angular component that applies a glitch effect to the scene.\n *\n * This effect simulates digital glitches with customizable timing, strength,\n * and chromatic aberration. Can be toggled on/off and configured for different\n * glitch modes.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-glitch [options]=\"{ delay: [1.5, 3.5], duration: [0.6, 1.0] }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- Constant glitch mode -->\n * <ngtp-effect-composer>\n * <ngtp-glitch [options]=\"{ mode: GlitchMode.CONSTANT_MILD, active: true }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-glitch',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpGlitch {\n\t/**\n\t * Configuration options for the glitch effect.\n\t * @default { active: true }\n\t * @see GlitchOptions\n\t */\n\toptions = input({ active: true } as GlitchOptions, { transform: mergeInputs({ active: true }) });\n\n\tprivate active = pick(this.options, 'active');\n\tprivate mode = pick(this.options, 'mode');\n\tprivate ratio = pick(this.options, 'ratio');\n\tprivate dtSize = pick(this.options, 'dtSize');\n\tprivate columns = pick(this.options, 'columns');\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate perturbationMap = pick(this.options, 'perturbationMap');\n\n\tprivate delay = vector2(this.options, 'delay');\n\tprivate duration = vector2(this.options, 'duration');\n\tprivate chromaticAberrationOffset = vector2(this.options, 'chromaticAberrationOffset');\n\tprivate strength = vector2(this.options, 'strength');\n\n\tprivate store = injectStore();\n\n\t/**\n\t * The underlying GlitchEffect instance.\n\t * Created with the configured options and vector2 parameters.\n\t */\n\teffect = computed(\n\t\t() =>\n\t\t\tnew GlitchEffect({\n\t\t\t\tratio: this.ratio(),\n\t\t\t\tdtSize: this.dtSize(),\n\t\t\t\tcolumns: this.columns(),\n\t\t\t\tblendFunction: this.blendFunction(),\n\t\t\t\tperturbationMap: this.perturbationMap(),\n\t\t\t\tdelay: this.delay(),\n\t\t\t\tduration: this.duration(),\n\t\t\t\tchromaticAberrationOffset: this.chromaticAberrationOffset(),\n\t\t\t\tstrength: this.strength(),\n\t\t\t}),\n\t);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [glitchEffect, invalidate, mode, active] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.mode(),\n\t\t\t\tthis.active(),\n\t\t\t];\n\t\t\tglitchEffect.mode = active ? mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, omit, pick, resolveRef } from 'angular-three';\nimport { GodRaysEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\n/**\n * Configuration options for the god rays effect.\n * Extends GodRaysEffect options with a required sun/light source.\n */\ntype GodRaysOptions = ConstructorParameters<typeof GodRaysEffect>[2] & {\n\t/**\n\t * The light source for the god rays.\n\t * Can be a Mesh, Points, ElementRef, or a Signal of any of these.\n\t */\n\tsun:\n\t\t| THREE.Mesh\n\t\t| THREE.Points\n\t\t| ElementRef<THREE.Mesh | THREE.Points>\n\t\t| (() => THREE.Mesh | THREE.Points | ElementRef<THREE.Mesh | THREE.Points> | undefined);\n};\n\n/**\n * Angular component that applies a god rays (volumetric lighting) effect to the scene.\n *\n * This effect creates light shafts emanating from a light source, simulating\n * the way light scatters through atmospheric particles. Requires a sun/light\n * source mesh to generate the rays from.\n *\n * @example\n * ```html\n * <ngt-mesh #sun [position]=\"[0, 5, -10]\">\n * <ngt-sphere-geometry />\n * <ngt-mesh-basic-material color=\"yellow\" />\n * </ngt-mesh>\n *\n * <ngtp-effect-composer>\n * <ngtp-god-rays [options]=\"{ sun: sunRef, density: 0.96 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-god-rays',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGodRays {\n\t/**\n\t * Configuration options for the god rays effect.\n\t * Must include a `sun` property with the light source reference.\n\t * @see GodRaysOptions\n\t */\n\toptions = input({} as GodRaysOptions);\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\tprivate effectOptions = omit(this.options, ['sun']);\n\tprivate sun = pick(this.options, 'sun');\n\n\t/**\n\t * Resolves the sun reference to the actual Three.js object.\n\t * Handles both direct references and function references.\n\t */\n\tprivate sunElement = computed(() => {\n\t\tconst sun = this.sun();\n\t\tif (typeof sun === 'function') return resolveRef(sun());\n\t\treturn resolveRef(sun);\n\t});\n\n\t/**\n\t * The underlying GodRaysEffect instance.\n\t * Created with the camera, sun element, and configured options.\n\t */\n\teffect = computed(() => {\n\t\tconst [camera, sunElement, options] = [this.effectComposer.camera(), this.sunElement(), this.effectOptions()];\n\t\treturn new GodRaysEffect(camera, sunElement, options);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst sunElement = this.sunElement();\n\t\t\tif (!sunElement) return;\n\n\t\t\tconst godRaysEffect = this.effect();\n\t\t\tgodRaysEffect.lightSource = sunElement;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, omit, pick } from 'angular-three';\nimport { GridEffect } from 'postprocessing';\n\n/**\n * Configuration options for the grid effect.\n * Extends GridEffect options with optional size configuration.\n */\ntype GridOptions = NonNullable<ConstructorParameters<typeof GridEffect>[0]> &\n\tPartial<{\n\t\t/** Custom size for the grid effect */\n\t\tsize: { width: number; height: number };\n\t}>;\n\n/**\n * Angular component that applies a grid overlay effect to the scene.\n *\n * This effect overlays a grid pattern on the rendered scene, which can be\n * useful for technical visualization or stylized effects.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-grid [options]=\"{ scale: 1.5, lineWidth: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-grid',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGrid {\n\t/**\n\t * Configuration options for the grid effect.\n\t * @see GridOptions\n\t */\n\toptions = input({} as GridOptions);\n\n\tprivate effectOptions = omit(this.options, ['size']);\n\tprivate size = pick(this.options, 'size');\n\n\t/** The underlying GridEffect instance */\n\teffect = computed(() => new GridEffect(this.effectOptions()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [size, effect] = [this.size(), this.effect()];\n\t\t\tif (size) {\n\t\t\t\teffect.setSize(size.width, size.height);\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { HueSaturationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the hue/saturation effect.\n * Derived from HueSaturationEffect constructor parameters.\n */\nexport type HueSaturationEffectOptions = Partial<NonNullable<ConstructorParameters<typeof HueSaturationEffect>[0]>>;\n\n/**\n * Angular component that applies hue and saturation adjustments to the scene.\n *\n * This effect allows you to shift the hue and adjust the saturation of the\n * rendered scene as a postprocessing step.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-hue-saturation [options]=\"{ hue: 0.5, saturation: 0.2 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-hue-saturation',\n\ttemplate: `\n\t\t<ngt-hue-saturation-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-hue-saturation-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpHueSaturation {\n\t/**\n\t * Configuration options for the hue/saturation effect.\n\t * @see HueSaturationEffectOptions\n\t */\n\toptions = input({} as Omit<HueSaturationEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<HueSaturationEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ HueSaturationEffect });\n\t}\n}\n","/**\n * Lens Flare Effect\n * Created by Anderson Mancini 2023\n * React Three Fiber Ultimate LensFlare - Ported to Angular Three\n */\n\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, NgtVector3, beforeRender, injectStore, is, omit, vector3 } from 'angular-three';\nimport { easing } from 'maath';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\n/**\n * Shader configuration for the lens flare effect.\n * Contains the GLSL fragment shader code.\n */\nconst LensFlareShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}\n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}\n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}\n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n};\n\n/**\n * A postprocessing effect that simulates camera lens flares.\n *\n * Creates realistic lens flare effects including glare, ghosts, star bursts,\n * and anamorphic flares. Can be animated and positioned dynamically.\n *\n * @example\n * ```typescript\n * const effect = new LensFlareEffect({\n * glareSize: 0.3,\n * starPoints: 8,\n * animated: true\n * });\n * ```\n */\nexport class LensFlareEffect extends Effect {\n\t/**\n\t * Creates a new LensFlareEffect instance.\n\t *\n\t * @param options - Configuration options for the lens flare\n\t * @param options.blendFunction - How to blend with the scene\n\t * @param options.enabled - Whether the effect is enabled\n\t * @param options.glareSize - Size of the glare\n\t * @param options.lensPosition - Position of the lens on screen\n\t * @param options.iResolution - Resolution of the effect\n\t * @param options.starPoints - Number of points in the star pattern\n\t * @param options.flareSize - Size of individual flares\n\t * @param options.flareSpeed - Animation speed of flares\n\t * @param options.flareShape - Shape parameter for flares\n\t * @param options.animated - Whether to animate the effect\n\t * @param options.anamorphic - Enable anamorphic lens simulation\n\t * @param options.colorGain - Color tint for the effect\n\t * @param options.lensDirtTexture - Texture for lens dirt overlay\n\t * @param options.haloScale - Scale of the halo effect\n\t * @param options.secondaryGhosts - Enable secondary ghost images\n\t * @param options.aditionalStreaks - Enable additional streak effects\n\t * @param options.ghostScale - Scale of ghost images\n\t * @param options.opacity - Opacity of the effect\n\t * @param options.starBurst - Enable star burst effect\n\t */\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tenabled = true,\n\t\tglareSize = 0.2,\n\t\tlensPosition = [0.01, 0.01],\n\t\tiResolution = [0, 0],\n\t\tstarPoints = 6,\n\t\tflareSize = 0.01,\n\t\tflareSpeed = 0.01,\n\t\tflareShape = 0.01,\n\t\tanimated = true,\n\t\tanamorphic = false,\n\t\tcolorGain = new THREE.Color(20, 20, 20),\n\t\tlensDirtTexture = null as THREE.Texture | null,\n\t\thaloScale = 0.5,\n\t\tsecondaryGhosts = true,\n\t\taditionalStreaks = true,\n\t\tghostScale = 0.0,\n\t\topacity = 1.0,\n\t\tstarBurst = false,\n\t} = {}) {\n\t\tsuper('LensFlareEffect', LensFlareShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tuniforms: new Map<string, THREE.Uniform>([\n\t\t\t\t['enabled', new THREE.Uniform(enabled)],\n\t\t\t\t['glareSize', new THREE.Uniform(glareSize)],\n\t\t\t\t['lensPosition', new THREE.Uniform(lensPosition)],\n\t\t\t\t['iTime', new THREE.Uniform(0)],\n\t\t\t\t['iResolution', new THREE.Uniform(iResolution)],\n\t\t\t\t['starPoints', new THREE.Uniform(starPoints)],\n\t\t\t\t['flareSize', new THREE.Uniform(flareSize)],\n\t\t\t\t['flareSpeed', new THREE.Uniform(flareSpeed)],\n\t\t\t\t['flareShape', new THREE.Uniform(flareShape)],\n\t\t\t\t['animated', new THREE.Uniform(animated)],\n\t\t\t\t['anamorphic', new THREE.Uniform(anamorphic)],\n\t\t\t\t['colorGain', new THREE.Uniform(colorGain)],\n\t\t\t\t['lensDirtTexture', new THREE.Uniform(lensDirtTexture)],\n\t\t\t\t['haloScale', new THREE.Uniform(haloScale)],\n\t\t\t\t['secondaryGhosts', new THREE.Uniform(secondaryGhosts)],\n\t\t\t\t['aditionalStreaks', new THREE.Uniform(aditionalStreaks)],\n\t\t\t\t['ghostScale', new THREE.Uniform(ghostScale)],\n\t\t\t\t['starBurst', new THREE.Uniform(starBurst)],\n\t\t\t\t['opacity', new THREE.Uniform(opacity)],\n\t\t\t]),\n\t\t});\n\t}\n\n\t/**\n\t * Updates the effect's time uniform for animation.\n\t *\n\t * @param _renderer - The WebGL renderer (unused)\n\t * @param _inputBuffer - The input render target (unused)\n\t * @param deltaTime - Time elapsed since last frame\n\t */\n\toverride update(_renderer: THREE.WebGLRenderer, _inputBuffer: THREE.WebGLRenderTarget, deltaTime: number) {\n\t\tconst iTime = this.uniforms.get('iTime');\n\t\tif (iTime) {\n\t\t\tiTime.value += deltaTime;\n\t\t}\n\t}\n}\n\n/**\n * Configuration options for the Angular lens flare component.\n * Extends LensFlareEffect options with position and mouse tracking.\n */\nexport type LensFlareOptions = ConstructorParameters<typeof LensFlareEffect>[0] & {\n\t/** World position of the light source for the flare */\n\tposition: NgtVector3;\n\t/** Whether the flare should follow the mouse cursor */\n\tfollowMouse: boolean;\n\t/** Smoothing time for opacity transitions */\n\tsmoothTime: number;\n};\n\nconst defaultOptions: LensFlareOptions = {\n\tposition: new THREE.Vector3(-25, 6, -60),\n\tfollowMouse: false,\n\tsmoothTime: 0.7,\n};\n\n/**\n * Angular component that applies a lens flare effect to the scene.\n *\n * This effect simulates realistic camera lens flares with support for\n * dynamic positioning, mouse following, and occlusion detection.\n * The flare automatically fades when occluded by scene objects.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-lens-flare [options]=\"{ position: [10, 5, -20], glareSize: 0.3 }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- Mouse-following flare -->\n * <ngtp-effect-composer>\n * <ngtp-lens-flare [options]=\"{ followMouse: true, smoothTime: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-lens-flare',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [parameters]=\"{ dispose: null }\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLensFlare {\n\t/**\n\t * Configuration options for the lens flare effect.\n\t * @see LensFlareOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\tprivate effectOptions = omit(this.options, ['position', 'followMouse', 'smoothTime']);\n\tprivate position = vector3(this.options, 'position');\n\n\t/** Cached vector for projecting 3D position to screen space */\n\tprivate projectedPosition = new THREE.Vector3();\n\n\t/** Cached vector for 2D mouse/raycaster coordinates */\n\tprivate mouse2d = new THREE.Vector2();\n\n\t/** The underlying LensFlareEffect instance */\n\teffect = computed(() => new LensFlareEffect(this.effectOptions()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lensFlareEffect, width, height] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.viewport.width(),\n\t\t\t\tthis.store.viewport.height(),\n\t\t\t];\n\t\t\tconst iResolution = lensFlareEffect.uniforms.get('iResolution');\n\t\t\tif (iResolution) {\n\t\t\t\tiResolution.value.x = width;\n\t\t\t\tiResolution.value.y = height;\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\n\t\tbeforeRender(({ delta }) => {\n\t\t\tconst [effect] = [this.effect()];\n\t\t\tif (!effect) return;\n\n\t\t\tconst [{ followMouse, smoothTime }, position, pointer, camera, scene, raycaster] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.store.snapshot.pointer,\n\t\t\t\tthis.effectComposer.camera(),\n\t\t\t\tthis.effectComposer.scene(),\n\t\t\t\tthis.store.snapshot.raycaster,\n\t\t\t];\n\n\t\t\tconst uLensPosition = effect.uniforms.get('lensPosition');\n\t\t\tconst uOpacity = effect.uniforms.get('opacity');\n\t\t\tif (!uLensPosition || !uOpacity) return;\n\n\t\t\tlet target = 1;\n\n\t\t\tif (followMouse) {\n\t\t\t\tuLensPosition.value.x = pointer.x;\n\t\t\t\tuLensPosition.value.y = pointer.y;\n\t\t\t\ttarget = 0;\n\t\t\t} else {\n\t\t\t\tthis.projectedPosition.copy(position).project(camera);\n\t\t\t\tif (this.projectedPosition.z > 1) return;\n\n\t\t\t\tuLensPosition.value.x = this.projectedPosition.x;\n\t\t\t\tuLensPosition.value.y = this.projectedPosition.y;\n\n\t\t\t\tthis.mouse2d.set(this.projectedPosition.x, this.projectedPosition.y);\n\t\t\t\traycaster.setFromCamera(this.mouse2d, camera);\n\t\t\t\tconst intersects = raycaster.intersectObjects(scene.children, true);\n\t\t\t\tconst { object } = intersects[0] ?? {};\n\t\t\t\tif (object) {\n\t\t\t\t\tif (object.userData?.['lensflare'] === 'no-occlusion') {\n\t\t\t\t\t\ttarget = 0;\n\t\t\t\t\t} else if (is.three<THREE.Mesh<THREE.BufferGeometry, THREE.ShaderMaterial>>(object, 'isMesh')) {\n\t\t\t\t\t\tif (object.material.uniforms?.['_transmission']?.value > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshTransmissionMaterial\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t'_transmission' in object.material &&\n\t\t\t\t\t\t\ttypeof object.material._transmission === 'number' &&\n\t\t\t\t\t\t\tobject.material._transmission > 0.2\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t//Check for MeshPhysicalMaterial with transmission setting\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material.transparent) {\n\t\t\t\t\t\t\t// Check for OtherMaterials with transparent parameter\n\t\t\t\t\t\t\ttarget = object.material.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teasing.damp(uOpacity, 'value', target, smoothTime, delta);\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, injectStore, pick } from 'angular-three';\nimport { BlendFunction, LUT3DEffect } from 'postprocessing';\nimport * as THREE from 'three';\n\n/**\n * Configuration options for the LUT (Look-Up Table) effect.\n */\nexport interface LUTOptions {\n\t/**\n\t * The 3D LUT texture to apply for color grading.\n\t * Can be loaded using LUTCubeLoader or LUT3dlLoader.\n\t */\n\tlut: THREE.Texture;\n\n\t/**\n\t * The blend function for combining with the scene.\n\t * @default BlendFunction.SRC\n\t */\n\tblendFunction?: BlendFunction;\n\n\t/**\n\t * Whether to use tetrahedral interpolation for smoother color transitions.\n\t * @default false\n\t */\n\ttetrahedralInterpolation?: boolean;\n}\n\n/**\n * Angular component that applies a LUT (Look-Up Table) color grading effect.\n *\n * LUTs are used for color grading in film and photography. This effect applies\n * a 3D LUT texture to transform the colors of the rendered scene.\n *\n * @example\n * ```typescript\n * // In component\n * lutTexture = injectLoader(() => LUTCubeLoader, () => 'path/to/lut.cube');\n * ```\n *\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-lut [options]=\"{ lut: lutTexture() }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-lut',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLUT {\n\t/**\n\t * Configuration options for the LUT effect.\n\t * Must include a `lut` texture.\n\t * @see LUTOptions\n\t */\n\toptions = input({} as LUTOptions);\n\n\tprivate lut = pick(this.options, 'lut');\n\tprivate tetrahedralInterpolation = pick(this.options, 'tetrahedralInterpolation');\n\n\tprivate store = injectStore();\n\n\t/** The underlying LUT3DEffect instance */\n\teffect = computed(() => {\n\t\tconst { lut, ...options } = this.options();\n\t\treturn new LUT3DEffect(lut, options);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [effect, lut, tetrahedralInterpolation, invalidate] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.lut(),\n\t\t\t\tthis.tetrahedralInterpolation(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t];\n\n\t\t\tif (tetrahedralInterpolation) effect.tetrahedralInterpolation = tetrahedralInterpolation;\n\t\t\tif (lut) effect.lut = lut;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, NoiseEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Configuration options for the noise effect.\n * Derived from NoiseEffect constructor parameters.\n */\nexport type NoiseEffectOptions = Partial<NonNullable<ConstructorParameters<typeof NoiseEffect>[0]>>;\n\n/**\n * Angular component that applies a noise/grain effect to the scene.\n *\n * This effect adds film grain or noise to the rendered image, which can\n * add a cinematic quality or help hide banding in gradients.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-noise [options]=\"{ premultiply: true }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-noise',\n\ttemplate: `\n\t\t<ngt-noise-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-noise-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],\n})\nexport class NgtpNoise {\n\t/**\n\t * Configuration options for the noise effect.\n\t * @see NoiseEffectOptions\n\t */\n\toptions = input({} as Omit<NoiseEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<NoiseEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ NoiseEffect });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtSelectionApi, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { OutlineEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\n/**\n * Configuration options for the outline effect.\n * Extends OutlineEffect options with selection management.\n */\nexport type NgtpOutlineOptions = ConstructorParameters<typeof OutlineEffect>[2] & {\n\t/**\n\t * Array of objects to outline.\n\t * Can be Object3D instances or ElementRefs.\n\t * Not needed if using NgtSelectionApi.\n\t */\n\tselection?: Array<THREE.Object3D | ElementRef<THREE.Object3D>>;\n\n\t/**\n\t * The layer used for selection rendering.\n\t * @default 10\n\t */\n\tselectionLayer: number;\n};\n\nconst defaultOptions: NgtpOutlineOptions = {\n\tselectionLayer: 10,\n};\n\n/**\n * Angular component that applies an outline effect to selected objects.\n *\n * This effect draws an outline around specified objects in the scene.\n * Can be used with NgtSelectionApi for declarative selection or with\n * manual selection via the options input.\n *\n * @example\n * ```html\n * <!-- With NgtSelectionApi (recommended) -->\n * <ngt-group [select]=\"hovered()\" (pointerenter)=\"hovered.set(true)\">\n * <ngt-mesh>...</ngt-mesh>\n * </ngt-group>\n *\n * <ngtp-effect-composer>\n * <ngtp-outline [options]=\"{ edgeStrength: 2.5, blur: true }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With manual selection -->\n * <ngtp-effect-composer>\n * <ngtp-outline [options]=\"{ selection: [meshRef.nativeElement], edgeStrength: 5 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-outline',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtpOutline {\n\t/**\n\t * Configuration options for the outline effect.\n\t * @see NgtpOutlineOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate selectionApi = inject(NgtSelectionApi, { optional: true });\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\tprivate store = injectStore();\n\n\tprivate selection = pick(this.options, 'selection');\n\tprivate selectionLayer = pick(this.options, 'selectionLayer');\n\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate patternTexture = pick(this.options, 'patternTexture');\n\tprivate edgeStrength = pick(this.options, 'edgeStrength');\n\tprivate pulseSpeed = pick(this.options, 'pulseSpeed');\n\tprivate visibleEdgeColor = pick(this.options, 'visibleEdgeColor');\n\tprivate hiddenEdgeColor = pick(this.options, 'hiddenEdgeColor');\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate kernelSize = pick(this.options, 'kernelSize');\n\tprivate blur = pick(this.options, 'blur');\n\tprivate xRay = pick(this.options, 'xRay');\n\tprivate restOptions = omit(this.options, [\n\t\t'blendFunction',\n\t\t'patternTexture',\n\t\t'edgeStrength',\n\t\t'pulseSpeed',\n\t\t'visibleEdgeColor',\n\t\t'hiddenEdgeColor',\n\t\t'width',\n\t\t'height',\n\t\t'kernelSize',\n\t\t'blur',\n\t\t'xRay',\n\t]);\n\n\t/**\n\t * The underlying OutlineEffect instance.\n\t * Created with the scene, camera, and configured options.\n\t */\n\teffect = computed(() => {\n\t\tconst [\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tblendFunction,\n\t\t\tpatternTexture,\n\t\t\tedgeStrength,\n\t\t\tpulseSpeed,\n\t\t\tvisibleEdgeColor,\n\t\t\thiddenEdgeColor,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tkernelSize,\n\t\t\tblur,\n\t\t\txRay,\n\t\t\trestOptions,\n\t\t] = [\n\t\t\tthis.effectComposer.scene(),\n\t\t\tthis.effectComposer.camera(),\n\t\t\tthis.blendFunction(),\n\t\t\tthis.patternTexture(),\n\t\t\tthis.edgeStrength(),\n\t\t\tthis.pulseSpeed(),\n\t\t\tthis.visibleEdgeColor(),\n\t\t\tthis.hiddenEdgeColor(),\n\t\t\tthis.width(),\n\t\t\tthis.height(),\n\t\t\tthis.kernelSize(),\n\t\t\tthis.blur(),\n\t\t\tthis.xRay(),\n\t\t\tuntracked(this.restOptions),\n\t\t];\n\n\t\treturn new OutlineEffect(scene, camera, {\n\t\t\tblendFunction,\n\t\t\tpatternTexture,\n\t\t\tedgeStrength,\n\t\t\tpulseSpeed,\n\t\t\tvisibleEdgeColor,\n\t\t\thiddenEdgeColor,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tkernelSize,\n\t\t\tblur,\n\t\t\txRay,\n\t\t\t...restOptions,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [effect, invalidate, selectionLayer] = [\n\t\t\t\tthis.effect(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.selectionLayer(),\n\t\t\t];\n\t\t\teffect.selectionLayer = selectionLayer;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\t// NOTE: we run this effect if declarative NgtSelection is not enabled\n\t\t\tif (!this.selectionApi) {\n\t\t\t\t// NOTE: if NgtSelection is not used and selection is not provided, we throw\n\t\t\t\tif (this.selection() === undefined) {\n\t\t\t\t\tthrow new Error('[NGT PostProcessing]: ngtp-outline requires selection input or use NgtSelection');\n\t\t\t\t}\n\t\t\t\tconst cleanup = this.handleSelectionChangeEffect(this.selection, this.effect, this.store.invalidate);\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tcleanup?.();\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// NOTE: we run this effect if declarative NgtSelection is enabled\n\t\t\tconst selectionEnabled = this.selectionApi.enabled();\n\t\t\tif (!selectionEnabled) return;\n\t\t\tconst cleanup = this.handleSelectionChangeEffect(\n\t\t\t\tthis.selectionApi.selected,\n\t\t\t\tthis.effect,\n\t\t\t\tthis.store.invalidate,\n\t\t\t);\n\t\t\tonCleanup(() => {\n\t\t\t\tcleanup?.();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Handles changes to the selection and updates the outline effect.\n\t *\n\t * @param selected - Function returning the currently selected objects\n\t * @param _effect - Function returning the OutlineEffect instance\n\t * @param _invalidate - Function returning the invalidate callback\n\t * @returns Cleanup function to clear the selection\n\t */\n\tprivate handleSelectionChangeEffect(\n\t\tselected: () => Array<THREE.Object3D | ElementRef<THREE.Object3D>> | undefined,\n\t\t_effect: () => OutlineEffect,\n\t\t_invalidate: () => () => void,\n\t) {\n\t\tconst selection = selected();\n\t\tif (!selection || selection.length === 0) return;\n\n\t\tconst [effect, invalidate] = [_effect(), _invalidate()];\n\n\t\tconst objects: THREE.Object3D[] = [];\n\t\tfor (const el of selection) {\n\t\t\tconst obj = resolveRef(el);\n\t\t\tif (!obj) continue;\n\t\t\tobjects.push(obj);\n\t\t}\n\n\t\tif (objects.length === 0) return;\n\n\t\teffect.selection.set(objects);\n\t\tinvalidate();\n\n\t\treturn () => {\n\t\t\teffect.selection.clear();\n\t\t\tinvalidate();\n\t\t};\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { NgtArgs, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { PixelationEffect } from 'postprocessing';\n\n/**\n * Configuration options for the pixelation effect.\n */\nexport interface PixelationOptions {\n\t/**\n\t * The pixel granularity - higher values create larger pixels.\n\t * @default 5\n\t */\n\tgranularity: number;\n}\n\n/**\n * Angular component that applies a pixelation effect to the scene.\n *\n * This effect reduces the resolution of the rendered image to create\n * a retro, 8-bit style appearance.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-pixelation [options]=\"{ granularity: 10 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-pixelation',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n})\nexport class NgtpPixelation {\n\t/**\n\t * Configuration options for the pixelation effect.\n\t * @default { granularity: 5 }\n\t * @see PixelationOptions\n\t */\n\toptions = input({ granularity: 5 } as PixelationOptions, { transform: mergeInputs({ granularity: 5 }) });\n\n\tprivate granularity = pick(this.options, 'granularity');\n\n\t/** The underlying PixelationEffect instance */\n\teffect = computed(() => new PixelationEffect(this.granularity()));\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ScanlineEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Configuration options for the scanline effect.\n * Derived from ScanlineEffect constructor parameters.\n */\nexport type ScanlineEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ScanlineEffect>[0]>>;\n\nconst defaultOptions: Omit<ScanlineEffectOptions, 'blendFunction'> = {\n\tdensity: 1.25,\n};\n\n/**\n * Angular component that applies a scanline effect to the scene.\n *\n * This effect overlays horizontal scanlines on the image, simulating\n * the appearance of old CRT monitors or television screens.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-scanline [options]=\"{ density: 2.0 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-scanline',\n\ttemplate: `\n\t\t<ngt-scanline-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-scanline-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],\n})\nexport class NgtpScanline {\n\t/**\n\t * Configuration options for the scanline effect.\n\t * @default { density: 1.25 }\n\t * @see ScanlineEffectOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<ScanlineEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ScanlineEffect });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtSelectionApi, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, BloomEffectOptions, SelectiveBloomEffect } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\n/**\n * Configuration options for the selective bloom effect.\n * Extends BloomEffectOptions with selection control properties.\n */\nexport type SelectiveBloomOptions = BloomEffectOptions & {\n\t/**\n\t * The layer used for selection rendering.\n\t * @default 10\n\t */\n\tselectionLayer: number;\n\n\t/**\n\t * Whether to invert the selection (bloom everything except selected).\n\t * @default false\n\t */\n\tinverted: boolean;\n\n\t/**\n\t * Whether to ignore the background in the bloom effect.\n\t * @default false\n\t */\n\tignoreBackground: boolean;\n};\n\nconst defaultOptions: SelectiveBloomOptions = {\n\tselectionLayer: 10,\n\tinverted: false,\n\tignoreBackground: false,\n};\n\n/**\n * Angular component that applies bloom only to selected objects.\n *\n * Unlike the standard bloom effect, selective bloom allows you to specify\n * which objects should glow. Requires light sources to be provided for\n * proper rendering.\n *\n * Can be used with NgtSelectionApi for declarative selection or with\n * manual selection via the selection input.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-selective-bloom\n * [lights]=\"[ambientLightRef, pointLightRef]\"\n * [selection]=\"[glowingMeshRef]\"\n * [options]=\"{ intensity: 2, luminanceThreshold: 0 }\"\n * />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-selective-bloom',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpSelectiveBloom {\n\t/**\n\t * Light sources that should be included in the bloom calculation.\n\t * Required for proper selective bloom rendering.\n\t */\n\tlights = input.required<THREE.Object3D[] | ElementRef<THREE.Object3D | undefined>[]>();\n\n\t/**\n\t * Objects to apply bloom to.\n\t * Can be a single object, array of objects, or ElementRefs.\n\t * Not needed if using NgtSelectionApi.\n\t * @default []\n\t */\n\tselection = input<\n\t\t| THREE.Object3D\n\t\t| THREE.Object3D[]\n\t\t| ElementRef<THREE.Object3D | undefined>\n\t\t| ElementRef<THREE.Object3D | undefined>[]\n\t>([]);\n\n\t/**\n\t * Configuration options for the selective bloom effect.\n\t * @see SelectiveBloomOptions\n\t */\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate blendFunction = pick(this.options, 'blendFunction');\n\tprivate luminanceThreshold = pick(this.options, 'luminanceThreshold');\n\tprivate luminanceSmoothing = pick(this.options, 'luminanceSmoothing');\n\tprivate mipmapBlur = pick(this.options, 'mipmapBlur');\n\tprivate intensity = pick(this.options, 'intensity');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate levels = pick(this.options, 'levels');\n\tprivate kernelSize = pick(this.options, 'kernelSize');\n\tprivate resolutionScale = pick(this.options, 'resolutionScale');\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate resolutionX = pick(this.options, 'resolutionX');\n\tprivate resolutionY = pick(this.options, 'resolutionY');\n\tprivate inverted = pick(this.options, 'inverted');\n\tprivate ignoreBackground = pick(this.options, 'ignoreBackground');\n\tprivate selectionLayer = pick(this.options, 'selectionLayer');\n\n\tprivate store = injectStore();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\tprivate selectionApi = inject(NgtSelectionApi, { optional: true });\n\n\tprivate resolvedLights = computed(() => this.lights().map((light) => resolveRef(light)));\n\tprivate resolvedSelected = computed(() => {\n\t\tconst selection = this.selection();\n\t\tif (!selection) return [];\n\t\tconst array = Array.isArray(selection) ? selection : [selection];\n\t\treturn array.map((selected) => resolveRef(selected));\n\t});\n\tprivate resolvedNgtSelected = computed(() => {\n\t\tif (!this.selectionApi || !this.selectionApi.enabled) return [];\n\t\treturn this.selectionApi.selected().map((selected) => resolveRef(selected));\n\t});\n\n\t/**\n\t * The underlying SelectiveBloomEffect instance.\n\t * Created with the scene, camera, and configured options.\n\t */\n\teffect = computed(() => {\n\t\tconst effect = new SelectiveBloomEffect(this.effectComposer.scene(), this.effectComposer.camera(), {\n\t\t\tblendFunction: this.blendFunction() || BlendFunction.ADD,\n\t\t\tluminanceThreshold: this.luminanceThreshold(),\n\t\t\tluminanceSmoothing: this.luminanceSmoothing(),\n\t\t\tmipmapBlur: this.mipmapBlur(),\n\t\t\tintensity: this.intensity(),\n\t\t\tradius: this.radius(),\n\t\t\tlevels: this.levels(),\n\t\t\tkernelSize: this.kernelSize(),\n\t\t\tresolutionScale: this.resolutionScale(),\n\t\t\twidth: this.width(),\n\t\t\theight: this.height(),\n\t\t\tresolutionX: this.resolutionX(),\n\t\t\tresolutionY: this.resolutionY(),\n\t\t});\n\n\t\teffect.inverted = this.inverted();\n\t\teffect.ignoreBackground = this.ignoreBackground();\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\t// skip input selection altogether if NgtSelection is used\n\t\t\tif (this.selectionApi) return;\n\t\t\tconst selection = this.resolvedSelected();\n\t\t\tif (!selection.length) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\t\t\teffect.selection.set(selection as THREE.Object3D[]);\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\teffect.selection.clear();\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [selectionLayer, invalidate, effect] = [\n\t\t\t\tthis.selectionLayer(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.effect(),\n\t\t\t];\n\t\t\teffect.selection.layer = selectionLayer;\n\t\t\tinvalidate();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.resolvedLights();\n\t\t\tif (lights.length <= 0) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\n\t\t\tlights.forEach((light) => light && this.addLight(effect, light));\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\tlights.forEach((light) => light && this.removeLight(effect, light));\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst selected = this.resolvedNgtSelected();\n\t\t\tif (!selected.length) return;\n\n\t\t\tconst [effect, invalidate] = [this.effect(), this.store.invalidate(), this.selectionLayer()];\n\t\t\teffect.selection.set(selected as THREE.Object3D[]);\n\t\t\tinvalidate();\n\n\t\t\tonCleanup(() => {\n\t\t\t\teffect.selection.clear();\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Enables the selection layer on a light source.\n\t *\n\t * @param effect - The SelectiveBloomEffect instance\n\t * @param light - The light to enable on the selection layer\n\t */\n\tprivate addLight(effect: SelectiveBloomEffect, light: THREE.Object3D) {\n\t\tlight.layers.enable(effect.selection.layer);\n\t}\n\n\t/**\n\t * Disables the selection layer on a light source.\n\t *\n\t * @param effect - The SelectiveBloomEffect instance\n\t * @param light - The light to disable from the selection layer\n\t */\n\tprivate removeLight(effect: SelectiveBloomEffect, light: THREE.Object3D) {\n\t\tlight.layers.disable(effect.selection.layer);\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SepiaEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the sepia effect.\n * Derived from SepiaEffect constructor parameters.\n */\nexport type SepiaEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SepiaEffect>[0]>>;\n\n/**\n * Angular component that applies a sepia tone effect to the scene.\n *\n * This effect gives the rendered image a warm, brownish tint similar to\n * old photographs, creating a vintage or nostalgic appearance.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-sepia [options]=\"{ intensity: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-sepia',\n\ttemplate: `\n\t\t<ngt-sepia-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sepia-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpSepia {\n\t/**\n\t * Configuration options for the sepia effect.\n\t * @see SepiaEffectOptions\n\t */\n\toptions = input({} as Omit<SepiaEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<SepiaEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ SepiaEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ShockWaveEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the shock wave effect.\n * Derived from ShockWaveEffect constructor parameters.\n */\nexport type ShockWaveEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ShockWaveEffect>[0]>>;\n\n/**\n * Angular component that applies a shock wave distortion effect.\n *\n * This effect creates an expanding ring distortion that simulates a\n * shock wave or explosion ripple emanating from a point in the scene.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-shock-wave\n * [options]=\"{ speed: 2, maxRadius: 1, waveSize: 0.2, amplitude: 0.05 }\"\n * />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-shock-wave',\n\ttemplate: `\n\t\t<ngt-shock-wave-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-shock-wave-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpShockWave {\n\t/**\n\t * Configuration options for the shock wave effect.\n\t * @see ShockWaveEffectOptions\n\t */\n\toptions = input({} as Omit<ShockWaveEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<ShockWaveEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ShockWaveEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SMAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the SMAA effect.\n * Derived from SMAAEffect constructor parameters.\n */\nexport type SMAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SMAAEffect>[0]>>;\n\n/**\n * Angular component that applies Subpixel Morphological Anti-Aliasing (SMAA).\n *\n * SMAA is a high-quality, efficient anti-aliasing technique that provides\n * better results than FXAA while being less demanding than multisampling.\n * It's particularly effective at smoothing edges while preserving sharpness.\n *\n * @example\n * ```html\n * <ngtp-effect-composer [options]=\"{ multisampling: 0 }\">\n * <ngtp-smaa />\n * </ngtp-effect-composer>\n * ```\n *\n * @example\n * ```html\n * <!-- With preset -->\n * <ngtp-effect-composer>\n * <ngtp-smaa [options]=\"{ preset: SMAAPreset.ULTRA }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-smaa',\n\ttemplate: `\n\t\t<ngt-sMAA-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sMAA-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpSMAA {\n\t/**\n\t * Configuration options for the SMAA effect.\n\t * @see SMAAEffectOptions\n\t */\n\toptions = input({} as Omit<SMAAEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<SMAAEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ SMAAEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, TiltShiftEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Configuration options for the tilt-shift effect.\n * Derived from TiltShiftEffect constructor parameters.\n */\nexport type TiltShiftEffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShiftEffect>[0]>>;\n\n/**\n * Angular component that applies a tilt-shift blur effect.\n *\n * This effect simulates the shallow depth of field look from tilt-shift\n * photography, creating a \"miniature\" or \"diorama\" appearance where only\n * a horizontal band of the image is in focus.\n *\n * Uses the postprocessing library's built-in TiltShiftEffect.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-tilt-shift [options]=\"{ blur: 0.5, offset: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @see NgtpTiltShift2 for an alternative implementation with different parameters\n */\n@Component({\n\tselector: 'ngtp-tilt-shift',\n\ttemplate: `\n\t\t<ngt-tilt-shift-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpTiltShift {\n\t/**\n\t * Configuration options for the tilt-shift effect.\n\t * @see TiltShiftEffectOptions\n\t */\n\toptions = input({} as Omit<TiltShiftEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<TiltShiftEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ TiltShiftEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Custom tilt-shift shader based on Evan Wallace's implementation.\n * Provides line-based focus control with customizable blur parameters.\n */\nconst TiltShiftShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n // original shader by Evan Wallace\n\n #define MAX_ITERATIONS 100\n\n uniform float blur;\n uniform float taper;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 direction;\n uniform int samples;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n float f_samples = float(samples);\n float half_samples = f_samples / 2.0;\n\n // use screen diagonal to normalize blur radii\n float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n float gradientRadius = taper * (maxScreenDistance);\n float blurRadius = blur * (maxScreenDistance / 16.0);\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n #pragma unroll_loop_start\n for (int i = 0; i <= MAX_ITERATIONS; i++) {\n if (i >= samples) { break; } // return early if over sample count\n float f_i = float(i);\n float s_i = -half_samples + f_i;\n float percent = (s_i + offset - 0.5) / half_samples;\n float weight = 1.0 - abs(percent);\n vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n sample_i.rgb *= sample_i.a;\n color += sample_i * weight;\n total += weight;\n }\n #pragma unroll_loop_end\n\n outputColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n outputColor.rgb /= outputColor.a + 0.00001;\n }\n `,\n};\n\n/**\n * A custom tilt-shift effect with line-based focus control.\n *\n * This effect provides a different approach to tilt-shift compared to\n * the standard TiltShiftEffect, allowing you to define a focus line\n * between two screen-space points.\n *\n * @example\n * ```typescript\n * const effect = new TiltShift2Effect({\n * blur: 0.2,\n * start: [0.5, 0.3],\n * end: [0.5, 0.7]\n * });\n * ```\n */\nexport class TiltShift2Effect extends Effect {\n\t/**\n\t * Creates a new TiltShift2Effect instance.\n\t *\n\t * @param options - Configuration options\n\t * @param options.blendFunction - How to blend with the scene\n\t * @param options.blur - Blur intensity [0, 1], can exceed 1 for more blur\n\t * @param options.taper - Taper of the focus area [0, 1]\n\t * @param options.start - Start point of focus line in screen space [x, y]\n\t * @param options.end - End point of focus line in screen space [x, y]\n\t * @param options.samples - Number of blur samples\n\t * @param options.direction - Direction of the blur\n\t */\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tblur = 0.15, // [0, 1], can go beyond 1 for extra\n\t\ttaper = 0.5, // [0, 1], can go beyond 1 for extra\n\t\tstart = [0.5, 0.0], // [0,1] percentage x,y of screenspace\n\t\tend = [0.5, 1.0], // [0,1] percentage x,y of screenspace\n\t\tsamples = 10.0, // number of blur samples\n\t\tdirection = [1, 1], // direction of blur\n\t} = {}) {\n\t\tsuper('TiltShiftEffect', TiltShiftShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, THREE.Uniform<number | number[]>>([\n\t\t\t\t['blur', new THREE.Uniform(blur)],\n\t\t\t\t['taper', new THREE.Uniform(taper)],\n\t\t\t\t['start', new THREE.Uniform(start)],\n\t\t\t\t['end', new THREE.Uniform(end)],\n\t\t\t\t['samples', new THREE.Uniform(samples)],\n\t\t\t\t['direction', new THREE.Uniform(direction)],\n\t\t\t]),\n\t\t});\n\t}\n}\n\n/**\n * Configuration options for the TiltShift2 effect.\n * Derived from TiltShift2Effect constructor parameters.\n */\nexport type TiltShift2EffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShift2Effect>[0]>>;\n\nextend({ TiltShift2Effect });\n\n/**\n * Angular component that applies an alternative tilt-shift effect.\n *\n * This effect uses a line-based focus system where you define start and\n * end points in screen space. The area between these points stays in focus\n * while the rest of the image is blurred.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-tilt-shift2 [options]=\"{ blur: 0.2, start: [0.5, 0.3], end: [0.5, 0.7] }\" />\n * </ngtp-effect-composer>\n * ```\n *\n * @see NgtpTiltShift for the standard tilt-shift implementation\n */\n@Component({\n\tselector: 'ngtp-tilt-shift2',\n\ttemplate: `\n\t\t<ngt-tilt-shift2-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift2-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpTiltShift2 {\n\t/**\n\t * Configuration options for the tilt-shift effect.\n\t * @see TiltShift2EffectOptions\n\t */\n\toptions = input({} as Omit<TiltShift2EffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<TiltShift2Effect>>('effect');\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ToneMappingEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the tone mapping effect.\n * Derived from ToneMappingEffect constructor parameters.\n */\nexport type ToneMappingEffectOptions = NonNullable<ConstructorParameters<typeof ToneMappingEffect>[0]>;\n\n/**\n * Angular component that applies tone mapping to the scene.\n *\n * Tone mapping converts HDR (High Dynamic Range) values to LDR (Low Dynamic\n * Range) for display. Various tone mapping modes are available including\n * Reinhard, ACES Filmic, and custom linear options.\n *\n * Note: The effect composer disables Three.js's built-in tone mapping,\n * so this effect should be used if tone mapping is desired.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-tone-mapping [options]=\"{ mode: ToneMappingMode.ACES_FILMIC }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-tone-mapping',\n\ttemplate: `\n\t\t<ngt-tone-mapping-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tone-mapping-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpToneMapping {\n\t/**\n\t * Configuration options for the tone mapping effect.\n\t * @see ToneMappingEffectOptions\n\t */\n\toptions = input({} as Omit<ToneMappingEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<ToneMappingEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ ToneMappingEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { VignetteEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode } from '../effect';\n\n/**\n * Configuration options for the vignette effect.\n * Derived from VignetteEffect constructor parameters.\n */\nexport type VignetteEffectOptions = Partial<NonNullable<ConstructorParameters<typeof VignetteEffect>[0]>>;\n\n/**\n * Angular component that applies a vignette effect to the scene.\n *\n * This effect darkens the corners and edges of the image, drawing the\n * viewer's attention to the center. It's a common cinematic technique\n * for creating focus and atmosphere.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-vignette [options]=\"{ darkness: 0.5, offset: 0.3 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-vignette',\n\ttemplate: `\n\t\t<ngt-vignette-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-vignette-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n})\nexport class NgtpVignette {\n\t/**\n\t * Configuration options for the vignette effect.\n\t * @see VignetteEffectOptions\n\t */\n\toptions = input({} as Omit<VignetteEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<VignetteEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ VignetteEffect });\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport * as THREE from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';\n\n/**\n * Shader configuration for the water distortion effect.\n * Creates a rippling, underwater-like distortion.\n */\nconst WaterShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n uniform float factor;\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 vUv = uv;\n float frequency = 6.0 * factor;\n float amplitude = 0.015 * factor;\n float x = vUv.y * frequency + time * .7;\n float y = vUv.x * frequency + time * .3;\n vUv.x += cos(x+y) * amplitude * cos(y);\n vUv.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(inputBuffer, vUv);\n outputColor = rgba;\n }`,\n};\n\n/**\n * A postprocessing effect that simulates an underwater/water distortion.\n *\n * Creates animated rippling distortion that makes the scene appear as if\n * viewed through water or a heat haze.\n *\n * @example\n * ```typescript\n * const effect = new WaterEffect({ factor: 0.5 });\n * ```\n */\nexport class WaterEffect extends Effect {\n\t/**\n\t * Creates a new WaterEffect instance.\n\t *\n\t * @param options - Configuration options\n\t * @param options.blendFunction - How to blend with the scene\n\t * @param options.factor - Intensity of the water effect (0 = no effect)\n\t */\n\tconstructor({ blendFunction = BlendFunction.NORMAL, factor = 0 } = {}) {\n\t\tsuper('WaterEffect', WaterShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, THREE.Uniform<number | number[]>>([['factor', new THREE.Uniform(factor)]]),\n\t\t});\n\t}\n}\n\n/**\n * Configuration options for the water effect.\n * Derived from WaterEffect constructor parameters.\n */\nexport type WaterEffectOptions = Partial<NonNullable<ConstructorParameters<typeof WaterEffect>[0]>>;\n\n/**\n * Angular component that applies a water/ripple distortion effect.\n *\n * This effect creates an animated underwater-like distortion that can\n * simulate viewing through water, heat haze, or a dream-like state.\n *\n * @example\n * ```html\n * <ngtp-effect-composer>\n * <ngtp-water [options]=\"{ factor: 0.5 }\" />\n * </ngtp-effect-composer>\n * ```\n */\n@Component({\n\tselector: 'ngtp-water',\n\ttemplate: `\n\t\t<ngt-water-effect #effect *args=\"[options()]\" [camera]=\"hostEffect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-water-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpWater {\n\t/**\n\t * Configuration options for the water effect.\n\t * @see WaterEffectOptions\n\t */\n\toptions = input({} as Omit<WaterEffectOptions, 'blendFunction'>);\n\n\t/** Reference to the host NgtpEffect directive */\n\tprotected hostEffect = inject(NgtpEffect, { host: true });\n\n\teffectRef = viewChild<ElementRef<WaterEffect>>('effect');\n\n\tconstructor() {\n\t\textend({ WaterEffect });\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","i1.NgtpEffect"],"mappings":";;;;;;;;;;;AAKA;;;;;;;;;;;;;AAaG;AACI,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,GAAG,wBAAwB,CAG9F,wBAAwB;AAE3B;;;;;;;;;;;;AAYG;MAYU,mBAAmB,CAAA;AAXhC,IAAA,WAAA,GAAA;;QAaC,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/C,IAAA;8GAHY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATrB;;;;;AAKT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIW,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAX/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;AAMD;;;;;;;;;;;;;;;AAeG;MAEU,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;;QAGC,IAAA,CAAA,oBAAoB,GAAG,0BAA0B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErE;;;AAGG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/D;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAE3C,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;;AAG7B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;;AAG1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;AAClC,IAAA;8GAvBY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;ACiCD,MAAMA,gBAAc,GAA8B;AACjD,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,KAAK,CAAC,aAAa;CACpC;AAED;;;;;AAKG;AACH,SAAS,aAAa,CAAC,MAAc,EAAA;AACpC,IAAA,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,eAAe,CAAC,WAAW,MAAM,eAAe,CAAC,WAAW;AAC9F;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAWU,kBAAkB,CAAA;AAwG9B,IAAA,WAAA,GAAA;AAvGA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAA,CAAG;QAEnE,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;QAErB,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC/C,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnD,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnD,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACvD,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACzD,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACvD,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;QACvC,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAE7D;;;AAGG;QACH,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,iDAAC;AAElE;;;AAGG;QACH,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,kDAAC;AAE7D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA0B,OAAO,CAAC;AAEvE;;;AAGG;AACK,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,CAAC;AACtB,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAA,CAAC,oDAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,eAAe,GAAG,iBAAiB,EAAE;AAC3C,YAAA,MAAM,CACL,EAAE,EACF,KAAK,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,GAAG;AACH,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,eAAe,EAAE;aACtB;;AAGD,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE;gBACvC,WAAW;gBACX,aAAa;AACb,gBAAA,aAAa,EAAE,aAAa,GAAG,CAAC,IAAI,eAAe,GAAG,aAAa,GAAG,CAAC;gBACvE,eAAe;AACf,aAAA,CAAC;;YAGF,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;YAG/C,IAAI,gBAAgB,GAAG,IAAI;YAC3B,IAAI,UAAU,GAAG,IAAI;YACrB,IAAI,gBAAgB,EAAE;gBACrB,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1C,gBAAA,UAAU,CAAC,OAAO,GAAG,KAAK;AAC1B,gBAAA,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AAC5B,gBAAA,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,EAAE;AACrD,oBAAA,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;AACnG,oBAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;AAChC,oBAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBACnC;YACD;AAEA,YAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE;AAClD,QAAA,CAAC,wDAAC;AAEF;;;AAGG;QACH,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;AAGnD,QAAA,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;;AAGjB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AAC1B,YAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC,WAAW;AACzC,YAAA,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa;YACpC,SAAS,CAAC,MAAK;AACd,gBAAA,EAAE,CAAC,WAAW,GAAG,kBAAkB;AACpC,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG;gBACjC,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;aACxB;YACD,IAAI,QAAQ,EAAE;AACb,gBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YAChC;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,GAAG;AACnE,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;gBAC7B,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,MAAM,EAAE;aACb;YAED,MAAM,MAAM,GAAW,EAAE;YAEzB,IAAI,QAAQ,EAAE;AACb,gBAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,aAAa;oBAAE;AAEpB,gBAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE;AAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,oBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;AACzB,oBAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AAC5B,wBAAA,MAAM,OAAO,GAAa,CAAC,KAAK,CAAC;AAEjC,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;4BAC1B,IAAI,IAAI,GAAY,IAAI;AACxB,4BAAA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,MAAM,EAAE;gCAClD,IAAI,aAAa,CAAC,IAAI,CAAC;oCAAE;AACzB,gCAAA,OAAO,CAAC,IAAI,CAAC,IAAc,CAAC;AAC5B,gCAAA,CAAC,EAAE;4BACJ;wBACD;wBAEA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;AAC/C,wBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClB;AAAO,yBAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACjC,wBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACnB;gBACD;AAEA,gBAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC1B,oBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvB;AAEA,gBAAA,IAAI,UAAU;AAAE,oBAAA,UAAU,CAAC,OAAO,GAAG,IAAI;AACzC,gBAAA,IAAI,gBAAgB;AAAE,oBAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI;YACtD;YAEA,SAAS,CAAC,MAAK;gBACd,KAAK,MAAM,IAAI,IAAI,MAAM;AAAE,oBAAA,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;AACrD,gBAAA,IAAI,UAAU;AAAE,oBAAA,UAAU,CAAC,OAAO,GAAG,KAAK;AAC1C,gBAAA,IAAI,gBAAgB;AAAE,oBAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;AACvD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,YAAY,CACX,CAAC,EAAE,KAAK,EAAE,KAAI;AACb,YAAA,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG;gBAC7D,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;aACtB;YAED,IAAI,OAAO,EAAE;AACZ,gBAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS;AACrC,gBAAA,EAAE,CAAC,SAAS,GAAG,SAAS;gBACxB,IAAI,aAAa,IAAI,CAAC,SAAS;oBAAE,EAAE,CAAC,YAAY,EAAE;AAClD,gBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtB,gBAAA,EAAE,CAAC,SAAS,GAAG,gBAAgB;YAChC;QACD,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC3B;IACF;8GApMY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARpB;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIW,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;8LA+B+D,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClLvE;;;AAGG;AACH,MAAM,QAAQ,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCzC;AA2CD;;;;;;;;;;;;;;AAcG;AACG,MAAO,WAAY,SAAQ,MAAM,CAAA;IACtC,WAAA,CAAY,EACX,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,CAAA,oBAAA,CAAsB,EACnC,QAAQ,GAAG,EAAE,EACb,QAAQ,GAAG,EAAE,EACb,KAAK,GAAG,SAAS,EACjB,MAAM,GAAG,KAAK,GAAA,GACS,EAAE,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAwB;AAC/C,YAAA,CAAC,aAAa,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1D,YAAA,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,SAAA,CAAC;QAEF,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;QAE5C,MAAM,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;QAEjE,IAAI,wBAAwB,EAAE;AAC7B,YAAA,wBAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC;QAC1F;IACD;AAEA;;;;;;;;;;AAUG;AACI,IAAA,uBAAuB,CAAC,UAAkB,EAAE,IAAY,EAAE,QAAgB,EAAA;QAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI;QACjB,MAAM,WAAW,GAAG,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,WAAW;QAE/B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI;QACnC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CACtC,MAAM,EACN,SAAS,EACT,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,CACnB;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;QACzC;QAEA,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,OAAO,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,IAAI,EAAE;AACtC,QAAA,OAAO,CAAC,SAAS,GAAG,QAAQ;AAC5B,QAAA,OAAO,CAAC,YAAY,GAAG,QAAQ;AAC/B,QAAA,OAAO,CAAC,SAAS,GAAG,MAAM;AAE1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AAC1B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC;YACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACjE;AAEA,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI;AAC1B,QAAA,OAAO,OAAO;IACf;AACA;AAED,MAAMA,gBAAc,GAAuB;AAC1C,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,UAAU,EAAE,CAAA,oBAAA,CAAsB;AAClC,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,KAAK;CACb;AAED;;;;;;;;;;;;AAYG;MAUU,SAAS,CAAA;AAUrB,IAAA,WAAA,GAAA;AATA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAA,CAAG;;AAG3E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,kDAAC;AAGvD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GAfY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPX;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACxMD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAeU,SAAS,CAAA;AAarB,IAAA,WAAA,GAAA;AAZA;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA+C,mDAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA0B,QAAQ,qDAAC;AAGvD,QAAA,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;8GAfY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFV,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVpE;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAM1B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;oBACvC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9E,iBAAA;+LAY+C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC3CxD;;;;;;;;;;;;AAYG;MAcU,sBAAsB,CAAA;AAYlC,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAoD,mDAAC;;QAG3D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAuC,QAAQ,qDAAC;AAGpE,QAAA,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACrC;8GAdY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXxB;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;oBACvC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW4D,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClCrE;;;;;;;;;;;;AAYG;MAcU,uBAAuB,CAAA;AAYnC,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA6D,mDAAC;;QAGpE,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAwC,QAAQ,qDAAC;AAGrE,QAAA,MAAM,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtC;8GAdY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzB;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW6D,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC7CtE;;;;;;;;;;;;;;;;;;;;AAoBG;MAYU,gBAAgB,CAAA;AAY5B,IAAA,WAAA,GAAA;AAXA;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CACd,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EACrC,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,EAAA,CACjE;AAED,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAiC,QAAQ,qDAAC;AAG9D,QAAA,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B;8GAdY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATlB;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;+LAWsD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnC/D;;;;;;;;;;;;AAYG;MAcU,cAAc,CAAA;AAY1B,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAoD,mDAAC;;QAG3D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA+B,QAAQ,qDAAC;AAG5D,QAAA,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B;8GAdY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXhB;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWoD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpC7D;;;;;;;;;;;;AAYG;MAcU,SAAS,CAAA;AAYrB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA+C,mDAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA0B,QAAQ,qDAAC;AAGvD,QAAA,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;8GAdY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXX;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW+C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClCxD;;;;;;;;;;;;;;;;;;;;;AAqBG;MAUU,gBAAgB,CAAA;AAoC5B,IAAA,WAAA,GAAA;AAnCA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAgB,mDAAC;AAEzB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEnD;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAExE,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;YAExC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;;AAGtD,YAAA,IAAI,SAAS;gBAAE,MAAM,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;;AAElD,YAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACzB,gBAAA,MAAM,CAAC,eAAe,CACrB,OAAO,CAAC,YAAY,CAAC,OAAO,EAC5B,OAAO,CAAC,YAAY,CAAC,OAAuC,CAC5D;YACF;;AAEA,YAAA,MAAM,QAAQ,GAAI,MAAuB,CAAC,UAAU,CAAC;AACrD,YAAA,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC,sBAAsB;AAE3D,YAAA,OAAO,MAAM;AACd,QAAA,CAAC,kDAAC;AAGD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,EAAE;YACxC,SAAS,CAAC,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAC9C,QAAA,CAAC,CAAC;IACH;8GAzCY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPlB;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;AChCD;;;;;;;;;;;;AAYG;MAcU,aAAa,CAAA;AAYzB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAmD,mDAAC;;QAG1D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA8B,QAAQ,qDAAC;AAG3D,QAAA,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B;8GAdY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXf;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWmD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpC5D;;;;;;;;;;;;;AAaG;MAcU,QAAQ,CAAA;AAYpB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA8C,mDAAC;;QAGrD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAyB,QAAQ,qDAAC;AAGtD,QAAA,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;8GAdY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXV;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAbpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW8C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/BvD;;;;;;;;;;;;;;;;;;;;;AAqBG;MAUU,UAAU,CAAA;AA0CtB,IAAA,WAAA,GAAA;AAzCA;;;;AAIG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAmB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAExF,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QACjC,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACnC,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;QACvC,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnD,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;QAEvD,IAAA,CAAA,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACtC,IAAA,CAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QAC5C,IAAA,CAAA,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;QAC9E,IAAA,CAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QAE5C,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;AAE7B;;;AAGG;QACH,IAAA,CAAA,MAAM,GAAG,QAAQ,CAChB,MACC,IAAI,YAAY,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,SAAA,CAAC,kDACH;QAGA,MAAM,CAAC,MAAK;YACX,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG;gBAChD,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,MAAM,EAAE;aACb;AACD,YAAA,YAAY,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,IAAI,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;AAC9E,YAAA,UAAU,EAAE;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GA1DY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPZ;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACxBD;;;;;;;;;;;;;;;;;;AAkBG;MAUU,WAAW,CAAA;AAgCvB,IAAA,WAAA,GAAA;AA/BA;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAoB,mDAAC;AAE7B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAE3C,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AAEvC;;;AAGG;AACK,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,IAAI,OAAO,GAAG,KAAK,UAAU;AAAE,gBAAA,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC;AACvD,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC;AACvB,QAAA,CAAC,sDAAC;AAEF;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YACtB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7G,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AACtD,QAAA,CAAC,kDAAC;QAGD,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU;gBAAE;AAEjB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AACnC,YAAA,aAAa,CAAC,WAAW,GAAG,UAAU;AACvC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GA7CY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPb;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA;;;AC5CD;;;;;;;;;;;;AAYG;MAUU,QAAQ,CAAA;AAapB,IAAA,WAAA,GAAA;AAZA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAiB,mDAAC;QAE1B,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;;AAGzC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,kDAAC;QAG5D,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,IAAI,EAAE;gBACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACxC;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GAzBY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPV;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA;;;AChBD;;;;;;;;;;;;AAYG;MAcU,iBAAiB,CAAA;AAY7B,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAuD,mDAAC;;QAG9D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAkC,QAAQ,qDAAC;AAG/D,QAAA,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC;8GAdY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXnB;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWuD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvDhE;;;;AAIG;AAkBH;;;AAGG;AACH,MAAM,eAAe,GAAG;IACvB,cAAc,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CzC,CAAA;CACA;AAED;;;;;;;;;;;;;;AAcG;AACG,MAAO,eAAgB,SAAQ,MAAM,CAAA;AAC1C;;;;;;;;;;;;;;;;;;;;;;;AAuBG;IACH,WAAA,CAAY,EACX,aAAa,GAAG,aAAa,CAAC,MAAM,EACpC,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,GAAG,EACf,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAC3B,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,IAAI,EAChB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvC,eAAe,GAAG,IAA4B,EAC9C,SAAS,GAAG,GAAG,EACf,eAAe,GAAG,IAAI,EACtB,gBAAgB,GAAG,IAAI,EACvB,UAAU,GAAG,GAAG,EAChB,OAAO,GAAG,GAAG,EACb,SAAS,GAAG,KAAK,GAAA,GACd,EAAE,EAAA;AACL,QAAA,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,cAAc,EAAE;YACxD,aAAa;YACb,QAAQ,EAAE,IAAI,GAAG,CAAwB;gBACxC,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACjD,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,aAAa,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC/C,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACvD,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACvD,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACzD,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACvC,CAAC;AACF,SAAA,CAAC;IACH;AAEA;;;;;;AAMG;AACM,IAAA,MAAM,CAAC,SAA8B,EAAE,YAAqC,EAAE,SAAiB,EAAA;QACvG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QACxC,IAAI,KAAK,EAAE;AACV,YAAA,KAAK,CAAC,KAAK,IAAI,SAAS;QACzB;IACD;AACA;AAeD,MAAMD,gBAAc,GAAqB;AACxC,IAAA,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxC,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,UAAU,EAAE,GAAG;CACf;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;MAUU,aAAa,CAAA;AAuBzB,IAAA,WAAA,GAAA;AAtBA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAA,CAAG;QAEnE,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;AAErB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAC7E,IAAA,CAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;;AAG5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;;AAGvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;;AAGrC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,kDAAC;QAGjE,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG;gBACxC,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;aAC5B;YACD,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;YAC/D,IAAI,WAAW,EAAE;AAChB,gBAAA,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AAC3B,gBAAA,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM;YAC7B;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;AAEF,QAAA,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;YAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,MAAM;gBAAE;AAEb,YAAA,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG;gBAClF,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;aAC7B;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;gBAAE;YAEjC,IAAI,MAAM,GAAG,CAAC;YAEd,IAAI,WAAW,EAAE;gBAChB,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;gBACjC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;gBACjC,MAAM,GAAG,CAAC;YACX;iBAAO;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC;oBAAE;gBAElC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChD,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAEhD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACpE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AAC7C,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBACnE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;gBACtC,IAAI,MAAM,EAAE;oBACX,IAAI,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,cAAc,EAAE;wBACtD,MAAM,GAAG,CAAC;oBACX;yBAAO,IAAI,EAAE,CAAC,KAAK,CAAyD,MAAM,EAAE,QAAQ,CAAC,EAAE;AAC9F,wBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE;;4BAE7D,MAAM,GAAG,GAAG;wBACb;AAAO,6BAAA,IACN,eAAe,IAAI,MAAM,CAAC,QAAQ;AAClC,4BAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ;AACjD,4BAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,EAClC;;4BAED,MAAM,GAAG,GAAG;wBACb;AAAO,6BAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;;AAEvC,4BAAA,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;wBACjC;oBACD;gBACD;YACD;AAEA,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;AAC1D,QAAA,CAAC,CAAC;IACH;8GApGY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPf;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACrMD;;;;;;;;;;;;;;;;;AAiBG;MAUU,OAAO,CAAA;AAmBnB,IAAA,WAAA,GAAA;AAlBA;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAgB,mDAAC;QAEzB,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAC/B,IAAA,CAAA,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC;QAEzE,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;;AAG7B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YACtB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1C,YAAA,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;AACrC,QAAA,CAAC,kDAAC;QAGD,MAAM,CAAC,MAAK;YACX,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,wBAAwB,EAAE,UAAU,CAAC,GAAG;gBAC3D,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,wBAAwB,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;aACvB;AAED,YAAA,IAAI,wBAAwB;AAAE,gBAAA,MAAM,CAAC,wBAAwB,GAAG,wBAAwB;AACxF,YAAA,IAAI,GAAG;AAAE,gBAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AACzB,YAAA,UAAU,EAAE;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GArCY,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPT;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACnCD;;;;;;;;;;;;AAYG;MAeU,SAAS,CAAA;AAYrB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA+C,mDAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA0B,QAAQ,qDAAC;AAGvD,QAAA,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;8GAdY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFV,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAV5E;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI1B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;AACtF,iBAAA;+LAW+C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpBxD,MAAMD,gBAAc,GAAuB;AAC1C,IAAA,cAAc,EAAE,EAAE;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAUU,WAAW,CAAA;AA4FvB,IAAA,WAAA,GAAA;AA3FA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAA,CAAG;QAEnE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC3C,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;QAErB,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC3C,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QAErD,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnD,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACrD,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;QACjD,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC7C,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACzD,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACvD,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACnC,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC7C,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QACjC,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACxC,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YACjB,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,MAAM;YACN,MAAM;AACN,SAAA,CAAC;AAEF;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,MAAM,CACL,KAAK,EACL,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,KAAK,EACL,MAAM,EACN,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,GAAG;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;aAC3B;AAED,YAAA,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;gBACvC,aAAa;gBACb,cAAc;gBACd,YAAY;gBACZ,UAAU;gBACV,gBAAgB;gBAChB,eAAe;gBACf,KAAK;gBACL,MAAM;gBACN,UAAU;gBACV,IAAI;gBACJ,IAAI;AACJ,gBAAA,GAAG,WAAW;AACd,aAAA,CAAC;AACH,QAAA,CAAC,kDAAC;AAGD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC5C,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,cAAc,EAAE;aACrB;AACD,YAAA,MAAM,CAAC,cAAc,GAAG,cAAc;AACtC,YAAA,UAAU,EAAE;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;;AAEpB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;AAEvB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE;AACnC,oBAAA,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC;gBACnG;gBACA,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBAEpG,SAAS,CAAC,MAAK;oBACd,OAAO,IAAI;AACZ,gBAAA,CAAC,CAAC;gBACF;YACD;;YAGA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACpD,YAAA,IAAI,CAAC,gBAAgB;gBAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAC1B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CAAC,UAAU,CACrB;YACD,SAAS,CAAC,MAAK;gBACd,OAAO,IAAI;AACZ,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;AAEA;;;;;;;AAOG;AACK,IAAA,2BAA2B,CAClC,QAA8E,EAC9E,OAA4B,EAC5B,WAA6B,EAAA;AAE7B,QAAA,MAAM,SAAS,GAAG,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE;AAE1C,QAAA,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC;QAEvD,MAAM,OAAO,GAAqB,EAAE;AACpC,QAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;AAC3B,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG;gBAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAClB;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAE1B,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,QAAA,UAAU,EAAE;AAEZ,QAAA,OAAO,MAAK;AACX,YAAA,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,UAAU,EAAE;AACb,QAAA,CAAC;IACF;8GA3KY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPb;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEL,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA;;;AC3DD;;;;;;;;;;;;AAYG;MAUU,cAAc,CAAA;AAa1B,IAAA,WAAA,GAAA;AAZA;;;;AAIG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,EAAuB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG;QAEhG,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;;AAGvD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,kDAAC;AAGhE,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,QAAA,CAAC,CAAC;IACH;8GAlBY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPhB;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA;;;ACjBD,MAAMA,gBAAc,GAAiD;AACpE,IAAA,OAAO,EAAE,IAAI;CACb;AAED;;;;;;;;;;;;AAYG;MAeU,YAAY,CAAA;AAaxB,IAAA,WAAA,GAAA;AAZA;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAA,CAAG;;QAGjE,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA6B,QAAQ,qDAAC;AAG1D,QAAA,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B;8GAfY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFb,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVxE;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI1B,YAAY,EAAA,UAAA,EAAA,CAAA;kBAdxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;AAClF,iBAAA;+LAYkD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtB3D,MAAM,cAAc,GAA0B;AAC7C,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,gBAAgB,EAAE,KAAK;CACvB;AAED;;;;;;;;;;;;;;;;;;;;AAoBG;MAUU,kBAAkB,CAAA;AAsF9B,IAAA,WAAA,GAAA;AArFA;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAA+D;AAEtF;;;;;AAKG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAKf,EAAE,qDAAC;AAEL;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,cAAc,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAA,CAAG;QAEnE,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnD,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC;QAC7D,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC;QAC7D,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC7C,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC3C,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC7C,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACvD,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACnC,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC/C,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC/C,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QACzC,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACzD,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QAErD,IAAA,CAAA,KAAK,GAAG,WAAW,EAAE;AACrB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC3C,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE1D,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS;AAAE,gBAAA,OAAO,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC;AAChE,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAA,CAAC,4DAAC;AACM,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;YAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO;AAAE,gBAAA,OAAO,EAAE;AAC/D,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5E,QAAA,CAAC,+DAAC;AAEF;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;gBAClG,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,aAAa,CAAC,GAAG;AACxD,gBAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,aAAA,CAAC;AAEF,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEjD,YAAA,OAAO,MAAM;AACd,QAAA,CAAC,kDAAC;AAGD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;;YAEpB,IAAI,IAAI,CAAC,YAAY;gBAAE;AACvB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACzC,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE;YAEvB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5F,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAA6B,CAAC;AACnD,YAAA,UAAU,EAAE;YAEZ,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,gBAAA,UAAU,EAAE;AACb,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG;gBAC5C,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,MAAM,EAAE;aACb;AACD,YAAA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc;AACvC,YAAA,UAAU,EAAE;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AACpC,YAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;gBAAE;YAExB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAE5F,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChE,YAAA,UAAU,EAAE;YAEZ,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACnE,gBAAA,UAAU,EAAE;AACb,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE;YAEtB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5F,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAA4B,CAAC;AAClD,YAAA,UAAU,EAAE;YAEZ,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,gBAAA,UAAU,EAAE;AACb,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;AAEA;;;;;AAKG;IACK,QAAQ,CAAC,MAA4B,EAAE,KAAqB,EAAA;QACnE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5C;AAEA;;;;;AAKG;IACK,WAAW,CAAC,MAA4B,EAAE,KAAqB,EAAA;QACtE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAC7C;8GAjKY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPpB;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;ACxDD;;;;;;;;;;;;AAYG;MAcU,SAAS,CAAA;AAYrB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA+C,mDAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA0B,QAAQ,qDAAC;AAGvD,QAAA,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;8GAdY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXX;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW+C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpCxD;;;;;;;;;;;;;;AAcG;MAcU,aAAa,CAAA;AAYzB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAmD,mDAAC;;QAG1D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA8B,QAAQ,qDAAC;AAG3D,QAAA,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B;8GAdY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXf;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWmD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtC5D;;;;;;;;;;;;;;;;;;;;;AAqBG;MAcU,QAAQ,CAAA;AAYpB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA8C,mDAAC;;QAGrD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAyB,QAAQ,qDAAC;AAGtD,QAAA,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;8GAdY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXV;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAbpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAW8C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC7CvD;;;;;;;;;;;;;;;;;AAiBG;MAeU,aAAa,CAAA;AAYzB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAmD,mDAAC;;QAG1D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA8B,QAAQ,qDAAC;AAG3D,QAAA,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B;8GAdY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFd,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVpE;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9E,iBAAA;+LAWmD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/C5D;;;AAGG;AACH,MAAM,eAAe,GAAG;IACvB,cAAc,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDrC,IAAA,CAAA;CACJ;AAED;;;;;;;;;;;;;;;AAeG;AACG,MAAO,gBAAiB,SAAQ,MAAM,CAAA;AAC3C;;;;;;;;;;;AAWG;IACH,WAAA,CAAY,EACX,aAAa,GAAG,aAAa,CAAC,MAAM,EACpC,IAAI,GAAG,IAAI;IACX,KAAK,GAAG,GAAG;AACX,IAAA,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAClB,IAAA,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAChB,OAAO,GAAG,IAAI;AACd,IAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAClB,MAAA,GAAG,EAAE,EAAA;AACL,QAAA,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,cAAc,EAAE;YACxD,aAAa;YACb,UAAU,EAAE,eAAe,CAAC,WAAW;YACvC,QAAQ,EAAE,IAAI,GAAG,CAA2C;gBAC3D,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aAC3C,CAAC;AACF,SAAA,CAAC;IACH;AACA;AAQD,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;;;;;;;;AAeG;MAeU,cAAc,CAAA;AAd3B,IAAA,WAAA,GAAA;AAeC;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAoD,mDAAC;;QAG3D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA+B,QAAQ,qDAAC;AAC7D,IAAA;8GAXY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFf,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVvE;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;AACjF,iBAAA;qKAWoD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AChK7D;;;;;;;;;;;;;;;;AAgBG;MAcU,eAAe,CAAA;AAY3B,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAqD,mDAAC;;QAG5D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAgC,QAAQ,qDAAC;AAG7D,QAAA,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B;8GAdY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXjB;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;oBACvC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWqD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxC9D;;;;;;;;;;;;;AAaG;MAcU,YAAY,CAAA;AAYxB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAkD,mDAAC;;QAGzD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA6B,QAAQ,qDAAC;AAG1D,QAAA,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B;8GAdY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXd;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG1B,YAAY,EAAA,UAAA,EAAA,CAAA;kBAbxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,iBAAA;+LAWkD,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1C3D;;;AAGG;AACH,MAAM,WAAW,GAAG;IACnB,cAAc,2BAA2B;;;;;;;;;;;;AAYtC,GAAA,CAAA;CACH;AAED;;;;;;;;;;AAUG;AACG,MAAO,WAAY,SAAQ,MAAM,CAAA;AACtC;;;;;;AAMG;AACH,IAAA,WAAA,CAAY,EAAE,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAA;AACpE,QAAA,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE;YAChD,aAAa;YACb,UAAU,EAAE,eAAe,CAAC,WAAW;AACvC,YAAA,QAAQ,EAAE,IAAI,GAAG,CAA2C,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,SAAA,CAAC;IACH;AACA;AAQD;;;;;;;;;;;;AAYG;MAeU,SAAS,CAAA;AAYrB,IAAA,WAAA,GAAA;AAXA;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA+C,mDAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAA0B,QAAQ,qDAAC;AAGvD,QAAA,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;8GAdY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFV,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVvE;;;;;EAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,gFAAE,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI1B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;;AAKT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACvC,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;AACjF,oBAAA,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;AACjF,iBAAA;+LAW+C,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACzGxD;;AAEG;;;;"}