@orbat-mapper/control-measures 0.2.0-alpha.20 → 0.2.0-alpha.22

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 (56) hide show
  1. package/README.md +46 -0
  2. package/dist/{index-C1NE59Nx.d.mts → index-BTViqLbA.d.mts} +72 -37
  3. package/dist/index.d.mts +2 -2
  4. package/dist/index.mjs +2 -2
  5. package/dist/preview/index.d.mts +29 -2
  6. package/dist/preview/index.mjs +44 -5
  7. package/dist/{renderControlMeasure-DURyfLXo.mjs → renderControlMeasure-Bc0d45Iv.mjs} +249 -2
  8. package/media/airfield-zone.svg +1 -0
  9. package/media/area-defense.svg +1 -0
  10. package/media/area-of-operations.svg +1 -1
  11. package/media/area.svg +1 -0
  12. package/media/assault-position.svg +1 -0
  13. package/media/assembly-area.svg +1 -1
  14. package/media/attack-position.svg +1 -0
  15. package/media/base-camp.svg +1 -0
  16. package/media/battle-handover-line.svg +1 -1
  17. package/media/battle-position.svg +1 -1
  18. package/media/block-arrow.svg +1 -1
  19. package/media/block-mission-task.svg +1 -1
  20. package/media/boundary.svg +1 -1
  21. package/media/breach.svg +1 -1
  22. package/media/bypass.svg +1 -1
  23. package/media/canalize.svg +1 -1
  24. package/media/clear.svg +1 -1
  25. package/media/cover.svg +1 -0
  26. package/media/delay.svg +1 -1
  27. package/media/direction-of-attack-aviation.svg +1 -0
  28. package/media/direction-of-main-attack.svg +1 -0
  29. package/media/direction-of-supporting-attack.svg +1 -0
  30. package/media/drop-zone.svg +1 -0
  31. package/media/encirclement.svg +1 -1
  32. package/media/engineer-work-line.svg +1 -1
  33. package/media/extraction-zone.svg +1 -0
  34. package/media/fortified-area.svg +1 -1
  35. package/media/frontal-attack.svg +1 -0
  36. package/media/generic-c2-area.svg +1 -0
  37. package/media/generic-c2-line.svg +1 -1
  38. package/media/guard.svg +1 -0
  39. package/media/guerrilla-base.svg +1 -0
  40. package/media/handover-line.svg +1 -1
  41. package/media/joint-tactical-action-area.svg +1 -1
  42. package/media/landing-zone.svg +1 -1
  43. package/media/light-line.svg +1 -1
  44. package/media/limited-access-area.svg +1 -0
  45. package/media/named-area-of-interest.svg +1 -0
  46. package/media/no-fire-area-irregular.svg +1 -0
  47. package/media/objective-area.svg +1 -0
  48. package/media/phase-line.svg +1 -1
  49. package/media/pickup-zone.svg +1 -1
  50. package/media/screen.svg +1 -0
  51. package/media/strong-point.svg +1 -1
  52. package/media/submarine-action-area.svg +1 -0
  53. package/media/submarine-generated-action-area.svg +1 -0
  54. package/media/target-area-of-interest.svg +1 -0
  55. package/media/turning-movement.svg +1 -0
  56. package/package.json +1 -1
@@ -79,6 +79,25 @@ const unproject = (x, y) => {
79
79
  lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);
80
80
  return [roundToFixed(lon), roundToFixed(lat)];
81
81
  };
82
+ /**
83
+ * Great-circle distance in meters between two lon/lat positions (haversine on
84
+ * the WGS84 mean-radius sphere). Accurate at all scales — use this for
85
+ * measurement readouts (segment lengths, radii). Note the deliberate
86
+ * asymmetry with generation: generators build geometry in projected Web
87
+ * Mercator meters, so at high latitudes a graphic's Mercator dimensions
88
+ * exceed the true ground distance this returns.
89
+ */
90
+ const haversineDistance = (a, b) => {
91
+ const R = 6371008.8;
92
+ const [lon1, lat1] = a;
93
+ const [lon2, lat2] = b;
94
+ const φ1 = lat1 * Math.PI / 180;
95
+ const φ2 = lat2 * Math.PI / 180;
96
+ const Δφ = (lat2 - lat1) * Math.PI / 180;
97
+ const Δλ = (lon2 - lon1) * Math.PI / 180;
98
+ const h = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
99
+ return 2 * R * Math.asin(Math.min(1, Math.sqrt(h)));
100
+ };
82
101
  //#endregion
83
102
  //#region src/internal/vector-utils.ts
84
103
  /**
@@ -3364,6 +3383,48 @@ function pushAreaLabels(out, ringVerts, texts, options = {}, amplifierPlacements
3364
3383
  return gaps;
3365
3384
  }
3366
3385
  /**
3386
+ * Boundary + fill features for a pattern-filled area (e.g. Limited Access Area,
3387
+ * No Fire Area). With no ENY cutout the single patterned polygon carries both
3388
+ * the {@link FillPattern} fill and the visible outline. Once an ENY marker has
3389
+ * carved masking `gaps`, a `MultiLineString` outline can't hold a fill, so the
3390
+ * full ring stays as a strokeless pattern-only fill layer beneath a separate
3391
+ * gapped boundary line (via {@link boundaryFeature}). The strokeless "fill"
3392
+ * part convention lives here so each patterned area measure doesn't re-spell it.
3393
+ */
3394
+ function patternedAreaFeatures(verts, gaps, fillPattern) {
3395
+ if (gaps.length === 0) {
3396
+ const boundary = verts.map((p) => unproject(p[0], p[1]));
3397
+ return [{
3398
+ type: "Feature",
3399
+ properties: {
3400
+ part: "boundary",
3401
+ fill: true,
3402
+ style: { fillPattern }
3403
+ },
3404
+ geometry: {
3405
+ type: "Polygon",
3406
+ coordinates: [boundary]
3407
+ }
3408
+ }];
3409
+ }
3410
+ return [{
3411
+ type: "Feature",
3412
+ properties: {
3413
+ part: "fill",
3414
+ fill: true,
3415
+ style: {
3416
+ fillPattern,
3417
+ strokeColor: "transparent",
3418
+ strokeWidth: 0
3419
+ }
3420
+ },
3421
+ geometry: {
3422
+ type: "Polygon",
3423
+ coordinates: [verts.map((p) => unproject(p[0], p[1]))]
3424
+ }
3425
+ }, boundaryFeature(verts, gaps)];
3426
+ }
3427
+ /**
3367
3428
  * The area's boundary feature: a gapped `MultiLineString` when a Field N (ENY)
3368
3429
  * marker has carved masking `gaps` from the ring (via {@link buildGappedLine},
3369
3430
  * ADR-0023), or a closed `Polygon` otherwise. Shared by every area measure that
@@ -3464,7 +3525,7 @@ const AREA = defineControlMeasure({
3464
3525
  /**
3465
3526
  * Per-feature style hint pinning a filled part to a solid interior. Attach to
3466
3527
  * a generator's intrinsic doctrinal accents — arrowheads, teeth, echelon
3467
- * glyphs, barbs, blades — so a `hachure`/`cross` fill set at the graphicsStyle
3528
+ * glyphs, barbs, blades — so a `hachure`/`backhachure`/`cross` fill set at the graphicsStyle
3468
3529
  * or measure layer never bleeds into a small silhouette and ruins its
3469
3530
  * legibility. The renderer only reads style hints, so one shared instance is
3470
3531
  * safe to reuse across every accent feature.
@@ -9657,6 +9718,188 @@ const LANDING_ZONE = defineControlMeasure({
9657
9718
  }
9658
9719
  });
9659
9720
  //#endregion
9721
+ //#region src/generators/cm15-maneuver-areas/limitedAccessArea.ts
9722
+ /** Default options for the Limited Access Area control measure. */
9723
+ const DEFAULT_LIMITED_ACCESS_AREA_OPTIONS = {
9724
+ smooth: false,
9725
+ smoothResolution: 16
9726
+ };
9727
+ const LIMITED_ACCESS_AREA_METADATA = {
9728
+ id: "limited-access-area",
9729
+ name: "Limited Access Area",
9730
+ description: "An area with restricted access, identified by a back-hachure fill.",
9731
+ entity: "Maneuver Areas",
9732
+ entityType: "Limited Access Area",
9733
+ value: "151100",
9734
+ minCoordinates: 3,
9735
+ geometry: "area",
9736
+ geometryTypes: [
9737
+ "Polygon",
9738
+ "MultiLineString",
9739
+ "Point"
9740
+ ],
9741
+ drawRule: "Area1",
9742
+ capturesLabelSize: true,
9743
+ params: [...AREA_SMOOTH_PARAMS, AREA_LABEL_PADDING_PARAM],
9744
+ textAmplifiers: [AREA_HOSTILE_AMPLIFIER]
9745
+ };
9746
+ /** Creates a back-hatched free area with a movable "LAA" label, centered by default. */
9747
+ function createLimitedAccessArea(positions, options = {}, textAmplifiers = {}, context = {}) {
9748
+ const { smooth = false, smoothResolution = 16 } = options;
9749
+ const verts = buildClosedRing(positions, smooth, smoothResolution, 16);
9750
+ const center = ringCentroid(verts);
9751
+ const labelFeatures = [{
9752
+ type: "Feature",
9753
+ properties: {
9754
+ part: "label",
9755
+ labelPlacementKey: "label:laa",
9756
+ textBackground: true,
9757
+ text: "LAA",
9758
+ rotation: HORIZONTAL_LABEL_ROTATION,
9759
+ ...labelSizeProps(options)
9760
+ },
9761
+ geometry: {
9762
+ type: "Point",
9763
+ coordinates: unproject(center[0], center[1])
9764
+ }
9765
+ }];
9766
+ return {
9767
+ type: "FeatureCollection",
9768
+ features: [...patternedAreaFeatures(verts, pushAreaLabels(labelFeatures, verts, { hostile: textAmplifiers.N }, options, context.amplifierPlacements), "backhachure"), ...labelFeatures]
9769
+ };
9770
+ }
9771
+ const LIMITED_ACCESS_AREA = defineControlMeasure({
9772
+ metadata: LIMITED_ACCESS_AREA_METADATA,
9773
+ generator: createLimitedAccessArea,
9774
+ defaultOptions: DEFAULT_LIMITED_ACCESS_AREA_OPTIONS,
9775
+ rule: area1DrawRule,
9776
+ previewSample: {
9777
+ controlPoints: [
9778
+ [-1, -.5],
9779
+ [1, -.5],
9780
+ [1, .5],
9781
+ [-1, .5]
9782
+ ],
9783
+ options: { labelSize: 96 }
9784
+ }
9785
+ });
9786
+ //#endregion
9787
+ //#region src/generators/cm24-fire-areas/noFireAreaIrregular.ts
9788
+ /** Default options for the irregular No Fire Area control measure. */
9789
+ const DEFAULT_NO_FIRE_AREA_IRREGULAR_OPTIONS = {
9790
+ smooth: false,
9791
+ smoothResolution: 16,
9792
+ labelPadding: .7
9793
+ };
9794
+ const NO_FIRE_AREA_TEXT_AMPLIFIERS = [
9795
+ {
9796
+ key: "T",
9797
+ label: "Unique designation",
9798
+ description: "Field T — the no-fire area's unique designation.",
9799
+ maxLength: 21
9800
+ },
9801
+ {
9802
+ key: "W",
9803
+ label: "Effective from (DTG)",
9804
+ description: "Field W — date-time group the no-fire area becomes effective.",
9805
+ placeholder: "051030Z",
9806
+ maxLength: 16
9807
+ },
9808
+ {
9809
+ key: "W1",
9810
+ label: "Effective to (DTG)",
9811
+ description: "Field W1 — date-time group the no-fire area ceases to be effective.",
9812
+ placeholder: "051600Z",
9813
+ maxLength: 16
9814
+ }
9815
+ ];
9816
+ const NO_FIRE_AREA_IRREGULAR_METADATA = {
9817
+ id: "no-fire-area-irregular",
9818
+ name: "No Fire Area (NFA) – Irregular",
9819
+ description: "An irregular area into which fires or their effects are prohibited.",
9820
+ entity: "Fire Areas",
9821
+ entityType: "No Fire Area",
9822
+ entitySubtype: "Irregular",
9823
+ value: "240301",
9824
+ minCoordinates: 3,
9825
+ geometry: "area",
9826
+ geometryTypes: [
9827
+ "Polygon",
9828
+ "MultiLineString",
9829
+ "Point"
9830
+ ],
9831
+ drawRule: "Area1",
9832
+ capturesLabelSize: true,
9833
+ params: [...AREA_SMOOTH_PARAMS, AREA_LABEL_PADDING_PARAM],
9834
+ textAmplifiers: [...NO_FIRE_AREA_TEXT_AMPLIFIERS, AREA_HOSTILE_AMPLIFIER]
9835
+ };
9836
+ function makeLabel(out, point, text, options, properties = {}) {
9837
+ pushLabel(out, point, text, HORIZONTAL_LABEL_ROTATION, labelSizeProps(options), properties.textAnchor, properties.amplifierField, properties.labelPlacementKey);
9838
+ Object.assign(out[out.length - 1].properties, {
9839
+ textBackground: true,
9840
+ ...properties.labelPlacement === false ? { labelPlacement: false } : {}
9841
+ });
9842
+ }
9843
+ /** Creates a back-hatched irregular NFA with its centered movable label fields. */
9844
+ function createNoFireAreaIrregular(positions, options = {}, textAmplifiers = {}, context = {}) {
9845
+ const { smooth = false, smoothResolution = 16 } = options;
9846
+ const verts = buildClosedRing(positions, smooth, smoothResolution, 16);
9847
+ const [cx, cy] = ringCentroid(verts);
9848
+ const hasWindow = Boolean(textAmplifiers.W || textAmplifiers.W1);
9849
+ const rowCount = 1 + (textAmplifiers.T ? 1 : 0) + (hasWindow ? 1 : 0);
9850
+ const pitch = resolveLabelOffsetMeters(options, 1.2 + Math.max(0, options.labelPadding ?? .7));
9851
+ let rowIndex = 0;
9852
+ const rowY = () => cy + ((rowCount - 1) / 2 - rowIndex++) * pitch;
9853
+ const labels = [];
9854
+ makeLabel(labels, [cx, rowY()], "NFA", options, { labelPlacementKey: "label:nfa" });
9855
+ if (textAmplifiers.T) makeLabel(labels, [cx, rowY()], textAmplifiers.T, options, { amplifierField: "T" });
9856
+ if (hasWindow) {
9857
+ const y = rowY();
9858
+ if (textAmplifiers.W && textAmplifiers.W1) {
9859
+ const separatorGap = resolveLabelOffsetMeters(options, 1.8);
9860
+ makeLabel(labels, [cx - separatorGap, y], textAmplifiers.W, options, {
9861
+ amplifierField: "W",
9862
+ textAnchor: "end"
9863
+ });
9864
+ makeLabel(labels, [cx, y], "–", options, { labelPlacement: false });
9865
+ makeLabel(labels, [cx + separatorGap, y], textAmplifiers.W1, options, {
9866
+ amplifierField: "W1",
9867
+ textAnchor: "start"
9868
+ });
9869
+ } else if (textAmplifiers.W) makeLabel(labels, [cx, y], textAmplifiers.W, options, { amplifierField: "W" });
9870
+ else if (textAmplifiers.W1) makeLabel(labels, [cx, y], textAmplifiers.W1, options, { amplifierField: "W1" });
9871
+ }
9872
+ return {
9873
+ type: "FeatureCollection",
9874
+ features: [...patternedAreaFeatures(verts, pushAreaLabels(labels, verts, { hostile: textAmplifiers.N }, options, context.amplifierPlacements), "backhachure"), ...labels]
9875
+ };
9876
+ }
9877
+ const NO_FIRE_AREA_IRREGULAR = defineControlMeasure({
9878
+ metadata: NO_FIRE_AREA_IRREGULAR_METADATA,
9879
+ generator: createNoFireAreaIrregular,
9880
+ defaultOptions: DEFAULT_NO_FIRE_AREA_IRREGULAR_OPTIONS,
9881
+ rule: area1DrawRule,
9882
+ previewSample: {
9883
+ controlPoints: [
9884
+ [-1, -.15],
9885
+ [-.55, -.55],
9886
+ [.65, -.5],
9887
+ [1, .15],
9888
+ [.45, .6],
9889
+ [-.5, .5]
9890
+ ],
9891
+ textAmplifiers: {
9892
+ T: "T",
9893
+ W: "W",
9894
+ W1: "W1"
9895
+ },
9896
+ options: {
9897
+ labelSize: 72,
9898
+ labelPadding: .7
9899
+ }
9900
+ }
9901
+ });
9902
+ //#endregion
9660
9903
  //#region src/generators/cm15-maneuver-areas/mainAttack.ts
9661
9904
  const DEFAULT_MAIN_ATTACK_OPTIONS = {
9662
9905
  shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
@@ -11050,6 +11293,8 @@ const DEFINITIONS = {
11050
11293
  "drop-zone": DROP_ZONE,
11051
11294
  "extraction-zone": EXTRACTION_ZONE,
11052
11295
  "landing-zone": LANDING_ZONE,
11296
+ "limited-access-area": LIMITED_ACCESS_AREA,
11297
+ "no-fire-area-irregular": NO_FIRE_AREA_IRREGULAR,
11053
11298
  "pickup-zone": PICKUP_ZONE,
11054
11299
  "assault-position": ASSAULT_POSITION,
11055
11300
  "attack-position": ATTACK_POSITION,
@@ -11297,6 +11542,7 @@ function normalizeFeature(id, feature, index, generatedLabelOrdinal, measureStyl
11297
11542
  const textSizePixels = typeof sourceProps.textSizePixels === "number" ? sourceProps.textSizePixels : void 0;
11298
11543
  const textSizeMeters = typeof sourceProps.textSizeMeters === "number" ? sourceProps.textSizeMeters : void 0;
11299
11544
  const textAnchor = sourceProps.textAnchor === "start" || sourceProps.textAnchor === "end" ? sourceProps.textAnchor : void 0;
11545
+ const textBackground = sourceProps.textBackground === true ? true : void 0;
11300
11546
  const amplifierField = typeof sourceProps.amplifierField === "string" ? canonicalTextAmplifierKey(sourceProps.amplifierField) : void 0;
11301
11547
  const labelPlacementKey = resolveLabelPlacementKey(sourceProps, amplifierField, text, feature.geometry.type, part, generatedLabelOrdinal);
11302
11548
  const resolvedPlacement = labelPlacementKey ? resolveAmplifierPlacement(amplifierPlacements?.[labelPlacementKey]) : void 0;
@@ -11315,6 +11561,7 @@ function normalizeFeature(id, feature, index, generatedLabelOrdinal, measureStyl
11315
11561
  ...text !== void 0 ? { text } : {},
11316
11562
  ...resolvedRotation !== void 0 ? { rotation: resolvedRotation } : {},
11317
11563
  ...textAnchor !== void 0 ? { textAnchor } : {},
11564
+ ...textBackground !== void 0 ? { textBackground } : {},
11318
11565
  ...amplifierField !== void 0 ? { amplifierField } : {},
11319
11566
  ...labelPlacementKey !== void 0 ? { labelPlacementKey } : {},
11320
11567
  ...textSizePixels !== void 0 ? { textSizePixels } : {},
@@ -11369,4 +11616,4 @@ function assertNever(value) {
11369
11616
  throw new Error(`Unhandled control measure kind: ${String(value)}`);
11370
11617
  }
11371
11618
  //#endregion
11372
- export { DEFAULT_BLOCK_ARROW_OPTIONS as $, DEFAULT_FLOT_OPTIONS as A, disruptDrawRule as At, DEFAULT_GENERIC_RECTANGLE_OPTIONS as B, project as Bt, DEFAULT_SCREEN_OPTIONS as C, line23DrawRule as Ct, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as D, attackByFireDrawRule as Dt, DEFAULT_FORTIFIED_LINE_OPTIONS as E, ambushDrawRule as Et, DEFAULT_GUARD_OPTIONS as F, pointOnMidpointPerpendicularAxis as Ft, DEFAULT_CANALIZE_OPTIONS as G, DEFAULT_GENERIC_LINE_OPTIONS as H, EPSILON as Ht, DEFAULT_DELAY_OPTIONS as I, snapToMidpointPerpendicular as It, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as J, DEFAULT_BYPASS_OPTIONS as K, DEFAULT_COVER_OPTIONS as L, createBaselineFrame as Lt, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as M, computeDefaultMidpointPerpendicularPoint as Mt, DEFAULT_ENCIRCLEMENT_OPTIONS as N, createMidpointPerpendicularDrawRule as Nt, DEFAULT_HANDOVER_LINE_OPTIONS as O, point12DrawRule as Ot, DEFAULT_DISRUPT_OPTIONS as P, getMidpointPerpendicularSignedDistance as Pt, DEFAULT_BOUNDARY_OPTIONS as Q, DEFAULT_TACTICAL_ARROW_OPTIONS as R, calculateMetrics as Rt, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as S, line24DrawRule as St, DEFAULT_FORTIFIED_AREA_OPTIONS as T, line1DrawRule as Tt, DEFAULT_GENERIC_CIRCLE_OPTIONS as U, getMetersPerPixel as Ut, DEFAULT_GENERIC_POLYGON_OPTIONS as V, unproject as Vt, DEFAULT_CLASSIC_ARROW_OPTIONS as W, roundToFixed as Wt, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as X, DEFAULT_GENERIC_C2_LINE_OPTIONS as Y, DEFAULT_LIGHT_LINE_OPTIONS as Z, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as _, DEFAULT_AIRBORNE_ATTACK_OPTIONS as _t, DEFINITIONS as a, DEFAULT_ANTITANK_DITCH_OPTIONS as at, DEFAULT_MAIN_ATTACK_OPTIONS as b, supportByFireDrawRule as bt, getDefaultOptions as c, DEFAULT_AREA_DEFENSE_OPTIONS as ct, DEFAULT_TURN_OPTIONS as d, normalizeTextAmplifiers as dt, DEFAULT_BLOCK_OPTIONS as et, DEFAULT_SUPPORTING_ATTACK_OPTIONS as f, resolveAmplifierPlacement as ft, DEFAULT_PICKUP_ZONE_OPTIONS as g, DEFAULT_AMBUSH_OPTIONS as gt, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as h, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as ht, CONTROL_MEASURE_METADATA as i, DEFAULT_ANTITANK_WALL_OPTIONS as it, DEFAULT_FIX_OPTIONS as j, blockDrawRule as jt, DEFAULT_PHASE_LINE_OPTIONS as k, centerRadiusDrawRule as kt, listControlMeasureMetadata as l, TEXT_AMPLIFIER_FIELDS as lt, DEFAULT_STRONG_POINT_OPTIONS as m, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as mt, resolveStyleHints as n, DEFAULT_ATTACK_HELICOPTER_OPTIONS as nt, getControlMeasureMetadata as o, DEFAULT_ASSEMBLY_AREA_OPTIONS as ot, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as p, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as pt, DEFAULT_BREACH_OPTIONS as q, CONTROL_MEASURE_IDS as r, DEFAULT_ATTACK_BY_FIRE_OPTIONS as rt, getControlMeasureMetadataByValue as s, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as st, renderControlMeasure as t, DEFAULT_BATTLE_POSITION_OPTIONS as tt, DEFAULT_TURNING_MOVEMENT_OPTIONS as u, canonicalTextAmplifierKey as ut, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as v, rectangleDrawRule as vt, DEFAULT_FRONTAL_ATTACK_OPTIONS as w, turnDrawRule as wt, DEFAULT_LANDING_ZONE_OPTIONS as x, line26DrawRule as xt, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as y, axis1DrawRule as yt, DEFAULT_CLEAR_OPTIONS as z, computeInitialWidthPoint as zt };
11619
+ export { DEFAULT_BLOCK_ARROW_OPTIONS as $, DEFAULT_FLOT_OPTIONS as A, disruptDrawRule as At, DEFAULT_GENERIC_RECTANGLE_OPTIONS as B, haversineDistance as Bt, DEFAULT_SCREEN_OPTIONS as C, line23DrawRule as Ct, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as D, attackByFireDrawRule as Dt, DEFAULT_FORTIFIED_LINE_OPTIONS as E, ambushDrawRule as Et, DEFAULT_GUARD_OPTIONS as F, pointOnMidpointPerpendicularAxis as Ft, DEFAULT_CANALIZE_OPTIONS as G, roundToFixed as Gt, DEFAULT_GENERIC_LINE_OPTIONS as H, unproject as Ht, DEFAULT_DELAY_OPTIONS as I, snapToMidpointPerpendicular as It, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as J, DEFAULT_BYPASS_OPTIONS as K, DEFAULT_COVER_OPTIONS as L, createBaselineFrame as Lt, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as M, computeDefaultMidpointPerpendicularPoint as Mt, DEFAULT_ENCIRCLEMENT_OPTIONS as N, createMidpointPerpendicularDrawRule as Nt, DEFAULT_HANDOVER_LINE_OPTIONS as O, point12DrawRule as Ot, DEFAULT_DISRUPT_OPTIONS as P, getMidpointPerpendicularSignedDistance as Pt, DEFAULT_BOUNDARY_OPTIONS as Q, DEFAULT_TACTICAL_ARROW_OPTIONS as R, calculateMetrics as Rt, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as S, line24DrawRule as St, DEFAULT_FORTIFIED_AREA_OPTIONS as T, line1DrawRule as Tt, DEFAULT_GENERIC_CIRCLE_OPTIONS as U, EPSILON as Ut, DEFAULT_GENERIC_POLYGON_OPTIONS as V, project as Vt, DEFAULT_CLASSIC_ARROW_OPTIONS as W, getMetersPerPixel as Wt, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as X, DEFAULT_GENERIC_C2_LINE_OPTIONS as Y, DEFAULT_LIGHT_LINE_OPTIONS as Z, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as _, DEFAULT_AIRBORNE_ATTACK_OPTIONS as _t, DEFINITIONS as a, DEFAULT_ANTITANK_DITCH_OPTIONS as at, DEFAULT_MAIN_ATTACK_OPTIONS as b, supportByFireDrawRule as bt, getDefaultOptions as c, DEFAULT_AREA_DEFENSE_OPTIONS as ct, DEFAULT_TURN_OPTIONS as d, normalizeTextAmplifiers as dt, DEFAULT_BLOCK_OPTIONS as et, DEFAULT_SUPPORTING_ATTACK_OPTIONS as f, resolveAmplifierPlacement as ft, DEFAULT_PICKUP_ZONE_OPTIONS as g, DEFAULT_AMBUSH_OPTIONS as gt, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as h, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as ht, CONTROL_MEASURE_METADATA as i, DEFAULT_ANTITANK_WALL_OPTIONS as it, DEFAULT_FIX_OPTIONS as j, blockDrawRule as jt, DEFAULT_PHASE_LINE_OPTIONS as k, centerRadiusDrawRule as kt, listControlMeasureMetadata as l, TEXT_AMPLIFIER_FIELDS as lt, DEFAULT_STRONG_POINT_OPTIONS as m, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as mt, resolveStyleHints as n, DEFAULT_ATTACK_HELICOPTER_OPTIONS as nt, getControlMeasureMetadata as o, DEFAULT_ASSEMBLY_AREA_OPTIONS as ot, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as p, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as pt, DEFAULT_BREACH_OPTIONS as q, CONTROL_MEASURE_IDS as r, DEFAULT_ATTACK_BY_FIRE_OPTIONS as rt, getControlMeasureMetadataByValue as s, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as st, renderControlMeasure as t, DEFAULT_BATTLE_POSITION_OPTIONS as tt, DEFAULT_TURNING_MOVEMENT_OPTIONS as u, canonicalTextAmplifierKey as ut, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as v, rectangleDrawRule as vt, DEFAULT_FRONTAL_ATTACK_OPTIONS as w, turnDrawRule as wt, DEFAULT_LANDING_ZONE_OPTIONS as x, line26DrawRule as xt, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as y, axis1DrawRule as yt, DEFAULT_CLEAR_OPTIONS as z, computeInitialWidthPoint as zt };
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103.6966679985627 48" width="96" height="48" role="img" aria-label="Airfield zone"><rect x="0" y="0" width="103.6966679985627" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M15.63 39.20 L17.88 40.09 L20.74 40.86 L24.14 41.52 L27.98 42.05 L32.18 42.46 L36.65 42.76 L41.30 42.94 L46.03 43.00 L50.77 42.94 L55.41 42.76 L59.88 42.46 L64.08 42.05 L67.93 41.52 L71.33 40.86 L74.19 40.09 L76.43 39.20 L78.21 38.08 L79.76 36.65 L81.07 34.95 L82.14 33.02 L82.96 30.93 L83.56 28.69 L83.91 26.37 L84.03 24.00 L83.91 21.63 L83.56 19.31 L82.96 17.07 L82.13 14.98 L81.07 13.05 L79.76 11.35 L78.21 9.92 L76.43 8.80 L74.19 7.91 L71.33 7.14 L67.93 6.48 L64.08 5.95 L59.88 5.54 L55.41 5.24 L50.77 5.06 L46.03 5.00 L41.30 5.06 L36.65 5.24 L32.18 5.54 L27.98 5.95 L24.14 6.48 L20.74 7.14 L17.88 7.91 L15.63 8.80 L13.85 9.92 L12.31 11.35 L11.00 13.05 L9.94 14.98 L9.10 17.07 L8.51 19.31 L8.15 21.63 L8.03 24.00 L8.15 26.37 L8.51 28.69 L9.10 30.93 L9.94 33.02 L11.00 34.95 L12.31 36.65 L13.85 38.08 L15.63 39.20 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M25.85 29.41 L66.22 18.59" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M38.65 32.80 L53.42 15.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 87.967 24.000)"><text x="87.96688" y="24" fill="#1e293b" font-family="sans-serif" font-size="5.243262666187567" font-weight="600" text-anchor="start" dominant-baseline="central">570M</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Area Defense"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M64.29 21.22 L64.08 20.16 L63.79 19.12 L63.43 18.10 L63.01 17.10 L62.52 16.14 L61.97 15.20 L61.37 14.31 L60.70 13.46 L59.98 12.65 L59.20 11.90 L58.38 11.20 L57.52 10.55 L56.61 9.96 L55.66 9.43 L54.69 8.97 L53.68 8.57 L52.65 8.24 L51.60 7.97 L50.54 7.78 L49.46 7.65 L48.38 7.60 L47.30 7.63 L46.23 7.72 L45.16 7.88 L44.10 8.11 L43.06 8.41 L42.05 8.78 L41.06 9.21 L40.09 9.71 L39.17 10.27 L38.29 10.89 L37.44 11.57 L36.65 12.30 L35.90 13.08 L35.21 13.92 L34.57 14.79 L33.99 15.71 L33.48 16.65 L33.03 17.64 L32.64 18.65 L32.32 19.68" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M64.27 26.91 L64.04 27.97 L63.74 29.01 L63.38 30.03 L62.95 31.02 L62.45 31.98 L61.90 32.91 L61.28 33.80 L60.61 34.64 L59.87 35.44 L59.09 36.19 L58.27 36.89 L57.39 37.53 L56.48 38.11 L55.53 38.62 L54.55 39.08 L53.54 39.47 L52.51 39.80 L51.46 40.05 L50.40 40.24 L49.32 40.35 L48.24 40.39 L47.16 40.36 L46.08 40.26 L45.01 40.09 L43.96 39.85 L42.92 39.54 L41.91 39.16 L40.92 38.72 L39.97 38.21 L39.05 37.64 L38.17 37.01 L37.33 36.32 L36.54 35.58 L35.81 34.80 L35.12 33.96 L34.49 33.08 L33.92 32.16 L33.41 31.21 L32.97 30.22 L32.59 29.20 L32.28 28.17" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M34.66 17.26 L32.32 19.68 L31.53 16.41" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M31.47 31.44 L32.28 28.17 L34.61 30.61" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M59.95 12.63 L60.74 9.75 L57.98 10.89 L59.95 12.63 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M50.23 7.74 L49.05 5.00 L47.61 7.61 L50.23 7.74 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M39.59 10.00 L36.96 8.61 L37.47 11.54 L39.59 10.00 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M57.87 37.19 L60.61 38.35 L59.85 35.47 L57.87 37.19 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M47.47 40.37 L48.88 43.00 L50.09 40.27 L47.47 40.37 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M37.36 36.35 L36.82 39.28 L39.47 37.91 L37.36 36.35 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 64.533 24.070)"><text x="64.53308108108108" y="24.069837837837838" fill="#1e293b" font-family="sans-serif" font-size="3.3213234794262467" font-weight="600" text-anchor="middle" dominant-baseline="central">AD</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Area of operations"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><text x="48" y="24" fill="#1e293b" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 24.000)">AO GREEN</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Area of operations"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">AO GREEN</text></g></svg>
package/media/area.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Assault position"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="5.6304985337243405" font-weight="600" text-anchor="middle" dominant-baseline="central">ASLT DANUBE</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Assembly area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><text x="48" y="24" fill="#1e293b" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 24.000)">AA BLUE</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Assembly area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">AA BLUE</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Attack position"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">ATK NILE</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Base camp"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M17.60 39.20 L19.84 40.09 L22.71 40.86 L26.11 41.52 L29.95 42.05 L34.15 42.46 L38.62 42.76 L43.26 42.94 L48.00 43.00 L52.74 42.94 L57.38 42.76 L61.85 42.46 L66.05 42.05 L69.89 41.52 L73.29 40.86 L76.16 40.09 L78.40 39.20 L80.18 38.08 L81.73 36.65 L83.03 34.95 L84.10 33.02 L84.93 30.93 L85.53 28.69 L85.88 26.37 L86.00 24.00 L85.88 21.63 L85.53 19.31 L84.93 17.07 L84.10 14.98 L83.03 13.05 L81.73 11.35 L80.18 9.92 L78.40 8.80 L76.16 7.91 L73.29 7.14 L69.89 6.48 L66.05 5.95 L61.85 5.54 L57.38 5.24 L52.74 5.06 L48.00 5.00 L43.26 5.06 L38.62 5.24 L34.15 5.54 L29.95 5.95 L26.11 6.48 L22.71 7.14 L19.84 7.91 L17.60 8.80 L15.82 9.92 L14.27 11.35 L12.97 13.05 L11.90 14.98 L11.07 17.07 L10.47 19.31 L10.12 21.63 L10.00 24.00 L10.12 26.37 L10.47 28.69 L11.07 30.93 L11.90 33.02 L12.97 34.95 L14.27 36.65 L15.82 38.08 L17.60 39.20 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">BC LEATHERNECK</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle handover line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 26.22 L91.00 26.22" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="7.227399999999998" y="21.7769" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central" transform="rotate(0.000 7.227 21.777)">BHL</text><text x="88.7726" y="21.7769" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central" transform="rotate(0.000 88.773 21.777)">BHL</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle handover line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 26.22 L91.00 26.22" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.227 21.777)"><text x="7.227399999999998" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central">BHL</text></g><g transform="rotate(0.000 88.773 21.777)"><text x="88.7726" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central">BHL</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle Position"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M21.43 34.89 L23.39 35.66 L25.90 36.34 L28.87 36.91 L32.23 37.38 L35.90 37.74 L39.25 37.96" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.61 38.14 L56.20 38.00 L60.10 37.74 L63.77 37.38 L67.13 36.91 L70.10 36.34 L72.61 35.66 L74.57 34.89 L76.12 33.91 L77.47 32.66 L78.61 31.17 L79.55 29.49 L80.27 27.66 L80.79 25.70 L81.10 23.67 L81.21 21.60 L81.10 19.54 L80.79 17.51 L80.27 15.55 L79.54 13.72 L78.61 12.03 L77.47 10.55 L76.12 9.30 L74.57 8.32 L72.61 7.55 L70.10 6.87 L67.13 6.30 L63.77 5.83 L60.10 5.47 L56.20 5.21 L52.14 5.05 L48.00 5.00 L43.86 5.05 L39.80 5.21 L35.90 5.47 L32.23 5.83 L28.87 6.30 L25.90 6.87 L23.39 7.55 L21.43 8.32 L19.88 9.30 L18.53 10.55 L17.39 12.03 L16.46 13.72 L15.73 15.55 L15.21 17.51 L14.90 19.54 L14.79 21.60 L14.90 23.67 L15.21 25.70 L15.73 27.66 L16.46 29.49 L17.39 31.17 L18.53 32.66 L19.88 33.91 L21.43 34.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M42.17 33.36 L42.05 42.90" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.81 33.46 L49.69 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="21.603747203579417" fill="#1e293b" font-size="4.58198988586022" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 21.604)">ALFA</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle Position"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M21.43 34.89 L23.39 35.66 L25.90 36.34 L28.87 36.91 L32.23 37.38 L35.90 37.74 L39.25 37.96" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.61 38.14 L56.20 38.00 L60.10 37.74 L63.77 37.38 L67.13 36.91 L70.10 36.34 L72.61 35.66 L74.57 34.89 L76.12 33.91 L77.47 32.66 L78.61 31.17 L79.55 29.49 L80.27 27.66 L80.79 25.70 L81.10 23.67 L81.21 21.60 L81.10 19.54 L80.79 17.51 L80.27 15.55 L79.54 13.72 L78.61 12.03 L77.47 10.55 L76.12 9.30 L74.57 8.32 L72.61 7.55 L70.10 6.87 L67.13 6.30 L63.77 5.83 L60.10 5.47 L56.20 5.21 L52.14 5.05 L48.00 5.00 L43.86 5.05 L39.80 5.21 L35.90 5.47 L32.23 5.83 L28.87 6.30 L25.90 6.87 L23.39 7.55 L21.43 8.32 L19.88 9.30 L18.53 10.55 L17.39 12.03 L16.46 13.72 L15.73 15.55 L15.21 17.51 L14.90 19.54 L14.79 21.60 L14.90 23.67 L15.21 25.70 L15.73 27.66 L16.46 29.49 L17.39 31.17 L18.53 32.66 L19.88 33.91 L21.43 34.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M42.17 33.36 L42.05 42.90" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.81 33.46 L49.69 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 21.604)"><text x="48" y="21.603747203579417" fill="#1e293b" font-family="sans-serif" font-size="4.58198988586022" font-weight="600" text-anchor="middle" dominant-baseline="central">ALFA</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Block Arrow"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 15.40 L62.83 15.40 L77.66 15.40 L77.66 12.14 L91.00 24.00 L77.66 35.86 L77.66 32.60 L62.83 32.60 L5.00 32.60 L5.00 15.40 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Block Arrow"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 15.40 L62.83 15.40 L77.66 15.40 L77.66 12.14 L91.00 24.00 L77.66 35.86 L77.66 32.60 L62.83 32.60 L5.00 32.60 L5.00 15.40 Z" fill="#1e293b" fill-opacity="1" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Block"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M76.50 5.00 L76.50 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M76.50 24.00 L51.80 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M44.20 24.00 L19.50 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="24" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 24.000)">B</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Block"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M76.50 5.00 L76.50 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M76.50 24.00 L51.80 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M44.20 24.00 L19.50 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">B</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Boundary"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L39.89 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M56.11 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M43.37 29.79 L43.37 18.21" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.63 29.79 L52.63 18.21" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Boundary"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L39.89 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M56.11 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M43.37 29.79 L43.37 18.21" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.63 29.79 L52.63 18.21" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 12.992)"><text x="48" y="12.991999999999999" fill="#1e293b" font-family="sans-serif" font-size="7.68" font-weight="600" text-anchor="middle" dominant-baseline="central">2INF</text></g><g transform="rotate(0.000 48.000 35.008)"><text x="48" y="35.008" fill="#1e293b" font-family="sans-serif" font-size="7.68" font-weight="600" text-anchor="middle" dominant-baseline="central">3INF</text></g></svg>
package/media/breach.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Breach"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M17.28 35.72 L10.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.64 39.36 L13.64 5.00 L41.13 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M54.87 5.00 L82.36 5.00 L82.36 39.36" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M78.72 35.72 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="5" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(-270.000 48.000 5.000)">B</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Breach"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M17.28 35.72 L10.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.64 39.36 L13.64 5.00 L41.13 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M54.87 5.00 L82.36 5.00 L82.36 39.36" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M78.72 35.72 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(-270.000 48.000 5.000)"><text x="48" y="5" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">B</text></g></svg>
package/media/bypass.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Bypass"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M14.56 33.88 L10.00 43.00 L5.44 33.88" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M10.00 43.00 L10.00 5.00 L40.40 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.60 5.00 L86.00 5.00 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M90.56 33.88 L86.00 43.00 L81.44 33.88" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="5" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(-270.000 48.000 5.000)">B</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Bypass"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M14.56 33.88 L10.00 43.00 L5.44 33.88" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M10.00 43.00 L10.00 5.00 L40.40 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.60 5.00 L86.00 5.00 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M90.56 33.88 L86.00 43.00 L81.44 33.88" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(-270.000 48.000 5.000)"><text x="48" y="5" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">B</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Canalize"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M17.28 43.00 L10.00 35.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.64 39.36 L13.64 5.00 L41.13 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M54.87 5.00 L82.36 5.00 L82.36 39.36" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M78.72 43.00 L86.00 35.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="5" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(-270.000 48.000 5.000)">C</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Canalize"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M17.28 43.00 L10.00 35.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.64 39.36 L13.64 5.00 L41.13 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M54.87 5.00 L82.36 5.00 L82.36 39.36" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M78.72 43.00 L86.00 35.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(-270.000 48.000 5.000)"><text x="48" y="5" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">C</text></g></svg>
package/media/clear.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Clear"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M21.40 5.00 L21.40 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.00 31.60 L21.40 43.00 L13.80 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.00 5.00 L48.00 20.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.00 27.80 L48.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.60 31.60 L48.00 43.00 L40.40 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M74.60 5.00 L74.60 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M82.20 31.60 L74.60 43.00 L67.00 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="48" y="24" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(-270.000 48.000 24.000)">C</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Clear"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M21.40 5.00 L21.40 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.00 31.60 L21.40 43.00 L13.80 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.00 5.00 L48.00 20.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.00 27.80 L48.00 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.60 31.60 L48.00 43.00 L40.40 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M74.60 5.00 L74.60 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M82.20 31.60 L74.60 43.00 L67.00 31.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(-270.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">C</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Cover"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M35.10 24.00 L18.55 26.11 L21.55 21.89 L5.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M8.61 25.81 L5.00 24.00 L8.61 22.19" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M60.90 24.00 L77.45 21.89 L74.45 26.11 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M87.39 22.19 L91.00 24.00 L87.39 25.81" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 40.260 24.000)"><text x="40.260000000000005" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.952928494430471" font-weight="600" text-anchor="middle" dominant-baseline="central">C</text></g><g transform="rotate(0.000 55.740 24.000)"><text x="55.74" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.952928494430471" font-weight="600" text-anchor="middle" dominant-baseline="central">C</text></g></svg>
package/media/delay.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Delay"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L33.41 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M45.62 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 39.518 38.929)">D</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Delay"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L33.41 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M45.62 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">D</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Direction of Attack — Airborne/Aviation"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 20.79 L29.36 20.79" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M37.96 20.79 L53.07 20.79" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M71.61 20.79 L91.00 20.79" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M80.68 14.85 L91.00 20.79 L80.68 26.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.36 18.64 L29.36 22.94 L37.96 18.64 L37.96 22.94 L29.36 18.64" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 62.336 20.788)"><text x="62.3362" y="20.7879" fill="#1e293b" font-family="sans-serif" font-size="6.180380883938196" font-weight="600" text-anchor="middle" dominant-baseline="central">AVON</text></g><g transform="rotate(0.000 62.336 26.971)"><text x="62.3362" y="26.9713" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">080400ZOCT2008</text></g><g transform="rotate(0.000 62.336 33.146)"><text x="62.3362" y="33.146100000000004" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">120300ZOCT2008</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Direction of Main Attack"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 21.68 L38.73 21.68" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M57.27 21.68 L87.90 21.68" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M77.58 15.74 L87.90 21.68 L77.58 27.61 L77.58 29.39 L91.00 21.68 L77.58 13.96 L77.58 15.74" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 21.678)"><text x="48" y="21.677999999999997" fill="#1e293b" font-family="sans-serif" font-size="6.180380883938196" font-weight="600" text-anchor="middle" dominant-baseline="central">MAIN</text></g><g transform="rotate(0.000 48.000 27.861)"><text x="48" y="27.8614" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">080400ZOCT2008</text></g><g transform="rotate(0.000 48.000 34.036)"><text x="48" y="34.0362" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">120300ZOCT2008</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Direction of Supporting Attack"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 20.79 L38.73 20.79" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M57.27 20.79 L91.00 20.79" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M80.68 14.85 L91.00 20.79 L80.68 26.72" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 20.788)"><text x="48" y="20.7879" fill="#1e293b" font-family="sans-serif" font-size="6.180380883938196" font-weight="600" text-anchor="middle" dominant-baseline="central">YALU</text></g><g transform="rotate(0.000 48.000 26.971)"><text x="48" y="26.9713" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">080400ZOCT2008</text></g><g transform="rotate(0.000 48.000 33.146)"><text x="48" y="33.146100000000004" fill="#1e293b" font-family="sans-serif" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central">120300ZOCT2008</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Drop zone"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">DZ HAWK</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Encirclement"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M30.33 32.84 L30.69 33.55 L31.12 34.20 L31.61 34.79 L32.15 35.33 L32.74 35.83 L33.37 36.27 L34.04 36.67 L34.75 37.03 L35.48 37.36 L36.23 37.66 L37.00 37.93 L37.78 38.18 L38.57 38.41 L39.37 38.62 L40.15 38.83 L40.93 39.02 L41.72 39.20 L42.55 39.36 L43.41 39.49 L44.30 39.60 L45.21 39.68 L46.13 39.74 L47.06 39.78 L48.00 39.79 L48.94 39.78 L49.87 39.74 L50.79 39.68 L51.70 39.60 L52.59 39.49 L53.45 39.36 L54.28 39.20 L55.07 39.02 L55.85 38.83 L56.63 38.62 L57.43 38.41 L58.22 38.18 L59.00 37.93 L59.77 37.66 L60.52 37.36 L61.25 37.03 L61.96 36.67 L62.63 36.27 L63.26 35.83 L63.85 35.33 L64.39 34.79 L64.88 34.20 L65.31 33.55 L65.67 32.84 L65.98 32.03 L66.25 31.10 L66.48 30.07 L66.66 28.95 L66.81 27.77 L66.92 26.54 L66.92 26.48" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.92 21.52 L66.92 21.46 L66.81 20.23 L66.66 19.05 L66.48 17.93 L66.25 16.90 L65.98 15.97 L65.67 15.16 L65.31 14.45 L64.88 13.80 L64.39 13.21 L63.85 12.67 L63.26 12.17 L62.63 11.73 L61.96 11.33 L61.25 10.97 L60.52 10.64 L59.77 10.34 L59.00 10.07 L58.22 9.82 L57.43 9.59 L56.63 9.38 L55.85 9.17 L55.07 8.98 L54.28 8.80 L53.45 8.64 L52.59 8.51 L51.70 8.40 L50.79 8.32 L49.87 8.26 L48.94 8.22 L48.00 8.21 L47.06 8.22 L46.13 8.26 L45.21 8.32 L44.30 8.40 L43.41 8.51 L42.55 8.64 L41.72 8.80 L40.93 8.98 L40.15 9.17 L39.37 9.38 L38.57 9.59 L37.78 9.82 L37.00 10.07 L36.23 10.34 L35.48 10.64 L34.75 10.97 L34.04 11.33 L33.37 11.73 L32.74 12.17 L32.15 12.67 L31.61 13.21 L31.12 13.80 L30.69 14.45 L30.33 15.16 L30.02 15.97 L29.75 16.90 L29.52 17.93 L29.34 19.05 L29.19 20.23 L29.08 21.46 L29.08 21.52" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.08 26.48 L29.08 26.54 L29.19 27.77 L29.34 28.95 L29.52 30.07 L29.75 31.10 L30.02 32.03 L30.33 32.84" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.81 31.29 L27.43 34.32 L31.15 34.24" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M34.18 36.74 L34.45 40.46 L37.18 37.98" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.99 39.03 L42.09 42.58 L44.20 39.59" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.15 39.79 L49.90 43.00 L51.40 39.63" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.29 38.96 L57.72 41.70 L58.43 38.11" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M62.08 36.60 L65.51 38.19 L64.59 34.55" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.27 31.01 L69.80 29.95 L66.81 27.80" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.19 16.71 L68.57 13.68 L64.85 13.76" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M61.82 11.26 L61.55 7.54 L58.82 10.02" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.01 8.97 L53.91 5.42 L51.80 8.41" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M47.85 8.21 L46.10 5.00 L44.60 8.37" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.71 9.04 L38.28 6.30 L37.57 9.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M33.92 11.40 L30.49 9.81 L31.41 13.45" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.73 16.99 L26.20 18.05 L29.19 20.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="29.003534226190474" y="24" fill="#1e293b" font-size="3.0478414865766648" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 29.004 24.000)">ENY</text><text x="66.99646577380952" y="24" fill="#1e293b" font-size="3.0478414865766648" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 66.996 24.000)">ENY</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Encirclement"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M30.33 32.84 L30.69 33.55 L31.12 34.20 L31.61 34.79 L32.15 35.33 L32.74 35.83 L33.37 36.27 L34.04 36.67 L34.75 37.03 L35.48 37.36 L36.23 37.66 L37.00 37.93 L37.78 38.18 L38.57 38.41 L39.37 38.62 L40.15 38.83 L40.93 39.02 L41.72 39.20 L42.55 39.36 L43.41 39.49 L44.30 39.60 L45.21 39.68 L46.13 39.74 L47.06 39.78 L48.00 39.79 L48.94 39.78 L49.87 39.74 L50.79 39.68 L51.70 39.60 L52.59 39.49 L53.45 39.36 L54.28 39.20 L55.07 39.02 L55.85 38.83 L56.63 38.62 L57.43 38.41 L58.22 38.18 L59.00 37.93 L59.77 37.66 L60.52 37.36 L61.25 37.03 L61.96 36.67 L62.63 36.27 L63.26 35.83 L63.85 35.33 L64.39 34.79 L64.88 34.20 L65.31 33.55 L65.67 32.84 L65.98 32.03 L66.25 31.10 L66.48 30.07 L66.66 28.95 L66.81 27.77 L66.92 26.54 L66.98 25.28 L67.00 24.00 L66.98 22.72 L66.92 21.46 L66.81 20.23 L66.66 19.05 L66.48 17.93 L66.25 16.90 L65.98 15.97 L65.67 15.16 L65.31 14.45 L64.88 13.80 L64.39 13.21 L63.85 12.67 L63.26 12.17 L62.63 11.73 L61.96 11.33 L61.25 10.97 L60.52 10.64 L59.77 10.34 L59.00 10.07 L58.22 9.82 L57.43 9.59 L56.63 9.38 L55.85 9.17 L55.07 8.98 L54.28 8.80 L53.45 8.64 L52.59 8.51 L51.70 8.40 L50.79 8.32 L49.87 8.26 L48.94 8.22 L48.00 8.21 L47.06 8.22 L46.13 8.26 L45.21 8.32 L44.30 8.40 L43.41 8.51 L42.55 8.64 L41.72 8.80 L40.93 8.98 L40.15 9.17 L39.37 9.38 L38.57 9.59 L37.78 9.82 L37.00 10.07 L36.23 10.34 L35.48 10.64 L34.75 10.97 L34.04 11.33 L33.37 11.73 L32.74 12.17 L32.15 12.67 L31.61 13.21 L31.12 13.80 L30.69 14.45 L30.33 15.16 L30.02 15.97 L29.75 16.90 L29.52 17.93 L29.34 19.05 L29.19 20.23 L29.08 21.46 L29.02 22.72 L29.00 24.00 L29.02 25.28 L29.08 26.54 L29.19 27.77 L29.34 28.95 L29.52 30.07 L29.75 31.10 L30.02 32.03 L30.33 32.84 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M29.81 31.29 L27.43 34.32 L31.15 34.24" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M34.18 36.74 L34.45 40.46 L37.18 37.98" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.99 39.03 L42.09 42.58 L44.20 39.59" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.15 39.79 L49.90 43.00 L51.40 39.63" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.29 38.96 L57.72 41.70 L58.43 38.11" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M62.08 36.60 L65.51 38.19 L64.59 34.55" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.27 31.01 L69.80 29.95 L66.81 27.80" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.99 23.85 L70.20 22.07 L66.84 20.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.19 16.71 L68.57 13.68 L64.85 13.76" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M61.82 11.26 L61.55 7.54 L58.82 10.02" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.01 8.97 L53.91 5.42 L51.80 8.41" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M47.85 8.21 L46.10 5.00 L44.60 8.37" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.71 9.04 L38.28 6.30 L37.57 9.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M33.92 11.40 L30.49 9.81 L31.41 13.45" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.73 16.99 L26.20 18.05 L29.19 20.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.01 24.15 L25.80 25.93 L29.16 27.40" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Engineer work line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="7.2256800000000005" y="19.54864" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central" transform="rotate(0.000 7.226 19.549)">EWL</text><text x="88.77432" y="19.54864" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central" transform="rotate(0.000 88.774 19.549)">EWL</text><text x="48" y="18.80904" fill="#1e293b" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 18.809)">326EN BN (USA)</text><text x="48" y="29.190959999999997" fill="#1e293b" font-size="4.423963133640553" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 29.191)">127EN BN (USA)</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Engineer work line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.226 19.549)"><text x="7.2256800000000005" y="19.54864" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central">EWL</text></g><g transform="rotate(0.000 88.774 19.549)"><text x="88.77432" y="19.54864" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central">EWL</text></g><g transform="rotate(0.000 48.000 18.809)"><text x="48" y="18.80904" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="middle" dominant-baseline="central">2BN</text></g><g transform="rotate(0.000 48.000 29.191)"><text x="48" y="29.190959999999997" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="middle" dominant-baseline="central">3BN</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Extraction zone"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">EZ ROCK</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Fortified Area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L11.73 43.00 L11.73 39.59 L15.18 39.59 L15.18 43.00 L16.91 43.00 L18.63 43.00 L18.63 39.59 L22.09 39.59 L22.09 43.00 L23.82 43.00 L25.54 43.00 L25.54 39.59 L29.00 39.59 L29.00 43.00 L30.73 43.00 L32.46 43.00 L32.46 39.59 L35.91 39.59 L35.91 43.00 L37.63 43.00 L39.37 43.00 L39.37 39.59 L42.82 39.59 L42.82 43.00 L44.54 43.00 L46.27 43.00 L46.27 39.59 L49.73 39.59 L49.73 43.00 L51.46 43.00 L53.18 43.00 L53.18 39.59 L56.63 39.59 L56.63 43.00 L58.37 43.00 L60.09 43.00 L60.09 39.59 L63.54 39.59 L63.54 43.00 L65.27 43.00 L67.00 43.00 L67.00 39.59 L70.46 39.59 L70.46 43.00 L72.18 43.00 L73.91 43.00 L73.91 39.59 L77.37 39.59 L77.37 43.00 L79.09 43.00 L80.82 43.00 L80.82 39.59 L84.27 39.59 L84.27 43.00 L86.00 43.00 L86.00 41.42 L82.59 41.42 L82.59 38.25 L86.00 38.25 L86.00 36.67 L86.00 35.08 L82.59 35.08 L82.59 31.92 L86.00 31.92 L86.00 30.33 L86.00 28.75 L82.59 28.75 L82.59 25.58 L86.00 25.58 L86.00 24.00 L86.00 22.42 L82.59 22.42 L82.59 19.25 L86.00 19.25 L86.00 17.67 L86.00 16.08 L82.59 16.08 L82.59 12.92 L86.00 12.92 L86.00 11.33 L86.00 9.75 L82.59 9.75 L82.59 6.58 L86.00 6.58 L86.00 5.00 L84.27 5.00 L84.27 8.41 L80.82 8.41 L80.82 5.00 L79.09 5.00 L77.37 5.00 L77.37 8.41 L73.91 8.41 L73.91 5.00 L72.18 5.00 L70.46 5.00 L70.46 8.41 L67.00 8.41 L67.00 5.00 L65.27 5.00 L63.54 5.00 L63.54 8.41 L60.09 8.41 L60.09 5.00 L58.37 5.00 L56.63 5.00 L56.63 8.41 L53.18 8.41 L53.18 5.00 L51.46 5.00 L49.73 5.00 L49.73 8.41 L46.27 8.41 L46.27 5.00 L44.54 5.00 L42.82 5.00 L42.82 8.41 L39.37 8.41 L39.37 5.00 L37.63 5.00 L35.91 5.00 L35.91 8.41 L32.46 8.41 L32.46 5.00 L30.73 5.00 L29.00 5.00 L29.00 8.41 L25.54 8.41 L25.54 5.00 L23.82 5.00 L22.09 5.00 L22.09 8.41 L18.63 8.41 L18.63 5.00 L16.91 5.00 L15.18 5.00 L15.18 8.41 L11.73 8.41 L11.73 5.00 L10.00 5.00 L10.00 6.58 L13.41 6.58 L13.41 9.75 L10.00 9.75 L10.00 11.33 L10.00 12.92 L13.41 12.92 L13.41 16.08 L10.00 16.08 L10.00 17.67 L10.00 19.25 L13.41 19.25 L13.41 22.42 L10.00 22.42 L10.00 24.00 L10.00 25.58 L13.41 25.58 L13.41 28.75 L10.00 28.75 L10.00 30.33 L10.00 31.92 L13.41 31.92 L13.41 35.08 L10.00 35.08 L10.00 36.67 L10.00 38.25 L13.41 38.25 L13.41 41.42 L10.00 41.42 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><text x="48" y="24" fill="#1e293b" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central" transform="rotate(0.000 48.000 24.000)">TANGO</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Fortified Area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L11.73 43.00 L11.73 39.59 L15.18 39.59 L15.18 43.00 L16.91 43.00 L18.63 43.00 L18.63 39.59 L22.09 39.59 L22.09 43.00 L23.82 43.00 L25.54 43.00 L25.54 39.59 L29.00 39.59 L29.00 43.00 L30.73 43.00 L32.46 43.00 L32.46 39.59 L35.91 39.59 L35.91 43.00 L37.63 43.00 L39.37 43.00 L39.37 39.59 L42.82 39.59 L42.82 43.00 L44.54 43.00 L46.27 43.00 L46.27 39.59 L49.73 39.59 L49.73 43.00 L51.46 43.00 L53.18 43.00 L53.18 39.59 L56.63 39.59 L56.63 43.00 L58.37 43.00 L60.09 43.00 L60.09 39.59 L63.54 39.59 L63.54 43.00 L65.27 43.00 L67.00 43.00 L67.00 39.59 L70.46 39.59 L70.46 43.00 L72.18 43.00 L73.91 43.00 L73.91 39.59 L77.37 39.59 L77.37 43.00 L79.09 43.00 L80.82 43.00 L80.82 39.59 L84.27 39.59 L84.27 43.00 L86.00 43.00 L86.00 41.42 L82.59 41.42 L82.59 38.25 L86.00 38.25 L86.00 36.67 L86.00 35.08 L82.59 35.08 L82.59 31.92 L86.00 31.92 L86.00 30.33 L86.00 28.75 L82.59 28.75 L82.59 25.58 L86.00 25.58 L86.00 24.00 L86.00 22.42 L82.59 22.42 L82.59 19.25 L86.00 19.25 L86.00 17.67 L86.00 16.08 L82.59 16.08 L82.59 12.92 L86.00 12.92 L86.00 11.33 L86.00 9.75 L82.59 9.75 L82.59 6.58 L86.00 6.58 L86.00 5.00 L84.27 5.00 L84.27 8.41 L80.82 8.41 L80.82 5.00 L79.09 5.00 L77.37 5.00 L77.37 8.41 L73.91 8.41 L73.91 5.00 L72.18 5.00 L70.46 5.00 L70.46 8.41 L67.00 8.41 L67.00 5.00 L65.27 5.00 L63.54 5.00 L63.54 8.41 L60.09 8.41 L60.09 5.00 L58.37 5.00 L56.63 5.00 L56.63 8.41 L53.18 8.41 L53.18 5.00 L51.46 5.00 L49.73 5.00 L49.73 8.41 L46.27 8.41 L46.27 5.00 L44.54 5.00 L42.82 5.00 L42.82 8.41 L39.37 8.41 L39.37 5.00 L37.63 5.00 L35.91 5.00 L35.91 8.41 L32.46 8.41 L32.46 5.00 L30.73 5.00 L29.00 5.00 L29.00 8.41 L25.54 8.41 L25.54 5.00 L23.82 5.00 L22.09 5.00 L22.09 8.41 L18.63 8.41 L18.63 5.00 L16.91 5.00 L15.18 5.00 L15.18 8.41 L11.73 8.41 L11.73 5.00 L10.00 5.00 L10.00 6.58 L13.41 6.58 L13.41 9.75 L10.00 9.75 L10.00 11.33 L10.00 12.92 L13.41 12.92 L13.41 16.08 L10.00 16.08 L10.00 17.67 L10.00 19.25 L13.41 19.25 L13.41 22.42 L10.00 22.42 L10.00 24.00 L10.00 25.58 L13.41 25.58 L13.41 28.75 L10.00 28.75 L10.00 30.33 L10.00 31.92 L13.41 31.92 L13.41 35.08 L10.00 35.08 L10.00 36.67 L10.00 38.25 L13.41 38.25 L13.41 41.42 L10.00 41.42 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.554078332734459" font-weight="600" text-anchor="middle" dominant-baseline="central">TANGO</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Frontal Attack"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M22.92 29.72 L36.71 19.38 L59.32 13.72 L57.98 8.36 L69.39 19.76 L64.69 35.20 L63.35 29.83 L43.99 34.67 L32.89 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M65.70 5.00 L73.08 34.53" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(-345.964 65.762 20.669)"><text x="65.76168122270742" y="20.66877729257642" fill="#1e293b" font-family="sans-serif" font-size="2.9812947292278293" font-weight="600" text-anchor="middle" dominant-baseline="central">A</text></g><g transform="rotate(-323.130 35.341 30.779)"><text x="35.34093886462882" y="30.778602620087334" fill="#1e293b" font-family="sans-serif" font-size="2.9812947292278293" font-weight="600" text-anchor="middle" dominant-baseline="central">FOX</text></g><g transform="rotate(-345.964 47.226 23.614)"><text x="47.22631004366812" y="23.61419213973799" fill="#1e293b" font-family="sans-serif" font-size="2.9812947292278293" font-weight="600" text-anchor="middle" dominant-baseline="central">080400Z</text></g><g transform="rotate(-345.964 48.023 26.796)"><text x="48.02281659388646" y="26.796069868995634" fill="#1e293b" font-family="sans-serif" font-size="2.9812947292278293" font-weight="600" text-anchor="middle" dominant-baseline="central">120300Z</text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Generic command and control area"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M10.00 43.00 L86.00 43.00 L86.00 5.00 L10.00 5.00 L10.00 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.193548387096775" font-weight="600" text-anchor="middle" dominant-baseline="central">RIOT FOODS</text></g></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Generic command and control line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><text x="7.2256800000000005" y="19.54864" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central" transform="rotate(0.000 7.226 19.549)">IDR METH</text><text x="7.2256800000000005" y="28.45136" fill="#1e293b" font-size="1.9979188345473469" font-weight="600" text-anchor="start" dominant-baseline="central" transform="rotate(0.000 7.226 28.451)">221735ZAUG2018 - 312359ZDEC2099</text><text x="88.77432" y="19.54864" fill="#1e293b" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central" transform="rotate(0.000 88.774 19.549)">IDR METH</text><text x="88.77432" y="28.45136" fill="#1e293b" font-size="1.9979188345473469" font-weight="600" text-anchor="end" dominant-baseline="central" transform="rotate(0.000 88.774 28.451)">221735ZAUG2018 - 312359ZDEC2099</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Generic command and control line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 24.00 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.226 19.549)"><text x="7.2256800000000005" y="19.54864" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central"><H> <T></text></g><g transform="rotate(0.000 7.226 28.451)"><text x="7.2256800000000005" y="28.45136" fill="#1e293b" font-family="sans-serif" font-size="6.193548387096775" font-weight="600" text-anchor="start" dominant-baseline="central"><W> - <W1></text></g><g transform="rotate(0.000 88.774 19.549)"><text x="88.77432" y="19.54864" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central"><H> <T></text></g><g transform="rotate(0.000 88.774 28.451)"><text x="88.77432" y="28.45136" fill="#1e293b" font-family="sans-serif" font-size="6.193548387096775" font-weight="600" text-anchor="end" dominant-baseline="central"><W> - <W1></text></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Guard"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M35.10 24.00 L18.55 26.11 L21.55 21.89 L5.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M8.61 25.81 L5.00 24.00 L8.61 22.19" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M60.90 24.00 L77.45 21.89 L74.45 26.11 L91.00 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M87.39 22.19 L91.00 24.00 L87.39 25.81" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 40.260 24.000)"><text x="40.260000000000005" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.952928494430471" font-weight="600" text-anchor="middle" dominant-baseline="central">G</text></g><g transform="rotate(0.000 55.740 24.000)"><text x="55.74" y="24" fill="#1e293b" font-family="sans-serif" font-size="6.952928494430471" font-weight="600" text-anchor="middle" dominant-baseline="central">G</text></g></svg>