Collection Model
Audience: collection authors.
Authoritative for:
- the structural fields of
typedmark.md: identity, metadata directory, excluded paths, assets directory, timezone, validation defaults, automation defaults, mandatory tags, folder scopes, and vocabularies - note-type mappings, shared path matching, and composition provenance
See also:
- Systems, Composition, and Evolution: the optional system fields, composition, and change history
- Note Type Schemas: the effective note-type schema
- Property Sets: reusable definitions, collection defaults, and composition merge rules
- Queries: portable query descriptors and evaluation
- Datasets and Views: reusable results, presentation layouts, and Obsidian Bases interoperability
- Automation Artifacts: governed rules and their trigger/action vocabulary
- Extensions and Capabilities: required extension declarations and inert vendor metadata
- Relationships, Headings, Templates, and Content Expansion: relationship resolution and query-backed content expansion
Core Profile authors usually need only specification_version, name, and description in typedmark.md; deterministic defaults provide the metadata directory, ignored Git content, validation severities, automation propagation limit, and frontmatter-based note-type mapping. Mandatory tags, automation rules, datasets, saved views, property sets, folder scopes, vocabularies, composition provenance, and advanced mappings are optional layers for larger collections.
Collection Model Specification#
typedmark.md defines collection-model-wide rules, including the metadata directory, the ordered note-type mappings, and the governed TypedMark artifacts.
Shape at a glance:
| Key | Physical requirement | Effective default | Purpose |
|---|---|---|---|
specification_version |
Required | none | Selects the TypedMark specification version |
extensions |
Optional | {} |
Required contracts, defined in Extensions and Capabilities |
name |
Required | none | Collection identity |
description |
Required | none | Human-facing summary |
label |
Optional | application fallback to name |
Display name |
keywords |
Optional | none | Discovery metadata |
metadata_directory |
Optional | .typedmark |
Governed artifact subtree |
exclude_paths |
Optional | [.git/**] |
Paths ignored as collection content |
assets_directory |
Optional | none | Preferred asset folder |
timezone |
Optional | UTC |
Date/time localization |
validation_defaults |
Optional | {} plus core severity defaults |
Validation severity overrides |
automation_defaults |
Optional | {max_propagation_waves: 100} |
Automation propagation safety limit |
note_type_mappings |
Optional | frontmatter note_type mapping |
Note-type association |
vocabularies |
Optional | none | Reusable value sets |
composition |
Optional | none | Advanced provenance and update lineage |
default_property_sets |
Optional | none | Shared structure applied to every concrete note type |
mandatory_tags |
Optional | none | Tags required on every managed note |
Expanded example:
Core value shapes:
| Keys | Shape |
|---|---|
name |
At most 214 characters matching ^(?:@[a-z0-9][a-z0-9._-]*/)?[a-z0-9][a-z0-9._-]*$ |
description, label |
Non-empty text |
keywords |
Unique non-empty text entries |
metadata_directory |
One non-empty directory name, not . or .., without separators |
exclude_paths |
List of glob strings, including an empty list |
timezone |
IANA timezone identifier |
validation_defaults |
Mapping of defined category names to error/warn/info/off |
note_type_mappings |
Non-empty ordered list of mapping rules |
Rules:
- CM-551 Present Core configuration properties MUST satisfy their shape and default tables.
- CM-552 Other than the required identity/version keys, a Core configuration property MAY be omitted where its table defines omission.
specification_version: 0.1.0
name: example-knowledge-base
label: Example Knowledge Base
description: Personal knowledge base.
mandatory_tags:
- managed
metadata_directory: .typedmark
exclude_paths:
- .git/**
validation_defaults:
path: error
missing_required_field: error
missing_declared_field: error
unknown_field: warn
invalid_field_value: error
duplicate_unique_value: error
invalid_note_count: error
invalid_property_set: error
invalid_automation: error
invalid_dataset: error
invalid_view: error
invalid_note_type_mapping: error
invalid_composition: error
unsupported_specification_version: error
invalid_extension_declaration: error
unsupported_extension: error
invalid_note_link: error
invalid_relationship_definition: error
invalid_relationship_instance: error
invalid_heading: error
invalid_template_region: error
template_drift: warn
invalid_expansion: error
expansion_drift: error
automation_defaults:
max_propagation_waves: 100
In path notation on this page, <metadata_directory> means the directory name declared by typedmark.md metadata_directory.
Rules:
- CM-1
typedmark.mdMUST exist at the root of every conforming managed collection. - CM-2
typedmark.mdMUST physically containspecification_version,name, anddescription. - CM-4
nameis the collection's single identity. It identifies the collection's structural model and, when the collection is a publishable system, is the distribution identity a marketplace andcomposition.sourcesresolve against. - CM-15
labelis the human-facing display name of the collection; applications SHOULD displaylabelwhen present and fall back tonameotherwise. - CM-24 Validators and agents MUST derive governed artifact locations from
metadata_directory. - CM-26 Each
exclude_pathsentry is a glob pattern matched against the entire normalized collection-relative path, using forward slashes. - CM-27 In
exclude_pathsglobs,*matches any number of characters within one path segment,?matches exactly one character within a segment, and**matches any number of path segments including none. - CM-28
exclude_pathsdoes not support negation patterns in this specification version. - CM-29 A note matched by
exclude_pathsis not a collection note: it is not evaluated for note-type mapping and is not a candidate for note-link resolution. - CM-30 An
exclude_pathsentry that would excludetypedmark.mdor content under the metadata directory has no effect on those paths. - CM-32 If present,
assets_directoryMUST be a non-empty collection-relative directory path using forward slashes, MUST NOT start or end with/, MUST NOT contain.or..segments, and MUST NOT equal themetadata_directoryvalue. - CM-33
assets_directorynames the folder where collection assets SHOULD live; tools that add assets to the collection SHOULD place them under it. - CM-34
assets_directorydoes not change asset-link resolution; an asset resolves wherever it lives. - CM-35 Tools MAY report assets stored outside
assets_directory, and MAY report orphan assets that no collection note references; automated asset cleanup is not defined in this specification version. - CM-40 The collection timezone governs floating temporal interpretation and instant localization where their authoritative contracts require it.
- CM-41 Collections whose authors work in a single zone SHOULD declare
timezoneexplicitly. - CM-43 Supported validation severities are
error,warn,info, andoff. - CM-45 An omitted severity key takes its core default severity:
unknown_fieldandtemplate_driftdefault towarn, and every other severity key defined on this page defaults toerror. - CM-46 Severity keys are the diagnostic categories defined by the applicable Core and optional contracts; an undeclared key is evaluated under
unknown_field. - CM-47 A note or artifact with any
errorviolation is non-conforming. - CM-48 A note or artifact with only
warnorinfoissues remains structurally usable. - CM-50
pathapplies when a managed note path violates the storage rules defined in Note Type Schemas. - CM-51
missing_required_fieldapplies to an explicit null violating a non-null requirement, or an unsatisfied conditional requirement. - CM-52
missing_declared_fieldapplies to an absent declared field with no conforming effective value for its non-null requirement. - CM-53
unknown_fieldapplies to undeclared structural keys in governed artifacts and undeclared managed-note fields, excluding the inert metadata permitted by Extensions and Capabilities. - CM-534 An undeclared structural key in a governed artifact MUST have severity
errorwhen the tool implements the applicable core and extension contracts, regardless of the configuredunknown_fieldseverity. - CM-535
invalid_extension_declarationapplies when extension declarations, required dependencies, or declaration requirements violate Extensions and Capabilities. - CM-536
unsupported_extensionapplies when a required exact extension version cannot be interpreted by the tool. - CM-537
invalid_collection_configurationapplies whentypedmark.mdcannot be parsed as a collection configuration or violates a collection-configuration requirement not covered by a more specific category. - CM-538
invalid_note_type_schemaapplies when a note-type schema cannot be parsed, violates its artifact contract, or yields an invalid effective schema. - CM-539
invalid_templateapplies when a template required by the template contract is missing or an existing template violates that contract. - CM-542
extension_violationapplies to a violation of a recognized extension rule for which no more specific standard diagnostic category applies. - CM-544
invalid_note_frontmatterapplies when a recognized note frontmatter block needed for note-type association or managed-note validation cannot be parsed as a valid frontmatter mapping. - CM-54
invalid_field_valueapplies when a field value violates a declared field-level value constraint such asformat,regex,not_empty,not_blank,min,max,allowed_values, ortargets, when a matching conditionalrequire_nullconstraint defined in Note Type Schemas is violated, or when a managed note lacks an effective mandatory tag.format: note_linksyntax and resolution failures still useinvalid_note_link. - CM-55
duplicate_unique_valueapplies when effective values violate a field's declared uniqueness scope or Core identifier uniqueness. - CM-56
invalid_note_countapplies when the number of managed notes of a note type violates that type's effectivecountconstraint, as defined in Note Type Schemas. - CM-58
invalid_note_type_mappingapplies when a note-type mapping rule violates the mapping-rule contract or when a winning rule produces a candidate note type that does not resolve to exactly one concrete schema. - CM-60
unsupported_specification_versionapplies when a governed artifact declares aspecification_versionwhose compatibility line the tool does not implement; version-selection behavior is defined in Foundations. - CM-61
invalid_note_linkapplies when an internal note link violates the syntax or resolution rules defined in Note Links. - CM-62
invalid_relationship_definitionapplies when relationship declarations violate the relationship model defined in Relationships, Headings, and Templates. - CM-63
invalid_relationship_instanceapplies when resolved typed relationship instances violate the declared relationship cardinality constraints defined in Relationships, Headings, and Templates. - CM-64
invalid_headingapplies when a managed note violates the effective heading rules defined in Relationships, Headings, and Templates. - CM-200 The effective
metadata_directory,exclude_paths,validation_defaults, andautomation_defaultsvalues participate in conformance exactly as if their default values had been physically written intypedmark.md.
Collection Boundaries#
Each collection owns its own directory subtree up to nested collection roots.
For example, scanning work/typedmark.md does not absorb notes below
work/archive/typedmark.md, even if the child's configuration is malformed.
The child is evaluated separately when explicitly selected.
Rules:
- CM-545 A note's collection root MUST be its nearest ancestor directory containing
typedmark.md. - CM-546 A collection scan MUST prune a nested root when its
typedmark.mdis present, independently of whether that configuration is valid. - CM-547 Collection discovery MUST NOT follow symbolic links or directory junctions.
- CM-548 Collection notes are files with the exact lowercase
.mdextension outside the metadata subtree, configuration file, excluded paths, and nested roots. - CM-549 Hidden entries MUST follow the same discovery rules as other entries rather than being implicitly excluded.
- CM-550 Logical paths MUST be compared after NFC normalization with case preserved, independently of host filesystem lookup behavior.
Path Matching#
Mappings, scopes, and queries share path comparisons without sharing a wire
shape. Each consumer supplies a normalized collection-relative note path,
including its .md extension. The when.path.regex carrier named below is
defined by note-type mappings; other consumers reuse its matching semantics.
| Candidate | Predicate | Match |
|---|---|---|
Projects/Alpha.md |
under: Projects/ |
yes |
ProjectsArchive/Alpha.md |
under: Projects/ |
no |
Projects/Alpha.md |
equals: projects/Alpha.md |
no |
Rules:
- CM-406 Path
equalsmatches exactly when the normalized candidate path equalsvalueunderFND-38. - CM-404 Path
undermatches exactly when its normalized, trailing-slash directoryvalueis a prefix of the normalized candidate path after NFC normalization. - CM-101
when.path.regexMUST be a non-empty string and is matched against the entire normalized collection-relative note path. - CM-102 Regex evaluation in
note_type_mappingsuses the ECMA-262 regular expression dialect defined in Foundations.
Note-Type Mappings#
typedmark.md can define note_type_mappings to control how collection notes are associated with note types. Path comparisons use Path Matching.
Shape at a glance:
| Mapping kind | Required keys | Matches from | Core Profile use |
|---|---|---|---|
| omitted | none | stored note_type frontmatter |
Default |
frontmatter_field |
kind, field |
stored note_type frontmatter |
Explicit default |
tag |
kind, tag, note_type |
top-level stored tags |
Optional Core mapping |
folder |
kind, folder, note_type |
collection-relative path | Optional Core mapping |
fixed |
kind, note_type, when |
path and/or stored frontmatter predicates | Optional Core mapping |
Each entry is a mapping using one listed kind. field is the literal
note_type; tag is a valid tag; folder is a non-empty collection-relative
directory ending in /; a declared target note_type is a concrete type slug.
Rules:
- CM-553 A note-type mapping declaration MUST satisfy the kind table and value shapes above.
Example:
note_type_mappings:
- kind: frontmatter_field
field: note_type
- kind: tag
tag: meeting
note_type: meeting
- kind: folder
folder: "Sources/"
note_type: source
- kind: fixed
note_type: problem
when:
path:
regex: "^Problems/\\d{4}/\\d{2}/.+\\.md$"
frontmatter:
tags:
contains_any: [problem, blocker]
severity:
equals: high
Rules:
- CM-67 If
note_type_mappingsis omitted, the collection uses an implicit ordered mapping list containing exactly one rule equivalent tokind: frontmatter_fieldandfield: note_type. - CM-72 A collection note MAY match no mapping rule and remain untyped.
- CM-73 The winning mapping rule is the first rule in
note_type_mappingswhose own match conditions succeed for a note. - CM-74 After a mapping rule wins for a note, later mapping rules MUST NOT be used as fallback for that note.
- CM-75 Note-type mapping is evaluated before schema selection, property-set composition, note-type inheritance, field defaulting, field materialization, relationship derivation, or template comparison.
- CM-76 Mapping rules MAY inspect only the collection-relative note path and the stored frontmatter physically present in the note file.
- CM-77 Mapping rules MUST NOT depend on the effective note-type schema, generated field values, computed field values, or template content.
- CM-80 A
kind: frontmatter_fieldrule matches when the named field is physically present in stored frontmatter. - CM-81 The candidate note type produced by a
kind: frontmatter_fieldrule is the stored value of that field. - CM-83
note_typein akind: fixedrule MUST be a non-empty slug and MUST resolve to exactly one concrete schema file under<metadata_directory>/schemas/. - CM-84 A
kind: fixedrule matches when every condition in itswhenblock matches. - CM-85 The candidate note type produced by a
kind: fixedrule is the rule'snote_type. - CM-88 A
kind: tagrule matches when the note's stored top-leveltagsfield is a YAML sequence containing an entry equal to the rule'stagor a descendant of it under the tag hierarchy rules. - CM-91 A
kind: folderrule matches when the collection-relative note path is underfolder, with the same semantics aswhen.path.under. - CM-92
note_typeinkind: tagandkind: folderrules follows the same rules asnote_typein akind: fixedrule, and the candidate note type each produces is the rule'snote_type. - CM-94
whenMUST be a mapping. - CM-95
whenMUST contain at least one ofpathorfrontmatter. - CM-96 Multiple conditions within one
whenblock are combined with logical AND. - CM-97
when.pathMAY declareequals,under, andregex. - CM-98 Path conditions are evaluated against the collection-relative note path including the
.mdextension and normalized to use forward slashes. - CM-99
when.path.equalsMUST be a non-empty collection-relative path string. - CM-100
when.path.underMUST be a non-empty collection-relative directory string and MUST end with/. - CM-103
when.frontmatteris a mapping from top-level stored frontmatter field name to one predicate mapping. - CM-104 Nested frontmatter field paths are not supported in
note_type_mappingsin this specification version. - CM-105 If a note has no YAML frontmatter, all
when.frontmatterpredicates fail. - CM-106 Each frontmatter predicate MUST be a mapping.
- CM-107 Each frontmatter predicate MUST declare at least one of
exists,equals,regex,contains_any, orcontains_all. - CM-108 If a frontmatter predicate declares more than one operator, all declared operators MUST match.
- CM-109
existsMUST be a boolean. - CM-110
equalscompares the stored field value using exact YAML-value equality. - CM-111
regexMUST be a non-empty string and is valid only when the stored field value is a string. - CM-112
contains_anyandcontains_allMUST be non-empty lists of non-empty strings. - CM-113
contains_anyandcontains_allare valid only when the stored field value is a YAML sequence of strings. - CM-114 If the winning mapping rule yields a candidate note type that does not resolve to exactly one concrete schema file under
<metadata_directory>/schemas/, the note is untyped and a validator MUST reportinvalid_note_type_mapping. - CM-115 Because
note_type_mappingsis ordered, more specific rules SHOULD appear before more general rules.
Portable Queries#
See Portable Queries.
Descriptor and Evaluation Surface#
See Descriptor and Evaluation Surface.
Boolean, Path, and Field Predicates#
See Boolean, Path, and Field Predicates.
Relationship Predicates#
Projection, Ordering, Grouping, and Limiting#
See Projection, Ordering, Grouping, and Limiting.
Datasets#
See Datasets.
Saved Views#
See Saved Views.
Obsidian Bases Interoperability#
See Obsidian Bases Interoperability.
Vocabularies#
typedmark.md can define vocabularies as named, reusable value sets that field definitions reference through allowed_values_from, instead of repeating the same allowed_values list across note types.
Core Profile collections can skip vocabularies and use direct allowed_values until reuse becomes useful.
Example:
vocabularies:
workflow-state:
description: Editorial lifecycle states.
values: [draft, in_review, published]
topic-tags:
description: Controlled tag tree for topics.
values: [area, area/work, reference]
Rules:
- CM-116
vocabulariesMAY be omitted. - CM-117 If present,
vocabulariesMUST be a mapping from vocabulary name to vocabulary definition. - CM-118 A vocabulary name MUST be a non-empty slug.
- CM-119 Each vocabulary definition MUST physically contain
valuesand MAY containdescription; if present,descriptionMUST be a non-empty string. - CM-120
valuesMUST be a non-empty list of unique non-empty strings. - CM-121 A vocabulary referenced from a
tagsfield MUST contain only values that satisfy the tags value grammar defined in Field Definition Reference. - CM-122 Field-level vocabulary references through
allowed_values_fromare defined in Field Definition Reference.
Composition Provenance#
See Composition Provenance for the authoritative contract.
Default Property Sets#
Folder Scopes#
Folder-scoped schema overlays are removed in 0.1.0. Migration uses explicitly
authored concrete types and mappings; no automatic equivalence is assumed.
Mandatory Tags#
Mandatory tags constrain the effective Core tags field without requiring a
duplicate declaration. The policy combines collection and note-type entries.
It does not participate in association, which still uses stored input.
mandatory_tags: [managed]
For a project note type whose effective mandatory_tags is [type/project], a managed note under Projects/ has the effective sequence [managed, knowledge/base, project, type/project]. The repeated managed entry keeps its first position.
Rules:
- CM-225
mandatory_tagsintypedmark.mdMAY be omitted, and when omitted it is equivalent to an empty list. - CM-226 If present,
mandatory_tagsintypedmark.mdMUST be a non-empty ordered list of unique tag strings that satisfy the stored tags-entry grammar in Field Definition Reference. - CM-228 The collection-level mandatory tags for a managed note are the entries in
typedmark.mdmandatory_tags, in declared order. - CM-230 The note-type-level mandatory tags for a managed note are the effective
mandatory_tagsof its resolved concrete schema, as defined in Note Type Schemas. - CM-231 Effective mandatory tags are the collection sequence followed by the effective note-type sequence, deduplicated while retaining first occurrence.
- CM-232 Mandatory-tag equality and duplicate removal MUST use the exact NFC-normalized, case-sensitive string comparison defined in Foundations.
- CM-233 A descendant tag MUST NOT satisfy a mandatory ancestor tag unless that exact ancestor is present in the effective tags value.
- CM-234 Mandatory-tag declarations apply only to managed notes and MUST NOT make an otherwise untyped note managed.
- CM-235 A mandatory-tag policy MUST imply the Core
tagsfield contract without requiring a duplicate field declaration. - CM-237 Every effective mandatory tag MUST satisfy the individual-entry constraints of the managed note's effective
tagsfield, includingallowed_values_fromwhen declared. - CM-238 The number of distinct effective mandatory tags MUST NOT exceed the effective
tagsfield'smaxconstraint when one is declared. - CM-239 Mandatory tags MUST constrain effective tag values without overwriting author-provided values or bypassing compatible field constraints.
Automation Defaults#
See Automation Defaults for the authoritative contract.
Automation Rules#
See Automation Rules.
Property Set Definitions#
Composing Property Sets#
Moved rule references
- CM-12
- CM-123
- CM-124
- CM-125
- CM-126
- CM-127
- CM-128
- CM-129
- CM-130
- CM-131
- CM-132
- CM-133
- CM-134
- CM-135
- CM-136
- CM-137
- CM-138
- CM-139
- CM-140
- CM-141
- CM-142
- CM-143
- CM-144
- CM-145
- CM-146
- CM-147
- CM-148
- CM-149
- CM-150
- CM-151
- CM-152
- CM-153
- CM-154
- CM-155
- CM-156
- CM-157
- CM-158
- CM-159
- CM-160
- CM-161
- CM-162
- CM-163
- CM-164
- CM-165
- CM-166
- CM-167
- CM-168
- CM-169
- CM-170
- CM-171
- CM-172
- CM-173
- CM-174
- CM-175
- CM-176
- CM-177
- CM-178
- CM-179
- CM-180
- CM-181
- CM-182
- CM-183
- CM-184
- CM-185
- CM-186
- CM-187
- CM-188
- CM-189
- CM-190
- CM-191
- CM-192
- CM-193
- CM-194
- CM-195
- CM-196
- CM-197
- CM-198
- CM-199
- CM-240
- CM-241
- CM-242
- CM-243
- CM-244
- CM-245
- CM-246
- CM-247
- CM-248
- CM-249
- CM-250
- CM-251
- CM-252
- CM-253
- CM-254
- CM-255
- CM-256
- CM-257
- CM-258
- CM-259
- CM-260
- CM-261
- CM-262
- CM-263
- CM-264
- CM-265
- CM-266
- CM-267
- CM-268
- CM-269
- CM-270
- CM-271
- CM-272
- CM-273
- CM-274
- CM-275
- CM-276
- CM-277
- CM-278
- CM-279
- CM-280
- CM-281
- CM-282
- CM-283
- CM-284
- CM-285
- CM-286
- CM-287
- CM-288
- CM-289
- CM-290
- CM-291
- CM-292
- CM-293
- CM-294
- CM-295
- CM-296
- CM-297
- CM-298
- CM-299
- CM-300
- CM-301
- CM-302
- CM-303
- CM-304
- CM-305
- CM-306
- CM-307
- CM-308
- CM-309
- CM-310
- CM-311
- CM-312
- CM-313
- CM-314
- CM-315
- CM-316
- CM-317
- CM-318
- CM-319
- CM-320
- CM-321
- CM-322
- CM-323
- CM-324
- CM-325
- CM-326
- CM-327
- CM-328
- CM-329
- CM-330
- CM-331
- CM-332
- CM-333
- CM-334
- CM-335
- CM-336
- CM-337
- CM-338
- CM-339
- CM-340
- CM-341
- CM-342
- CM-343
- CM-344
- CM-345
- CM-346
- CM-347
- CM-348
- CM-349
- CM-350
- CM-351
- CM-352
- CM-353
- CM-354
- CM-355
- CM-356
- CM-357
- CM-358
- CM-359
- CM-360
- CM-361
- CM-362
- CM-363
- CM-364
- CM-365
- CM-366
- CM-367
- CM-368
- CM-369
- CM-370
- CM-371
- CM-372
- CM-373
- CM-374
- CM-375
- CM-376
- CM-377
- CM-378
- CM-379
- CM-380
- CM-381
- CM-382
- CM-383
- CM-384
- CM-385
- CM-386
- CM-387
- CM-388
- CM-389
- CM-390
- CM-391
- CM-392
- CM-393
- CM-394
- CM-395
- CM-396
- CM-397
- CM-398
- CM-399
- CM-400
- CM-401
- CM-402
- CM-403
- CM-405
- CM-407
- CM-408
- CM-409
- CM-410
- CM-411
- CM-412
- CM-413
- CM-414
- CM-415
- CM-416
- CM-417
- CM-418
- CM-419
- CM-420
- CM-421
- CM-422
- CM-423
- CM-424
- CM-425
- CM-426
- CM-427
- CM-428
- CM-429
- CM-430
- CM-431
- CM-432
- CM-433
- CM-434
- CM-435
- CM-436
- CM-437
- CM-438
- CM-439
- CM-440
- CM-441
- CM-442
- CM-443
- CM-444
- CM-445
- CM-446
- CM-447
- CM-448
- CM-449
- CM-450
- CM-451
- CM-452
- CM-453
- CM-454
- CM-455
- CM-456
- CM-457
- CM-458
- CM-459
- CM-460
- CM-461
- CM-462
- CM-463
- CM-464
- CM-465
- CM-466
- CM-467
- CM-468
- CM-469
- CM-470
- CM-471
- CM-472
- CM-473
- CM-474
- CM-475
- CM-476
- CM-477
- CM-478
- CM-479
- CM-480
- CM-481
- CM-482
- CM-483
- CM-484
- CM-485
- CM-486
- CM-487
- CM-488
- CM-489
- CM-490
- CM-491
- CM-492
- CM-493
- CM-494
- CM-495
- CM-496
- CM-497
- CM-498
- CM-499
- CM-500
- CM-501
- CM-502
- CM-503
- CM-504
- CM-505
- CM-506
- CM-507
- CM-508
- CM-509
- CM-510
- CM-511
- CM-512
- CM-513
- CM-514
- CM-515
- CM-516
- CM-517
- CM-518
- CM-519
- CM-520
- CM-521
- CM-522
- CM-523
- CM-524
- CM-525
- CM-526
- CM-527
- CM-528
- CM-529
- CM-530
- CM-531
- CM-532
- CM-533
- CM-540
- CM-541
- CM-543
- CM-57
- CM-59
- CM-65