;ELC   
;;; Compiled
;;; in Emacs version 26.3
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\207" [require rng-pttrn rng-util rng-dt] 2)
(defvar rng-not-allowed-ipattern nil)
(defvar rng-empty-ipattern nil)
(defvar rng-text-ipattern nil)
(defvar rng-compile-table nil)
#@104 Contains a list of ref patterns currently being compiled.
Used to detect invalid recursive references.
(defvar rng-being-compiled nil (#$ . 633))
(defvar rng-ipattern-table nil)
(defvar rng-last-ipattern-index nil)
#@59 An ipattern representing the current state of validation.
(defvar rng-match-state nil (#$ . 854))
#@18 

(fn NEW-STATE)
(defalias 'rng-update-match-state #[257 "\211=\203\n 	=\207\211\302\207" [rng-not-allowed-ipattern rng-match-state t] 3 (#$ . 958)])
(put 'rng-update-match-state 'byte-optimizer 'byte-compile-inline-expand)
#@75 compiler-macro for inlining `rng--ipattern-type'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-type--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-type (aref cl-x 0)) nil] 9 (#$ . 1191)])
(put 'rng--ipattern-type 'compiler-macro 'rng--ipattern-type--cmacro)
#@185 Access slot "type" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-type #[257 "\211\300H\207" [0] 3 (#$ . 1514)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-type side-effect-free t] 4)
#@76 compiler-macro for inlining `rng--ipattern-index'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-index--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-index (aref cl-x 1)) nil] 9 (#$ . 1871)])
(put 'rng--ipattern-index 'compiler-macro 'rng--ipattern-index--cmacro)
#@186 Access slot "index" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-index #[257 "\211\300H\207" [1] 3 (#$ . 2199)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-index side-effect-free t] 4)
#@81 compiler-macro for inlining `rng--ipattern-name-class'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-name-class--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-name-class (aref cl-x 2)) nil] 9 (#$ . 2559)])
(put 'rng--ipattern-name-class 'compiler-macro 'rng--ipattern-name-class--cmacro)
#@191 Access slot "name-class" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-name-class #[257 "\211\300H\207" [2] 3 (#$ . 2912)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-name-class side-effect-free t] 4)
#@76 compiler-macro for inlining `rng--ipattern-child'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-child--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-child (aref cl-x 3)) nil] 9 (#$ . 3287)])
(put 'rng--ipattern-child 'compiler-macro 'rng--ipattern-child--cmacro)
#@186 Access slot "child" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-child #[257 "\211\300H\207" [3] 3 (#$ . 3615)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-child side-effect-free t] 4)
#@79 compiler-macro for inlining `rng--ipattern-nullable'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-nullable--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-nullable (aref cl-x 4)) nil] 9 (#$ . 3975)])
(put 'rng--ipattern-nullable 'compiler-macro 'rng--ipattern-nullable--cmacro)
#@189 Access slot "nullable" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-nullable #[257 "\211\300H\207" [4] 3 (#$ . 4318)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-nullable side-effect-free t] 4)
#@86 compiler-macro for inlining `rng--ipattern-memo-text-typed'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-text-typed--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-text-typed (aref cl-x 5)) nil] 9 (#$ . 4687)])
(put 'rng--ipattern-memo-text-typed 'compiler-macro 'rng--ipattern-memo-text-typed--cmacro)
#@196 Access slot "memo-text-typed" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-text-typed #[257 "\211\300H\207" [5] 3 (#$ . 5065)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-text-typed side-effect-free t] 4)
#@100 compiler-macro for inlining `rng--ipattern-memo-map-start-tag-open-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-start-tag-open-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-start-tag-open-deriv (aref cl-x 6)) nil] 9 (#$ . 5456)])
(put 'rng--ipattern-memo-map-start-tag-open-deriv 'compiler-macro 'rng--ipattern-memo-map-start-tag-open-deriv--cmacro)
#@210 Access slot "memo-map-start-tag-open-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-start-tag-open-deriv #[257 "\211\300H\207" [6] 3 (#$ . 5904)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-start-tag-open-deriv side-effect-free t] 4)
#@101 compiler-macro for inlining `rng--ipattern-memo-map-start-attribute-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-start-attribute-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-start-attribute-deriv (aref cl-x 7)) nil] 9 (#$ . 6337)])
(put 'rng--ipattern-memo-map-start-attribute-deriv 'compiler-macro 'rng--ipattern-memo-map-start-attribute-deriv--cmacro)
#@211 Access slot "memo-map-start-attribute-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-start-attribute-deriv #[257 "\211\300H\207" [7] 3 (#$ . 6790)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-start-attribute-deriv side-effect-free t] 4)
#@97 compiler-macro for inlining `rng--ipattern-memo-start-tag-close-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-start-tag-close-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-start-tag-close-deriv (aref cl-x 8)) nil] 9 (#$ . 7225)])
(put 'rng--ipattern-memo-start-tag-close-deriv 'compiler-macro 'rng--ipattern-memo-start-tag-close-deriv--cmacro)
#@207 Access slot "memo-start-tag-close-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-start-tag-close-deriv #[257 "\211\300H\207" [8] 3 (#$ . 7658)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-start-tag-close-deriv side-effect-free t] 4)
#@91 compiler-macro for inlining `rng--ipattern-memo-text-only-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-text-only-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-text-only-deriv (aref cl-x 9)) nil] 9 (#$ . 8081)])
(put 'rng--ipattern-memo-text-only-deriv 'compiler-macro 'rng--ipattern-memo-text-only-deriv--cmacro)
#@201 Access slot "memo-text-only-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-text-only-deriv #[257 "\211\300H\207" [9] 3 (#$ . 8484)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-text-only-deriv side-effect-free t] 4)
#@92 compiler-macro for inlining `rng--ipattern-memo-mixed-text-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-mixed-text-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-mixed-text-deriv (aref cl-x 10)) nil] 9 (#$ . 8889)])
(put 'rng--ipattern-memo-mixed-text-deriv 'compiler-macro 'rng--ipattern-memo-mixed-text-deriv--cmacro)
#@202 Access slot "memo-mixed-text-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-mixed-text-deriv #[257 "\211\300H\207" [10] 3 (#$ . 9298)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-mixed-text-deriv side-effect-free t] 4)
#@90 compiler-macro for inlining `rng--ipattern-memo-map-data-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-map-data-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-map-data-deriv (aref cl-x 11)) nil] 9 (#$ . 9707)])
(put 'rng--ipattern-memo-map-data-deriv 'compiler-macro 'rng--ipattern-memo-map-data-deriv--cmacro)
#@200 Access slot "memo-map-data-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-map-data-deriv #[257 "\211\300H\207" [11] 3 (#$ . 10106)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-map-data-deriv side-effect-free t] 4)
#@89 compiler-macro for inlining `rng--ipattern-memo-end-tag-deriv'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'rng--ipattern-memo-end-tag-deriv--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block rng--ipattern-memo-end-tag-deriv (aref cl-x 12)) nil] 9 (#$ . 10510)])
(put 'rng--ipattern-memo-end-tag-deriv 'compiler-macro 'rng--ipattern-memo-end-tag-deriv--cmacro)
#@199 Access slot "memo-end-tag-deriv" of `(rng--ipattern (:constructor nil) (:type vector) (:copier nil) (:constructor rng-make-ipattern (type index name-class child nullable)))' struct CL-X.

(fn CL-X)
(defalias 'rng--ipattern-memo-end-tag-deriv #[257 "\211\300H\207" [12] 3 (#$ . 10905)])
(byte-code "\300\301\302\303#\300\207" [function-put rng--ipattern-memo-end-tag-deriv side-effect-free t] 4)
#@106 compiler-macro for inlining `rng-make-ipattern'.

(fn CL-WHOLE-ARG TYPE INDEX NAME-CLASS CHILD NULLABLE)
(defalias 'rng-make-ipattern--cmacro #[1542 "\300\301\302\303\211\211\n\n\n\n\n&\n\207" [cl--defsubst-expand (type index name-class child nullable) (cl-block rng-make-ipattern (vector type index name-class child nullable 'unknown nil nil nil nil nil nil nil)) nil] 17 (#$ . 11307)])
(put 'rng-make-ipattern 'compiler-macro 'rng-make-ipattern--cmacro)
#@93 Constructor for objects of type `rng--ipattern'.

(fn TYPE INDEX NAME-CLASS CHILD NULLABLE)
(defalias 'rng-make-ipattern #[1285 "\300\301\302\211\211\211\211\211\211&\207" [vector unknown nil] 19 (#$ . 11774)])
(byte-code "\300\301\302\303#\304\305\306\211\307\306\310\311\305\306&	\210\312\313\314\"\210\312\315\314\"\210\312\316\317\"\207" [function-put rng-make-ipattern side-effect-free t cl-struct-define rng--ipattern nil vector ((type) (index) (name-class) (child) (nullable) (memo-text-typed 'unknown) (memo-map-start-tag-open-deriv) (memo-map-start-attribute-deriv) (memo-start-tag-close-deriv) (memo-text-only-deriv) (memo-mixed-text-deriv) (memo-map-data-deriv) (memo-end-tag-deriv)) cl-struct-rng--ipattern-tags defalias rng--ipattern-datatype rng--ipattern-name-class rng--ipattern-after rng--ipattern-value-object rng--ipattern-child] 11)
(defconst rng-memo-map-alist-max 10)
#@67 Return the value associated with KEY in memo-map MM.

(fn KEY MM)
(defalias 'rng-memo-map-get #[514 "\300\"\211\203 \211A\202 \205 @\301!\205 \302\"\262\207" [assoc hash-table-p gethash] 7 (#$ . 12676)])
(put 'rng-memo-map-get 'byte-optimizer 'byte-compile-inline-expand)
#@828 Associate KEY with VALUE in memo-map MM and return the new memo-map.
The new memo-map may or may not be a different object from MM.

Alists are better for small maps.  Hash tables are better for large
maps.  A memo-map therefore starts off as an alist and switches to a
hash table for large memo-maps.  A memo-map is always a list.  An empty
memo-map is represented by nil.  A large memo-map is represented by a
list containing just a hash-table.  A small memo map is represented by
a list whose cdr is an alist and whose car is the number of entries in
the alist.  The complete memo-map can be passed to `assoc' without
problems: assoc ignores any members that are not cons cells.  There is
therefore minimal overhead in successful lookups on small lists
(which is the most common case).

(fn KEY VALUE MM &optional WEAKNESS)
(defalias 'rng-memo-map-add #[1027 "\204\n \301BD\207@\302!\203 \303#\210\202Y \211Y\203P \304\305\306\307\310\311_&A\262\203H @\262\303@A#\210A\262\2021 \211\312B\262\202Y \211TBABB\207" [rng-memo-map-alist-max 1 hash-table-p puthash make-hash-table :test equal :weakness :size 2 nil] 13 (#$ . 12967)])
(defalias 'rng-ipattern-maybe-init #[0 "?\205 \302\303\304\"\305\211\207" [rng-ipattern-table rng-last-ipattern-index make-hash-table :test equal -1] 3])
(defalias 'rng-ipattern-clear #[0 "\203 \302!\210\303\211\207" [rng-ipattern-table rng-last-ipattern-index clrhash -1] 2])
(defalias 'rng-gen-ipattern-index #[0 "T\211\207" [rng-last-ipattern-index] 2])
(put 'rng-gen-ipattern-index 'byte-optimizer 'byte-compile-inline-expand)
#@43 

(fn KEY TYPE NAME-CLASS CHILD NULLABLE)
(defalias 'rng-put-ipattern #[1285 "T\211\302\303\304\211\211\211\211\211\211&\266\205\305	#\210\211\207" [rng-last-ipattern-index rng-ipattern-table vector unknown nil puthash] 24 (#$ . 14573)])
#@12 

(fn KEY)
(defalias 'rng-get-ipattern #[257 "\301\"\207" [rng-ipattern-table gethash] 4 (#$ . 14832)])
(byte-code "\204 \303\304\305\306\211\211\307\306\211\211\211\211\211\211&	\204* \303\310\311\306\211\312\307\306\211\211\211\211\211\211&\n\204? \303\313\314\306\211\312\307\306\211\211\211\211\211\211&\306\207" [rng-not-allowed-ipattern rng-empty-ipattern rng-text-ipattern vector not-allowed -3 nil unknown empty -2 t text -1] 14)
(defconst rng-const-ipatterns (list rng-not-allowed-ipattern rng-empty-ipattern rng-text-ipattern))
#@20 

(fn CHILD AFTER)
(defalias 'rng-intern-after #[514 "=\203 \207\301\302H\302HE\303!\206 \304\301\305%\207" [rng-not-allowed-ipattern after 1 rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 15386)])
#@28 

(fn NAME-CLASS IPATTERN)
(defalias 'rng-intern-attribute #[514 "\211=\203 \207\301\302HE\303!\206 \304\301\305%\207" [rng-not-allowed-ipattern attribute 1 rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 15602)])
#@28 

(fn DT MATCHES-ANYTHING)
(defalias 'rng-intern-data #[514 "\300D\301!\206 \302\300\303%\211\211\304?I\266\211\262\207" [data rng-get-ipattern rng-put-ipattern nil 5] 9 (#$ . 15831)])
#@20 

(fn DT IPATTERN)
(defalias 'rng-intern-data-except #[514 "\300E\301!\206 \302\300\303%\207" [data-except rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 16032)])
#@15 

(fn DT OBJ)
(defalias 'rng-intern-value #[514 "\300E\301!\206 \302\300\303%\207" [value rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 16208)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-one-or-more #[257 "\300!\206 \301\302HCB\303!\206 \304\301\305\211\306H%\262\207" [rng-intern-one-or-more-shortcut one-or-more 1 rng-get-ipattern rng-put-ipattern nil 4] 9 (#$ . 16367)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-one-or-more-shortcut #[257 "\211=\203 \207\211	=\203 	\207\211\302H\303=\203 \207\304\207" [rng-not-allowed-ipattern rng-empty-ipattern 0 one-or-more nil] 3 (#$ . 16606)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-list #[257 "\211=\203 \207\301\302HCB\303!\206 \304\301\305\305%\207" [rng-not-allowed-ipattern list 1 rng-get-ipattern rng-put-ipattern nil] 8 (#$ . 16827)])
#@80 Return an ipattern for the list of group members in IPATTERNS.

(fn IPATTERNS)
(defalias 'rng-intern-group #[257 "\300!\206* \301!\211A\300!\206( \302\303\304\"B\305!\206& \306\302\307@%\262\266\202\207" [rng-intern-group-shortcut rng-normalize-group-list group mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 10 (#$ . 17038)])
#@124 Try to shortcut interning a group list.
If successful, return the interned pattern.  Otherwise return nil.

(fn IPATTERNS)
(defalias 'rng-intern-group-shortcut #[257 "\211\203 \211@=\203 \211A\262\202  \211\203U \211@\211	=\203\" 	\202T A\262\203S \211\203S @\211	=\203? \211\262\302\262\202O \211=\203L A\262\202O \302\262\210\202& \211\207\207" [rng-empty-ipattern rng-not-allowed-ipattern nil] 5 (#$ . 17401)])
#@228 Normalize a list containing members of a group.
Expands nested groups, removes empty members, handles notAllowed.
Returns a pair whose car says whether the list is nullable and whose
cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-group-list #[257 "\302\303\211\203J @\262A\262\203 \211\304H\262\211\305H\306=\203, \307\310H!\244\262\202 \211=\203< C\262\303\262\202 \211	=\204 \211B\262\202 \237B\207" [rng-not-allowed-ipattern rng-empty-ipattern t nil 4 0 group reverse 3] 7 (#$ . 17837)])
#@18 

(fn IPATTERNS)
(defalias 'rng-intern-interleave #[257 "\300!\206* \301!\211A\300!\206( \302\303\304\"B\305!\206& \306\302\307@%\262\266\202\207" [rng-intern-group-shortcut rng-normalize-interleave-list interleave mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 10 (#$ . 18379)])
#@234 Normalize a list containing members of an interleave.
Expands nested groups, removes empty members, handles notAllowed.
Returns a pair whose car says whether the list is nullable and whose
cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-interleave-list #[257 "\302\303\211\203I @\262A\262\203 \211\304H\262\211\305H\306=\203+ \307\310H\"\262\202 \211=\203; C\262\303\262\202 \211	=\204 \211B\262\202 \311\312\"B\207" [rng-not-allowed-ipattern rng-empty-ipattern t nil 4 0 interleave append 3 sort rng-compare-ipattern] 8 (#$ . 18695)])
#@101 Return a choice ipattern for the list of choices in IPATTERNS.
May alter IPATTERNS.

(fn IPATTERNS)
(defalias 'rng-intern-choice #[257 "\300!\206 \301!\211A\300!\206 \302@\"\266\202\207" [rng-intern-choice-shortcut rng-normalize-choice-list rng-intern-choice1] 6 (#$ . 19282)])
#@17 

(fn IPATTERN)
(defalias 'rng-intern-optional #[257 "\211\302H\203 \207\211=\203 	\207\303	\304H\305=\203 \306H\202! CB\307\"\207" [rng-not-allowed-ipattern rng-empty-ipattern 4 rng-intern-choice1 0 choice 3 t] 5 (#$ . 19573)])
#@28 

(fn NORMALIZED NULLABLE)
(defalias 'rng-intern-choice1 #[514 "\300\301\302\"B\303!\206 \304\300\305%\207" [choice mapcar rng--ipattern-index rng-get-ipattern rng-put-ipattern nil] 9 (#$ . 19815)])
#@125 Try to shortcut interning a choice list.
If successful, return the interned pattern.  Otherwise return nil.

(fn IPATTERNS)
(defalias 'rng-intern-choice-shortcut #[257 "\211\203 \211@=\203 \211A\262\202  \211\203> \211@A\262\203< \211\203< @=\2045 @=\2045 \301\262A\262\202 \211\207\207" [rng-not-allowed-ipattern nil] 4 (#$ . 20029)])
#@235 Normalize a list of choices.
Expands nested choices, removes not-allowed members, sorts by index
and removes duplicates.  Return a pair whose car says whether the
list is nullable and whose cdr is the normalized list.

(fn IPATTERNS)
(defalias 'rng-normalize-choice-list #[257 "\301\302\211B\211\302\303\302\203\205 @\262\204 \211\304H\262\211\305H\306=\203; \307\310H\"\262A\262\302\262\241\210\202 \211=\203L A\262\241\210\202 \203{ \211\311HY\203g U\206k \302\211\262\n\202k \211\262\302\262\203{ A\262\241\210\202 \262A\262\202 \241\266\211A\262\203\227 \202\235 \312\313\314\"!B\207" [rng-not-allowed-ipattern t nil -100 4 0 choice append 3 1 rng-uniquify-eq sort rng-compare-ipattern] 12 (#$ . 20388)])
#@14 

(fn P1 P2)
(defalias 'rng-compare-ipattern #[514 "\300H\300HW\207" [1] 5 (#$ . 21154)])
#@14 

(fn NC NM)
(defalias 'rng-name-class-contains #[514 ":\203	 \211\232\207\300\"\207" [rng-name-class-contains1] 5 (#$ . 21252)])
(put 'rng-name-class-contains 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn NC NM)
(defalias 'rng-name-class-contains1 #[514 "\300H\211\301=\203 \302\202\240 \211\303=\203. \304H:\203$ \211\232\266\202\202* \305\"\266\202?\202\240 \211\306=\203= @\304H=\202\240 \211\307=\203g @\304H=\205\240 \310H:\203] \211\232\266\202\202c \305\"\266\202?\202\240 \211\311=\205\240 \304H\312\203\236 @:\203\205 \211\232\266\202\202\213 \305\"\266\202\203\227 \312\262\302\262\202q A\262\202q \262\207" [0 any-name t any-name-except 1 rng-name-class-contains1 ns-name ns-name-except 2 choice nil] 10 (#$ . 21467)])
#@380 Return a list of possible names that nameclass NC can match.

Each possible name should be returned as a (NAMESPACE . LOCAL-NAME)
pair, where NAMESPACE is a symbol or nil and LOCAL-NAME is a string.
NAMESPACE, if nil, matches the absent namespace.  ACCUM is a list of
names which should be appended to the returned list.  The returned
list may contain duplicates.

(fn NC ACCUM)
(defalias 'rng-name-class-possible-names #[514 ":\203	 B\207\300H\301=\2037 \302H\303\2035 @\262\211:\203( \211B\202, \304\"\262A\262\202 \266\207" [0 choice 1 nil rng-name-class-possible-names] 7 (#$ . 22036)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-to-string #[257 "\211\300H\211\301=\203 \302\303H!\304\302\305!!Q\202\253 \211\306=\203) \307\310\311H!\312Q\202\253 \211\313=\203A \314\310\311H!\315\302\303H!\316\260\202\253 \211\317=\203K \320\202\253 \211\321=\203U \322\202\253 \211\323=\203_ \324\202\253 \211\325=\203o \302\303H!\326P\202\253 \211\327=\203\202 \330\331\302\303H\332#\333Q\202\253 \211\334=\203\225 \330\331\302\303H\335#\333Q\202\253 \211\336=\203\250 \330\331\302\303H\337#\333Q\202\253 \340!\207" [0 after rng-ipattern-to-string 3 " </> " rng--ipattern-after element "element " rng-name-class-to-string 2 " {...}" attribute "attribute " " { " " } " empty "empty" text "text" not-allowed "notAllowed" one-or-more "+" choice "(" mapconcat " | " ")" group ", " interleave " & " symbol-name] 8 (#$ . 22649)])
#@11 

(fn NC)
(defalias 'rng-name-class-to-string #[257 "\211:\203 \211A\207\211\300H\211\301=\203 \302\303\304H\305#\202  \306!\307P\207" [0 choice mapconcat rng-name-class-to-string 1 "|" symbol-name "*"] 6 (#$ . 23488)])
(defalias 'rng-compile-maybe-init #[0 "?\205 \301\302\303\"\211\207" [rng-compile-table make-hash-table :test eq] 3])
(defalias 'rng-compile-clear #[0 "\205 \301!\207" [rng-compile-table clrhash] 2])
#@16 

(fn PATTERN)
(defalias 'rng-compile #[257 "\301\"\206 \302@\303NA\"\304#\210\211\262\207" [rng-compile-table gethash apply rng-compile puthash] 6 (#$ . 23924)])
(byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\210\300\310\302\311#\210\300\312\302\313#\210\300\314\302\315#\210\300\316\302\317#\210\300\320\302\321#\210\300\322\302\323#\210\300\324\302\325#\210\300\326\302\327#\210\300\330\302\331#\210\300\332\302\333#\210\300\334\302\335#\210\300\336\302\337#\210\300\340\302\341#\210\300\342\302\343#\207" [put empty rng-compile rng-compile-empty text rng-compile-text not-allowed rng-compile-not-allowed element rng-compile-element attribute rng-compile-attribute choice rng-compile-choice optional rng-compile-optional group rng-compile-group interleave rng-compile-interleave ref rng-compile-ref one-or-more rng-compile-one-or-more zero-or-more rng-compile-zero-or-more mixed rng-compile-mixed data rng-compile-data data-except rng-compile-data-except value rng-compile-value list rng-compile-list] 4)
(defalias 'rng-compile-not-allowed #[0 "\207" [rng-not-allowed-ipattern] 1])
(defalias 'rng-compile-empty #[0 "\207" [rng-empty-ipattern] 1])
(defalias 'rng-compile-text #[0 "\207" [rng-text-ipattern] 1])
#@27 

(fn NAME-CLASS PATTERN)
(defalias 'rng-compile-element #[514 "T\211\301!\302\303\304\305\304\211\211\211\211\211\211&\207" [rng-last-ipattern-index rng-compile-name-class vector element nil unknown] 19 (#$ . 25180)])
#@16 

(fn ELEMENT)
(defalias 'rng-element-get-child #[257 "\211\300H\301!\203 \211\202 \211\300\302!I\262\207" [3 vectorp rng-compile] 7 (#$ . 25413)])
#@27 

(fn NAME-CLASS PATTERN)
(defalias 'rng-compile-attribute #[514 "\300\301!\302!\"\207" [rng-intern-attribute rng-compile-name-class rng-compile] 6 (#$ . 25573)])
#@21 

(fn PATTERN NAME)
(defalias 'rng-compile-ref #[514 ">\203 \301\302\"\210B\303\216\304!)\207" [rng-being-compiled rng-compile-error "Reference loop on symbol %s" #[0 "A\211\207" [rng-being-compiled] 2] rng-compile] 5 (#$ . 25744)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-one-or-more #[257 "\300\301!!\207" [rng-intern-one-or-more rng-compile] 4 (#$ . 25993)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-zero-or-more #[257 "\300\301\302!!!\207" [rng-intern-optional rng-intern-one-or-more rng-compile] 5 (#$ . 26127)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-optional #[257 "\300\301!!\207" [rng-intern-optional rng-compile] 4 (#$ . 26287)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-mixed #[257 "\301\302!CB!\207" [rng-text-ipattern rng-intern-interleave rng-compile] 5 (#$ . 26415)])
#@16 

(fn PATTERN)
(defalias 'rng-compile-list #[257 "\300\301!!\207" [rng-intern-list rng-compile] 4 (#$ . 26563)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-choice #[128 "\300\301\302\"!\207" [rng-intern-choice mapcar rng-compile] 5 (#$ . 26683)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-group #[128 "\300\301\302\"!\207" [rng-intern-group mapcar rng-compile] 5 (#$ . 26826)])
#@23 

(fn &rest PATTERNS)
(defalias 'rng-compile-interleave #[128 "\300\301\302\"!\207" [rng-intern-interleave mapcar rng-compile] 5 (#$ . 26967)])
#@20 

(fn NAME PARAMS)
(defalias 'rng-compile-dt #[514 "\301@\211\302N\206 \301\303\"\262A\")\207" [rng-dt-error-reporter rng-compile-error rng-dt-compile "Unknown datatype library %s"] 6 (#$ . 27118)])
#@20 

(fn NAME PARAMS)
(defalias 'rng-compile-data #[514 "\300\"\301A@\"\207" [rng-compile-dt rng-intern-data] 6 (#$ . 27330)])
#@28 

(fn NAME PARAMS PATTERN)
(defalias 'rng-compile-data-except #[771 "\300\301\"A\302!\"\207" [rng-intern-data-except rng-compile-dt rng-compile] 7 (#$ . 27464)])
#@25 

(fn NAME STR CONTEXT)
(defalias 'rng-compile-value #[771 "\301\302\"A\303D\211\304@AB\"\266\202\211\203  \305\"\202& \306\307#)\207" [rng-dt-namespace-context-getter rng-compile-dt nil identity apply rng-intern-value rng-compile-error "Value %s is not a valid instance of the datatype %s"] 10 (#$ . 27635)])
#@11 

(fn NC)
(defalias 'rng-compile-name-class #[257 "\211@\211\300=\203 A@\202b \211\301=\203 \302\202b \211\303=\203) \304\303\305A@!\"\202b \211\306=\2038 \304\306A@\"\202b \211\307=\203M \304\307A@\305\3108!#\202b \211\311=\203^ \304\311\312\305A\"\"\202b \313\314\"\207" [name any-name [any-name] any-name-except vector rng-compile-name-class ns-name ns-name-except 2 choice mapcar error "Bad name-class type %s"] 8 (#$ . 27963)])
#@42 

(fn FUNCTION PATTERN ACCUM &rest ARGS)
(defalias 'rng-map-element-attribute #[899 "\300\301\302\"\303\211\211@\262\304>\203) \305BB\"\262\3068\262\202s \307=\203N A@\262\310\"\203C \303\262\202s \311\312#\210\202s \313>\203a AB\262\303\262\202s \314>\203p A@\262\202s \303\262\204 \211\203\207 \211@\262\211A\262\202 \203\236 @\262A\262\211@\262\211A\262\202 \207" [make-hash-table :test eq nil (element attribute) apply 2 ref gethash puthash t (choice group interleave) (one-or-more zero-or-more optional mixed)] 13 (#$ . 28412)])
#@27 

(fn PATTERN ACCUM NAME)
(defalias 'rng-find-element-content-pattern #[771 "@\300=\203 \301A@\"\203 \302\3038!B\207\207" [element rng-search-name rng-compile 2] 6 (#$ . 29006)])
#@16 

(fn NAME NC)
(defalias 'rng-search-name #[514 "\211@\211\300=\203 A@\232\202< \211\301=\203; A\302\2036 \211\2046 \303@\"\203/ \304\262\202 A\262\202 \262\202< \302\207" [name choice nil rng-search-name t] 8 (#$ . 29199)])
#@17 

(fn NC ACCUM)
(defalias 'rng-find-name-class-uris #[514 "@\211\300=\203 \301A@@\"\202A \211\302>\203! \301A@\"\202A \211\303=\203@ A\211\203; \304@\"\262\211A\262\202) \210\202A \207" [name rng-accum-namespace-uri (ns-name ns-name-except) choice rng-find-name-class-uris] 7 (#$ . 29443)])
#@17 

(fn NS ACCUM)
(defalias 'rng-accum-namespace-uri #[514 "\203 >\204 B\207\207" [] 4 (#$ . 29753)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-text-typed-p #[257 "\211\300H\211\301=\203 \211\300\302!I\262\202 \211\207" [5 unknown rng-ipattern-compute-text-typed-p] 7 (#$ . 29866)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-compute-text-typed-p #[257 "\211\300H\211\301=\203. \302H\303\203) \211\204) \304@!\203\" \305\262\202 A\262\202 \262\202v \211\306=\203a \302H\303\211\203[ \204[ @\262\304!\203N \305\262\211\307H\205V A\262\2029 \266\203\202v \211\310=\203o \304\302H!\202v \211\311>\205v \305\207" [0 choice 3 nil rng-ipattern-text-typed-p t group 4 after (value list data data-except)] 7 (#$ . 30056)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-start-tag-open-deriv #[514 "\211\300H\301\"\211\203 \211A\202# \205# @\302!\205! \303\"\262\266\203\2060 \304\305\"#\207" [6 assoc hash-table-p gethash rng-ipattern-memo-start-tag-open-deriv rng-compute-start-tag-open-deriv] 9 (#$ . 30511)])
#@26 

(fn IPATTERN NM DERIV)
(defalias 'rng-ipattern-memo-start-tag-open-deriv #[771 ">\204 \211\301\302\301H#I\266\207" [rng-const-ipatterns 6 rng-memo-map-add] 11 (#$ . 30807)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-compute-start-tag-open-deriv #[514 "\302H\211\303=\203 \304\305\306\307\310\311!\312\"\313\314%\"\202\310 \211\315=\203I \316H:\2033 \211\232\266\202\2029 \317\"\266\202\203E \320\321!\"\202\310 	\202\310 \211\322=\203c \323\305\306\307\310\311!\324\"\313\314%\325#\202\310 \211\326=\203} \327\305\306\307\310\311!\330\"\313\314%\331#\202\310 \211\332=\203\242 \333!\334\305\306\335\310\311!\336\"\313\314%\337\340H\"\"\262\202\310 \211\341=\203\307 \342!\334\305\306\307\310\311!\343\"\313\314%\337\340H\"\"\262\202\310 	\207" [rng-empty-ipattern rng-not-allowed-ipattern 0 choice rng-transform-choice make-byte-code 257 "\301\300\"\207" vconcat vector [rng-start-tag-open-deriv] 4 "\n\n(fn P)" element 2 rng-name-class-contains1 rng-intern-after rng-element-get-child group rng-transform-group-nullable [rng-start-tag-open-deriv] rng-cons-group-after interleave rng-transform-interleave-single [rng-start-tag-open-deriv] rng-subst-interleave-after one-or-more rng-intern-optional rng-apply-after "\301\300D!\207" [rng-intern-group] rng-start-tag-open-deriv 3 after rng--ipattern-after [rng-intern-after]] 11 (#$ . 30998)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-start-attribute-deriv #[514 "\211\300H\301\"\211\203 \211A\202# \205# @\302!\205! \303\"\262\266\203\2060 \304\305\"#\207" [7 assoc hash-table-p gethash rng-ipattern-memo-start-attribute-deriv rng-compute-start-attribute-deriv] 9 (#$ . 32200)])
#@26 

(fn IPATTERN NM DERIV)
(defalias 'rng-ipattern-memo-start-attribute-deriv #[771 ">\204 \211\301\302\301H#I\266\207" [rng-const-ipatterns 7 rng-memo-map-add] 11 (#$ . 32499)])
#@20 

(fn IPATTERN NM)
(defalias 'rng-compute-start-attribute-deriv #[514 "\302H\211\303=\203 \304\305\306\307\310\311!\312\"\313\314%\"\202\310 \211\315=\203I \316H:\2033 \211\232\266\202\2029 \317\"\266\202\203E \320\321H\"\202\310 	\202\310 \211\322=\203c \323\305\306\307\310\311!\324\"\313\314%\325#\202\310 \211\326=\203} \323\305\306\307\310\311!\327\"\313\314%\330#\202\310 \211\331=\203\242 \332!\333\305\306\334\310\311!\335\"\313\314%\336\321H\"\"\262\202\310 \211\337=\203\307 \340!\333\305\306\307\310\311!\341\"\313\314%\336\321H\"\"\262\202\310 	\207" [rng-empty-ipattern rng-not-allowed-ipattern 0 choice rng-transform-choice make-byte-code 257 "\301\300\"\207" vconcat vector [rng-start-attribute-deriv] 4 "\n\n(fn P)" attribute 2 rng-name-class-contains1 rng-intern-after 3 group rng-transform-interleave-single [rng-start-attribute-deriv] rng-subst-group-after interleave [rng-start-attribute-deriv] rng-subst-interleave-after one-or-more rng-intern-optional rng-apply-after "\301\300D!\207" [rng-intern-group] rng-start-attribute-deriv after rng--ipattern-after [rng-intern-after]] 11 (#$ . 32691)])
#@12 

(fn X Y)
(defalias 'rng-cons-group-after #[514 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [rng-apply-after make-byte-code 257 "\301\300B!\207" vconcat vector [rng-intern-group] 4 "\n\n(fn P)"] 9 (#$ . 33850)])
#@21 

(fn NEW OLD LIST)
(defalias 'rng-subst-group-after #[771 "\300\301\302\303\304\305\"\306\"\307\310%\"\207" [rng-apply-after make-byte-code 257 "\302\303\300\301#!\207" vconcat vector [rng-intern-group rng-substq] 6 "\n\n(fn P)"] 11 (#$ . 34078)])
#@21 

(fn NEW OLD LIST)
(defalias 'rng-subst-interleave-after #[771 "\300\301\302\303\304\305\"\306\"\307\310%\"\207" [rng-apply-after make-byte-code 257 "\302\303\300\301#!\207" vconcat vector [rng-intern-interleave rng-substq] 6 "\n\n(fn P)"] 11 (#$ . 34339)])
#@19 

(fn F IPATTERN)
(defalias 'rng-apply-after #[514 "\211\301H\211\302=\203 \303\304H\305!!\"\2020 \211\306=\203/ \307\310\311\312\313\314!\315\"\316\317%\"\2020 \207" [rng-not-allowed-ipattern 0 after rng-intern-after 3 rng--ipattern-after choice rng-transform-choice make-byte-code 257 "\301\300\"\207" vconcat vector [rng-apply-after] 4 "\n\n(fn X)"] 10 (#$ . 34610)])
#@17 

(fn IPATTERN)
(defalias 'rng-start-tag-close-deriv #[257 "\211\300H\206 \211\211\300\301!I\262\207" [8 rng-compute-start-tag-close-deriv] 6 (#$ . 34996)])
(defconst rng-transform-map '((choice . rng-transform-choice) (group . rng-transform-group) (interleave . rng-transform-interleave) (one-or-more . rng-transform-one-or-more) (after . rng-transform-after-child)))
#@17 

(fn IPATTERN)
(defalias 'rng-compute-start-tag-close-deriv #[257 "\211\302H\211\303=\203 \202 \211	\236\211\203 \211A\304\"\202 \262\207" [rng-not-allowed-ipattern rng-transform-map 0 attribute rng-start-tag-close-deriv] 6 (#$ . 35374)])
#@17 

(fn IPATTERN)
(defalias 'rng-ignore-attributes-deriv #[257 "\211\302H\211\303=\203 \202 \211	\236\211\203 \211A\304\"\202 \262\207" [rng-empty-ipattern rng-transform-map 0 attribute rng-ignore-attributes-deriv] 6 (#$ . 35628)])
#@17 

(fn IPATTERN)
(defalias 'rng-text-only-deriv #[257 "\211\300H\206 \211\211\300\301!I\262\207" [9 rng-compute-text-only-deriv] 6 (#$ . 35872)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-text-only-deriv #[257 "\211\301H\211\302=\203 \202 \211\303\236\211\203 \211A\304\"\202 \262\207" [rng-not-allowed-ipattern 0 element ((choice . rng-transform-choice) (group . rng-transform-group) (interleave . rng-transform-interleave) (one-or-more . rng-transform-one-or-more) (after . rng-transform-after-child)) rng-text-only-deriv] 6 (#$ . 36026)])
#@17 

(fn IPATTERN)
(defalias 'rng-mixed-text-deriv #[257 "\211\300H\206 \211\211\300\301!I\262\207" [10 rng-compute-mixed-text-deriv] 6 (#$ . 36433)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-mixed-text-deriv #[257 "\211\301H\211\302=\203 \202h \211\303=\203 \304\305\"\202h \211\306=\203' \307\305\"\202h \211\310=\203; \311\305\312H!\313!D!\202h \211\314=\203I \315\305\316#\202h \211\317=\203W \320\305\321#\202h \211\322=\203g \323H\204g \202h \207" [rng-not-allowed-ipattern 0 text after rng-transform-after-child rng-mixed-text-deriv choice rng-transform-choice one-or-more rng-intern-group 3 rng-intern-optional group rng-transform-group-nullable #[514 "\300B!\207" [rng-intern-group] 5 "\n\n(fn X Y)"] interleave rng-transform-interleave-single #[771 "\300\301#!\207" [rng-intern-interleave rng-substq] 8 "\n\n(fn NEW OLD LIST)"] data 5] 6 (#$ . 36590)])
#@17 

(fn IPATTERN)
(defalias 'rng-end-tag-deriv #[257 "\211\300H\206 \211\211\300\301!I\262\207" [12 rng-compute-end-tag-deriv] 6 (#$ . 37323)])
#@17 

(fn IPATTERN)
(defalias 'rng-compute-end-tag-deriv #[257 "\211\301H\211\302=\203 \303\304\305\306H\"!\202- \211\307=\203, \306H\310H\203( \311!\202- \202- \207" [rng-not-allowed-ipattern 0 choice rng-intern-choice mapcar rng-end-tag-deriv 3 after 4 rng--ipattern-after] 7 (#$ . 37474)])
#@23 

(fn IPATTERN VALUE)
(defalias 'rng-data-deriv #[514 "\211\301H\302\"\211\203 \211A\202# \205# @\303!\205! \304\"\262\266\203\206\232 \211\305 B\301H\302\"\211\203< \211A\202N \205N @\303!\205L \304\"\262\266\203\203\202 \211\306@A\"B\301H\302\"\211\203k \211A\202} \205} @\303!\205{ \304\"\262\266\203\206\232 \307\310!\311BB\312\"\313\314H$)\266\202\207" [rng-dt-namespace-context-getter 11 assoc hash-table-p gethash rng-namespace-context-get-no-trace apply vector nil rng-namespace-context-tracer rng-compute-data-deriv rng-ipattern-memo-data-deriv 0] 9 (#$ . 37775)])
#@31 

(fn USED GETTER &rest ARGS)
(defalias 'rng-namespace-context-tracer #[642 "\300\"\301I\210\211\207" [apply 0] 7 (#$ . 38394)])
(defalias 'rng-namespace-context-get-no-trace #[0 "\211\203 \211@\301=\203 \211AA\262\202 \302@A\"\207" [rng-dt-namespace-context-getter rng-namespace-context-tracer apply] 4])
#@56 Don't memoize data-derivs for values longer than this.
(defconst rng-memo-data-deriv-max-length 80 (#$ . 38717))
#@37 

(fn IPATTERN VALUE CONTEXT DERIV)
(defalias 'rng-ipattern-memo-data-deriv #[1028 ">\204) G	V\204) \211\302\303\203 B\202 	\302H\304$I\266\207" [rng-const-ipatterns rng-memo-data-deriv-max-length 11 rng-memo-map-add t] 12 (#$ . 38836)])
#@23 

(fn IPATTERN VALUE)
(defalias 'rng-compute-data-deriv #[514 "\302H\211\303=\203 \202&\211\304=\203& \305\306\307\310\311\312!\313\"\314\315%\"\202&\211\316=\203@ \317\306\307\310\311\312!\320\"\314\315%\321#\202&\211\322=\203U \323\324\325H\"\326!D!\202&\211\327=\203\202 \325H\324\"\211\314H\262\204v \211\314H\203| \330!\203| \331!\202} \262\202&\211\332=\203\241 \333!\334@AB\"\266\202\203\235 	\202&\202&\211\335=\203\316 \333!\334@AB\"\266\202\203\312 \324\325H\"\211\314H\262\204\312 	\202&\202&\211\336=\203\361 \333!\334@AB\"\266\202\337!\232\203\355 	\202&\202&\211\340=\203%\341!\325H\203\211=\204\324@\"\262A\262\202\375 \211\314H\203	\202 \266\202\202&\207" [rng-not-allowed-ipattern rng-empty-ipattern 0 text choice rng-transform-choice make-byte-code 257 "\301\300\"\207" vconcat vector [rng-data-deriv] 4 "\n\n(fn P)" group rng-transform-group-nullable [rng-data-deriv] #[514 "\300B!\207" [rng-intern-group] 5 "\n\n(fn X Y)"] one-or-more rng-intern-group rng-data-deriv 3 rng-intern-optional after rng-blank-p rng--ipattern-after data rng--ipattern-datatype apply data-except value rng--ipattern-value-object list split-string] 10 (#$ . 39096)])
#@28 

(fn F IPATTERN INTERNER)
(defalias 'rng-transform-multi #[771 "\300H\301\"\302\"\203 \202 !\207" [3 mapcar rng-members-eq] 8 (#$ . 40341)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-choice #[514 "\300\301#\207" [rng-transform-multi rng-intern-choice] 6 (#$ . 40499)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-group #[514 "\300\301#\207" [rng-transform-multi rng-intern-group] 6 (#$ . 40636)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-interleave #[514 "\300\301#\207" [rng-transform-multi rng-intern-interleave] 6 (#$ . 40771)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-one-or-more #[514 "\211\300H!=\203 \202 \301!\207" [3 rng-intern-one-or-more] 6 (#$ . 40916)])
#@19 

(fn F IPATTERN)
(defalias 'rng-transform-after-child #[514 "\211\300H!=\203 \202 \301\302!\"\207" [3 rng-intern-after rng--ipattern-after] 8 (#$ . 41068)])
#@27 

(fn F SUBSTER IPATTERN)
(defalias 'rng-transform-interleave-single #[771 "\211\301H\302\203- \211\204- @!\211=\203 A\262\202( \301H#\262\266\202 \211\2062 \207" [rng-not-allowed-ipattern 3 nil] 12 (#$ . 41241)])
#@257 Given a group x1,...,xn,y1,...,yn where the xs are all
nullable and y1 isn't, return a choice
  (conser f(x1) x2,...,xm,y1,...,yn)
  |(conser f(x2) x3,...,xm,y1,...,yn)
  |...
  |(conser f(xm) y1,...,yn)
  |(conser f(y1) y2,...,yn)

(fn F CONSER IPATTERN)
(defalias 'rng-transform-group-nullable #[771 "\300\301\302H#!\207" [rng-intern-choice rng-transform-group-nullable-gen-choices 3] 9 (#$ . 41479)])
#@25 

(fn F CONSER MEMBERS)
(defalias 'rng-transform-group-nullable-gen-choices #[771 "\211@A\211\203 !\"\300H\205 \301#B\202# !C\207" [4 rng-transform-group-nullable-gen-choices] 10 (#$ . 41892)])
#@20 

(fn LIST1 LIST2)
(defalias 'rng-members-eq #[514 "\203 \211\203 @@=\203 A\262\211A\262\202  ?\205\" \211?\207" [] 4 (#$ . 42107)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-after #[257 "\211\300H\211\301=\203 \302\303\"\202* \211\304=\203 \305!\202* \211\306=\203& \202* \307\310\"\207" [0 choice rng-transform-choice rng-ipattern-after after rng--ipattern-after not-allowed error "Internal error in rng-ipattern-after: unexpected type %s"] 5 (#$ . 42256)])
#@17 

(fn IPATTERN)
(defalias 'rng-unknown-start-tag-open-deriv #[257 "\301\302!\"\207" [rng-any-content rng-intern-after rng-compile] 4 (#$ . 42593)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-optionalize-elements #[257 "\211\301H\211\236\211\203 \211A\302\"\202 \303=\203 \304!\202 \207" [rng-transform-map 0 rng-ipattern-optionalize-elements element rng-intern-optional] 6 (#$ . 42749)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-empty-before-p #[257 "\211\301H\211\302=\203 \303H=\202: \211\304=\2039 \303H\305\2034 \211\2034 \306@!\204- \307\262A\262\202 \262\202: \307\207" [rng-empty-ipattern 0 after 3 choice t rng-ipattern-empty-before-p nil] 6 (#$ . 43001)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-start-tags #[514 "\301H\211\302=\203 \303\304H\"\202\204 \211\305>\2032 \304H\211\203- \303@\"\262\211A\262\202 \210\202\204 \211\306=\203Y \304H\211\203T \303@\"\262\211@\307H\205O \211A\262\202; \210\202\204 \211\310=\203t \311!=\203k \202\204 \312\313H\"\202\204 \211\314=\203\203 \303\304H\"\202\204 \207" [rng-not-allowed-ipattern 0 after rng-ipattern-possible-start-tags 3 (choice interleave) group 4 element rng-element-get-child rng-name-class-possible-names 2 one-or-more] 7 (#$ . 43294)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-start-tag-possible-p #[257 "\211\301H\211\302>\203 \303\304H!\202p \211\305>\2035 \304H\306\2030 \211\2040 \303@!\262A\262\202 \262\202p \211\307=\203` \304H\306\203[ \211\204[ \303@!\262@\310H\205V A\262\202? \262\202p \211\311=\203o \312!=?\202p \306\207" [rng-not-allowed-ipattern 0 (after one-or-more) rng-ipattern-start-tag-possible-p 3 (choice interleave) nil group 4 element rng-element-get-child] 6 (#$ . 43879)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-attributes #[514 "\300H\211\301=\203 \302\303H\"\202Q \211\304>\2032 \303H\211\203- \302@\"\262\211A\262\202 \210\202Q \211\305=\203A \306\307H\"\202Q \211\310=\203P \302\303H\"\202Q \207" [0 after rng-ipattern-possible-attributes 3 (choice interleave group) attribute rng-name-class-possible-names 2 one-or-more] 7 (#$ . 44367)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-possible-values #[514 "\300H\211\301=\203 \302\303H\"\202M \211\304=\2032 \303H\211\203- \302@\"\262\211A\262\202 \210\202M \211\305=\203L \306!\211;\203F \211B\202G \262\202M \207" [0 after rng-ipattern-possible-values 3 choice value rng--ipattern-value-object] 7 (#$ . 44775)])
#@17 

(fn IPATTERN)
(defalias 'rng-ipattern-required-element #[257 "\211\301H\211\302>\203 \303\304H!\202\307 \211\305=\203> \304H\303@!\211\2039 A\211\262\2039 \211\303@!\232\204 \306\262\202 \262\202\307 \211\307=\203f \304H\306\303@!\211\262\204a @\310H\203a A\211\262\204H \262\202\307 \211\311=\203\255 \304H\306\203\250 \303@!\211\204\203 A\262\202\244 \204\221 \211\262A\262\202\244 \232\203\236 A\262\202\244 \306\262\306\262\210\202p \262\202\307 \211\312=\205\307 \313H\211:\205\305 \314!=?\205\305 \211\262\207" [rng-not-allowed-ipattern 0 (after one-or-more) rng-ipattern-required-element 3 choice nil group 4 interleave element 2 rng-element-get-child] 7 (#$ . 45123)])
#@23 

(fn IPATTERN ACCUM)
(defalias 'rng-ipattern-required-attributes #[514 "\300H\211\301=\203 \302\303H\"\202\255 \211\304>\2032 \303H\211\203- \302@\"\262\211A\262\202 \210\202\255 \211\305=\203\203 \303H\306\211\211\302@\306\"\262\203y A\211\262\203y \302@\306\"\262\306\262\203s @\235\203l @B\262A\262\202[ \211\262\202E \307\"\266\204\202\255 \211\310=\203\235 \311H\211:\203\227 \211B\202\230 \262\202\255 \211\312=\203\254 \302\303H\"\202\255 \207" [0 after rng-ipattern-required-attributes 3 (interleave group) choice nil append attribute 2 one-or-more] 10 (#$ . 45846)])
#@19 

(fn &rest ARGS)
(defalias 'rng-compile-error #[128 "\300\301\302\303\"C\"\207" [signal rng-compile-error apply format-message] 6 (#$ . 46468)])
(define-error 'rng-compile-error "Incorrect schema" 'rng-error)
(defalias 'rng-match-state #[0 "\207" [rng-match-state] 1])
(put 'rng-match-state 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn STATE)
(defalias 'rng-set-match-state #[257 "\211\211\207" [rng-match-state] 3 (#$ . 46813)])
(put 'rng-set-match-state 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn STATE)
(defalias 'rng-match-state-equal #[257 "\211=\207" [rng-match-state] 3 (#$ . 46991)])
(put 'rng-match-state-equal 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'rng-schema-changed #[0 "\300 \210\301 \207" [rng-ipattern-clear rng-compile-clear] 1])
(defalias 'rng-match-init-buffer #[0 "\300\301!\210\300\302!\210\300\303!\207" [make-local-variable rng-compile-table rng-ipattern-table rng-last-ipattern-index] 2])
(defalias 'rng-match-start-document #[0 "\302 \210\303 \210\304\305\306\307\310$\210\311!\211\207" [rng-current-schema rng-match-state rng-ipattern-maybe-init rng-compile-maybe-init add-hook rng-schema-change-hook rng-schema-changed nil t rng-compile] 5])
#@13 

(fn NAME)
(defalias 'rng-match-start-tag-open #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-tag-open-deriv t] 4 (#$ . 47692)])
#@13 

(fn NAME)
(defalias 'rng-match-attribute-name #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-attribute-deriv t] 4 (#$ . 47882)])
#@14 

(fn VALUE)
(defalias 'rng-match-attribute-value #[257 "\302\"\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-data-deriv t] 4 (#$ . 48073)])
#@14 

(fn VALUE)
(defalias 'rng-match-element-value #[257 "\302!\211	=\203 	=\262\202 \211\303\262\205, \304\"\211	=\203' 	=\207\211\303\262\207" [rng-match-state rng-not-allowed-ipattern rng-text-only-deriv t rng-data-deriv] 4 (#$ . 48255)])
(defalias 'rng-match-start-tag-close #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-start-tag-close-deriv t] 3])
(defalias 'rng-match-mixed-text #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-mixed-text-deriv t] 3])
(defalias 'rng-match-end-tag #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-end-tag-deriv t] 3])
(defalias 'rng-match-after #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ipattern-after t] 3])
#@13 

(fn NAME)
(defalias 'rng-match-out-of-context-start-tag-open #[257 "\303\304\305$\211\203 \306!\202 	\307\n\"\211	=\203# \n	=\262\202( \211\310\262\207" [rng-current-schema rng-not-allowed-ipattern rng-match-state rng-map-element-attribute rng-find-element-content-pattern nil rng-intern-choice rng-intern-after t] 6 (#$ . 49097)])
#@144 Return a list of all the namespace URIs used in the current schema.
The absent URI is not included, so the result is always a list of symbols.
(defalias 'rng-match-possible-namespace-uris #[0 "\301\302\303#\207" [rng-current-schema rng-map-element-attribute #[514 "\300A@\"\207" [rng-find-name-class-uris] 5 "\n\n(fn PATTERN ACCUM)"] nil] 4 (#$ . 49447)])
(defalias 'rng-match-unknown-start-tag-open #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-unknown-start-tag-open-deriv t] 3])
(defalias 'rng-match-optionalize-elements #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ipattern-optionalize-elements t] 3])
(defalias 'rng-match-ignore-attributes #[0 "\302!\211	=\203 	=\207\211\303\207" [rng-match-state rng-not-allowed-ipattern rng-ignore-attributes-deriv t] 3])
(defalias 'rng-match-text-typed-p #[0 "\301!\207" [rng-match-state rng-ipattern-text-typed-p] 2])
(defalias 'rng-match-empty-content #[0 "\300 \203	 \301\302!\207\303 \207" [rng-match-text-typed-p rng-match-element-value "" rng-match-end-tag] 2])
#@176 Return non-nil if what can be matched before an end-tag is empty.
In other words, return non-nil if the pattern for what can be matched
for an end-tag is equivalent to empty.
(defalias 'rng-match-empty-before-p #[0 "\301!\207" [rng-match-state rng-ipattern-empty-before-p] 2 (#$ . 50563)])
#@19 

(fn LOCAL-NAME)
(defalias 'rng-match-infer-start-tag-namespace #[257 "\301\302\"\302\211\203H @\262A\232\203A @9\203A \211\204* @\262A\262\202 \211@\232\2038 A\262\202 \302\262\302\262\202 A\262\202 \207" [rng-match-state rng-ipattern-possible-start-tags nil] 6 (#$ . 50860)])
(defalias 'rng-match-nullable-p #[0 "\301H\207" [rng-match-state 4] 2])
#@274 Return a list of possible names that would be valid for start-tags.

Each possible name is returned as a (NAMESPACE . LOCAL-NAME) pair,
where NAMESPACE is a symbol or nil (meaning the absent namespace) and
LOCAL-NAME is a string.  The returned list may contain duplicates.
(defalias 'rng-match-possible-start-tag-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-start-tags nil] 3 (#$ . 51241)])
#@44 Return non-nil if a start-tag is possible.
(defalias 'rng-match-start-tag-possible-p #[0 "\301!\207" [rng-match-state rng-ipattern-start-tag-possible-p] 2 (#$ . 51660)])
#@146 Return a list of possible names that would be valid for attributes.

See the function `rng-match-possible-start-tag-names' for
more information.
(defalias 'rng-match-possible-attribute-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-attributes nil] 3 (#$ . 51838)])
#@136 Return a list of strings that would be valid as content.
The list may contain duplicates.  Typically, the list will not
be exhaustive.
(defalias 'rng-match-possible-value-strings #[0 "\301\302\"\207" [rng-match-state rng-ipattern-possible-values nil] 3 (#$ . 52130)])
#@65 Return the name of an element which must occur, or nil if none.
(defalias 'rng-match-required-element-name #[0 "\301!\207" [rng-match-state rng-ipattern-required-element] 2 (#$ . 52405)])
#@60 Return a list of names of attributes which must all occur.
(defalias 'rng-match-required-attribute-names #[0 "\301\302\"\207" [rng-match-state rng-ipattern-required-attributes nil] 3 (#$ . 52600)])
#@19 

(fn &rest BODY)
(defalias 'rng-match-save '(macro . #[128 "\300\301!\302\303BC\304\305B\306\307EEE\207" [make-symbol "state" let (rng-match-state) unwind-protect progn setq rng-match-state] 9 (#$ . 52805)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put rng-match-save lisp-indent-function 0 put edebug-form-spec t] 5)
#@26 

(fn SCHEMA &rest BODY)
(defalias 'rng-match-with-schema '(macro . #[385 "\300\301D\302B\303\304\305BBBBB\207" [let rng-current-schema (rng-match-state rng-compile-table rng-ipattern-table rng-last-ipattern-index) (rng-ipattern-maybe-init) (rng-compile-maybe-init) (setq rng-match-state (rng-compile rng-current-schema))] 8 (#$ . 53156)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310!\207" [function-put rng-match-with-schema lisp-indent-function 1 put edebug-form-spec t provide rng-match] 5)
