SEQUENCE {
  [0] {
    SEQUENCE {
      [4] {
        SEQUENCE {
          SET {
            SEQUENCE {
              # countryName
              OBJECT_IDENTIFIER { 2.5.4.6 }
              PrintableString { "US" }
            }
          }
        }
      }
    }
    SEQUENCE {
      [4] {
        SEQUENCE {
          SET {
            SEQUENCE {
              # countryName
              OBJECT_IDENTIFIER { 2.5.4.6 }
              PrintableString { "US" }
            }
          }
          SET {
            SEQUENCE {
              # stateOrProvinceName
              OBJECT_IDENTIFIER { 2.5.4.8 }
              UTF8String { "California" }
            }
          }
          SET {
            SEQUENCE {
              # localityName
              OBJECT_IDENTIFIER { 2.5.4.7 }
              UTF8String { "Mountain View" }
            }
          }
        }
      }
    }
    SEQUENCE {
      [4] {
        SEQUENCE {
          SET {
            SEQUENCE {
              # countryName
              OBJECT_IDENTIFIER { 2.5.4.6 }
              PrintableString { "JP" }
            }
          }
          SET {
            SEQUENCE {
              # stateOrProvinceName
              OBJECT_IDENTIFIER { 2.5.4.8 }
              UTF8String { `e69db1e4baac` }
            }
          }
        }
      }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "permitted.example.com" }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "permitted.example2.com" }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "permitted.example3.com." }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "alsopermitted.example.com" }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "stillnotpermitted.excluded.permitted.example.com" }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `c0a80000ffff0000` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `c0a80520ffffffe0` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `c0a70520ffffffe0` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `0102030405060708090a0b0c00000000ffffffffffffffffffffffff00000000` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `0102030405060708090a0b0c05200000ffffffffffffffffffffffffffe00000` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `0102030405060708090a0b0b05200000ffffffffffffffffffffffffffe00000` }
    }
  }
  [1] {
    SEQUENCE {
      [4] {
        SEQUENCE {
          SET {
            SEQUENCE {
              # countryName
              OBJECT_IDENTIFIER { 2.5.4.6 }
              PrintableString { "US" }
            }
          }
          SET {
            SEQUENCE {
              # stateOrProvinceName
              OBJECT_IDENTIFIER { 2.5.4.8 }
              UTF8String { "California" }
            }
          }
        }
      }
    }
    SEQUENCE {
      [4] {
        SEQUENCE {
          SET {
            SEQUENCE {
              # countryName
              OBJECT_IDENTIFIER { 2.5.4.6 }
              PrintableString { "DE" }
            }
          }
        }
      }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "excluded.permitted.example.com" }
    }
    SEQUENCE {
      [2 PRIMITIVE] { "extraneousexclusion.example.com" }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `c0a80500ffffff00` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `c0a60520ffffffe0` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `0102030405060708090a0b0c05000000ffffffffffffffffffffffffff000000` }
    }
    SEQUENCE {
      [7 PRIMITIVE] { `0102030405060708090a0b0a05200000ffffffffffffffffffffffffffe00000` }
    }
  }
}
-----BEGIN NAME CONSTRAINTS-----
MIICjaCCAaYwEaQPMA0xCzAJBgNVBAYTAlVTMD6kPDA6MQswCQYDVQQGEwJVUzETMBEGA1UECAwK
Q2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzAipCAwHjELMAkGA1UEBhMCSlAxDzAN
BgNVBAgMBuadseS6rDAXghVwZXJtaXR0ZWQuZXhhbXBsZS5jb20wGIIWcGVybWl0dGVkLmV4YW1w
bGUyLmNvbTAZghdwZXJtaXR0ZWQuZXhhbXBsZTMuY29tLjAbghlhbHNvcGVybWl0dGVkLmV4YW1w
bGUuY29tMDKCMHN0aWxsbm90cGVybWl0dGVkLmV4Y2x1ZGVkLnBlcm1pdHRlZC5leGFtcGxlLmNv
bTAKhwjAqAAA//8AADAKhwjAqAUg////4DAKhwjApwUg////4DAihyABAgMEBQYHCAkKCwwAAAAA
////////////////AAAAADAihyABAgMEBQYHCAkKCwwFIAAA/////////////////+AAADAihyAB
AgMEBQYHCAkKCwsFIAAA/////////////////+AAAKGB4DAmpCQwIjELMAkGA1UEBhMCVVMxEzAR
BgNVBAgMCkNhbGlmb3JuaWEwEaQPMA0xCzAJBgNVBAYTAkRFMCCCHmV4Y2x1ZGVkLnBlcm1pdHRl
ZC5leGFtcGxlLmNvbTAhgh9leHRyYW5lb3VzZXhjbHVzaW9uLmV4YW1wbGUuY29tMAqHCMCoBQD/
//8AMAqHCMCmBSD////gMCKHIAECAwQFBgcICQoLDAUAAAD/////////////////AAAAMCKHIAEC
AwQFBgcICQoLCgUgAAD/////////////////4AAA
-----END NAME CONSTRAINTS-----
