constraints for known-multiplier strings


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1233 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/tests/118-per-constraint-OK.asn1 b/tests/118-per-constraint-OK.asn1
new file mode 100644
index 0000000..d7c840b
--- /dev/null
+++ b/tests/118-per-constraint-OK.asn1
@@ -0,0 +1,16 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .118
+
+ModuleConstraintPrecedence
+	{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 118 }
+	DEFINITIONS ::=
+BEGIN
+
+	C ::= IA5String (SIZE(10) ^ FROM("A".."D") | SIZE(20) ^ FROM("D".."F"))
+
+END
diff --git a/tests/118-per-constraint-OK.asn1.-EFprint-constraints b/tests/118-per-constraint-OK.asn1.-EFprint-constraints
new file mode 100644
index 0000000..cd9d33e
--- /dev/null
+++ b/tests/118-per-constraint-OK.asn1.-EFprint-constraints
@@ -0,0 +1,11 @@
+ModuleConstraintPrecedence { iso org(3) dod(6) internet(1) private(4)
+	enterprise(1) spelio(9363) software(1) asn1c(5) test(1) 118 }
+DEFINITIONS ::=
+BEGIN
+
+C ::= IA5String (SIZE(10) ^ FROM("A".."D") | SIZE(20) ^ FROM("D".."F"))
+-- Combined constraints: (SIZE(10) ^ FROM("A".."D") | SIZE(20) ^ FROM("D".."F"))
+-- Practical constraints (C): (MIN..MAX) (SIZE(10 | 20)) (FROM("A".."F"))
+-- PER-visible constraints (C): (MIN..MAX) (SIZE(10 | 20)) (FROM("A".."F"))
+
+END
diff --git a/tests/19-param-OK.asn1.-P b/tests/19-param-OK.asn1.-P
index 24b1313..eedbc1b 100644
--- a/tests/19-param-OK.asn1.-P
+++ b/tests/19-param-OK.asn1.-P
@@ -425,14 +425,14 @@
 /*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
 
 static int permitted_alphabet_table_2[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,	/*             ,-.  */
-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,	/* 0        9       */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* PQRSTUVWXYZ      */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0,	/*             ,-.  */
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,	/* 0        9       */
+ 0, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,	/*  ABCDEFGHIJKLMNO */
+21,22,23,24,25,26,27,28,29,30,31, 0, 0, 0, 0, 0,	/* PQRSTUVWXYZ      */
+ 0,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,	/*  abcdefghijklmno */
+47,48,49,50,51,52,53,54,55,56,57, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
 
 static int check_permitted_alphabet_2(const void *sptr) {
diff --git a/tests/50-constraint-OK.asn1.-P b/tests/50-constraint-OK.asn1.-P
index 3cdcb3b..6792307 100644
--- a/tests/50-constraint-OK.asn1.-P
+++ b/tests/50-constraint-OK.asn1.-P
@@ -1159,13 +1159,13 @@
 /*** <<< CTABLES [Str3] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,	/*  ABC             */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,	/*     def          */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*  ABC             */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     def          */
 };
 
 static int check_permitted_alphabet_1(const void *sptr) {
@@ -2889,14 +2889,14 @@
 /*** <<< CTABLES [Utf8-3] >>> ***/
 
 static int permitted_alphabet_table_1[128] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* PQRSTUVWXYZ      */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,	/*  ABCDEFGHIJKLMNO */
+16,17,18,19,20,21,22,23,24,25,26, 0, 0, 0, 0, 0,	/* PQRSTUVWXYZ      */
+ 0,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,	/*  abcdefghijklmno */
+42,43,44,45,46,47,48,49,50,51,52, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
 
 static int check_permitted_alphabet_1(const void *sptr) {
@@ -3339,14 +3339,14 @@
 /*** <<< CTABLES [VisibleIdentifier] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,	/*     $            */
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,	/* 0123456789       */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,	/* PQRSTUVWXYZ    _ */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     $            */
+ 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0,	/* 0123456789       */
+ 0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,	/*  ABCDEFGHIJKLMNO */
+27,28,29,30,31,32,33,34,35,36,37, 0, 0, 0, 0,38,	/* PQRSTUVWXYZ    _ */
+ 0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,	/*  abcdefghijklmno */
+54,55,56,57,58,59,60,61,62,63,64, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
 
 static int check_permitted_alphabet_1(const void *sptr) {
@@ -4302,14 +4302,14 @@
 /*** <<< CTABLES [Identifier] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,	/*     $            */
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,	/* 0123456789       */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,	/* PQRSTUVWXYZ    _ */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     $            */
+ 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0,	/* 0123456789       */
+ 0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,	/*  ABCDEFGHIJKLMNO */
+27,28,29,30,31,32,33,34,35,36,37, 0, 0, 0, 0,38,	/* PQRSTUVWXYZ    _ */
+ 0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,	/*  abcdefghijklmno */
+54,55,56,57,58,59,60,61,62,63,64, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
 
 static int check_permitted_alphabet_1(const void *sptr) {
diff --git a/tests/50-constraint-OK.asn1.-Pgen-PER b/tests/50-constraint-OK.asn1.-Pgen-PER
index 0112a2c..3e2911d 100644
--- a/tests/50-constraint-OK.asn1.-Pgen-PER
+++ b/tests/50-constraint-OK.asn1.-Pgen-PER
@@ -1277,7 +1277,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_Str2_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
 	{ APC_CONSTRAINED,	 5,  5,  0,  30 }	/* (SIZE(0..30)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Str2 = {
@@ -1329,14 +1329,17 @@
 /*** <<< CTABLES [Str3] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,	/*  ABC             */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,	/*     def          */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*  ABC             */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     def          */
 };
+static int permitted_alphabet_code2value_1[6] = {
+65,66,67,100,101,102,};
+
 
 static int check_permitted_alphabet_1(const void *sptr) {
 	int *table = permitted_alphabet_table_1;
@@ -1469,7 +1472,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_Str3_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  65,  102 }	/* (65..102) */,
 	{ APC_CONSTRAINED,	 5,  5,  10,  27 }	/* (SIZE(10..27)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Str3 = {
@@ -1647,7 +1650,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_Str4_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
 	{ APC_SEMI_CONSTRAINED,	-1, -1,  0,  0 }	/* (SIZE(0..MAX)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Str4 = {
@@ -1825,7 +1828,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_PER_Visible_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  65,  70 }	/* (65..70) */,
 	{ APC_SEMI_CONSTRAINED,	-1, -1,  0,  0 }	/* (SIZE(0..MAX)) */
 };
 asn_TYPE_descriptor_t asn_DEF_PER_Visible = {
@@ -2003,7 +2006,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_PER_Visible_2_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 1,  1,  69,  70 }	/* (69..70) */,
 	{ APC_SEMI_CONSTRAINED,	-1, -1,  0,  0 }	/* (SIZE(0..MAX)) */
 };
 asn_TYPE_descriptor_t asn_DEF_PER_Visible_2 = {
@@ -2181,7 +2184,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_Not_PER_Visible_1_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  65,  70 }	/* (65..70) */,
 	{ APC_SEMI_CONSTRAINED,	-1, -1,  0,  0 }	/* (SIZE(0..MAX)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_1 = {
@@ -2899,7 +2902,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_SIZE_and_FROM_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 2,  2,  65,  68 }	/* (65..68) */,
 	{ APC_CONSTRAINED,	 2,  2,  1,  4 }	/* (SIZE(1..4)) */
 };
 asn_TYPE_descriptor_t asn_DEF_SIZE_and_FROM = {
@@ -3077,7 +3080,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
 static asn_per_constraints_t asn_PER_Neither_SIZE_nor_FROM_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  65,  70 }	/* (65..70) */,
 	{ APC_SEMI_CONSTRAINED,	-1, -1,  0,  0 }	/* (SIZE(0..MAX)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Neither_SIZE_nor_FROM = {
@@ -3301,15 +3304,21 @@
 /*** <<< CTABLES [Utf8-3] >>> ***/
 
 static int permitted_alphabet_table_1[128] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* PQRSTUVWXYZ      */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,	/*  ABCDEFGHIJKLMNO */
+16,17,18,19,20,21,22,23,24,25,26, 0, 0, 0, 0, 0,	/* PQRSTUVWXYZ      */
+ 0,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,	/*  abcdefghijklmno */
+42,43,44,45,46,47,48,49,50,51,52, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
+static int permitted_alphabet_code2value_1[52] = {
+65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
+81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,
+103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,
+119,120,121,122,};
+
 
 static int check_permitted_alphabet_1(const void *sptr) {
 	int *table = permitted_alphabet_table_1;
@@ -3813,15 +3822,22 @@
 /*** <<< CTABLES [VisibleIdentifier] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,	/*     $            */
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,	/* 0123456789       */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,	/* PQRSTUVWXYZ    _ */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     $            */
+ 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0,	/* 0123456789       */
+ 0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,	/*  ABCDEFGHIJKLMNO */
+27,28,29,30,31,32,33,34,35,36,37, 0, 0, 0, 0,38,	/* PQRSTUVWXYZ    _ */
+ 0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,	/*  abcdefghijklmno */
+54,55,56,57,58,59,60,61,62,63,64, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
+static int permitted_alphabet_code2value_1[64] = {
+36,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,
+70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,
+86,87,88,89,90,95,97,98,99,100,101,102,103,104,105,106,
+107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,
+};
+
 
 static int check_permitted_alphabet_1(const void *sptr) {
 	int *table = permitted_alphabet_table_1;
@@ -4882,15 +4898,22 @@
 /*** <<< CTABLES [Identifier] >>> ***/
 
 static int permitted_alphabet_table_1[256] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	/*                  */
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,	/*     $            */
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,	/* 0123456789       */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  ABCDEFGHIJKLMNO */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,	/* PQRSTUVWXYZ    _ */
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,	/*  abcdefghijklmno */
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,	/* pqrstuvwxyz      */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*     $            */
+ 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0,	/* 0123456789       */
+ 0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,	/*  ABCDEFGHIJKLMNO */
+27,28,29,30,31,32,33,34,35,36,37, 0, 0, 0, 0,38,	/* PQRSTUVWXYZ    _ */
+ 0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,	/*  abcdefghijklmno */
+54,55,56,57,58,59,60,61,62,63,64, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
 };
+static int permitted_alphabet_code2value_1[64] = {
+36,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,
+70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,
+86,87,88,89,90,95,97,98,99,100,101,102,103,104,105,106,
+107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,
+};
+
 
 static int check_permitted_alphabet_1(const void *sptr) {
 	int *table = permitted_alphabet_table_1;
@@ -5023,7 +5046,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (26 << 2))
 };
 static asn_per_constraints_t asn_PER_Identifier_constr_1 = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 7,  7,  36,  122 }	/* (36..122) */,
 	{ APC_CONSTRAINED,	 5,  5,  1,  32 }	/* (SIZE(1..32)) */
 };
 asn_TYPE_descriptor_t asn_DEF_Identifier = {