angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.28

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 (103) hide show
  1. package/controls/orbit-controls/orbit-controls.d.ts +1 -1
  2. package/esm2022/abstractions/billboard/billboard.mjs +3 -3
  3. package/esm2022/abstractions/detailed/detailed.mjs +3 -3
  4. package/esm2022/abstractions/edges/edges.mjs +3 -3
  5. package/esm2022/abstractions/grid/grid.mjs +3 -3
  6. package/esm2022/abstractions/text/text.mjs +3 -3
  7. package/esm2022/abstractions/text-3d/text-3d.mjs +3 -3
  8. package/esm2022/cameras/camera/camera-content.mjs +3 -3
  9. package/esm2022/cameras/camera/camera.mjs +3 -3
  10. package/esm2022/cameras/cube-camera/cube-camera.mjs +9 -9
  11. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +3 -3
  12. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +3 -3
  13. package/esm2022/controls/orbit-controls/orbit-controls.mjs +10 -6
  14. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +3 -3
  15. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
  16. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
  17. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +3 -3
  18. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +3 -3
  19. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
  20. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
  21. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +6 -2
  22. package/esm2022/loaders/loader/loader.mjs +3 -3
  23. package/esm2022/loaders/progress/progress.mjs +3 -3
  24. package/esm2022/loaders/texture-loader/texture-loader.mjs +3 -3
  25. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +3 -3
  26. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
  27. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +3 -3
  28. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
  29. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  30. package/esm2022/materials/point-material/point-material.mjs +3 -3
  31. package/esm2022/misc/animations/animations.mjs +3 -3
  32. package/esm2022/misc/bake-shadows/bake-shadows.mjs +3 -3
  33. package/esm2022/misc/caustics/caustics.mjs +3 -3
  34. package/esm2022/misc/decal/decal.mjs +3 -3
  35. package/esm2022/misc/depth-buffer/depth-buffer.mjs +3 -3
  36. package/esm2022/misc/example/example.mjs +3 -3
  37. package/esm2022/misc/fbo/fbo.mjs +3 -3
  38. package/esm2022/misc/html/html-wrapper.mjs +3 -3
  39. package/esm2022/misc/html/html.mjs +3 -3
  40. package/esm2022/misc/sampler/sampler.mjs +6 -6
  41. package/esm2022/misc/shadow/shadow.mjs +3 -3
  42. package/esm2022/misc/stats-gl/stats-gl.mjs +3 -3
  43. package/esm2022/misc/trail/trail.mjs +6 -6
  44. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +3 -3
  45. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +3 -3
  46. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +3 -3
  47. package/esm2022/performances/adaptive-events/adaptive-events.mjs +3 -3
  48. package/esm2022/performances/instances/instances.mjs +6 -6
  49. package/esm2022/performances/points/points-input.mjs +3 -3
  50. package/esm2022/performances/points/points.mjs +12 -12
  51. package/esm2022/performances/segments/segments.mjs +6 -6
  52. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +3 -3
  53. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +3 -3
  54. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
  55. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +5 -5
  56. package/esm2022/staging/backdrop/backdrop.mjs +3 -3
  57. package/esm2022/staging/bb-anchor/bb-anchor.mjs +6 -6
  58. package/esm2022/staging/bounds/bounds.mjs +3 -3
  59. package/esm2022/staging/camera-shake/camera-shake.mjs +3 -3
  60. package/esm2022/staging/center/center.mjs +3 -3
  61. package/esm2022/staging/cloud/cloud.mjs +3 -3
  62. package/esm2022/staging/contact-shadows/contact-shadows.mjs +3 -3
  63. package/esm2022/staging/environment/environment-cube.mjs +3 -3
  64. package/esm2022/staging/environment/environment-ground.mjs +3 -3
  65. package/esm2022/staging/environment/environment-input.mjs +3 -3
  66. package/esm2022/staging/environment/environment-map.mjs +3 -3
  67. package/esm2022/staging/environment/environment-portal.mjs +3 -3
  68. package/esm2022/staging/environment/environment.mjs +3 -3
  69. package/esm2022/staging/environment/utils.mjs +3 -3
  70. package/esm2022/staging/float/float.mjs +3 -3
  71. package/esm2022/staging/matcap-texture/matcap-texture.mjs +3 -3
  72. package/esm2022/staging/normal-texture/normal-texture.mjs +3 -3
  73. package/esm2022/staging/sky/sky.mjs +3 -3
  74. package/esm2022/staging/sparkles/sparkles.mjs +3 -3
  75. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +3 -3
  76. package/esm2022/staging/spot-light/shadow-mesh.mjs +12 -12
  77. package/esm2022/staging/spot-light/spot-light-input.mjs +3 -3
  78. package/esm2022/staging/spot-light/spot-light.mjs +3 -3
  79. package/esm2022/staging/spot-light/volumetric-mesh.mjs +3 -3
  80. package/esm2022/staging/stage/stage.mjs +6 -6
  81. package/esm2022/staging/stars/stars.mjs +3 -3
  82. package/esm2022/staging/wireframe/wireframe-input.mjs +3 -3
  83. package/esm2022/staging/wireframe/wireframe.mjs +9 -9
  84. package/esm2022/utils/content/content.mjs +3 -3
  85. package/fesm2022/angular-three-soba-abstractions.mjs +18 -18
  86. package/fesm2022/angular-three-soba-cameras.mjs +20 -20
  87. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  88. package/fesm2022/angular-three-soba-controls.mjs +9 -5
  89. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  90. package/fesm2022/angular-three-soba-gizmos.mjs +27 -27
  91. package/fesm2022/angular-three-soba-loaders.mjs +11 -7
  92. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  93. package/fesm2022/angular-three-soba-materials.mjs +18 -18
  94. package/fesm2022/angular-three-soba-misc.mjs +37 -37
  95. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-modifiers.mjs +3 -3
  97. package/fesm2022/angular-three-soba-performances.mjs +33 -33
  98. package/fesm2022/angular-three-soba-shaders.mjs +2 -2
  99. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  100. package/fesm2022/angular-three-soba-staging.mjs +111 -111
  101. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  102. package/fesm2022/angular-three-soba-utils.mjs +3 -3
  103. package/package.json +7 -7
@@ -420,8 +420,8 @@ export class NgtsHtmlWrapper {
420
420
  }
421
421
  });
422
422
  }
423
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsHtmlWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
424
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsHtmlWrapper, isStandalone: true, selector: "ngts-html-wrapper", viewQueries: [{ propertyName: "transformTemplate", first: true, predicate: ["transformTemplate"], descendants: true, static: true }, { propertyName: "renderTemplate", first: true, predicate: ["renderTemplate"], descendants: true, static: true }, { propertyName: "outerDiv", first: true, predicate: ["transformedOuterDiv"], descendants: true }, { propertyName: "innerDiv", first: true, predicate: ["transformedInnerDiv"], descendants: true }, { propertyName: "renderAnchor", first: true, predicate: ["renderAnchor"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `
423
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsHtmlWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
424
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsHtmlWrapper, isStandalone: true, selector: "ngts-html-wrapper", viewQueries: [{ propertyName: "transformTemplate", first: true, predicate: ["transformTemplate"], descendants: true, static: true }, { propertyName: "renderTemplate", first: true, predicate: ["renderTemplate"], descendants: true, static: true }, { propertyName: "outerDiv", first: true, predicate: ["transformedOuterDiv"], descendants: true }, { propertyName: "innerDiv", first: true, predicate: ["transformedInnerDiv"], descendants: true }, { propertyName: "renderAnchor", first: true, predicate: ["renderAnchor"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `
425
425
  <ng-template #transformTemplate>
426
426
  <div #transformedOuterDiv [style]="styles()">
427
427
  <div #transformedInnerDiv [style]="transformInnerStyles()">
@@ -437,7 +437,7 @@ export class NgtsHtmlWrapper {
437
437
  </ng-template>
438
438
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
439
439
  }
440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsHtmlWrapper, decorators: [{
440
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsHtmlWrapper, decorators: [{
441
441
  type: Component,
442
442
  args: [{
443
443
  selector: 'ngts-html-wrapper',
@@ -179,8 +179,8 @@ export class NgtsHtml {
179
179
  set _calculatePosition(calculatePosition) {
180
180
  this.inputs.set({ calculatePosition });
181
181
  }
182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsHtml, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsHtml, isStandalone: true, selector: "ngts-html", inputs: { groupRef: "groupRef", _as: ["as", "_as"], _zIndexRange: ["zIndexRange", "_zIndexRange"], _portal: ["portal", "_portal"], _occlude: ["occlude", "_occlude"], _castShadow: ["castShadow", "_castShadow"], _receiveShadow: ["receiveShadow", "_receiveShadow"], _material: ["material", "_material"], _geometry: ["geometry", "_geometry"], _scale: ["scale", "_scale"], _prepend: ["prepend", "_prepend"], _transform: ["transform", "_transform"], _center: ["center", "_center"], _sprite: ["sprite", "_sprite"], _fullscreen: ["fullscreen", "_fullscreen"], _eps: ["eps", "_eps"], _distanceFactor: ["distanceFactor", "_distanceFactor"], _wrapperClass: ["wrapperClass", "_wrapperClass"], _renderedDivClass: ["renderedDivClass", "_renderedDivClass"], _style: ["style", "_style"], _pointerEvents: ["pointerEvents", "_pointerEvents"], _calculatePosition: ["calculatePosition", "_calculatePosition"] }, outputs: { occluded: "occluded" }, providers: [provideNgtsHtmlInputs()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef }], ngImport: i0, template: `
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsHtml, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsHtml, isStandalone: true, selector: "ngts-html", inputs: { groupRef: "groupRef", _as: ["as", "_as"], _zIndexRange: ["zIndexRange", "_zIndexRange"], _portal: ["portal", "_portal"], _occlude: ["occlude", "_occlude"], _castShadow: ["castShadow", "_castShadow"], _receiveShadow: ["receiveShadow", "_receiveShadow"], _material: ["material", "_material"], _geometry: ["geometry", "_geometry"], _scale: ["scale", "_scale"], _prepend: ["prepend", "_prepend"], _transform: ["transform", "_transform"], _center: ["center", "_center"], _sprite: ["sprite", "_sprite"], _fullscreen: ["fullscreen", "_fullscreen"], _eps: ["eps", "_eps"], _distanceFactor: ["distanceFactor", "_distanceFactor"], _wrapperClass: ["wrapperClass", "_wrapperClass"], _renderedDivClass: ["renderedDivClass", "_renderedDivClass"], _style: ["style", "_style"], _pointerEvents: ["pointerEvents", "_pointerEvents"], _calculatePosition: ["calculatePosition", "_calculatePosition"] }, outputs: { occluded: "occluded" }, providers: [provideNgtsHtmlInputs()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef }], ngImport: i0, template: `
184
184
  <ngt-group ngtCompound [ref]="groupRef" [scale]="scale()">
185
185
  <ngt-mesh
186
186
  *ngIf="occlude() && !isRayCastOcclusion()"
@@ -201,7 +201,7 @@ export class NgtsHtml {
201
201
  <ngts-html-wrapper />
202
202
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsHtmlWrapper, selector: "ngts-html-wrapper" }] }); }
203
203
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsHtml, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsHtml, decorators: [{
205
205
  type: Component,
206
206
  args: [{
207
207
  selector: 'ngts-html',
@@ -1,5 +1,5 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, Component, Injector, Input, computed, effect, inject, runInInjectionContext, signal, untracked, } from '@angular/core';
2
- import { assertInjectionContext, checkUpdate, extend, injectNgtRef, is, signalStore, } from 'angular-three';
2
+ import { assertInjector, checkUpdate, extend, injectNgtRef, is, signalStore, } from 'angular-three';
3
3
  import * as THREE from 'three';
4
4
  import { Group } from 'three';
5
5
  import { MeshSurfaceSampler } from 'three-stdlib';
@@ -8,7 +8,7 @@ const defaultState = {
8
8
  count: 16,
9
9
  };
10
10
  export function injectNgtsSurfaceSampler(surfaceSamplerState, { injector } = {}) {
11
- injector = assertInjectionContext(injectNgtsSurfaceSampler, injector);
11
+ injector = assertInjector(injectNgtsSurfaceSampler, injector);
12
12
  return runInInjectionContext(injector, () => {
13
13
  const state = computed(() => {
14
14
  const _state = surfaceSamplerState();
@@ -102,14 +102,14 @@ export class NgtsSampler {
102
102
  injectNgtsSurfaceSampler(this.surfaceSamplerState, { injector });
103
103
  });
104
104
  }
105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { samplerRef: "samplerRef", _count: ["count", "_count"], _mesh: ["mesh", "_mesh"], _transform: ["transform", "_transform"], _weight: ["weight", "_weight"], _instancedMesh: ["instancedMesh", "_instancedMesh"] }, ngImport: i0, template: `
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { samplerRef: "samplerRef", _count: ["count", "_count"], _mesh: ["mesh", "_mesh"], _transform: ["transform", "_transform"], _weight: ["weight", "_weight"], _instancedMesh: ["instancedMesh", "_instancedMesh"] }, ngImport: i0, template: `
107
107
  <ngt-group ngtCompound [ref]="samplerRef">
108
108
  <ng-content />
109
109
  </ngt-group>
110
110
  `, isInline: true }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSampler, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSampler, decorators: [{
113
113
  type: Component,
114
114
  args: [{
115
115
  selector: 'ngts-sampler',
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
139
139
  type: Input,
140
140
  args: [{ alias: 'instancedMesh' }]
141
141
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9zYW1wbGVyL3NhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxNQUFNLEVBQ04sWUFBWSxFQUNaLEVBQUUsRUFDRixXQUFXLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBMENsRCxNQUFNLFlBQVksR0FBMEM7SUFDM0QsS0FBSyxFQUFFLEVBQUU7Q0FDVCxDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QixDQUN2QyxtQkFBaUgsRUFDakgsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFMUMsUUFBUSxHQUFHLHNCQUFzQixDQUFDLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLE9BQU8scUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekIsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7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QUMsQ0FBQztJQUNKLENBQUM7OEdBNUNXLFdBQVc7a0dBQVgsV0FBVyxtU0FQYjs7OztFQUlUOzsyRkFHVyxXQUFXO2tCQVZ2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDOzBFQUlTLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRXlCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlLLEtBQUs7c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUlXLFVBQVU7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUlHLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlhLGNBQWM7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q29tcG9uZW50LFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0cnVuSW5JbmplY3Rpb25Db250ZXh0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRhc3NlcnRJbmplY3Rpb25Db250ZXh0LFxuXHRjaGVja1VwZGF0ZSxcblx0ZXh0ZW5kLFxuXHRpbmplY3ROZ3RSZWYsXG5cdGlzLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RHcm91cCxcblx0dHlwZSBOZ3RSZWYsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoU3VyZmFjZVNhbXBsZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG50eXBlIFNhbXBsZVBheWxvYWQgPSB7XG5cdC8qKlxuXHQgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHNhbXBsZS5cblx0ICovXG5cdHBvc2l0aW9uOiBUSFJFRS5WZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIG5vcm1hbCBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdG5vcm1hbDogVEhSRUUuVmVjdG9yMztcblx0LyoqXG5cdCAqIFRoZSB2ZXJ0ZXggY29sb3Igb2YgdGhlIG1lc2ggYXQgdGhlIHNhbXBsZWQgcG9zaXRpb24uXG5cdCAqL1xuXHRjb2xvcjogVEhSRUUuQ29sb3I7XG59O1xuXG50eXBlIFRyYW5zZm9ybVBheWxvYWQgPSBTYW1wbGVQYXlsb2FkICYge1xuXHQvKipcblx0ICogVGhlIGR1bW15IG9iamVjdCB1c2VkIHRvIHRyYW5zZm9ybSBlYWNoIGluc3RhbmNlLlxuXHQgKiBUaGlzIG9iamVjdCdzIG1hdHJpeCB3aWxsIGJlIHVwZGF0ZWQgYWZ0ZXIgdHJhbnNmb3JtaW5nICYgaXQgd2lsbCBiZSB1c2VkXG5cdCAqIHRvIHNldCB0aGUgaW5zdGFuY2UncyBtYXRyaXguXG5cdCAqL1xuXHRkdW1teTogVEhSRUUuT2JqZWN0M0Q7XG5cdC8qKlxuXHQgKiBUaGUgbWVzaCB0aGF0J3MgaW5pdGlhbGx5IHBhc3NlZCB0byB0aGUgc2FtcGxlci5cblx0ICogVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gYXBwbHkgdHJhbnNmb3JtcyBmcm9tIHlvdXIgbWVzaCB0byB5b3VyIGluc3RhbmNlc1xuXHQgKiBvciBpZiB5b3UgbmVlZCB0byBncmFiIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZ2VvbWV0cnkuXG5cdCAqL1xuXHRzYW1wbGVkTWVzaDogVEhSRUUuTWVzaDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndHNTdXJmYWNlU2FtcGxlclRyYW5zZm9ybUZuID0gKHBheWxvYWQ6IFRyYW5zZm9ybVBheWxvYWQsIGk6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgTmd0c1N1cmZhY2VTYW1wbGVyU3RhdGUgPSB7XG5cdGNvdW50OiBudW1iZXI7XG5cdG1lc2g6IE5ndFJlZjxUSFJFRS5NZXNoPjtcblx0dHJhbnNmb3JtPzogTmd0c1N1cmZhY2VTYW1wbGVyVHJhbnNmb3JtRm47XG5cdHdlaWdodD86IHN0cmluZztcblx0aW5zdGFuY2VkTWVzaD86IE5ndFJlZjxUSFJFRS5JbnN0YW5jZWRNZXNoPjtcbn07XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZTogT21pdDxOZ3RzU3VyZmFjZVNhbXBsZXJTdGF0ZSwgJ21lc2gnPiA9IHtcblx0Y291bnQ6IDE2LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNTdXJmYWNlU2FtcGxlcihcblx0c3VyZmFjZVNhbXBsZXJTdGF0ZTogKCkgPT4gKFBhcnRpYWw8T21pdDxOZ3RzU3VyZmFjZVNhbXBsZXJTdGF0ZSwgJ21lc2gnPj4gJiB7IG1lc2g6IE5ndFJlZjxUSFJFRS5NZXNoPiB9KSB8IG51bGwsXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0c1N1cmZhY2VTYW1wbGVyLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBzdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF9zdGF0ZSA9IHN1cmZhY2VTYW1wbGVyU3RhdGUoKTtcblx0XHRcdGlmICghX3N0YXRlKSByZXR1cm4gbnVsbDtcblx0XHRcdHJldHVybiB7IC4uLmRlZmF1bHRTdGF0ZSwgLi4uX3N0YXRlIH07XG5cdFx0fSk7XG5cdFx0Y29uc3QgX2J1ZmZlciA9IHNpZ25hbChcblx0XHRcdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFyciA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHN0YXRlKCk/LmNvdW50IHx8IGRlZmF1bHRTdGF0ZS5jb3VudCB9LCAoKSA9PiBbXG5cdFx0XHRcdFx0MSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSxcblx0XHRcdFx0XSkuZmxhdCgpO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZShGbG9hdDMyQXJyYXkuZnJvbShhcnIpLCAxNik7XG5cdFx0XHR9KSgpLFxuXHRcdCk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3N0YXRlID0gc3RhdGUoKTtcblx0XHRcdGlmICghX3N0YXRlKSByZXR1cm47XG5cdFx0XHRjb25zdCB7IG1lc2gsIGNvdW50LCB0cmFuc2Zvcm0sIGluc3RhbmNlZE1lc2gsIHdlaWdodCB9ID0gX3N0YXRlO1xuXHRcdFx0Y29uc3QgbWVzaE9iaiA9IGlzLnJlZihtZXNoKSA/IG1lc2gubmF0aXZlRWxlbWVudCA6IG1lc2g7XG5cdFx0XHRpZiAoIW1lc2hPYmopIHJldHVybjtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2hPYmogPSBpcy5yZWYoaW5zdGFuY2VkTWVzaCkgPyBpbnN0YW5jZWRNZXNoLm5hdGl2ZUVsZW1lbnQgOiBpbnN0YW5jZWRNZXNoO1xuXHRcdFx0Y29uc3QgYnVmZmVyID0gdW50cmFja2VkKF9idWZmZXIpO1xuXG5cdFx0XHRjb25zdCBzYW1wbGVyID0gbmV3IE1lc2hTdXJmYWNlU2FtcGxlcihtZXNoT2JqKTtcblxuXHRcdFx0aWYgKHdlaWdodCkge1xuXHRcdFx0XHRzYW1wbGVyLnNldFdlaWdodEF0dHJpYnV0ZSh3ZWlnaHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRzYW1wbGVyLmJ1aWxkKCk7XG5cblx0XHRcdGNvbnN0IHBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0XHRcdGNvbnN0IG5vcm1hbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0XHRjb25zdCBjb2xvciA9IG5ldyBUSFJFRS5Db2xvcigpO1xuXHRcdFx0Y29uc3QgZHVtbXkgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcblxuXHRcdFx0bWVzaE9iai51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRcdHNhbXBsZXIuc2FtcGxlKHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yKTtcblxuXHRcdFx0XHRpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHRyYW5zZm9ybSh7IGR1bW15LCBzYW1wbGVkTWVzaDogbWVzaE9iaiwgcG9zaXRpb24sIG5vcm1hbCwgY29sb3IgfSwgaSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZHVtbXkucG9zaXRpb24uY29weShwb3NpdGlvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkdW1teS51cGRhdGVNYXRyaXgoKTtcblxuXHRcdFx0XHRpZiAoaW5zdGFuY2VkTWVzaE9iaikge1xuXHRcdFx0XHRcdGluc3RhbmNlZE1lc2hPYmouc2V0TWF0cml4QXQoaSwgZHVtbXkubWF0cml4KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGR1bW15Lm1hdHJpeC50b0FycmF5KGJ1ZmZlci5hcnJheSwgaSAqIDE2KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluc3RhbmNlZE1lc2hPYmopIHtcblx0XHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaE9iai5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0XHR9XG5cblx0XHRcdGNoZWNrVXBkYXRlKGJ1ZmZlcik7XG5cblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdF9idWZmZXIuc2V0KGJ1ZmZlci5jbG9uZSgpIGFzIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBfYnVmZmVyLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3RzLXNhbXBsZXInOiBOZ3RzU3VyZmFjZVNhbXBsZXJTdGF0ZSAmIE5ndEdyb3VwO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2FtcGxlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cInNhbXBsZXJSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NhbXBsZXIge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTdXJmYWNlU2FtcGxlclN0YXRlPih7IGNvdW50OiAxNiB9KTtcblxuXHRASW5wdXQoKSBzYW1wbGVyUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY291bnQnIH0pIHNldCBfY291bnQoY291bnQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvdW50IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdtZXNoJyB9KSBzZXQgX21lc2gobWVzaDogTmd0UmVmPFRIUkVFLk1lc2g+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWVzaCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndHJhbnNmb3JtJyB9KSBzZXQgX3RyYW5zZm9ybSh0cmFuc2Zvcm06IE5ndHNTdXJmYWNlU2FtcGxlclRyYW5zZm9ybUZuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgdHJhbnNmb3JtIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICd3ZWlnaHQnIH0pIHNldCBfd2VpZ2h0KHdlaWdodDogc3RyaW5nKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgd2VpZ2h0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdpbnN0YW5jZWRNZXNoJyB9KSBzZXQgX2luc3RhbmNlZE1lc2goaW5zdGFuY2VkTWVzaDogTmd0UmVmPFRIUkVFLkluc3RhbmNlZE1lc2g+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaW5zdGFuY2VkTWVzaCB9KTtcblx0fVxuXG5cdHByaXZhdGUgc3VyZmFjZVNhbXBsZXJTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzYW1wbGVyID0gdGhpcy5zYW1wbGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFzYW1wbGVyKSByZXR1cm4gbnVsbDtcblx0XHRjb25zdCB7IGNvdW50LCB3ZWlnaHQsIHRyYW5zZm9ybSwgbWVzaCwgaW5zdGFuY2VkTWVzaCB9ID0gdGhpcy5pbnB1dHMuc3RhdGUoKTtcblxuXHRcdGNvbnN0IGluc3RhbmNlZE1lc2hSZWYgPVxuXHRcdFx0aW5zdGFuY2VkTWVzaCA/P1xuXHRcdFx0KHNhbXBsZXIuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkLmhhc093blByb3BlcnR5KCdpbnN0YW5jZU1hdHJpeCcpKSBhcyBUSFJFRS5JbnN0YW5jZWRNZXNoKTtcblxuXHRcdGNvbnN0IG1lc2hSZWYgPSBtZXNoID8/IChzYW1wbGVyLmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC50eXBlID09PSAnTWVzaCcpIGFzIFRIUkVFLk1lc2gpO1xuXG5cdFx0cmV0dXJuIHsgY291bnQsIHdlaWdodCwgdHJhbnNmb3JtLCBtZXNoOiBtZXNoUmVmLCBpbnN0YW5jZWRNZXNoOiBpbnN0YW5jZWRNZXNoUmVmIH07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0aW5qZWN0Tmd0c1N1cmZhY2VTYW1wbGVyKHRoaXMuc3VyZmFjZVNhbXBsZXJTdGF0ZSwgeyBpbmplY3RvciB9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9zYW1wbGVyL3NhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sY0FBYyxFQUNkLFdBQVcsRUFDWCxNQUFNLEVBQ04sWUFBWSxFQUNaLEVBQUUsRUFDRixXQUFXLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBMENsRCxNQUFNLFlBQVksR0FBMEM7SUFDM0QsS0FBSyxFQUFFLEVBQUU7Q0FDVCxDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QixDQUN2QyxtQkFBaUgsRUFDakgsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFMUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0gs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QUM7SUFDSixDQUFDOzhHQTVDVyxXQUFXO2tHQUFYLFdBQVcsbVNBUGI7Ozs7RUFJVDs7MkZBR1csV0FBVztrQkFWdkIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFJUyxVQUFVO3NCQUFsQixLQUFLO2dCQUV5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJSyxLQUFLO3NCQUFsQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFJVyxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFJRyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJYSxjQUFjO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdENvbXBvbmVudCxcblx0SW5qZWN0b3IsXG5cdElucHV0LFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0YXNzZXJ0SW5qZWN0b3IsXG5cdGNoZWNrVXBkYXRlLFxuXHRleHRlbmQsXG5cdGluamVjdE5ndFJlZixcblx0aXMsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndEdyb3VwLFxuXHR0eXBlIE5ndFJlZixcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE1lc2hTdXJmYWNlU2FtcGxlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbnR5cGUgU2FtcGxlUGF5bG9hZCA9IHtcblx0LyoqXG5cdCAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgc2FtcGxlLlxuXHQgKi9cblx0cG9zaXRpb246IFRIUkVFLlZlY3RvcjM7XG5cdC8qKlxuXHQgKiBUaGUgbm9ybWFsIG9mIHRoZSBtZXNoIGF0IHRoZSBzYW1wbGVkIHBvc2l0aW9uLlxuXHQgKi9cblx0bm9ybWFsOiBUSFJFRS5WZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIHZlcnRleCBjb2xvciBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdGNvbG9yOiBUSFJFRS5Db2xvcjtcbn07XG5cbnR5cGUgVHJhbnNmb3JtUGF5bG9hZCA9IFNhbXBsZVBheWxvYWQgJiB7XG5cdC8qKlxuXHQgKiBUaGUgZHVtbXkgb2JqZWN0IHVzZWQgdG8gdHJhbnNmb3JtIGVhY2ggaW5zdGFuY2UuXG5cdCAqIFRoaXMgb2JqZWN0J3MgbWF0cml4IHdpbGwgYmUgdXBkYXRlZCBhZnRlciB0cmFuc2Zvcm1pbmcgJiBpdCB3aWxsIGJlIHVzZWRcblx0ICogdG8gc2V0IHRoZSBpbnN0YW5jZSdzIG1hdHJpeC5cblx0ICovXG5cdGR1bW15OiBUSFJFRS5PYmplY3QzRDtcblx0LyoqXG5cdCAqIFRoZSBtZXNoIHRoYXQncyBpbml0aWFsbHkgcGFzc2VkIHRvIHRoZSBzYW1wbGVyLlxuXHQgKiBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBhcHBseSB0cmFuc2Zvcm1zIGZyb20geW91ciBtZXNoIHRvIHlvdXIgaW5zdGFuY2VzXG5cdCAqIG9yIGlmIHlvdSBuZWVkIHRvIGdyYWIgYXR0cmlidXRlcyBmcm9tIHRoZSBnZW9tZXRyeS5cblx0ICovXG5cdHNhbXBsZWRNZXNoOiBUSFJFRS5NZXNoO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0c1N1cmZhY2VTYW1wbGVyVHJhbnNmb3JtRm4gPSAocGF5bG9hZDogVHJhbnNmb3JtUGF5bG9hZCwgaTogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBOZ3RzU3VyZmFjZVNhbXBsZXJTdGF0ZSA9IHtcblx0Y291bnQ6IG51bWJlcjtcblx0bWVzaDogTmd0UmVmPFRIUkVFLk1lc2g+O1xuXHR0cmFuc2Zvcm0/OiBOZ3RzU3VyZmFjZVNhbXBsZXJUcmFuc2Zvcm1Gbjtcblx0d2VpZ2h0Pzogc3RyaW5nO1xuXHRpbnN0YW5jZWRNZXNoPzogTmd0UmVmPFRIUkVFLkluc3RhbmNlZE1lc2g+O1xufTtcblxuY29uc3QgZGVmYXVsdFN0YXRlOiBPbWl0PE5ndHNTdXJmYWNlU2FtcGxlclN0YXRlLCAnbWVzaCc+ID0ge1xuXHRjb3VudDogMTYsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0c1N1cmZhY2VTYW1wbGVyKFxuXHRzdXJmYWNlU2FtcGxlclN0YXRlOiAoKSA9PiAoUGFydGlhbDxPbWl0PE5ndHNTdXJmYWNlU2FtcGxlclN0YXRlLCAnbWVzaCc+PiAmIHsgbWVzaDogTmd0UmVmPFRIUkVFLk1lc2g+IH0pIHwgbnVsbCxcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Tmd0c1N1cmZhY2VTYW1wbGVyLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBzdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF9zdGF0ZSA9IHN1cmZhY2VTYW1wbGVyU3RhdGUoKTtcblx0XHRcdGlmICghX3N0YXRlKSByZXR1cm4gbnVsbDtcblx0XHRcdHJldHVybiB7IC4uLmRlZmF1bHRTdGF0ZSwgLi4uX3N0YXRlIH07XG5cdFx0fSk7XG5cdFx0Y29uc3QgX2J1ZmZlciA9IHNpZ25hbChcblx0XHRcdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFyciA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHN0YXRlKCk/LmNvdW50IHx8IGRlZmF1bHRTdGF0ZS5jb3VudCB9LCAoKSA9PiBbXG5cdFx0XHRcdFx0MSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSxcblx0XHRcdFx0XSkuZmxhdCgpO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZShGbG9hdDMyQXJyYXkuZnJvbShhcnIpLCAxNik7XG5cdFx0XHR9KSgpLFxuXHRcdCk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3N0YXRlID0gc3RhdGUoKTtcblx0XHRcdGlmICghX3N0YXRlKSByZXR1cm47XG5cdFx0XHRjb25zdCB7IG1lc2gsIGNvdW50LCB0cmFuc2Zvcm0sIGluc3RhbmNlZE1lc2gsIHdlaWdodCB9ID0gX3N0YXRlO1xuXHRcdFx0Y29uc3QgbWVzaE9iaiA9IGlzLnJlZihtZXNoKSA/IG1lc2gubmF0aXZlRWxlbWVudCA6IG1lc2g7XG5cdFx0XHRpZiAoIW1lc2hPYmopIHJldHVybjtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2hPYmogPSBpcy5yZWYoaW5zdGFuY2VkTWVzaCkgPyBpbnN0YW5jZWRNZXNoLm5hdGl2ZUVsZW1lbnQgOiBpbnN0YW5jZWRNZXNoO1xuXHRcdFx0Y29uc3QgYnVmZmVyID0gdW50cmFja2VkKF9idWZmZXIpO1xuXG5cdFx0XHRjb25zdCBzYW1wbGVyID0gbmV3IE1lc2hTdXJmYWNlU2FtcGxlcihtZXNoT2JqKTtcblxuXHRcdFx0aWYgKHdlaWdodCkge1xuXHRcdFx0XHRzYW1wbGVyLnNldFdlaWdodEF0dHJpYnV0ZSh3ZWlnaHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRzYW1wbGVyLmJ1aWxkKCk7XG5cblx0XHRcdGNvbnN0IHBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0XHRcdGNvbnN0IG5vcm1hbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0XHRjb25zdCBjb2xvciA9IG5ldyBUSFJFRS5Db2xvcigpO1xuXHRcdFx0Y29uc3QgZHVtbXkgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcblxuXHRcdFx0bWVzaE9iai51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRcdHNhbXBsZXIuc2FtcGxlKHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yKTtcblxuXHRcdFx0XHRpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHRyYW5zZm9ybSh7IGR1bW15LCBzYW1wbGVkTWVzaDogbWVzaE9iaiwgcG9zaXRpb24sIG5vcm1hbCwgY29sb3IgfSwgaSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZHVtbXkucG9zaXRpb24uY29weShwb3NpdGlvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkdW1teS51cGRhdGVNYXRyaXgoKTtcblxuXHRcdFx0XHRpZiAoaW5zdGFuY2VkTWVzaE9iaikge1xuXHRcdFx0XHRcdGluc3RhbmNlZE1lc2hPYmouc2V0TWF0cml4QXQoaSwgZHVtbXkubWF0cml4KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGR1bW15Lm1hdHJpeC50b0FycmF5KGJ1ZmZlci5hcnJheSwgaSAqIDE2KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluc3RhbmNlZE1lc2hPYmopIHtcblx0XHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaE9iai5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0XHR9XG5cblx0XHRcdGNoZWNrVXBkYXRlKGJ1ZmZlcik7XG5cblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdF9idWZmZXIuc2V0KGJ1ZmZlci5jbG9uZSgpIGFzIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBfYnVmZmVyLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3RzLXNhbXBsZXInOiBOZ3RzU3VyZmFjZVNhbXBsZXJTdGF0ZSAmIE5ndEdyb3VwO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2FtcGxlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cInNhbXBsZXJSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NhbXBsZXIge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTdXJmYWNlU2FtcGxlclN0YXRlPih7IGNvdW50OiAxNiB9KTtcblxuXHRASW5wdXQoKSBzYW1wbGVyUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY291bnQnIH0pIHNldCBfY291bnQoY291bnQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvdW50IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdtZXNoJyB9KSBzZXQgX21lc2gobWVzaDogTmd0UmVmPFRIUkVFLk1lc2g+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWVzaCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndHJhbnNmb3JtJyB9KSBzZXQgX3RyYW5zZm9ybSh0cmFuc2Zvcm06IE5ndHNTdXJmYWNlU2FtcGxlclRyYW5zZm9ybUZuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgdHJhbnNmb3JtIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICd3ZWlnaHQnIH0pIHNldCBfd2VpZ2h0KHdlaWdodDogc3RyaW5nKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgd2VpZ2h0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdpbnN0YW5jZWRNZXNoJyB9KSBzZXQgX2luc3RhbmNlZE1lc2goaW5zdGFuY2VkTWVzaDogTmd0UmVmPFRIUkVFLkluc3RhbmNlZE1lc2g+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaW5zdGFuY2VkTWVzaCB9KTtcblx0fVxuXG5cdHByaXZhdGUgc3VyZmFjZVNhbXBsZXJTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzYW1wbGVyID0gdGhpcy5zYW1wbGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFzYW1wbGVyKSByZXR1cm4gbnVsbDtcblx0XHRjb25zdCB7IGNvdW50LCB3ZWlnaHQsIHRyYW5zZm9ybSwgbWVzaCwgaW5zdGFuY2VkTWVzaCB9ID0gdGhpcy5pbnB1dHMuc3RhdGUoKTtcblxuXHRcdGNvbnN0IGluc3RhbmNlZE1lc2hSZWYgPVxuXHRcdFx0aW5zdGFuY2VkTWVzaCA/P1xuXHRcdFx0KHNhbXBsZXIuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkLmhhc093blByb3BlcnR5KCdpbnN0YW5jZU1hdHJpeCcpKSBhcyBUSFJFRS5JbnN0YW5jZWRNZXNoKTtcblxuXHRcdGNvbnN0IG1lc2hSZWYgPSBtZXNoID8/IChzYW1wbGVyLmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC50eXBlID09PSAnTWVzaCcpIGFzIFRIUkVFLk1lc2gpO1xuXG5cdFx0cmV0dXJuIHsgY291bnQsIHdlaWdodCwgdHJhbnNmb3JtLCBtZXNoOiBtZXNoUmVmLCBpbnN0YW5jZWRNZXNoOiBpbnN0YW5jZWRNZXNoUmVmIH07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0aW5qZWN0Tmd0c1N1cmZhY2VTYW1wbGVyKHRoaXMuc3VyZmFjZVNhbXBsZXJTdGF0ZSwgeyBpbmplY3RvciB9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -50,8 +50,8 @@ export class NgtsShadow {
50
50
  set _depthWrite(depthWrite) {
51
51
  this.inputs.set({ depthWrite });
52
52
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsShadow, isStandalone: true, selector: "ngts-shadow", inputs: { shadowRef: "shadowRef", _colorStop: ["colorStop", "_colorStop"], _fog: ["fog", "_fog"], _color: ["color", "_color"], _opacity: ["opacity", "_opacity"], _depthWrite: ["depthWrite", "_depthWrite"] }, ngImport: i0, template: `
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsShadow, isStandalone: true, selector: "ngts-shadow", inputs: { shadowRef: "shadowRef", _colorStop: ["colorStop", "_colorStop"], _fog: ["fog", "_fog"], _color: ["color", "_color"], _opacity: ["opacity", "_opacity"], _depthWrite: ["depthWrite", "_depthWrite"] }, ngImport: i0, template: `
55
55
  <ngt-mesh ngtCompound [ref]="shadowRef" [rotation]="[-Math.PI / 2, 0, 0]">
56
56
  <ngt-plane-geometry />
57
57
  <ngt-mesh-basic-material
@@ -67,7 +67,7 @@ export class NgtsShadow {
67
67
  </ngt-mesh>
68
68
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsShadow, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsShadow, decorators: [{
71
71
  type: Component,
72
72
  args: [{
73
73
  selector: 'ngts-shadow',
@@ -42,10 +42,10 @@ export class NgtsStatsGL {
42
42
  });
43
43
  });
44
44
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsStatsGL, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsStatsGL, isStandalone: true, selector: "ngts-stats-gl", inputs: { _parent: ["parent", "_parent"], _containerClass: ["containerClass", "_containerClass"], _config: ["config", "_config"] }, ngImport: i0 }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsStatsGL, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsStatsGL, isStandalone: true, selector: "ngts-stats-gl", inputs: { _parent: ["parent", "_parent"], _containerClass: ["containerClass", "_containerClass"], _config: ["config", "_config"] }, ngImport: i0 }); }
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsStatsGL, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsStatsGL, decorators: [{
49
49
  type: Directive,
50
50
  args: [{ selector: 'ngts-stats-gl', standalone: true }]
51
51
  }], ctorParameters: function () { return []; }, propDecorators: { _parent: [{
@@ -1,5 +1,5 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, runInInjectionContext, } from '@angular/core';
2
- import { NgtPortal, NgtPortalContent, assertInjectionContext, extend, injectBeforeRender, injectNgtRef, injectNgtStore, is, signalStore, } from 'angular-three';
2
+ import { NgtPortal, NgtPortalContent, assertInjector, extend, injectBeforeRender, injectNgtRef, injectNgtStore, is, signalStore, } from 'angular-three';
3
3
  import { MeshLineGeometry, MeshLineMaterial } from 'meshline';
4
4
  import * as THREE from 'three';
5
5
  import { Group, Mesh } from 'three';
@@ -18,7 +18,7 @@ const defaultSettings = {
18
18
  interval: 1,
19
19
  };
20
20
  export function injectNgtsTrail(targetFactory, settingsFactory, { injector } = {}) {
21
- injector = assertInjectionContext(injectNgtsTrail, injector);
21
+ injector = assertInjector(injectNgtsTrail, injector);
22
22
  return runInInjectionContext(injector, () => {
23
23
  const points = injectNgtRef();
24
24
  let frameCount = 0;
@@ -157,8 +157,8 @@ export class NgtsTrail {
157
157
  this.geometry.setPoints(points, attenuation);
158
158
  });
159
159
  }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsTrail, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsTrail, isStandalone: true, selector: "ngts-trail", inputs: { trailRef: "trailRef", _color: ["color", "_color"], _attenuation: ["attenuation", "_attenuation"], _target: ["target", "_target"], _settings: ["settings", "_settings"] }, ngImport: i0, template: `
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsTrail, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsTrail, isStandalone: true, selector: "ngts-trail", inputs: { trailRef: "trailRef", _color: ["color", "_color"], _attenuation: ["attenuation", "_attenuation"], _target: ["target", "_target"], _settings: ["settings", "_settings"] }, ngImport: i0, template: `
162
162
  <ngt-group>
163
163
  <ngt-portal [container]="scene()" [autoRender]="false">
164
164
  <ng-template ngtPortalContent>
@@ -171,7 +171,7 @@ export class NgtsTrail {
171
171
  </ngt-group>
172
172
  `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsTrail, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsTrail, decorators: [{
175
175
  type: Component,
176
176
  args: [{
177
177
  selector: 'ngts-trail',
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
206
206
  type: Input,
207
207
  args: [{ alias: 'settings' }]
208
208
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwvdHJhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEdBRXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsRUFBRSxFQUNGLFdBQVcsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXBDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFnQixFQUFFO0lBQ3ZFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLFVBQVUsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFnQkYsTUFBTSxlQUFlLEdBQXNCO0lBQzFDLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxLQUFLO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUs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dCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRydW5JbkluamVjdGlvbkNvbnRleHQsXG5cdHR5cGUgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Tmd0UG9ydGFsLFxuXHROZ3RQb3J0YWxDb250ZW50LFxuXHRhc3NlcnRJbmplY3Rpb25Db250ZXh0LFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpbmplY3ROZ3RTdG9yZSxcblx0aXMsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndFJlZixcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoTGluZUdlb21ldHJ5LCBNZXNoTGluZU1hdGVyaWFsIH0gZnJvbSAnbWVzaGxpbmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIE1lc2ggfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IHNoaWZ0TGVmdCA9IChjb2xsZWN0aW9uOiBGbG9hdDMyQXJyYXksIHN0ZXBzID0gMSk6IEZsb2F0MzJBcnJheSA9PiB7XG5cdGNvbGxlY3Rpb24uc2V0KGNvbGxlY3Rpb24uc3ViYXJyYXkoc3RlcHMpKTtcblx0Y29sbGVjdGlvbi5maWxsKC1JbmZpbml0eSwgLXN0ZXBzKTtcblx0cmV0dXJuIGNvbGxlY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzVHJhaWxTZXR0aW5ncyA9IHtcblx0d2lkdGg6IG51bWJlcjtcblx0bGVuZ3RoOiBudW1iZXI7XG5cdGRlY2F5OiBudW1iZXI7XG5cdC8qKlxuXHQgKiBXZXRoZXIgdG8gdXNlIHRoZSB0YXJnZXQncyB3b3JsZCBvciBsb2NhbCBwb3NpdGlvbnNcblx0ICovXG5cdGxvY2FsOiBib29sZWFuO1xuXHQvLyBNaW4gZGlzdGFuY2UgYmV0d2VlbiBwcmV2aW91cyBhbmQgY3VycmVudCBwb2ludHNcblx0c3RyaWRlOiBudW1iZXI7XG5cdC8vIE51bWJlciBvZiBmcmFtZXMgdG8gd2FpdCBiZWZvcmUgbmV4dCBjYWxjdWxhdGlvblxuXHRpbnRlcnZhbDogbnVtYmVyO1xufTtcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBOZ3RzVHJhaWxTZXR0aW5ncyA9IHtcblx0d2lkdGg6IDAuMixcblx0bGVuZ3RoOiAxLFxuXHRkZWNheTogMSxcblx0bG9jYWw6IGZhbHNlLFxuXHRzdHJpZGU6IDAsXG5cdGludGVydmFsOiAxLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNUcmFpbChcblx0dGFyZ2V0RmFjdG9yeTogKCkgPT4gTmd0UmVmPFRIUkVFLk9iamVjdDNEPiB8IG51bGwsXG5cdHNldHRpbmdzRmFjdG9yeTogKCkgPT4gUGFydGlhbDxOZ3RzVHJhaWxTZXR0aW5ncz4sXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0c1RyYWlsLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwb2ludHMgPSBpbmplY3ROZ3RSZWY8RmxvYXQzMkFycmF5PigpO1xuXHRcdGxldCBmcmFtZUNvdW50ID0gMDtcblxuXHRcdGNvbnN0IHByZXZQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0Y29uc3Qgd29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRjb25zdCBfdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3RhcmdldCA9IHRhcmdldEZhY3RvcnkoKTtcblx0XHRcdGlmIChpcy5yZWYoX3RhcmdldCkpIHJldHVybiBfdGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRyZXR1cm4gX3RhcmdldDtcblx0XHR9KTtcblxuXHRcdGNvbnN0IF9zZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3NGYWN0b3J5KCkgfSkpO1xuXHRcdGNvbnN0IF9sZW5ndGggPSBjb21wdXRlZCgoKSA9PiBfc2V0dGluZ3MoKS5sZW5ndGgpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt0YXJnZXQsIGxlbmd0aF0gPSBbX3RhcmdldCgpLCBfbGVuZ3RoKCldO1xuXHRcdFx0aWYgKHRhcmdldCkge1xuXHRcdFx0XHRwb2ludHMubmF0aXZlRWxlbWVudCA9IEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBsZW5ndGggKiAxMCAqIDMgfSwgKF8sIGkpID0+XG5cdFx0XHRcdFx0dGFyZ2V0LnBvc2l0aW9uLmdldENvbXBvbmVudChpICUgMyksXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3RhcmdldCwgX3BvaW50cywgeyBsb2NhbCwgZGVjYXksIHN0cmlkZSwgaW50ZXJ2YWwgfV0gPSBbXG5cdFx0XHRcdF90YXJnZXQoKSxcblx0XHRcdFx0cG9pbnRzLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdF9zZXR0aW5ncygpLFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGFyZ2V0KSByZXR1cm47XG5cdFx0XHRpZiAoIV9wb2ludHMpIHJldHVybjtcblxuXHRcdFx0aWYgKGZyYW1lQ291bnQgPT09IDApIHtcblx0XHRcdFx0bGV0IG5ld1Bvc2l0aW9uOiBUSFJFRS5WZWN0b3IzO1xuXHRcdFx0XHRpZiAobG9jYWwpIHtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHRhcmdldC5wb3NpdGlvbjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih3b3JsZFBvc2l0aW9uKTtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzdGVwcyA9IDEgKiBkZWNheTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwczsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKG5ld1Bvc2l0aW9uLmRpc3RhbmNlVG8ocHJldlBvc2l0aW9uKSA8IHN0cmlkZSkgY29udGludWU7XG5cblx0XHRcdFx0XHRzaGlmdExlZnQoX3BvaW50cywgMyk7XG5cdFx0XHRcdFx0X3BvaW50cy5zZXQobmV3UG9zaXRpb24udG9BcnJheSgpLCBfcG9pbnRzLmxlbmd0aCAtIDMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByZXZQb3NpdGlvbi5jb3B5KG5ld1Bvc2l0aW9uKTtcblx0XHRcdH1cblxuXHRcdFx0ZnJhbWVDb3VudCsrO1xuXHRcdFx0ZnJhbWVDb3VudCA9IGZyYW1lQ291bnQgJSBpbnRlcnZhbDtcblx0XHR9KTtcblxuXHRcdHJldHVybiBwb2ludHM7XG5cdH0pO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzVHJhaWxTdGF0ZSA9IHtcblx0Y29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG5cdGF0dGVudWF0aW9uOiAod2lkdGg6IG51bWJlcikgPT4gbnVtYmVyO1xuXHRzZXR0aW5nczogTmd0c1RyYWlsU2V0dGluZ3M7XG5cdHRhcmdldD86IE5ndFJlZjxUSFJFRS5PYmplY3QzRD47XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RzLXRyYWlsJzogTmd0c1RyYWlsU3RhdGU7XG5cdH1cbn1cblxuZXh0ZW5kKHsgR3JvdXAsIE1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtdHJhaWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmd0LXBvcnRhbCBbY29udGFpbmVyXT1cInNjZW5lKClcIiBbYXV0b1JlbmRlcl09XCJmYWxzZVwiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmd0UG9ydGFsQ29udGVudD5cblx0XHRcdFx0XHQ8bmd0LW1lc2ggW3JlZl09XCJ0cmFpbFJlZlwiIFtnZW9tZXRyeV09XCJnZW9tZXRyeVwiIFttYXRlcmlhbF09XCJtYXRlcmlhbCgpXCIgLz5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmd0LXBvcnRhbD5cblx0XHRcdDxuZ3QtZ3JvdXAgW3JlZl09XCJncm91cFJlZlwiPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RQb3J0YWwsIE5ndFBvcnRhbENvbnRlbnRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNUcmFpbCB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1RyYWlsU3RhdGU+KHsgc2V0dGluZ3M6IGRlZmF1bHRTZXR0aW5ncywgY29sb3I6ICdob3RwaW5rJyB9KTtcblxuXHRASW5wdXQoKSB0cmFpbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXR0ZW51YXRpb24nIH0pIHNldCBfYXR0ZW51YXRpb24oYXR0ZW51YXRpb246ICh3aWR0aDogbnVtYmVyKSA9PiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhdHRlbnVhdGlvbiB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndGFyZ2V0JyB9KSBzZXQgX3RhcmdldCh0YXJnZXQ6IE5ndFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0YXJnZXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NldHRpbmdzJyB9KSBzZXQgX3NldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPE5ndHNUcmFpbFNldHRpbmdzPikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNldHRpbmdzOiB7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3MgfSB9KTtcblx0fVxuXG5cdGdyb3VwUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG5cdHByaXZhdGUgY2hpbGRyZW4gPSB0aGlzLmdyb3VwUmVmLmNoaWxkcmVuKCdib3RoJyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSB0YXJnZXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3RhcmdldCcpO1xuXHRwcml2YXRlIHNldHRpbmdzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzZXR0aW5ncycpO1xuXHRwcml2YXRlIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXR0aW5ncygpLndpZHRoKTtcblx0cHJpdmF0ZSBjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblx0cHJpdmF0ZSBhdHRlbnVhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXR0ZW51YXRpb24nKTtcblxuXHRwcml2YXRlIGFuY2hvciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xuXHRcdGlmICh0YXJnZXQpIHJldHVybiB0YXJnZXQ7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKGdyb3VwKSB7XG5cdFx0XHRyZXR1cm4gZ3JvdXAuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkIGluc3RhbmNlb2YgVEhSRUUuT2JqZWN0M0QpIHx8IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9KTtcblxuXHRwcml2YXRlIHBvaW50cyA9IGluamVjdE5ndHNUcmFpbCh0aGlzLmFuY2hvciwgdGhpcy5zZXR0aW5ncyk7XG5cblx0c2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblx0Z2VvbWV0cnkgPSBuZXcgTWVzaExpbmVHZW9tZXRyeSgpO1xuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbd2lkdGgsIGNvbG9yLCBzaXplXSA9IFt0aGlzLndpZHRoKCksIHRoaXMuY29sb3IoKSwgdGhpcy5zaXplKCldO1xuXG5cdFx0Y29uc3QgbSA9IG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcblx0XHRcdGxpbmVXaWR0aDogMC4xICogd2lkdGgsXG5cdFx0XHRjb2xvcixcblx0XHRcdHNpemVBdHRlbnVhdGlvbjogMSxcblx0XHRcdHJlc29sdXRpb246IG5ldyBUSFJFRS5WZWN0b3IyKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KSxcblx0XHR9KTtcblxuXHRcdC8vIFRPRE86IHVuZGVyc3RhbmQgdGhpcyBmaXJzdFxuXHRcdC8vIEdldCBhbmQgYXBwbHkgZmlyc3QgPG1lc2hMaW5lTWF0ZXJpYWwgLz4gZnJvbSBjaGlsZHJlblxuXHRcdC8vIGxldCBtYXRPdmVycmlkZTogUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRcdC8vIGlmIChjaGlsZHJlbikge1xuXHRcdC8vIFx0aWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0Ly8gXHRcdG1hdE92ZXJyaWRlID0gY2hpbGRyZW4uZmluZCgoY2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZSkgPT4ge1xuXHRcdC8vIFx0XHRcdGNvbnN0IGMgPSBjaGlsZCBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ7XG5cdFx0Ly8gXHRcdFx0cmV0dXJuIHR5cGVvZiBjLnR5cGUgPT09ICdzdHJpbmcnICYmIGMudHlwZSA9PT0gJ21lc2hMaW5lTWF0ZXJpYWwnO1xuXHRcdC8vIFx0XHR9KSBhcyBSZWFjdC5SZWFjdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0Ly8gXHR9IGVsc2Uge1xuXHRcdC8vIFx0XHRjb25zdCBjID0gY2hpbGRyZW4gYXMgUmVhY3QuUmVhY3RFbGVtZW50O1xuXHRcdC8vIFx0XHRpZiAodHlwZW9mIGMudHlwZSA9PT0gJ3N0cmluZycgJiYgYy50eXBlID09PSAnbWVzaExpbmVNYXRlcmlhbCcpIHtcblx0XHQvLyBcdFx0XHRtYXRPdmVycmlkZSA9IGM7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cdFx0Ly8gaWYgKHR5cGVvZiBtYXRPdmVycmlkZT8ucHJvcHMgPT09ICdvYmplY3QnKSB7XG5cdFx0Ly8gXHRtLnNldFZhbHVlcyhtYXRPdmVycmlkZS5wcm9wcyk7XG5cdFx0Ly8gfVxuXG5cdFx0cmV0dXJuIG07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0TWF0ZXJpYWxTaXplKCk7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0TWF0ZXJpYWxTaXplKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbbWF0ZXJpYWwsIHNpemVdID0gW3RoaXMubWF0ZXJpYWwoKSwgdGhpcy5zaXplKCldO1xuXHRcdFx0bWF0ZXJpYWwudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5zZXQoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtwb2ludHMsIGF0dGVudWF0aW9uXSA9IFt0aGlzLnBvaW50cy5uYXRpdmVFbGVtZW50LCB0aGlzLmF0dGVudWF0aW9uKCldO1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9pbnRzKHBvaW50cywgYXR0ZW51YXRpb24pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwvdHJhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEdBRXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsRUFBRSxFQUNGLFdBQVcsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXBDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFnQixFQUFFO0lBQ3ZFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLFVBQVUsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFnQkYsTUFBTSxlQUFlLEdBQXNCO0lBQzFDLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxLQUFLO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUsZUFB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aW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0cnVuSW5JbmplY3Rpb25Db250ZXh0LFxuXHR0eXBlIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdE5ndFBvcnRhbCxcblx0Tmd0UG9ydGFsQ29udGVudCxcblx0YXNzZXJ0SW5qZWN0b3IsXG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3ROZ3RSZWYsXG5cdGluamVjdE5ndFN0b3JlLFxuXHRpcyxcblx0c2lnbmFsU3RvcmUsXG5cdHR5cGUgTmd0UmVmLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE1lc2hMaW5lR2VvbWV0cnksIE1lc2hMaW5lTWF0ZXJpYWwgfSBmcm9tICdtZXNobGluZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgTWVzaCB9IGZyb20gJ3RocmVlJztcblxuY29uc3Qgc2hpZnRMZWZ0ID0gKGNvbGxlY3Rpb246IEZsb2F0MzJBcnJheSwgc3RlcHMgPSAxKTogRmxvYXQzMkFycmF5ID0+IHtcblx0Y29sbGVjdGlvbi5zZXQoY29sbGVjdGlvbi5zdWJhcnJheShzdGVwcykpO1xuXHRjb2xsZWN0aW9uLmZpbGwoLUluZmluaXR5LCAtc3RlcHMpO1xuXHRyZXR1cm4gY29sbGVjdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndHNUcmFpbFNldHRpbmdzID0ge1xuXHR3aWR0aDogbnVtYmVyO1xuXHRsZW5ndGg6IG51bWJlcjtcblx0ZGVjYXk6IG51bWJlcjtcblx0LyoqXG5cdCAqIFdldGhlciB0byB1c2UgdGhlIHRhcmdldCdzIHdvcmxkIG9yIGxvY2FsIHBvc2l0aW9uc1xuXHQgKi9cblx0bG9jYWw6IGJvb2xlYW47XG5cdC8vIE1pbiBkaXN0YW5jZSBiZXR3ZWVuIHByZXZpb3VzIGFuZCBjdXJyZW50IHBvaW50c1xuXHRzdHJpZGU6IG51bWJlcjtcblx0Ly8gTnVtYmVyIG9mIGZyYW1lcyB0byB3YWl0IGJlZm9yZSBuZXh0IGNhbGN1bGF0aW9uXG5cdGludGVydmFsOiBudW1iZXI7XG59O1xuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IE5ndHNUcmFpbFNldHRpbmdzID0ge1xuXHR3aWR0aDogMC4yLFxuXHRsZW5ndGg6IDEsXG5cdGRlY2F5OiAxLFxuXHRsb2NhbDogZmFsc2UsXG5cdHN0cmlkZTogMCxcblx0aW50ZXJ2YWw6IDEsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0c1RyYWlsKFxuXHR0YXJnZXRGYWN0b3J5OiAoKSA9PiBOZ3RSZWY8VEhSRUUuT2JqZWN0M0Q+IHwgbnVsbCxcblx0c2V0dGluZ3NGYWN0b3J5OiAoKSA9PiBQYXJ0aWFsPE5ndHNUcmFpbFNldHRpbmdzPixcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Tmd0c1RyYWlsLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwb2ludHMgPSBpbmplY3ROZ3RSZWY8RmxvYXQzMkFycmF5PigpO1xuXHRcdGxldCBmcmFtZUNvdW50ID0gMDtcblxuXHRcdGNvbnN0IHByZXZQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0Y29uc3Qgd29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRjb25zdCBfdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3RhcmdldCA9IHRhcmdldEZhY3RvcnkoKTtcblx0XHRcdGlmIChpcy5yZWYoX3RhcmdldCkpIHJldHVybiBfdGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRyZXR1cm4gX3RhcmdldDtcblx0XHR9KTtcblxuXHRcdGNvbnN0IF9zZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3NGYWN0b3J5KCkgfSkpO1xuXHRcdGNvbnN0IF9sZW5ndGggPSBjb21wdXRlZCgoKSA9PiBfc2V0dGluZ3MoKS5sZW5ndGgpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt0YXJnZXQsIGxlbmd0aF0gPSBbX3RhcmdldCgpLCBfbGVuZ3RoKCldO1xuXHRcdFx0aWYgKHRhcmdldCkge1xuXHRcdFx0XHRwb2ludHMubmF0aXZlRWxlbWVudCA9IEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBsZW5ndGggKiAxMCAqIDMgfSwgKF8sIGkpID0+XG5cdFx0XHRcdFx0dGFyZ2V0LnBvc2l0aW9uLmdldENvbXBvbmVudChpICUgMyksXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3RhcmdldCwgX3BvaW50cywgeyBsb2NhbCwgZGVjYXksIHN0cmlkZSwgaW50ZXJ2YWwgfV0gPSBbXG5cdFx0XHRcdF90YXJnZXQoKSxcblx0XHRcdFx0cG9pbnRzLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdF9zZXR0aW5ncygpLFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGFyZ2V0KSByZXR1cm47XG5cdFx0XHRpZiAoIV9wb2ludHMpIHJldHVybjtcblxuXHRcdFx0aWYgKGZyYW1lQ291bnQgPT09IDApIHtcblx0XHRcdFx0bGV0IG5ld1Bvc2l0aW9uOiBUSFJFRS5WZWN0b3IzO1xuXHRcdFx0XHRpZiAobG9jYWwpIHtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHRhcmdldC5wb3NpdGlvbjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih3b3JsZFBvc2l0aW9uKTtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzdGVwcyA9IDEgKiBkZWNheTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwczsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKG5ld1Bvc2l0aW9uLmRpc3RhbmNlVG8ocHJldlBvc2l0aW9uKSA8IHN0cmlkZSkgY29udGludWU7XG5cblx0XHRcdFx0XHRzaGlmdExlZnQoX3BvaW50cywgMyk7XG5cdFx0XHRcdFx0X3BvaW50cy5zZXQobmV3UG9zaXRpb24udG9BcnJheSgpLCBfcG9pbnRzLmxlbmd0aCAtIDMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByZXZQb3NpdGlvbi5jb3B5KG5ld1Bvc2l0aW9uKTtcblx0XHRcdH1cblxuXHRcdFx0ZnJhbWVDb3VudCsrO1xuXHRcdFx0ZnJhbWVDb3VudCA9IGZyYW1lQ291bnQgJSBpbnRlcnZhbDtcblx0XHR9KTtcblxuXHRcdHJldHVybiBwb2ludHM7XG5cdH0pO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzVHJhaWxTdGF0ZSA9IHtcblx0Y29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG5cdGF0dGVudWF0aW9uOiAod2lkdGg6IG51bWJlcikgPT4gbnVtYmVyO1xuXHRzZXR0aW5nczogTmd0c1RyYWlsU2V0dGluZ3M7XG5cdHRhcmdldD86IE5ndFJlZjxUSFJFRS5PYmplY3QzRD47XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RzLXRyYWlsJzogTmd0c1RyYWlsU3RhdGU7XG5cdH1cbn1cblxuZXh0ZW5kKHsgR3JvdXAsIE1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtdHJhaWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmd0LXBvcnRhbCBbY29udGFpbmVyXT1cInNjZW5lKClcIiBbYXV0b1JlbmRlcl09XCJmYWxzZVwiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmd0UG9ydGFsQ29udGVudD5cblx0XHRcdFx0XHQ8bmd0LW1lc2ggW3JlZl09XCJ0cmFpbFJlZlwiIFtnZW9tZXRyeV09XCJnZW9tZXRyeVwiIFttYXRlcmlhbF09XCJtYXRlcmlhbCgpXCIgLz5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmd0LXBvcnRhbD5cblx0XHRcdDxuZ3QtZ3JvdXAgW3JlZl09XCJncm91cFJlZlwiPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RQb3J0YWwsIE5ndFBvcnRhbENvbnRlbnRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNUcmFpbCB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1RyYWlsU3RhdGU+KHsgc2V0dGluZ3M6IGRlZmF1bHRTZXR0aW5ncywgY29sb3I6ICdob3RwaW5rJyB9KTtcblxuXHRASW5wdXQoKSB0cmFpbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXR0ZW51YXRpb24nIH0pIHNldCBfYXR0ZW51YXRpb24oYXR0ZW51YXRpb246ICh3aWR0aDogbnVtYmVyKSA9PiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhdHRlbnVhdGlvbiB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndGFyZ2V0JyB9KSBzZXQgX3RhcmdldCh0YXJnZXQ6IE5ndFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0YXJnZXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NldHRpbmdzJyB9KSBzZXQgX3NldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPE5ndHNUcmFpbFNldHRpbmdzPikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNldHRpbmdzOiB7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3MgfSB9KTtcblx0fVxuXG5cdGdyb3VwUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG5cdHByaXZhdGUgY2hpbGRyZW4gPSB0aGlzLmdyb3VwUmVmLmNoaWxkcmVuKCdib3RoJyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSB0YXJnZXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3RhcmdldCcpO1xuXHRwcml2YXRlIHNldHRpbmdzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzZXR0aW5ncycpO1xuXHRwcml2YXRlIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXR0aW5ncygpLndpZHRoKTtcblx0cHJpdmF0ZSBjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblx0cHJpdmF0ZSBhdHRlbnVhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXR0ZW51YXRpb24nKTtcblxuXHRwcml2YXRlIGFuY2hvciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xuXHRcdGlmICh0YXJnZXQpIHJldHVybiB0YXJnZXQ7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKGdyb3VwKSB7XG5cdFx0XHRyZXR1cm4gZ3JvdXAuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkIGluc3RhbmNlb2YgVEhSRUUuT2JqZWN0M0QpIHx8IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9KTtcblxuXHRwcml2YXRlIHBvaW50cyA9IGluamVjdE5ndHNUcmFpbCh0aGlzLmFuY2hvciwgdGhpcy5zZXR0aW5ncyk7XG5cblx0c2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblx0Z2VvbWV0cnkgPSBuZXcgTWVzaExpbmVHZW9tZXRyeSgpO1xuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbd2lkdGgsIGNvbG9yLCBzaXplXSA9IFt0aGlzLndpZHRoKCksIHRoaXMuY29sb3IoKSwgdGhpcy5zaXplKCldO1xuXG5cdFx0Y29uc3QgbSA9IG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcblx0XHRcdGxpbmVXaWR0aDogMC4xICogd2lkdGgsXG5cdFx0XHRjb2xvcixcblx0XHRcdHNpemVBdHRlbnVhdGlvbjogMSxcblx0XHRcdHJlc29sdXRpb246IG5ldyBUSFJFRS5WZWN0b3IyKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KSxcblx0XHR9KTtcblxuXHRcdC8vIFRPRE86IHVuZGVyc3RhbmQgdGhpcyBmaXJzdFxuXHRcdC8vIEdldCBhbmQgYXBwbHkgZmlyc3QgPG1lc2hMaW5lTWF0ZXJpYWwgLz4gZnJvbSBjaGlsZHJlblxuXHRcdC8vIGxldCBtYXRPdmVycmlkZTogUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRcdC8vIGlmIChjaGlsZHJlbikge1xuXHRcdC8vIFx0aWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0Ly8gXHRcdG1hdE92ZXJyaWRlID0gY2hpbGRyZW4uZmluZCgoY2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZSkgPT4ge1xuXHRcdC8vIFx0XHRcdGNvbnN0IGMgPSBjaGlsZCBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ7XG5cdFx0Ly8gXHRcdFx0cmV0dXJuIHR5cGVvZiBjLnR5cGUgPT09ICdzdHJpbmcnICYmIGMudHlwZSA9PT0gJ21lc2hMaW5lTWF0ZXJpYWwnO1xuXHRcdC8vIFx0XHR9KSBhcyBSZWFjdC5SZWFjdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0Ly8gXHR9IGVsc2Uge1xuXHRcdC8vIFx0XHRjb25zdCBjID0gY2hpbGRyZW4gYXMgUmVhY3QuUmVhY3RFbGVtZW50O1xuXHRcdC8vIFx0XHRpZiAodHlwZW9mIGMudHlwZSA9PT0gJ3N0cmluZycgJiYgYy50eXBlID09PSAnbWVzaExpbmVNYXRlcmlhbCcpIHtcblx0XHQvLyBcdFx0XHRtYXRPdmVycmlkZSA9IGM7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cdFx0Ly8gaWYgKHR5cGVvZiBtYXRPdmVycmlkZT8ucHJvcHMgPT09ICdvYmplY3QnKSB7XG5cdFx0Ly8gXHRtLnNldFZhbHVlcyhtYXRPdmVycmlkZS5wcm9wcyk7XG5cdFx0Ly8gfVxuXG5cdFx0cmV0dXJuIG07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0TWF0ZXJpYWxTaXplKCk7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0TWF0ZXJpYWxTaXplKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbbWF0ZXJpYWwsIHNpemVdID0gW3RoaXMubWF0ZXJpYWwoKSwgdGhpcy5zaXplKCldO1xuXHRcdFx0bWF0ZXJpYWwudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5zZXQoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtwb2ludHMsIGF0dGVudWF0aW9uXSA9IFt0aGlzLnBvaW50cy5uYXRpdmVFbGVtZW50LCB0aGlzLmF0dGVudWF0aW9uKCldO1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9pbnRzKHBvaW50cywgYXR0ZW51YXRpb24pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  import { Injector, computed, runInInjectionContext } from '@angular/core';
2
- import { assertInjectionContext, injectBeforeRender } from 'angular-three';
2
+ import { assertInjector, injectBeforeRender } from 'angular-three';
3
3
  import { TrailTexture } from './trail-texture';
4
4
  export function injectNgtsTrailTexture(trailConfigFn, { injector } = {}) {
5
- injector = assertInjectionContext(injectNgtsTrailTexture, injector);
5
+ injector = assertInjector(injectNgtsTrailTexture, injector);
6
6
  return runInInjectionContext(injector, () => {
7
7
  const config = computed(() => trailConfigFn() || {});
8
8
  const trail = computed(() => new TrailTexture(config()));
@@ -14,4 +14,4 @@ export function injectNgtsTrailTexture(trailConfigFn, { injector } = {}) {
14
14
  return { texture, onMove };
15
15
  });
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRyYWlsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwtdGV4dHVyZS9pbmplY3QtdHJhaWwtdGV4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0saUJBQWlCLENBQUM7QUFFakUsTUFBTSxVQUFVLHNCQUFzQixDQUNyQyxhQUF5QyxFQUN6QyxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxRQUFRLEdBQUcsc0JBQXNCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEUsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQStCLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRyxDQUFDLENBQUM7UUFFN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgY29tcHV0ZWQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0QmVmb3JlUmVuZGVyLCB0eXBlIE5ndFRocmVlRXZlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFRyYWlsVGV4dHVyZSwgdHlwZSBUcmFpbENvbmZpZyB9IGZyb20gJy4vdHJhaWwtdGV4dHVyZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVHJhaWxUZXh0dXJlKFxuXHR0cmFpbENvbmZpZ0ZuOiAoKSA9PiBQYXJ0aWFsPFRyYWlsQ29uZmlnPixcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RzVHJhaWxUZXh0dXJlLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBjb25maWcgPSBjb21wdXRlZCgoKSA9PiB0cmFpbENvbmZpZ0ZuKCkgfHwge30pO1xuXHRcdGNvbnN0IHRyYWlsID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRyYWlsVGV4dHVyZShjb25maWcoKSkpO1xuXHRcdGNvbnN0IHRleHR1cmUgPSBjb21wdXRlZCgoKSA9PiB0cmFpbCgpLnRleHR1cmUpO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdHRyYWlsKCkudXBkYXRlKGRlbHRhKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IG9uTW92ZSA9IChldjogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB0cmFpbCgpLmFkZFRvdWNoKGV2LnV2ISk7XG5cblx0XHRyZXR1cm4geyB0ZXh0dXJlLCBvbk1vdmUgfTtcblx0fSk7XG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRyYWlsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwtdGV4dHVyZS9pbmplY3QtdHJhaWwtdGV4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBRWpFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDckMsYUFBeUMsRUFDekMsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFMUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhELGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBK0IsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUMsQ0FBQztRQUU3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBjb21wdXRlZCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciwgaW5qZWN0QmVmb3JlUmVuZGVyLCB0eXBlIE5ndFRocmVlRXZlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFRyYWlsVGV4dHVyZSwgdHlwZSBUcmFpbENvbmZpZyB9IGZyb20gJy4vdHJhaWwtdGV4dHVyZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVHJhaWxUZXh0dXJlKFxuXHR0cmFpbENvbmZpZ0ZuOiAoKSA9PiBQYXJ0aWFsPFRyYWlsQ29uZmlnPixcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Tmd0c1RyYWlsVGV4dHVyZSwgaW5qZWN0b3IpO1xuXHRyZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgY29uZmlnID0gY29tcHV0ZWQoKCkgPT4gdHJhaWxDb25maWdGbigpIHx8IHt9KTtcblx0XHRjb25zdCB0cmFpbCA9IGNvbXB1dGVkKCgpID0+IG5ldyBUcmFpbFRleHR1cmUoY29uZmlnKCkpKTtcblx0XHRjb25zdCB0ZXh0dXJlID0gY29tcHV0ZWQoKCkgPT4gdHJhaWwoKS50ZXh0dXJlKTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHR0cmFpbCgpLnVwZGF0ZShkZWx0YSk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBvbk1vdmUgPSAoZXY6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdHJhaWwoKS5hZGRUb3VjaChldi51diEpO1xuXG5cdFx0cmV0dXJuIHsgdGV4dHVyZSwgb25Nb3ZlIH07XG5cdH0pO1xufVxuIl19
@@ -31,8 +31,8 @@ export class NgtsCurveModifier {
31
31
  moveAlongCurve(value) {
32
32
  this.modifier?.moveAlongCurve(value);
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCurveModifier, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsCurveModifier, isStandalone: true, selector: "ngts-curve-modifier", inputs: { _curve: ["curve", "_curve"] }, ngImport: i0, template: `
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsCurveModifier, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsCurveModifier, isStandalone: true, selector: "ngts-curve-modifier", inputs: { _curve: ["curve", "_curve"] }, ngImport: i0, template: `
36
36
  <ngt-portal [container]="sceneRef" [autoRender]="false">
37
37
  <ng-template ngtPortalContent>
38
38
  <ng-content />
@@ -41,7 +41,7 @@ export class NgtsCurveModifier {
41
41
  <ngt-primitive *args="[modifierObject()]" />
42
42
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCurveModifier, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsCurveModifier, decorators: [{
45
45
  type: Component,
46
46
  args: [{
47
47
  selector: 'ngts-curve-modifier',
@@ -31,10 +31,10 @@ export class NgtsAdaptiveDpr {
31
31
  }
32
32
  });
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { _pixelated: ["pixelated", "_pixelated"] }, ngImport: i0 }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { _pixelated: ["pixelated", "_pixelated"] }, ngImport: i0 }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
38
38
  type: Directive,
39
39
  args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
40
40
  }], ctorParameters: function () { return []; }, propDecorators: { _pixelated: [{
@@ -17,10 +17,10 @@ export class NgtsAdaptiveEvents {
17
17
  this.setEvents({ enabled: current === 1 });
18
18
  });
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
24
24
  type: Directive,
25
25
  args: [{ selector: 'ngts-adaptive-events', standalone: true }]
26
26
  }], ctorParameters: function () { return []; } });
@@ -27,8 +27,8 @@ export class NgtsInstance {
27
27
  onCleanup(cleanup);
28
28
  }, { injector: this.injector });
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { instanceRef: "instanceRef" }, ngImport: i0, template: `
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { instanceRef: "instanceRef" }, ngImport: i0, template: `
32
32
  <ngt-position-mesh
33
33
  [ref]="instanceRef"
34
34
  [instance]="instancesApi.getParent()"
@@ -39,7 +39,7 @@ export class NgtsInstance {
39
39
  </ngt-position-mesh>
40
40
  `, isInline: true }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstance, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsInstance, decorators: [{
43
43
  type: Component,
44
44
  args: [{
45
45
  selector: 'ngts-instance',
@@ -149,8 +149,8 @@ export class NgtsInstances {
149
149
  }
150
150
  });
151
151
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _frames: ["frames", "_frames"] }, providers: [provideNgtsInstancesApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _frames: ["frames", "_frames"] }, providers: [provideNgtsInstancesApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
154
154
  <ngt-instanced-mesh
155
155
  [userData]="{ instances: meshes() }"
156
156
  [ref]="instancesRef"
@@ -172,7 +172,7 @@ export class NgtsInstances {
172
172
  </ngt-instanced-mesh>
173
173
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstances, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsInstances, decorators: [{
176
176
  type: Component,
177
177
  args: [{
178
178
  selector: 'ngts-instances',
@@ -35,10 +35,10 @@ export class NgtsPointsInput {
35
35
  set _stride(stride) {
36
36
  this.inputs.set({ stride });
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsInput, inputs: { pointsRef: "pointsRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _positions: ["positions", "_positions"], _colors: ["colors", "_colors"], _sizes: ["sizes", "_sizes"], _stride: ["stride", "_stride"] }, ngImport: i0 }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsPointsInput, inputs: { pointsRef: "pointsRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _positions: ["positions", "_positions"], _colors: ["colors", "_colors"], _sizes: ["sizes", "_sizes"], _stride: ["stride", "_stride"] }, ngImport: i0 }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInput, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsInput, decorators: [{
42
42
  type: Directive
43
43
  }], propDecorators: { pointsRef: [{
44
44
  type: Input
@@ -81,8 +81,8 @@ export class NgtsPointsInstances {
81
81
  }
82
82
  });
83
83
  }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", providers: [provideNgtsPointsInstancesApi()], ngImport: i0, template: `
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", providers: [provideNgtsPointsInstancesApi()], ngImport: i0, template: `
86
86
  <ngt-points
87
87
  [ref]="pointsInput.pointsRef"
88
88
  [userData]="{ instances: points() }"
@@ -117,7 +117,7 @@ export class NgtsPointsInstances {
117
117
  </ngt-points>
118
118
  `, isInline: true }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInstances, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsInstances, decorators: [{
121
121
  type: Component,
122
122
  args: [{
123
123
  selector: 'ngts-points-instances',
@@ -173,8 +173,8 @@ export class NgtsPoint {
173
173
  onCleanup(cleanup);
174
174
  }, { injector: this.injector });
175
175
  }
176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { pointRef: "pointRef" }, ngImport: i0, template: `
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { pointRef: "pointRef" }, ngImport: i0, template: `
178
178
  <ngt-position-point
179
179
  [instance]="pointsInstancesApi.getParent()"
180
180
  [ref]="pointRef"
@@ -185,7 +185,7 @@ export class NgtsPoint {
185
185
  </ngt-position-point>
186
186
  `, isInline: true }); }
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoint, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPoint, decorators: [{
189
189
  type: Component,
190
190
  args: [{
191
191
  selector: 'ngts-point',
@@ -223,8 +223,8 @@ export class NgtsPointsBuffers {
223
223
  checkUpdate(attr['size']);
224
224
  });
225
225
  }
226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsBuffers, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsBuffers, isStandalone: true, selector: "ngts-points-buffers", ngImport: i0, template: `
226
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsBuffers, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsPointsBuffers, isStandalone: true, selector: "ngts-points-buffers", ngImport: i0, template: `
228
228
  <ngt-points [ref]="pointsInput.pointsRef" ngtCompound>
229
229
  <ngt-buffer-geometry>
230
230
  <ngt-buffer-attribute
@@ -253,7 +253,7 @@ export class NgtsPointsBuffers {
253
253
  </ngt-points>
254
254
  `, isInline: true }); }
255
255
  }
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsBuffers, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPointsBuffers, decorators: [{
257
257
  type: Component,
258
258
  args: [{
259
259
  selector: 'ngts-points-buffers',
@@ -290,8 +290,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
290
290
  }]
291
291
  }], ctorParameters: function () { return []; } });
292
292
  export class NgtsPoints extends NgtsPointsInput {
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoints, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPoints, isStandalone: true, selector: "ngts-points", providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: `
293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPoints, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsPoints, isStandalone: true, selector: "ngts-points", providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: `
295
295
  <ngts-points-buffers *ngIf="positions()">
296
296
  <ng-container *ngTemplateOutlet="content" />
297
297
  </ngts-points-buffers>
@@ -301,7 +301,7 @@ export class NgtsPoints extends NgtsPointsInput {
301
301
  </ngts-points-instances>
302
302
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsPointsBuffers, selector: "ngts-points-buffers" }, { kind: "component", type: NgtsPointsInstances, selector: "ngts-points-instances" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
303
303
  }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoints, decorators: [{
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsPoints, decorators: [{
305
305
  type: Component,
306
306
  args: [{
307
307
  selector: 'ngts-points',
@@ -40,12 +40,12 @@ export class NgtsSegment {
40
40
  onCleanup(cleanup);
41
41
  }, { injector: this.injector });
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
45
45
  <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
46
46
  `, isInline: true }); }
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegment, decorators: [{
49
49
  type: Component,
50
50
  args: [{
51
51
  selector: 'ngts-segment',
@@ -131,8 +131,8 @@ export class NgtsSegments {
131
131
  this.line.computeLineDistances();
132
132
  });
133
133
  }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
136
136
  <ngt-primitive *args="[line]" [ref]="segmentsRef">
137
137
  <ngt-primitive *args="[geometry]" attach="geometry" />
138
138
  <ngt-primitive
@@ -147,7 +147,7 @@ export class NgtsSegments {
147
147
  </ngt-primitive>
148
148
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
149
149
  }
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, decorators: [{
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegments, decorators: [{
151
151
  type: Component,
152
152
  args: [{
153
153
  selector: 'ngts-segments',