// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// "Line feed" control character.
const int $lf = 0x0a;

/// "Carriage return" control character.
const int $cr = 0x0d;

/// Character `0`.
const int $0 = 0x30;

/// Character `1`.
const int $1 = 0x31;

/// Character `3`.
const int $3 = 0x33;

/// Character `4`.
const int $4 = 0x34;

/// Character `7`.
const int $7 = 0x37;

/// Character `A`.
const int $A = 0x41;

/// Character `q`.
const int $q = 0x71;

/// Character `a`.
const int $a = 0x61;

/// Character `f`.
const int $f = 0x66;
