<?xml version='1.0' encoding='utf-8'?>
<lgr xmlns="urn:ietf:params:xml:ns:lgr-1.0">
  <meta>
    <version comment="Second Level LGR for Catalan with Variants">2</version>
    <date>2026-01-27</date>
    <language>ca</language>
    <unicode-version>11.0.0</unicode-version>
  </meta>
  <data>
    <char cp="002D" not-when="hyphen-minus-disallowed" tag="sc:Zyyy" comment="HYPHEN-MINUS; &#x235F;">
      <var cp="00B7" when="surrounded-by-L" type="blocked" comment="Middle dot in Ela Geminada"/>
    </char>
    <char cp="0030"/>
    <char cp="0031"/>
    <char cp="0032"/>
    <char cp="0033"/>
    <char cp="0034"/>
    <char cp="0035"/>
    <char cp="0036"/>
    <char cp="0037"/>
    <char cp="0038"/>
    <char cp="0039"/>
    <char cp="0061">
      <var cp="00E0" type="allocatable"/>
    </char>
    <char cp="0062"/>
    <char cp="0063">
      <var cp="00E7" type="allocatable"/>
    </char>
    <char cp="0064"/>
    <char cp="0065">
      <var cp="00E8" type="allocatable"/>
      <var cp="00E9" type="allocatable"/>
    </char>
    <char cp="0066"/>
    <char cp="0067"/>
    <char cp="0068"/>
    <char cp="0069">
      <var cp="00ED" type="allocatable"/>
      <var cp="00EF" type="allocatable"/>
    </char>
    <char cp="006A"/>
    <char cp="006B"/>
    <char cp="006C"/>
    <char cp="006D"/>
    <char cp="006E"/>
    <char cp="006F">
      <var cp="00F2" type="allocatable"/>
      <var cp="00F3" type="allocatable"/>
    </char>
    <char cp="0070"/>
    <char cp="0071"/>
    <char cp="0072"/>
    <char cp="0073"/>
    <char cp="0074"/>
    <char cp="0075">
      <var cp="00FA" type="allocatable"/>
      <var cp="00FC" type="allocatable"/>
    </char>
    <char cp="0076"/>
    <char cp="0077"/>
    <char cp="0078"/>
    <char cp="0079"/>
    <char cp="007A"/>
    <char cp="00B7" when="surrounded-by-L" tag="sc:Zyyy" comment="Catalan (2) L·L - CONTEXTO for MIDDLE DOT in RFC 5892">
      <var cp="002D" when="surrounded-by-L" type="fallback" comment="Fallback"/>
      <var cp="00B7" when="surrounded-by-L" type="r-original" comment="Middle Dot in the original label"/>
    </char>
    <char cp="00E0">
      <var cp="0061" type="allocatable"/>
    </char>
    <char cp="00E7">
      <var cp="0063" type="allocatable"/>
    </char>
    <char cp="00E8">
      <var cp="0065" type="allocatable"/>
      <var cp="00E9" type="allocatable"/>
    </char>
    <char cp="00E9">
      <var cp="0065" type="allocatable"/>
      <var cp="00E8" type="allocatable"/>
    </char>
    <char cp="00ED">
      <var cp="0069" type="allocatable"/>
      <var cp="00EF" type="allocatable"/>
    </char>
    <char cp="00EF">
      <var cp="0069" type="allocatable"/>
      <var cp="00ED" type="allocatable"/>
    </char>
    <char cp="00F2">
      <var cp="006F" type="allocatable"/>
      <var cp="00F3" type="allocatable"/>
    </char>
    <char cp="00F3">
      <var cp="006F" type="allocatable"/>
      <var cp="00F2" type="allocatable"/>
    </char>
    <char cp="00FA">
      <var cp="0075" type="allocatable"/>
      <var cp="00FC" type="allocatable"/>
    </char>
    <char cp="00FC">
      <var cp="0075" type="allocatable"/>
      <var cp="00FA" type="allocatable"/>
    </char>
  </data>
  <rules>
    <rule name="hyphen-minus-disallowed" ref="320" comment="RFC 5891 restrictions on placement of U+002D HYPHEN-MINUS &#x235F;">
      <choice>
        <rule comment="no leading hyphen">
          <look-behind>
            <start/>
          </look-behind>
          <anchor />
        </rule>
        <rule comment="no trailing hyphen">
          <anchor />
          <look-ahead>
            <end />
          </look-ahead>
        </rule>
        <rule comment="no consecutive hyphens in third and fourth">
          <look-behind>
            <start />
            <any />
            <any />
            <char cp="002D" comment="hyphen-minus" />
          </look-behind>
          <anchor />
        </rule>
      </choice>
    </rule>
    <rule name="surrounded-by-L" comment="code point both follows and precedes L, required context for Ela Geminada &#x235F;">
      <look-behind>
        <char cp="006C" />
      </look-behind>
      <anchor />
      <look-ahead>
        <char cp="006C" />
      </look-ahead>
    </rule>
    <rule name="dot-L-dot" comment="labels with one L sharing two middle dots are invalid &#x235F;">
      <char cp="00B7 006C 00B7" />
    </rule>
    <!--Action elements go here - order defines precedence-->
    <action disp="invalid" match="dot-L-dot" comment="labels with one L sharing two middle dots are invalid" />
    <action disp="blocked" any-variant="blocked" comment="any variant label containing blocked variants is blocked &#x235F;" />
    <action disp="allocatable" any-variant="allocatable fallback" comment="variant labels with any allocatable or fallback variants are allocatable &#x235F;" />
    <action disp="valid" all-variants="r-original" comment="any remaining label containing only original code points is valid  &#x235F;" />
    <action disp="valid" comment="catch all (default action) &#x235F;" />
  </rules>
</lgr>
