Insert @defaults at start of stylesheet (#14427)

Prior to this PR, we'd put all of the `@defaults` (the CSS variables and
stuff) _after_ the `base` rules. This creates an issue when using
`optimizeUniversalDefaults` with CSS that looks like this:

```css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  input {
    @apply shadow;
  }
}
```

…because the default shadow stuff ends up after the base `input` rules,
so the generated styles are like this:

```css
input {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
    0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
    var(--tw-shadow);
}

input {
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
}
```

This means all of the actual shadow values for the input are reset and
the shadow doesn't work.

Fixes https://github.com/tailwindlabs/tailwindcss/issues/14426.

Lots of failing tests right because this changes a ton of stuff, albeit
in a totally inconsequential way. @thecrypticace if you could update
these for me this week that would be a huge help, just banging this fix
out quick while the kids are napping 😴

---------

Co-authored-by: Adam Wathan <4323180+adamwathan@users.noreply.github.com>
Co-authored-by: Jordan Pittman <jordan@cryptica.me>
This commit is contained in:
Adam Wathan 2024-09-17 09:09:08 -04:00 committed by GitHub
parent 818d10ab84
commit fe48ca83d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 376 additions and 339 deletions

View File

@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
- Nothing yet!
### Fixed
- Ensure using `@apply` with utilities that use `@defaults` works with rules defined in the base layer when using `optimizeUniversalDefaults` ([#14427](https://github.com/tailwindlabs/tailwindcss/pull/14427))
## [3.4.11] - 2024-09-11

View File

@ -192,7 +192,7 @@ export default function expandTailwindAtRules(context) {
if (layerNodes.base) {
layerNodes.base.before(
cloneNodes([...baseNodes, ...defaultNodes], layerNodes.base.source, {
cloneNodes([...defaultNodes, ...baseNodes], layerNodes.base.source, {
layer: 'base',
})
)

View File

@ -118,22 +118,20 @@ export default function resolveDefaultsAtRules({ tailwindConfig }) {
}
}
if (flagEnabled(tailwindConfig, 'optimizeUniversalDefaults')) {
if (selectorGroups.size === 0) {
universal.remove()
continue
}
if (selectorGroups.size === 0) {
universal.remove()
continue
}
for (let [, selectors] of selectorGroups) {
let universalRule = postcss.rule({
source: universal.source,
})
for (let [, selectors] of selectorGroups) {
let universalRule = postcss.rule({
source: universal.source,
})
universalRule.selectors = [...selectors]
universalRule.selectors = [...selectors]
universalRule.append(universal.nodes.map((node) => node.clone()))
universal.before(universalRule)
}
universalRule.append(universal.nodes.map((node) => node.clone()))
universal.before(universalRule)
}
universal.remove()

View File

@ -1640,6 +1640,7 @@ it('apply partitioning works with media queries', async () => {
const result = await run(input, config)
expect(result.css).toMatchFormattedCss(css`
${defaults}
html,
body {
--tw-text-opacity: 1;
@ -1654,7 +1655,6 @@ it('apply partitioning works with media queries', async () => {
font-size: 2rem;
}
}
${defaults}
`)
})

View File

@ -460,11 +460,11 @@ it('does not produce duplicate output when seeing variants preceding a wildcard
* {
color: #00f;
}
${defaults}
.combined,
* {
color: red;
}
${defaults}
.underline {
text-decoration-line: underline;
}

View File

@ -70,6 +70,7 @@ test('collapse adjacent rules', () => {
return run(input, config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
@font-face {
font-family: Poppins;
src: url('/fonts/Poppins.woff2') format('woff2'), url('/fonts/Poppins.woff') format('woff');
@ -79,7 +80,6 @@ test('collapse adjacent rules', () => {
src: url('/fonts/ProximaNova.woff2') format('woff2'),
url('/fonts/ProximaNova.woff') format('woff');
}
${defaults}
@font-face {
font-family: Inter;
src: url('/fonts/Inter.woff2') format('woff2'), url('/fonts/Inter.woff') format('woff');

View File

@ -25,6 +25,7 @@ it('should generate the partial selector, if only a partial is used (base layer)
return run(input, config).then((result) => {
return expect(result.css).toMatchFormattedCss(css`
${defaults}
:root {
font-weight: bold;
}
@ -32,7 +33,6 @@ it('should generate the partial selector, if only a partial is used (base layer)
.a {
color: #000;
}
${defaults}
`)
})
})

View File

@ -239,13 +239,13 @@ test('plugins can add base styles with object syntax', () => {
return run('@tailwind base', config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
img {
max-width: 100%;
}
button {
font-family: inherit;
}
${defaults}
`)
})
})
@ -280,13 +280,13 @@ test('plugins can add base styles with raw PostCSS nodes', () => {
return run('@tailwind base', config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
img {
max-width: 100%;
}
button {
font-family: inherit;
}
${defaults}
`)
})
})

View File

@ -33,10 +33,10 @@ test('using @import instead of @tailwind', () => {
return run(input, config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
h1 {
font-size: 32px;
}
${defaults}
.container {
width: 100%;
}

View File

@ -352,6 +352,7 @@ test('it works', () => {
}
}
}
${defaults}
h1 {
font-size: 1.5rem;
font-weight: 700;
@ -362,7 +363,6 @@ test('it works', () => {
div {
background: #654321;
}
${defaults}
.container {
width: 100%;
}

View File

@ -90,12 +90,12 @@ test('comments can be used inside layers without crashing', () => {
return run(input, config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
div {
background-color: #bada55;
}
${defaults}
.important-component,
.important-utility {
.important-utility {
text-align: banana;
}
`)
@ -144,10 +144,10 @@ test('comments can be used inside layers (with important) without crashing', ()
return run(input, config).then((result) => {
expect(result.css).toMatchFormattedCss(css`
${defaults}
div {
background-color: #bada55;
}
${defaults}
.important-component {
text-align: banana;
}
@ -245,6 +245,7 @@ test('layers are grouped and inserted at the matching @tailwind rule', () => {
font-weight: medium;
}
}
${defaults}
body {
margin: 0;
}
@ -254,7 +255,6 @@ test('layers are grouped and inserted at the matching @tailwind rule', () => {
p {
font-weight: normal;
}
${defaults}
.input {
background: #fff;
}

View File

@ -770,6 +770,44 @@ test('no defaults and apply without @tailwind base', () => {
})
})
test('apply to rule in base layer puts defaults first with optimizeUniversalDefaults', () => {
let config = {
experimental: { optimizeUniversalDefaults: true },
content: [{ raw: html`<div class="my-card"></div>` }],
corePlugins: ['boxShadow'],
}
// Optimize universal defaults doesn't work well with isolated modules
// We require you to use @tailwind base to inject the defaults
let input = css`
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
input {
@apply shadow;
}
}
`
return run(input, config).then((result) => {
return expect(result.css).toMatchFormattedCss(css`
input {
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
0 1px 2px -1px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
var(--tw-shadow);
}
`)
})
})
test('optimize universal defaults groups :has separately', () => {
let config = {
experimental: { optimizeUniversalDefaults: true },

View File

@ -83,331 +83,330 @@ test('preflight + base have source maps', async () => {
expect(annotations).toEqual([
'2:4 -> 1:0',
'2:18-4 -> 3:1-2',
'2:18 -> 6:1',
'2:4 -> 8:0',
'2:4-18 -> 11:2-32',
'2:4-18 -> 12:2-25',
'2:4-18 -> 13:2-29',
'2:4-18 -> 14:2-31',
'2:18 -> 15:0',
'2:4 -> 17:0',
'2:4-18 -> 19:2-18',
'2:18 -> 20:0',
'2:4 -> 22:0',
'2:18 -> 30:1',
'2:4 -> 32:0',
'2:4-18 -> 34:2-26',
'2:4-18 -> 35:2-40',
'2:4-18 -> 36:2-26',
'2:4-18 -> 37:2-21',
'2:4-18 -> 38:2-137',
'2:4-18 -> 39:2-39',
'2:4-18 -> 40:2-41',
'2:4-18 -> 41:2-50',
'2:18 -> 42:0',
'2:4 -> 44:0',
'2:18 -> 47:1',
'2:4 -> 49:0',
'2:4-18 -> 50:2-19',
'2:4-18 -> 51:2-30',
'2:18 -> 52:0',
'2:4 -> 54:0',
'2:18 -> 58:1',
'2:4 -> 60:0',
'2:4-18 -> 61:2-19',
'2:4-18 -> 62:2-24',
'2:4-18 -> 63:2-31',
'2:18 -> 64:0',
'2:4 -> 66:0',
'2:18 -> 68:1',
'2:4 -> 70:0',
'2:4-18 -> 71:2-35',
'2:18 -> 72:0',
'2:4 -> 74:0',
'2:18 -> 76:1',
'2:4 -> 78:0',
'2:4-18 -> 84:2-20',
'2:4-18 -> 85:2-22',
'2:18 -> 86:0',
'2:4 -> 88:0',
'2:18 -> 90:1',
'2:4 -> 92:0',
'2:4-18 -> 93:2-16',
'2:4-18 -> 94:2-26',
'2:18 -> 95:0',
'2:4 -> 97:0',
'2:18 -> 99:1',
'2:4 -> 101:0',
'2:4-18 -> 103:2-21',
'2:18 -> 104:0',
'2:4 -> 106:0',
'2:18 -> 111:1',
'2:4 -> 113:0',
'2:4-18 -> 117:2-121',
'2:4-18 -> 118:2-39',
'2:4-18 -> 119:2-41',
'2:4-18 -> 120:2-24',
'2:4-18 -> 2:2-26',
'2:4-18 -> 3:2-26',
'2:4-18 -> 4:2-21',
'2:4-18 -> 5:2-21',
'2:4-18 -> 6:2-16',
'2:4-18 -> 7:2-16',
'2:4-18 -> 8:2-16',
'2:4-18 -> 9:2-17',
'2:4-18 -> 10:2-17',
'2:4-18 -> 11:2-15',
'2:4-18 -> 12:2-15',
'2:4-18 -> 13:2-20',
'2:4-18 -> 14:2-40',
'2:4-18 -> 15:2-32',
'2:4-18 -> 16:2-31',
'2:4-18 -> 17:2-30',
'2:4-18 -> 18:2-17',
'2:4-18 -> 19:2-22',
'2:4-18 -> 20:2-24',
'2:4-18 -> 21:2-25',
'2:4-18 -> 22:2-26',
'2:4-18 -> 23:2-20',
'2:4-18 -> 24:2-29',
'2:4-18 -> 25:2-30',
'2:4-18 -> 26:2-40',
'2:4-18 -> 27:2-36',
'2:4-18 -> 28:2-29',
'2:4-18 -> 29:2-24',
'2:4-18 -> 30:2-32',
'2:4-18 -> 31:2-14',
'2:4-18 -> 32:2-20',
'2:4-18 -> 33:2-18',
'2:4-18 -> 34:2-19',
'2:4-18 -> 35:2-20',
'2:4-18 -> 36:2-16',
'2:4-18 -> 37:2-18',
'2:4-18 -> 38:2-15',
'2:4-18 -> 39:2-21',
'2:4-18 -> 40:2-23',
'2:4-18 -> 41:2-29',
'2:4-18 -> 42:2-27',
'2:4-18 -> 43:2-28',
'2:4-18 -> 44:2-29',
'2:4-18 -> 45:2-25',
'2:4-18 -> 46:2-26',
'2:4-18 -> 47:2-27',
'2:4-18 -> 48:2-24',
'2:4-18 -> 49:2-22',
'2:4-18 -> 50:2-24',
'2:4-18 -> 51:2-23',
'2:4 -> 52:2',
'2:18 -> 53:0',
'2:4 -> 55:0',
'2:4-18 -> 56:2-26',
'2:4-18 -> 57:2-26',
'2:4-18 -> 58:2-21',
'2:4-18 -> 59:2-21',
'2:4-18 -> 60:2-16',
'2:4-18 -> 61:2-16',
'2:4-18 -> 62:2-16',
'2:4-18 -> 63:2-17',
'2:4-18 -> 64:2-17',
'2:4-18 -> 65:2-15',
'2:4-18 -> 66:2-15',
'2:4-18 -> 67:2-20',
'2:4-18 -> 68:2-40',
'2:4-18 -> 69:2-32',
'2:4-18 -> 70:2-31',
'2:4-18 -> 71:2-30',
'2:4-18 -> 72:2-17',
'2:4-18 -> 73:2-22',
'2:4-18 -> 74:2-24',
'2:4-18 -> 75:2-25',
'2:4-18 -> 76:2-26',
'2:4-18 -> 77:2-20',
'2:4-18 -> 78:2-29',
'2:4-18 -> 79:2-30',
'2:4-18 -> 80:2-40',
'2:4-18 -> 81:2-36',
'2:4-18 -> 82:2-29',
'2:4-18 -> 83:2-24',
'2:4-18 -> 84:2-32',
'2:4-18 -> 85:2-14',
'2:4-18 -> 86:2-20',
'2:4-18 -> 87:2-18',
'2:4-18 -> 88:2-19',
'2:4-18 -> 89:2-20',
'2:4-18 -> 90:2-16',
'2:4-18 -> 91:2-18',
'2:4-18 -> 92:2-15',
'2:4-18 -> 93:2-21',
'2:4-18 -> 94:2-23',
'2:4-18 -> 95:2-29',
'2:4-18 -> 96:2-27',
'2:4-18 -> 97:2-28',
'2:4-18 -> 98:2-29',
'2:4-18 -> 99:2-25',
'2:4-18 -> 100:2-26',
'2:4-18 -> 101:2-27',
'2:4-18 -> 102:2-24',
'2:4-18 -> 103:2-22',
'2:4-18 -> 104:2-24',
'2:4-18 -> 105:2-23',
'2:4 -> 106:2',
'2:18-4 -> 107:0-1',
'2:18-4 -> 109:1-2',
'2:18 -> 112:1',
'2:4 -> 114:0',
'2:4-18 -> 117:2-32',
'2:4-18 -> 118:2-25',
'2:4-18 -> 119:2-29',
'2:4-18 -> 120:2-31',
'2:18 -> 121:0',
'2:4 -> 123:0',
'2:18 -> 125:1',
'2:4 -> 127:0',
'2:4-18 -> 128:2-16',
'2:18 -> 129:0',
'2:4 -> 131:0',
'2:18 -> 133:1',
'2:4 -> 135:0',
'2:4-18 -> 137:2-16',
'2:4-18 -> 138:2-16',
'2:4-18 -> 139:2-20',
'2:4-18 -> 125:2-18',
'2:18 -> 126:0',
'2:4 -> 128:0',
'2:18 -> 136:1',
'2:4 -> 138:0',
'2:4-18 -> 140:2-26',
'2:18 -> 141:0',
'2:4 -> 143:0',
'2:4-18 -> 144:2-17',
'2:18 -> 145:0',
'2:4 -> 147:0',
'2:4-18 -> 148:2-13',
'2:18 -> 149:0',
'2:4 -> 151:0',
'2:18 -> 155:1',
'2:4 -> 157:0',
'2:4-18 -> 158:2-24',
'2:4-18 -> 159:2-31',
'2:4-18 -> 160:2-35',
'2:18 -> 161:0',
'2:4 -> 163:0',
'2:18 -> 167:1',
'2:4 -> 169:0',
'2:4-18 -> 174:2-30',
'2:4-18 -> 175:2-40',
'2:4-18 -> 176:2-42',
'2:4-18 -> 177:2-25',
'2:4-18 -> 178:2-30',
'2:4-18 -> 179:2-30',
'2:4-18 -> 180:2-33',
'2:4-18 -> 181:2-24',
'2:4-18 -> 182:2-19',
'2:4-18 -> 183:2-20',
'2:18 -> 184:0',
'2:4 -> 186:0',
'2:18 -> 188:1',
'2:4 -> 190:0',
'2:4-18 -> 192:2-22',
'2:18 -> 193:0',
'2:4 -> 195:0',
'2:18 -> 198:1',
'2:4 -> 200:0',
'2:4-18 -> 204:2-36',
'2:4-18 -> 205:2-39',
'2:4-18 -> 206:2-32',
'2:18 -> 207:0',
'2:4 -> 209:0',
'2:18 -> 211:1',
'2:4 -> 213:0',
'2:4-18 -> 214:2-15',
'2:18 -> 215:0',
'2:4 -> 217:0',
'2:18 -> 219:1',
'2:4 -> 221:0',
'2:4-18 -> 222:2-18',
'2:18 -> 223:0',
'2:4 -> 225:0',
'2:18 -> 227:1',
'2:4-18 -> 141:2-40',
'2:4-18 -> 142:2-26',
'2:4-18 -> 143:2-21',
'2:4-18 -> 144:2-137',
'2:4-18 -> 145:2-39',
'2:4-18 -> 146:2-41',
'2:4-18 -> 147:2-50',
'2:18 -> 148:0',
'2:4 -> 150:0',
'2:18 -> 153:1',
'2:4 -> 155:0',
'2:4-18 -> 156:2-19',
'2:4-18 -> 157:2-30',
'2:18 -> 158:0',
'2:4 -> 160:0',
'2:18 -> 164:1',
'2:4 -> 166:0',
'2:4-18 -> 167:2-19',
'2:4-18 -> 168:2-24',
'2:4-18 -> 169:2-31',
'2:18 -> 170:0',
'2:4 -> 172:0',
'2:18 -> 174:1',
'2:4 -> 176:0',
'2:4-18 -> 177:2-35',
'2:18 -> 178:0',
'2:4 -> 180:0',
'2:18 -> 182:1',
'2:4 -> 184:0',
'2:4-18 -> 190:2-20',
'2:4-18 -> 191:2-22',
'2:18 -> 192:0',
'2:4 -> 194:0',
'2:18 -> 196:1',
'2:4 -> 198:0',
'2:4-18 -> 199:2-16',
'2:4-18 -> 200:2-26',
'2:18 -> 201:0',
'2:4 -> 203:0',
'2:18 -> 205:1',
'2:4 -> 207:0',
'2:4-18 -> 209:2-21',
'2:18 -> 210:0',
'2:4 -> 212:0',
'2:18 -> 217:1',
'2:4 -> 219:0',
'2:4-18 -> 223:2-121',
'2:4-18 -> 224:2-39',
'2:4-18 -> 225:2-41',
'2:4-18 -> 226:2-24',
'2:18 -> 227:0',
'2:4 -> 229:0',
'2:4-18 -> 230:2-26',
'2:18 -> 231:0',
'2:18 -> 231:1',
'2:4 -> 233:0',
'2:18 -> 235:1',
'2:4-18 -> 234:2-16',
'2:18 -> 235:0',
'2:4 -> 237:0',
'2:4-18 -> 239:2-14',
'2:18 -> 240:0',
'2:4 -> 242:0',
'2:18 -> 245:1',
'2:4 -> 247:0',
'2:4-18 -> 248:2-39',
'2:4-18 -> 249:2-30',
'2:18 -> 250:0',
'2:4 -> 252:0',
'2:18 -> 254:1',
'2:4 -> 256:0',
'2:4-18 -> 257:2-26',
'2:18 -> 258:0',
'2:4 -> 260:0',
'2:18 -> 263:1',
'2:4 -> 265:0',
'2:4-18 -> 266:2-36',
'2:4-18 -> 267:2-23',
'2:18 -> 268:0',
'2:4 -> 270:0',
'2:18 -> 272:1',
'2:4 -> 274:0',
'2:4-18 -> 275:2-20',
'2:18 -> 276:0',
'2:4 -> 278:0',
'2:18 -> 280:1',
'2:4 -> 282:0',
'2:4-18 -> 295:2-11',
'2:18 -> 296:0',
'2:4 -> 298:0',
'2:4-18 -> 299:2-11',
'2:4-18 -> 300:2-12',
'2:18 -> 301:0',
'2:4 -> 303:0',
'2:4-18 -> 304:2-12',
'2:18 -> 305:0',
'2:4 -> 307:0',
'2:4-18 -> 310:2-18',
'2:4-18 -> 311:2-11',
'2:4-18 -> 312:2-12',
'2:18 -> 239:1',
'2:4 -> 241:0',
'2:4-18 -> 243:2-16',
'2:4-18 -> 244:2-16',
'2:4-18 -> 245:2-20',
'2:4-18 -> 246:2-26',
'2:18 -> 247:0',
'2:4 -> 249:0',
'2:4-18 -> 250:2-17',
'2:18 -> 251:0',
'2:4 -> 253:0',
'2:4-18 -> 254:2-13',
'2:18 -> 255:0',
'2:4 -> 257:0',
'2:18 -> 261:1',
'2:4 -> 263:0',
'2:4-18 -> 264:2-24',
'2:4-18 -> 265:2-31',
'2:4-18 -> 266:2-35',
'2:18 -> 267:0',
'2:4 -> 269:0',
'2:18 -> 273:1',
'2:4 -> 275:0',
'2:4-18 -> 280:2-30',
'2:4-18 -> 281:2-40',
'2:4-18 -> 282:2-42',
'2:4-18 -> 283:2-25',
'2:4-18 -> 284:2-30',
'2:4-18 -> 285:2-30',
'2:4-18 -> 286:2-33',
'2:4-18 -> 287:2-24',
'2:4-18 -> 288:2-19',
'2:4-18 -> 289:2-20',
'2:18 -> 290:0',
'2:4 -> 292:0',
'2:18 -> 294:1',
'2:4 -> 296:0',
'2:4-18 -> 298:2-22',
'2:18 -> 299:0',
'2:4 -> 301:0',
'2:18 -> 304:1',
'2:4 -> 306:0',
'2:4-18 -> 310:2-36',
'2:4-18 -> 311:2-39',
'2:4-18 -> 312:2-32',
'2:18 -> 313:0',
'2:4 -> 315:0',
'2:18 -> 317:1',
'2:4 -> 318:0',
'2:4-18 -> 319:2-12',
'2:18 -> 320:0',
'2:4 -> 322:0',
'2:18 -> 324:1',
'2:4 -> 326:0',
'2:4-18 -> 327:2-18',
'2:18 -> 328:0',
'2:4 -> 330:0',
'2:4 -> 319:0',
'2:4-18 -> 320:2-15',
'2:18 -> 321:0',
'2:4 -> 323:0',
'2:18 -> 325:1',
'2:4 -> 327:0',
'2:4-18 -> 328:2-18',
'2:18 -> 329:0',
'2:4 -> 331:0',
'2:18 -> 333:1',
'2:4 -> 335:0',
'2:4-18 -> 337:2-20',
'2:4-18 -> 338:2-24',
'2:18 -> 339:0',
'2:4 -> 341:0',
'2:18 -> 343:1',
'2:4 -> 345:0',
'2:4-18 -> 347:2-17',
'2:18 -> 348:0',
'2:4 -> 350:0',
'2:18 -> 352:1',
'2:4-18 -> 336:2-26',
'2:18 -> 337:0',
'2:4 -> 339:0',
'2:18 -> 341:1',
'2:4 -> 343:0',
'2:4-18 -> 345:2-14',
'2:18 -> 346:0',
'2:4 -> 348:0',
'2:18 -> 351:1',
'2:4 -> 353:0',
'2:4-18 -> 354:2-17',
'2:18 -> 355:0',
'2:4 -> 357:0',
'2:18 -> 361:1',
'2:4 -> 363:0',
'2:4-18 -> 371:2-24',
'2:4-18 -> 372:2-32',
'2:18 -> 373:0',
'2:4 -> 375:0',
'2:18 -> 377:1',
'2:4 -> 379:0',
'2:4-18 -> 381:2-17',
'2:4-18 -> 382:2-14',
'2:18 -> 383:0',
'2:4-18 -> 385:0-72',
'2:4 -> 386:0',
'2:4-18 -> 387:2-15',
'2:18 -> 388:0',
'2:4 -> 390:0',
'2:4-18 -> 391:2-26',
'2:4-18 -> 392:2-26',
'2:4-18 -> 393:2-21',
'2:4-18 -> 394:2-21',
'2:4-18 -> 395:2-16',
'2:4-18 -> 396:2-16',
'2:4-18 -> 397:2-16',
'2:4-18 -> 398:2-17',
'2:4-18 -> 399:2-17',
'2:4-18 -> 400:2-15',
'2:4-18 -> 401:2-15',
'2:4-18 -> 402:2-20',
'2:4-18 -> 403:2-40',
'2:4-18 -> 404:2-32',
'2:4-18 -> 405:2-31',
'2:4-18 -> 406:2-30',
'2:4-18 -> 407:2-17',
'2:4-18 -> 408:2-22',
'2:4-18 -> 409:2-24',
'2:4-18 -> 410:2-25',
'2:4-18 -> 411:2-26',
'2:4-18 -> 412:2-20',
'2:4-18 -> 413:2-29',
'2:4-18 -> 414:2-30',
'2:4-18 -> 415:2-40',
'2:4-18 -> 416:2-36',
'2:4-18 -> 417:2-29',
'2:4-18 -> 418:2-24',
'2:4-18 -> 419:2-32',
'2:4-18 -> 420:2-14',
'2:4-18 -> 421:2-20',
'2:4-18 -> 422:2-18',
'2:4-18 -> 423:2-19',
'2:4-18 -> 424:2-20',
'2:4-18 -> 425:2-16',
'2:4-18 -> 426:2-18',
'2:4-18 -> 427:2-15',
'2:4-18 -> 428:2-21',
'2:4-18 -> 429:2-23',
'2:4-18 -> 430:2-29',
'2:4-18 -> 431:2-27',
'2:4-18 -> 432:2-28',
'2:4-18 -> 433:2-29',
'2:4-18 -> 434:2-25',
'2:4-18 -> 435:2-26',
'2:4-18 -> 436:2-27',
'2:4-18 -> 437:2-24',
'2:4-18 -> 438:2-22',
'2:4-18 -> 439:2-24',
'2:4-18 -> 440:2-23',
'2:4 -> 441:2',
'2:18 -> 442:0',
'2:4 -> 444:0',
'2:4-18 -> 445:2-26',
'2:4-18 -> 446:2-26',
'2:4-18 -> 447:2-21',
'2:4-18 -> 448:2-21',
'2:4-18 -> 449:2-16',
'2:4-18 -> 450:2-16',
'2:4-18 -> 451:2-16',
'2:4-18 -> 452:2-17',
'2:4-18 -> 354:2-39',
'2:4-18 -> 355:2-30',
'2:18 -> 356:0',
'2:4 -> 358:0',
'2:18 -> 360:1',
'2:4 -> 362:0',
'2:4-18 -> 363:2-26',
'2:18 -> 364:0',
'2:4 -> 366:0',
'2:18 -> 369:1',
'2:4 -> 371:0',
'2:4-18 -> 372:2-36',
'2:4-18 -> 373:2-23',
'2:18 -> 374:0',
'2:4 -> 376:0',
'2:18 -> 378:1',
'2:4 -> 380:0',
'2:4-18 -> 381:2-20',
'2:18 -> 382:0',
'2:4 -> 384:0',
'2:18 -> 386:1',
'2:4 -> 388:0',
'2:4-18 -> 401:2-11',
'2:18 -> 402:0',
'2:4 -> 404:0',
'2:4-18 -> 405:2-11',
'2:4-18 -> 406:2-12',
'2:18 -> 407:0',
'2:4 -> 409:0',
'2:4-18 -> 410:2-12',
'2:18 -> 411:0',
'2:4 -> 413:0',
'2:4-18 -> 416:2-18',
'2:4-18 -> 417:2-11',
'2:4-18 -> 418:2-12',
'2:18 -> 419:0',
'2:4 -> 421:0',
'2:18 -> 423:1',
'2:4 -> 424:0',
'2:4-18 -> 425:2-12',
'2:18 -> 426:0',
'2:4 -> 428:0',
'2:18 -> 430:1',
'2:4 -> 432:0',
'2:4-18 -> 433:2-18',
'2:18 -> 434:0',
'2:4 -> 436:0',
'2:18 -> 439:1',
'2:4 -> 441:0',
'2:4-18 -> 443:2-20',
'2:4-18 -> 444:2-24',
'2:18 -> 445:0',
'2:4 -> 447:0',
'2:18 -> 449:1',
'2:4 -> 451:0',
'2:4-18 -> 453:2-17',
'2:4-18 -> 454:2-15',
'2:4-18 -> 455:2-15',
'2:4-18 -> 456:2-20',
'2:4-18 -> 457:2-40',
'2:4-18 -> 458:2-32',
'2:4-18 -> 459:2-31',
'2:4-18 -> 460:2-30',
'2:4-18 -> 461:2-17',
'2:4-18 -> 462:2-22',
'2:4-18 -> 463:2-24',
'2:4-18 -> 464:2-25',
'2:4-18 -> 465:2-26',
'2:4-18 -> 466:2-20',
'2:4-18 -> 467:2-29',
'2:4-18 -> 468:2-30',
'2:4-18 -> 469:2-40',
'2:4-18 -> 470:2-36',
'2:4-18 -> 471:2-29',
'2:4-18 -> 472:2-24',
'2:4-18 -> 473:2-32',
'2:4-18 -> 474:2-14',
'2:4-18 -> 475:2-20',
'2:4-18 -> 476:2-18',
'2:4-18 -> 477:2-19',
'2:4-18 -> 478:2-20',
'2:4-18 -> 479:2-16',
'2:4-18 -> 480:2-18',
'2:4-18 -> 481:2-15',
'2:4-18 -> 482:2-21',
'2:4-18 -> 483:2-23',
'2:4-18 -> 484:2-29',
'2:4-18 -> 485:2-27',
'2:4-18 -> 486:2-28',
'2:4-18 -> 487:2-29',
'2:4-18 -> 488:2-25',
'2:4-18 -> 489:2-26',
'2:4-18 -> 490:2-27',
'2:4-18 -> 491:2-24',
'2:4-18 -> 492:2-22',
'2:4-18 -> 493:2-24',
'2:4-18 -> 494:2-23',
'2:4 -> 495:2',
'2:18 -> 496:0',
'2:18 -> 454:0',
'2:4 -> 456:0',
'2:18 -> 458:1',
'2:4 -> 459:0',
'2:4-18 -> 460:2-17',
'2:18 -> 461:0',
'2:4 -> 463:0',
'2:18 -> 467:1',
'2:4 -> 469:0',
'2:4-18 -> 477:2-24',
'2:4-18 -> 478:2-32',
'2:18 -> 479:0',
'2:4 -> 481:0',
'2:18 -> 483:1',
'2:4 -> 485:0',
'2:4-18 -> 487:2-17',
'2:4-18 -> 488:2-14',
'2:18 -> 489:0',
'2:4-18 -> 491:0-72',
'2:4 -> 492:0',
'2:4-18 -> 493:2-15',
'2:18 -> 494:0',
])
})