$ od -c -N 50000 [eris]<LispCore>SOURCES>CMLARRAY!9 0000000 ( D E F I N E - F I L E - I N F 0000020 O 247 R E A D T A B L E " X C 0000040 L " 247 P A C K A G E " I N T 0000060 E R L I S P " ) \r 006 001 ( f i l e 0000100 c r e a t e d " 1 7 - O c t - 0000120 8 6 1 7 : 4 7 : 4 2 " 006 004 { 0000140 e r i s } < l i s p c o r e > s 0000160 o u r c e s > c m l a r r a y . 0000200 \ ; 9 006 001 1 2 9 3 8 7 \r \r 0000220 | c h a n g e s | | 0000240 t o : | ( f n s % g e t - 0000260 c a n o n i c a l - c m l - t y 0000300 p e ) \r 0000320 ( v a r s 0000340 c m l a r r a y c o m s ) \r 0000360 0000400 ( f u n c t i o n s 0000420 b i t ) \r \r | p r 0000440 e v i o u s | | d a t e : | 0000460 " 1 4 - O c t - 8 6 1 4 : 3 2 0000500 : 1 3 " { e r i s } < l i s p 0000520 c o r e > s o u r c e s > c m l 0000540 a r r a y . \ ; 7 ) \r \r \r ; C 0000560 o p y r i g h t ( c ) 1 9 8 0000600 6 b y X e r o x C o r p o 0000620 r a t i o n . A l l r i g 0000640 h t s r e s e r v e d . \r \r ( 0000660 p r e t t y c o m p r i n t c 0000700 m l a r r a y c o m s ) \r \r ( r 0000720 p a q q 006 002 c m l a r r a y c 0000740 o m s 006 001 \r ( ( 0000760 * | ; ; | " C o n t a i n s 0001000 t a b l e d r i v e n m a 0001020 c r o s " ) \r ( 0001040 d e c l a r e \ : d o n t c o 0001060 p y e v a l @ c o m p i l e 0001100 ( e x p o r t ( f i l e s ( 0001120 s y s l o a d f r o m v a l 0001140 u e o f d i r e c t o r i e s 0001160 ) \r 0001200 * 0001240 c m l a r r 0001260 a y - s u p p o r t ) ) ) \r 0001300 ( * | ; ; | " U 0001320 s e r e n t r y p o i n t s 0001340 " ) \r ( f u n c 0001360 t i o n s c l : a d j u s t - 0001400 a r r a y c l : a d j u s t a 0001420 b l e - a r r a y - p c l : a 0001440 r r a y - d i m e n s i o n c 0001460 l : a r r a y - d i m e n s i o 0001500 n s \r 0001520 c l : a r r a y - e l e m 0001540 e n t - t y p e c l : a r r a 0001560 y - h a s - f i l l - p o i n t 0001600 e r - p a r r a y - n e e d s 0001620 - i n d i r e c t i o n - p \r 0001640 c 0001660 l : a r r a y - r a n k c l : 0001700 a r r a y - t o t a l - s i z e 0001720 b i t c l : b i t - a n d 0001740 c l : b i t - a n d c 1 c l : 0001760 b i t - a n d c 2 b i t - a r 0002000 r a y - p \r 0002020 c l : b i t - e q v 0002040 c l : b i t - i o r c l : b 0002060 i t - n a n d c l : b i t - n 0002100 o r c l : b i t - n o t c l 0002120 : b i t - o r c 1 c l : b i t 0002140 - o r c 2 \r 0002160 c l : b i t - v e c 0002200 t o r - p c l : b i t - x o r 0002220 c h a r c l : a r r a y p 0002240 c l : s t r i n g p c o p y - 0002260 a r r a y d i s p l a c e d - 0002300 a r r a y - p \r 0002320 e q u a l - d i 0002340 m e n s i o n s - p e x t e n 0002360 d a b l e - a r r a y - p f i 0002400 l l - a r r a y c l : f i l l 0002420 - p o i n t e r f i l l - v e 0002440 c t o r \r 0002460 c l : m a k e - a r r 0002500 a y m a k e - v e c t o r r 0002520 e a d - o n l y - a r r a y - p 0002540 c l : s b i t c l : s c h a 0002560 r s e t - f i l l - p o i n t 0002600 e r \r 0002620 s i m p l e - a r r a y - 0002640 p c l : s i m p l e - b i t - 0002660 v e c t o r - p c l : s i m p 0002700 l e - s t r i n g - p c l : s 0002720 i m p l e - v e c t o r - p \r 0002740 s 0002760 t r i n g - a r r a y - p c l 0003000 : s v r e f v e c t o r - l e 0003020 n g t h c l : v e c t o r - p 0003040 o p c l : v e c t o r - p u s 0003060 h \r 0003100 c l : v e c t o r - p u s h 0003120 - e x t e n d c l : v e c t o 0003140 r p ) \r ( f n s 0003160 % c o p y - t o - n e w - a r 0003200 r a y c l : a r e f c l : a 0003220 r r a y - i n - b o u n d s - p 0003240 c l : a r r a y - r o w - m a 0003260 j o r - i n d e x a s e t c 0003300 l : v e c t o r ) \r 0003320 ( * | ; ; | " O b s o l 0003340 e t e b u t r e t a i n e d 0003360 t o a v o i d r e c o m p 0003400 i l a t i o n " ) \r 0003420 ( f n s s c h a r s e t ) 0003440 \r ( * | ; ; | 0003460 " V a r s e t c " ) \r 0003500 ( * \ ; " * P R I 0003520 N T - A R R A Y * i s d e f 0003540 i n e d i n A P R I N T " ) 0003560 \r ( v a r i a b 0003600 l e s c l : a r r a y - r a n 0003620 k - l i m i t c l : a r r a y 0003640 - t o t a l - s i z e - l i m i 0003660 t c l : a r r a y - d i m e n 0003700 s i o n - l i m i t \r 0003720 * d e f a 0003740 u l t - p u s h - e x t e n s i 0003760 o n - s i z e * ) \r 0004000 ( * | ; ; | " I n t e r 0004020 n a l s t u f f " ) \r 0004040 ( f n s % a l t e r - 0004060 a s - d i s p l a c e d - a r r 0004100 a y % a l t e r - a s - d i s 0004120 p l a c e d - t o - b a s e - a 0004140 r r a y % a r e f 0 % a r e 0004160 f 1 % a r e f 2 \r 0004200 % a r r a y - b 0004220 a s e % a r r a y - c o n t e 0004240 n t - i n i t i a l i z e % a 0004260 r r a y - e l e m e n t - i n i 0004300 t i a l i z e % a r r a y - o 0004320 f f s e t \r 0004340 % a r r a y - t y p e - 0004360 n u m b e r % a s e t 0 % a 0004400 s e t 1 % a s e t 2 % c h e 0004420 c k - s e q u e n c e - d i m e 0004440 n s i o n s % d o - l o g i c 0004460 a l - o p \r 0004500 % e x t e n d - a r r a 0004520 y % f a s t - c o p y - b a s 0004540 e % f a t - s t r i n g - a r 0004560 r a y - p % f i l l - a r r a 0004600 y - f r o m - s e q u e n c e 0004620 \r % f 0004640 l a t t e n - a r r a y % m a 0004660 k e - a r r a y - w r i t e a b 0004700 l e % m a k e - d i s p l a c 0004720 e d - a r r a y % m a k e - g 0004740 e n e r a l - a r r a y \r 0004760 % m a k e 0005000 - o n e d - a r r a y % m a k 0005020 e - s t r i n g - a r r a y - f 0005040 a t % m a k e - t w o d - a r 0005060 r a y % t o t a l - s i z e 0005100 s h r i n k - v e c t o r ) \r 0005120 ( * \ ; " F o 0005140 r I n t e r l i s p s t r i 0005160 n g h a c k " ) \r 0005200 ( f n s % s e t - a r r a 0005220 y - o f f s e t % s e t - a r 0005240 r a y - t y p e - n u m b e r ) 0005260 \r ( * \ ; " 0005300 F a s t e r p r e d i c a t e 0005320 s n o t i n c l u d i n g 0005340 I L : S T R I N G P ' s " ) \r 0005360 ( f n s % a r r 0005400 a y p % s i m p l e - a r r a 0005420 y - p % s i m p l e - s t r i 0005440 n g - p % s t r i n g p % v 0005460 e c t o r p ) \r 0005500 ( * \ ; " L o w l e v e l 0005520 p r e d i c a t e s " ) \r 0005540 ( f n s % g e n e 0005560 r a l - a r r a y - p % o n e 0005600 d - a r r a y - p % t h i n - 0005620 s t r i n g - a r r a y - p % 0005640 t w o d - a r r a y - p ) \r 0005660 ( * \ ; " R e c 0005700 o r d d e f ' s " ) \r 0005720 ( d e c l a r e \ : d 0005740 o n t c o p y d o e v a l @ c 0005760 o m p i l e ( e x p o r t ( 0006000 r e c o r d s a r r a y - h e 0006020 a d e r g e n e r a l - a r r 0006040 a y o n e d - a r r a y \r 0006060 * 0006140 t w o d - a r 0006160 r a y ) ) ) \r ( 0006200 i n i t r e c o r d s g e n e 0006220 r a l - a r r a y o n e d - a 0006240 r r a y t w o d - a r r a y ) 0006260 \r ( s y s r e c 0006300 o r d s g e n e r a l - a r r 0006320 a y o n e d - a r r a y t w 0006340 o d - a r r a y ) \r 0006360 ( p r o p d o p v a l % 0006400 a r e f 1 % a r e f 2 % a s 0006420 e t 1 % a s e t 2 ) \r 0006440 ( * | ; ; | " I / O 0006460 " ) \r ( f n s 0006500 % d e f p r i n t - a r r a y 0006520 % d e f p r i n t - b i t v e c 0006540 t o r % d e f p r i n t - g e 0006560 n e r i c - a r r a y % d e f 0006600 p r i n t - v e c t o r \r 0006620 % d e f p 0006640 r i n t - s t r i n g % p r i 0006660 n t - a r r a y - c o n t e n t 0006700 s ) \r ( p ( d 0006720 e f p r i n t ' o n e d - a r 0006740 r a y ' % d e f p r i n t - v 0006760 e c t o r ) \r 0007000 ( d e f p r i n t ' t w o 0007020 d - a r r a y ' % d e f p r i 0007040 n t - a r r a y ) \r 0007060 ( d e f p r i n t ' 0007100 g e n e r a l - a r r a y ' % 0007120 d e f p r i n t - a r r a y ) ) 0007140 \r ( * | ; ; | 0007160 " N e e d e d a t r u n 0007200 t i m e . l o w l e v e l 0007220 f u n c t i o n s f o r a c 0007240 c e s s i n g , s e t t i n g 0007260 , a n d a l l o c a t i n g 0007300 r a w s t o r a g e . a l 0007320 s o i n c l u d e s c m l 0007340 t y p e t o t y p e n u m b 0007360 e r c o n v e r t e r s " \r 0007400 ) \r 0007420 ( f n s % a r r a y - 0007440 r e a d % a r r a y - w r i t 0007460 e % c m l - t y p e - t o - t 0007500 y p e n u m b e r % g e t - c 0007520 a n o n i c a l - c m l - t y p 0007540 e \r 0007560 % g e t - e n c l o s i n g - s 0007600 i g n e d - b y t e % g e t - 0007620 e n c l o s i n g - u n s i g n 0007640 e d - b y t e % m a k e - a r 0007660 r a y - s t o r a g e \r 0007700 % r e d u c 0007720 e - i n t e g e r % r e d u c 0007740 e - m o d % s l o w - a r r a 0007760 y - r e a d % s l o w - a r r 0010000 a y - w r i t e ) \r 0010020 ( * | ; ; | " C o m p i 0010040 l e r o p t i o n s " ) \r 0010060 ( d e c l a r e \ : 0010100 d o n t e v a l @ l o a d d 0010120 o e v a l @ c o m p i l e d o 0010140 n t c o p y ( l o c a l v a r 0010160 s . t ) ) \r 0010200 ( p r o p f i l e t y p e c 0010220 m l a r r a y ) \r 0010240 ( d e c l a r e \ : d o n t 0010260 e v a l @ l o a d d o e v a l 0010300 @ c o m p i l e d o n t c o p 0010320 y c o m p i l e r v a r s \r 0010340 ( a 0010360 d d v a r s ( n l a m a ) \r 0010400 0010420 ( n l a m l ) \r 0010440 0010460 ( l a m a c l : v e c t 0010500 o r a s e t c l : a r r a y 0010520 - r o w - m a j o r - i n d e x 0010540 c l : a r r a y - i n - b o u 0010560 n d s - p c l : a r e f ) ) ) 0010600 ) ) \r \r \r \r 006 004 ( * | ; ; | 0010620 " C o n t a i n s t a b l e 0010640 d r i v e n m a c r o s " ) 006 0010660 001 \r \r ( d e c l a r e \ : d o 0010700 n t c o p y e v a l @ c o m p 0010720 i l e \r ( * F O L L O W I N 0010740 G D E F I N I T I O N S E X 0010760 P O R T E D ) \r \r \r ( f i l e s 0011000 l o a d ( s y s l o a d f r 0011020 o m v a l u e o f d i r e c 0011040 t o r i e s ) \r c 0011060 m l a r r a y - s u p p o r t ) 0011100 \r \r \r ( * E N D E X P O R T 0011120 E D D E F I N I T I O N S ) \r 0011140 \r ) \r \r \r \r 006 004 ( * | ; ; | 0011160 " U s e r e n t r y p o i n 0011200 t s " ) 006 001 \r \r ( c l : d e f u 0011220 n 006 002 c l : a d j u s t - a r 0011240 r a y 006 001 ( a d j u s t a b l 0011260 e - a r r a y d i m e n s i o 0011300 n s & k e y ( e l e m e n t 0011320 - t y p e n i l e l e m e n 0011340 t - t y p e - p ) \r 0011360 0011400 ( i n i t 0011420 i a l - e l e m e n t n i l 0011440 i n i t i a l - e l e m e n t - 0011460 p ) \r 0011500 0011520 ( i n i t i a l - c o n 0011540 t e n t s n i l i n i t i a 0011560 l - c o n t e n t s - p ) \r 0011600 0011620 ( 0011640 d i s p l a c e d - t o n i l 0011660 d i s p l a c e d - t o - p ) 0011700 \r 0011720 0011740 ( d i s p l a c e d - t o - 0011760 b a s e n i l d i s p l a c 0012000 e d - t o - b a s e - p ) \r 0012020 0012040 ( 0012060 d i s p l a c e d - i n d e x - 0012100 o f f s e t 0 d i s p l a c 0012120 e d - i n d e x - o f f s e t - 0012140 p ) \r 0012160 0012200 ( c l : f i l l - p o i 0012220 n t e r n i l f i l l - p o 0012240 i n t e r - p ) \r 0012260 0012300 f a t p ) 0012320 " D o s o m e t h i n g w o 0012340 n d e r f u l " \r 0012360 \r 006 003 0012400 ( * * " S t r i n g s a r 0012420 e b y d e f a u l t t h i 0012440 n u n l e s s F A T P i s 0012460 T " ) 006 001 \r \r ( c l : i 0012500 f ( n o t ( e x t e n d a b 0012520 l e - a r r a y - p a d j u s 0012540 t a b l e - a r r a y ) ) \r 0012560 ( c l : e r r o 0012600 r " N o t a n a d j u s t 0012620 a b l e o r e x t e n d a b 0012640 l e a r r a y " ) ) \r ( 0012660 c l : i f ( n o t ( c l : l 0012700 i s t p d i m e n s i o n s ) 0012720 ) \r ( s e t 0012740 q d i m e n s i o n s ( l i 0012760 s t d i m e n s i o n s ) ) ) 0013000 \r ( c l : i f ( c l : d 0013020 o l i s t ( d i m d i m e n 0013040 s i o n s n i l ) \r 0013060 ( c l : 0013100 i f ( o r ( < d i m 0 ) 0013120 \r 0013140 ( > = 0013160 d i m c l : a r r a y - d i 0013200 m e n s i o n - l i m i t ) ) \r 0013220 0013240 ( r e t u r n 0013260 t ) ) ) \r ( 0013300 c l : e r r o r " D i m e n s 0013320 i o n s o u t o f b o u n 0013340 d s ~ S " d i m e n s i o n 0013360 s ) ) \r ( l e t ( ( a d 0013400 j u s t a b l e - a r r a y - e 0013420 l e m e n t - t y p e ( c l : 0013440 a r r a y - e l e m e n t - t y 0013460 p e a d j u s t a b l e - a r 0013500 r a y ) ) \r ( 0013520 n e l t s ( % t o t a l - s i 0013540 z e d i m e n s i o n s ) ) \r 0013560 ( r a n k ( 0013600 l e n g t h d i m e n s i o n 0013620 s ) ) \r ( e x 0013640 t e n d a b l e - p ( n o t 0013660 ( c l : a d j u s t a b l e - a 0013700 r r a y - p a d j u s t a b l 0013720 e - a r r a y ) ) ) ) \r 0013740 \r 0013760 006 003 ( * * " C o n s i s t 0014000 e n c y c h e c k s " ) 006 001 \r 0014020 \r ( c l : i f 0014040 ( > = r a n k c l : a r r a 0014060 y - r a n k - l i m i t ) \r 0014100 ( c l 0014120 : e r r o r " T o o m a n y 0014140 d i m e n s i o n s : ~ A " 0014160 r a n k ) ) \r 0014200 ( c l : i f ( > = n e l t s 0014220 c l : a r r a y - t o t a l - 0014240 s i z e - l i m i t ) \r 0014260 ( c l : e 0014300 r r o r " T o o m a n y e 0014320 l e m e n t s : ~ A " n e l 0014340 t s ) ) \r ( c l 0014360 : i f ( n o t ( e q l r a 0014400 n k ( c l : a r r a y - r a n 0014420 k a d j u s t a b l e - a r r 0014440 a y ) ) ) \r 0014460 ( c l : e r r o r " 0014500 R a n k m i s m a t c h ~ S 0014520 " d i m e n s i o n s ) ) \r 0014540 ( c l : i f e l 0014560 e m e n t - t y p e - p ( c l 0014600 : i f ( n o t ( e q u a l 0014620 e l e m e n t - t y p e a d j 0014640 u s t a b l e - a r r a y - e l 0014660 e m e n t - t y p e ) ) \r 0014700 * 0014740 ( c l : e r r o r " A D J 0014760 U S T A B L E - A R R A Y n o 0015000 t o f s p e c i f i e d e 0015020 l e m e n t - t y p e : ~ A " 0015040 \r 0015060 0015100 e l 0015120 e m e n t - t y p e ) ) \r 0015140 ( s e t 0015160 q e l e m e n t - t y p e a 0015200 d j u s t a b l e - a r r a y - 0015220 e l e m e n t - t y p e ) ) \r 0015240 ( c l : i f ( a 0015260 n d f i l l - p o i n t e r - 0015300 p ( n u l l c l : f i l l - 0015320 p o i n t e r ) \r 0015340 ( c l 0015360 : a r r a y - h a s - f i l l - 0015400 p o i n t e r - p a d j u s t 0015420 a b l e - a r r a y ) ) \r 0015440 ( c l : 0015460 e r r o r " A D J U S T A B L 0015500 E - A R R A Y h a s f i l l 0015520 p o i n t e r " ) ) \r 0015540 ( c l : i f ( o r ( 0015560 a n d d i s p l a c e d - t o 0015600 - p ( o r i n i t i a l - e 0015620 l e m e n t - p i n i t i a l 0015640 - c o n t e n t s - p d i s p 0015660 l a c e d - t o - b a s e - p ) 0015700 ) \r 0015720 ( a n d d i s p l a 0015740 c e d - t o - b a s e - p ( o 0015760 r i n i t i a l - e l e m e n 0016000 t - p i n i t i a l - c o n t 0016020 e n t s - p d i s p l a c e d 0016040 - t o - p ) ) \r 0016060 ( a n d 0016100 f i l l - p o i n t e r - p c 0016120 l : f i l l - p o i n t e r ( 0016140 n o t ( e q l r a n k 1 ) 0016160 ) ) \r 0016200 ( a n d d i s p l 0016220 a c e d - i n d e x - o f f s e 0016240 t - p ( n o t ( o r d i s 0016260 p l a c e d - t o - p d i s p 0016300 l a c e d - t o - b a s e - p ) 0016320 ) ) \r 0016340 ( a n d i n i t i 0016360 a l - e l e m e n t - p i n i 0016400 t i a l - c o n t e n t s - p ) 0016420 ) \r 0016440 ( c l : e r r o r " I n c o 0016460 n s i s t e n t o p t i o n s 0016500 t o a d j u s t - a r r a y 0016520 " ) ) \r ( c l : 0016540 i f d i s p l a c e d - t o - 0016560 p ( c o n d \r 0016600 0016620 ( ( n o t ( 0016640 % a r r a y p d i s p l a c e 0016660 d - t o ) ) \r 0016700 0016720 ( c l : e r r 0016740 o r " C a n n o t d i s p l 0016760 a c e t o a n I n t e r l 0017000 i s p a r r a y / s t r i n g 0017020 " ) ) \r 0017040 0017060 ( ( n o t ( e q u a 0017100 l a d j u s t a b l e - a r r 0017120 a y - e l e m e n t - t y p e 0017140 ( c l : a r r a y - e l e m e n 0017160 t - t y p e \r 0017200 * 0017300 d i s p l a c e d - t o 0017320 ) ) ) \r 0017340 0017360 ( c l : e r r o r 0017400 " N o t d i s p l a c e d t 0017420 o a n a r r a y o f t h 0017440 e s a m e e l e m e n t - t 0017460 y p e : " ) ) \r 0017500 0017520 ( ( > ( + 0017540 d i s p l a c e d - i n d e x - 0017560 o f f s e t n e l t s ) \r 0017600 * 0017640 ( c l : a r r a y - t o t 0017660 a l - s i z e d i s p l a c e 0017700 d - t o ) ) \r 0017720 0017740 ( c l : e r r 0017760 o r " M o r e e l e m e n t 0020000 s t h a n d i s p l a c e d 0020020 - t o a r r a y " ) ) ) ) \r 0020040 ( c l : i f c l 0020060 : f i l l - p o i n t e r ( c 0020100 o n d \r 0020120 0020140 ( ( e q c l : f i 0020160 l l - p o i n t e r t ) \r 0020200 * 0020240 ( s e t q c l : f i l l - p 0020260 o i n t e r n e l t s ) ) \r 0020300 * 0020340 ( ( n o t ( a n d ( > = 0020360 c l : f i l l - p o i n t e r 0020400 0 ) \r 0020420 * 0020460 ( < = c l : f i l l - p o i n 0020500 t e r n e l t s ) ) ) \r 0020520 * 0020560 ( c l : e r r o r " F i l l 0020600 p o i n t e r o u t o f b 0020620 o u n d s ~ A " c l : f i l 0020640 l - p o i n t e r ) ) ) \r 0020660 ( c l : 0020700 i f ( c l : a r r a y - h a s 0020720 - f i l l - p o i n t e r - p 0020740 a d j u s t a b l e - a r r a y 0020760 ) \r 0021000 ( s e t q c l 0021020 : f i l l - p o i n t e r ( m 0021040 i n ( c l : f i l l - p o i n 0021060 t e r a d j u s t a b l e - a 0021100 r r a y ) \r 0021120 * 0021160 n e l t s ) ) ) ) 0021200 \r ( c l : i f 0021220 e x t e n d a b l e - p ( c o 0021240 n d \r 0021260 0021300 ( ( o r d i s p l a c e d 0021320 - t o - p d i s p l a c e d - 0021340 t o - b a s e - p ) \r 0021360 0021400 ( c l : e 0021420 r r o r " C a n n o t a d j 0021440 u s t a n e x t e n d a b l 0021460 e a r r a y t o b e d i 0021500 s p l a c e d " ) ) \r 0021520 0021540 ( ( < n e 0021560 l t s ( c l : a r r a y - t o 0021600 t a l - s i z e a d j u s t a 0021620 b l e - a r r a y ) ) \r 0021640 0021660 ( c l : 0021700 e r r o r " C a n n o t e x 0021720 t e n d a n e x t e n d a b 0021740 l e a r r a y t o h a v e 0021760 f e w e r e l e m e n t s " 0022000 ) \r 0022020 0022040 ) ) ) \r 0022060 \r 006 003 ( * 0022100 * " S p e c s r e a d y , 0022120 d o t h e s u r g u r y " ) 0022140 006 001 \r \r ( c o n 0022160 d \r ( d i 0022200 s p l a c e d - t o - p ( % a 0022220 l t e r - a s - d i s p l a c e 0022240 d - a r r a y a d j u s t a b 0022260 l e - a r r a y d i m e n s i 0022300 o n s d i s p l a c e d - t o 0022320 \r 0022340 0022360 d i s p l a c e d - i n 0022400 d e x - o f f s e t c l : f i 0022420 l l - p o i n t e r ) ) \r 0022440 ( d i s p l a c 0022460 e d - t o - b a s e - p ( % a 0022500 l t e r - a s - d i s p l a c e 0022520 d - t o - b a s e - a r r a y 0022540 a d j u s t a b l e - a r r a y 0022560 d i m e n s i o n s \r 0022600 * 0022640 e l e m e n t - t y p e 0022660 d i s p l a c e d - t o - b a 0022700 s e d i s p l a c e d - i n d 0022720 e x - o f f s e t \r 0022740 * 0023000 c l : f i l l - p o i n t e 0023020 r f a t p ) ) \r 0023040 ( t ( c l : i f ( e 0023060 q u a l ( c l : a r r a y - d 0023100 i m e n s i o n s a d j u s t 0023120 a b l e - a r r a y ) \r 0023140 0023160 d i m e n s i o 0023200 n s ) \r 0023220 ( c l : i f 0023240 c l : f i l l - p o i n t e r 0023260 ( s e t - f i l l - p o i n t e 0023300 r a d j u s t a b l e - a r r 0023320 a y c l : f i l l - p o i n t 0023340 e r ) ) \r 0023360 ( l e t ( 0023400 ( n e w - a r r a y ( c l : m 0023420 a k e - a r r a y d i m e n s 0023440 i o n s : e l e m e n t - t y 0023460 p e e l e m e n t - t y p e 0023500 : f a t p \r 0023520 * 0023560 ( % f a t - s t r i n g - 0023600 a r r a y - p a d j u s t a b 0023620 l e - a r r a y ) ) ) ) \r 0023640 0023660 ( c o n d \r 0023700 0023720 ( i n i t i 0023740 a l - c o n t e n t s - p ( % 0023760 a r r a y - c o n t e n t - i n 0024000 i t i a l i z e n e w - a r r 0024020 a y \r 0024040 * 0024100 i n i t 0024120 i a l - c o n t e n t s ) ) \r 0024140 0024160 ( t ( 0024200 c l : i f i n i t i a l - e l 0024220 e m e n t - p ( % a r r a y - 0024240 e l e m e n t - i n i t i a l i 0024260 z e n e w - a r r a y \r 0024300 * 0024360 i n 0024400 i t i a l - e l e m e n t ) ) \r 0024420 * 0024460 ( % c o p y - t o - n e w - a r 0024500 r a y ( c l : a r r a y - d i 0024520 m e n s i o n s a d j u s t a 0024540 b l e - a r r a y ) \r 0024560 * 0024620 ( % f l a t t e n - a r r a 0024640 y a d j u s t a b l e - a r r 0024660 a y ) \r 0024700 0024720 0 d i m 0024740 e n s i o n s ( % f l a t t e 0024760 n - a r r a y n e w - a r r a 0025000 y ) \r 0025020 0025040 0 ) ) ) \r 0025060 0025100 ( % e x t e n 0025120 d - a r r a y a d j u s t a b 0025140 l e - a r r a y n e w - a r r 0025160 a y d i m e n s i o n s c l 0025200 : f i l l - p o i n t e r ) ) ) 0025220 ) ) \r \r 0025240 006 003 ( * * " 0025260 R e t u r n t h e a d j u s 0025300 t e d a r r a y " ) 006 001 \r \r 0025320 a d j u s t a b l 0025340 e - a r r a y ) ) \r \r ( c l : d 0025360 e f u n 006 002 c l : a d j u s t 0025400 a b l e - a r r a y - p 006 001 ( 0025420 a r r a y ) \r 0025440 \r 006 003 ( 0025460 * * ) 006 001 \r ( c o n d \r 0025500 ( ( % a r r a y p a r r a 0025520 y ) \r ( 006 002 | f e t c 0025540 h | 006 001 ( a r r a y - h e a d 0025560 e r a d j u s t a b l e - p ) 0025600 006 002 | o f | 006 001 a r r a y ) 0025620 ) \r ( ( s t r i n g p 0025640 a r r a y ) \r n i l ) 0025660 \r ( t ( c l : e r r o 0025700 r " N o t a n a r r a y 0025720 ~ S " a r r a y ) ) ) ) \r \r ( 0025740 c l : d e f u n 006 002 c l : a r 0025760 r a y - d i m e n s i o n 006 001 0026000 ( a r r a y d i m e n s i o n 0026020 ) \r \r 0026040 006 003 ( * * ) 006 0026060 001 \r ( c o n d \r ( ( % 0026100 o n e d - a r r a y - p a r r 0026120 a y ) \r ( c l : i f 0026140 ( e q l 0 d i m e n s i o n 0026160 ) \r ( 006 0026200 002 | f e t c h | 006 001 ( a r r a 0026220 y - h e a d e r t o t a l - s 0026240 i z e ) 006 002 | o f | 006 001 a r 0026260 r a y ) \r 0026300 ( c l : e r r o r " D i m e 0026320 n s i o n o u t o f b o u 0026340 n d s : ~ A " d i m e n s i 0026360 o n ) ) ) \r ( ( % t w o 0026400 d - a r r a y - p a r r a y ) 0026420 \r ( c a s e d i m e 0026440 n s i o n ( 0 ( 006 002 | f f e 0026460 t c h | 006 001 ( t w o d - a r r 0026500 a y b o u n d 0 ) 006 002 | o f 0026520 | 006 001 a r r a y ) ) \r 0026540 ( 1 ( 006 002 | f f 0026560 e t c h | 006 001 ( t w o d - a r 0026600 r a y b o u n d 1 ) 006 002 | o 0026620 f | 006 001 a r r a y ) ) \r 0026640 ( c l : o t h e 0026660 r w i s e ( c l : e r r o r 0026700 " D i m e n s i o n o u t o 0026720 f b o u n d s : ~ A " d i 0026740 m e n s i o n ) ) ) ) \r 0026760 ( ( % g e n e r a l - a r r a y 0027000 - p a r r a y ) \r ( 0027020 l e t * ( ( d i m s ( 006 002 | 0027040 f f e t c h | 006 001 ( g e n e r 0027060 a l - a r r a y d i m s ) 006 0027100 002 | o f | 006 001 a r r a y ) ) \r 0027120 ( r a n 0027140 k ( l e n g t h d i m s ) ) 0027160 ) \r ( c l 0027200 : i f ( n o t ( < - 1 d 0027220 i m e n s i o n r a n k ) ) \r 0027240 0027260 ( c l : e r r o r " D i m 0027300 e n s i o n o u t o f b o 0027320 u n d s : ~ A " d i m e n s 0027340 i o n ) ) \r 0027360 ( c l : i f ( e q l r a n 0027400 k 1 ) \r 0027420 ( 006 002 | f e t c h 0027440 | 006 001 ( a r r a y - h e a d e 0027460 r t o t a l - s i z e ) 006 002 0027500 | o f | 006 001 a r r a y ) \r 0027520 0027540 ( c l : n t h d i m e n s i o 0027560 n d i m s ) ) ) ) \r ( 0027600 ( s t r i n g p a r r a y ) 0027620 * 0027660 006 003 ( * " H a 0027700 c k t o h a n d l e I L : 0027720 S T R I N G P ' s " ) 006 001 \r 0027740 ( c l : i f ( e q l d 0027760 i m e n s i o n 0 ) \r 0030000 ( n c h a r s 0030020 a r r a y ) \r 0030040 ( c l : e r r o r " D i 0030060 m e n s i o n o u t o f b 0030100 o u n d s : ~ A " d i m e n 0030120 s i o n ) ) ) \r ( t ( 0030140 c l : e r r o r " N o t a n 0030160 a r r a y ~ S " a r r a y 0030200 ) ) ) ) \r \r ( c l : d e f u n 0030220 006 002 c l : a r r a y - d i m e n 0030240 s i o n s 006 001 ( a r r a y ) 0030260 006 003 006 001 0030300 006 003 ( * 0030320 | j o p : | " 5 - S e p - 8 0030340 6 1 2 : 5 5 " ) 006 001 \r 0030360 \r 0030400 006 003 ( * * ) 006 001 \r \r ( 0030420 c o n d \r ( ( % o n 0030440 e d - a r r a y - p a r r a y 0030460 ) \r ( l i s t ( 0030500 006 002 | f f e t c h | 006 001 ( o n 0030520 e d - a r r a y t o t a l - s 0030540 i z e ) 006 002 | o f | 006 001 a r 0030560 r a y ) ) ) \r ( ( % 0030600 t w o d - a r r a y - p a r r 0030620 a y ) \r ( l i s t 0030640 ( 006 002 | f f e t c h | 006 001 ( 0030660 t w o d - a r r a y b o u n d 0030700 0 ) 006 002 | o f | 006 001 a r r a 0030720 y ) \r 0030740 ( 006 002 | f f e t c h | 006 001 ( t 0030760 w o d - a r r a y b o u n d 1 0031000 ) 006 002 | o f | 006 001 a r r a y 0031020 ) ) ) \r ( ( % g e n 0031040 e r a l - a r r a y - p a r r 0031060 a y ) \r ( 006 002 | f 0031100 f e t c h | 006 001 ( g e n e r a 0031120 l - a r r a y d i m s ) 006 002 0031140 | o f | 006 001 a r r a y ) ) \r 0031160 ( ( s t r i n g p a 0031200 r r a y ) 0031220 0031240 006 003 ( * 0031260 " H a c k t o h a n d l e 0031300 I L : S T R I N G P ' s " ) 006 0031320 001 \r ( l i s t ( 0031340 n c h a r s a r r a y ) ) ) \r 0031360 ( t ( c l : e r r 0031400 o r " N o t a n a r r a y 0031420 ~ S " a r r a y ) ) ) ) \r \r 0031440 ( c l : d e f u n 006 002 c l : a 0031460 r r a y - e l e m e n t - t y p 0031500 e 006 001 ( a r r a y ) \r 0031520 \r 0031540 006 003 ( * * ) 006 001 \r ( c o 0031560 n d \r ( ( % a r r a y p 0031600 a r r a y ) \r ( % t 0031620 y p e n u m b e r - t o - c m l 0031640 - t y p e ( % a r r a y - t y 0031660 p e - n u m b e r a r r a y ) 0031700 ) ) \r ( ( s t r i n g p 0031720 a r r a y ) 0031740 * 0032000 006 003 ( * " H a c k t o h a 0032020 n d l e I L : S T R I N G P ' 0032040 s " ) 006 001 \r ' c l : s 0032060 t r i n g - c h a r ) \r 0032100 ( t ( c l : e r r o r " N o 0032120 t a n a r r a y ~ S " a 0032140 r r a y ) ) ) ) \r \r ( c l : d e 0032160 f u n 006 002 c l : a r r a y - h 0032200 a s - f i l l - p o i n t e r - 0032220 p 006 001 ( a r r a y ) \r 0032240 \r 0032260 006 003 ( * * ) 006 001 \r ( c o 0032300 n d \r ( ( % a r r a y p 0032320 a r r a y ) \r ( 006 002 0032340 | f e t c h | 006 001 ( a r r a y 0032360 - h e a d e r f i l l - p o i 0032400 n t e r - p ) 006 002 | o f | 006 001 0032420 a r r a y ) ) \r ( ( s 0032440 t r i n g p a r r a y ) 0032460 * 0032520 006 003 ( * " H a c k 0032540 t o h a n d l e I L : S T 0032560 R I N G P ' s " ) 006 001 \r 0032600 n i l ) \r ( t ( c l 0032620 : e r r o r " N o t a n a 0032640 r r a y ~ S " a r r a y ) ) 0032660 ) ) \r \r ( c l : d e f u n 006 002 0032700 a r r a y - n e e d s - i n d i 0032720 r e c t i o n - p 006 001 ( a r r 0032740 a y ) \r \r 0032760 006 003 ( * * 0033000 ) 006 001 \r ( c o n d \r ( 0033020 ( o r ( % o n e d - a r r a y 0033040 - p a r r a y ) \r 0033060 ( % t w o d - a r r a y - 0033100 p a r r a y ) \r 0033120 ( s t r i n g p a r r a y 0033140 ) ) \r n i l ) \r 0033160 ( ( % g e n e r a l - a r r a 0033200 y - p a r r a y ) \r 0033220 ( 006 002 | f e t c h | 006 001 ( a r 0033240 r a y - h e a d e r i n d i r 0033260 e c t - p ) 006 002 | o f | 006 001 0033300 a r r a y ) ) \r ( t ( 0033320 c l : e r r o r " N o t a n 0033340 a r r a y ~ S " a r r a y 0033360 ) ) ) ) \r \r ( c l : d e f u n 0033400 006 002 c l : a r r a y - r a n k 006 0033420 001 ( a r r a y ) \r 0033440 \r 0033460 006 003 ( * * ) 006 001 \r ( c o n d 0033500 \r ( ( % o n e d - a r r 0033520 a y - p a r r a y ) \r 0033540 1 ) \r ( ( % t w o d - 0033560 a r r a y - p a r r a y ) \r 0033600 2 ) \r ( ( % g e 0033620 n e r a l - a r r a y - p a r 0033640 r a y ) \r ( l e n g t 0033660 h ( 006 002 | f f e t c h | 006 001 0033700 ( g e n e r a l - a r r a y d 0033720 i m s ) 006 002 | o f | 006 001 a r 0033740 r a y ) ) ) \r ( ( s t r 0033760 i n g p a r r a y ) 0034000 * 0034040 006 003 ( * " H a c k t 0034060 o h a n d l e I L : S T R I 0034100 N G P ' s " ) 006 001 \r 1 0034120 ) \r ( t ( c l : e r r 0034140 o r " N o t a n a r r a y 0034160 ~ S " a r r a y ) ) ) ) \r \r 0034200 ( c l : d e f u n 006 002 c l : a 0034220 r r a y - t o t a l - s i z e 006 0034240 001 ( a r r a y ) \r 0034260 \r 0034300 006 003 ( * * ) 006 001 \r ( c o n d 0034320 \r ( ( % a r r a y p a 0034340 r r a y ) \r ( 006 002 | f 0034360 e t c h | 006 001 ( a r r a y - h 0034400 e a d e r t o t a l - s i z e 0034420 ) 006 002 | o f | 006 001 a r r a y 0034440 ) ) \r ( ( s t r i n g p 0034460 a r r a y ) 0034500 * 0034540 006 003 ( * " H a c k t o h a 0034560 n d l e I L : S T R I N G P ' 0034600 s " ) 006 001 \r ( n c h a 0034620 r s a r r a y ) ) \r ( 0034640 t ( c l : e r r o r " N o t 0034660 a n a r r a y ~ S " a r 0034700 r a y ) ) ) ) \r \r ( c l : d e f 0034720 u n 006 002 b i t 006 001 ( b i t - 0034740 a r r a y & r e s t i n d i 0034760 c e s ) ( c l : a s s e r t 0035000 ( t y p e p b i t - a r r a y 0035020 ' ( c l : a r r a y b i t ) 0035040 ) \r 0035060 * 0035120 ( b i t - a r r a y ) \r 0035140 * 0035200 " N o t 0035220 a b i t - a r r a y : ~ S 0035240 " b i t - a r r a y ) \r 0035260 * 0035320 ( c l : a p p l y ( 0035340 f u n c t i o n c l : a r e f 0035360 ) \r 0035400 * 0035440 b i t - a r r a y i n d i c 0035460 e s ) ) \r \r ( c l : d e f u n 0035500 006 002 c l : b i t - a n d 006 001 ( 0035520 b i t - a r r a y 1 b i t - a 0035540 r r a y 2 & o p t i o n a l 0035560 b i t - r e s u l t ) \r 0035600 \r 0035620 006 003 ( * * ) 006 001 \r ( % e 0035640 x p a n d - b i t - o p a n d 0035660 b i t - a r r a y 1 b i t - 0035700 a r r a y 2 b i t - r e s u l 0035720 t ) ) \r \r ( c l : d e f u n 006 0035740 002 c l : b i t - a n d c 1 006 001 0035760 ( b i t - a r r a y 1 b i t - 0036000 a r r a y 2 & o p t i o n a l 0036020 b i t - r e s u l t ) \r 0036040 \r 0036060 006 003 ( * * ) 006 001 \r ( % 0036100 e x p a n d - b i t - o p a n 0036120 d c 1 b i t - a r r a y 1 b 0036140 i t - a r r a y 2 b i t - r e 0036160 s u l t ) ) \r \r ( c l : d e f u 0036200 n 006 002 c l : b i t - a n d c 2 0036220 006 001 ( b i t - a r r a y 1 b 0036240 i t - a r r a y 2 & o p t i o 0036260 n a l b i t - r e s u l t ) 0036300 \r \r 0036320 006 003 ( * * ) 006 001 \r 0036340 ( % e x p a n d - b i t - o p 0036360 a n d c 2 b i t - a r r a y 0036400 1 b i t - a r r a y 2 b i t 0036420 - r e s u l t ) ) \r \r ( c l : d 0036440 e f u n 006 002 b i t - a r r a y 0036460 - p 006 001 ( a r r a y ) ( a n 0036500 d ( % a r r a y p a r r a y 0036520 ) \r 0036540 0036560 ( 006 002 | f e t c h | 006 0036600 001 ( a r r a y - h e a d e r 0036620 b i t - p ) 006 002 | o f | 006 001 0036640 a r r a y ) ) ) \r \r ( c l : d e 0036660 f u n 006 002 c l : b i t - e q v 0036700 006 001 ( b i t - a r r a y 1 b 0036720 i t - a r r a y 2 & o p t i o 0036740 n a l b i t - r e s u l t ) 0036760 \r \r 0037000 006 003 ( * * ) 006 001 \r 0037020 ( % e x p a n d - b i t - o p 0037040 e q v b i t - a r r a y 1 0037060 b i t - a r r a y 2 b i t - r 0037100 e s u l t ) ) \r \r ( c l : d e f 0037120 u n 006 002 c l : b i t - i o r 006 0037140 001 ( b i t - a r r a y 1 b i 0037160 t - a r r a y 2 & o p t i o n 0037200 a l b i t - r e s u l t ) \r 0037220 \r 0037240 006 003 ( * * ) 006 001 \r 0037260 ( % e x p a n d - b i t - o p 0037300 i o r b i t - a r r a y 1 b 0037320 i t - a r r a y 2 b i t - r e 0037340 s u l t ) ) \r \r ( c l : d e f u 0037360 n 006 002 c l : b i t - n a n d 006 0037400 001 ( b i t - a r r a y 1 b i 0037420 t - a r r a y 2 & o p t i o n 0037440 a l b i t - r e s u l t ) \r 0037460 \r 0037500 006 003 ( * * ) 006 001 \r 0037520 ( % e x p a n d - b i t - o p 0037540 n a n d b i t - a r r a y 1 0037560 b i t - a r r a y 2 b i t - r 0037600 e s u l t ) ) \r \r ( c l : d e f 0037620 u n 006 002 c l : b i t - n o r 006 0037640 001 ( b i t - a r r a y 1 b i 0037660 t - a r r a y 2 & o p t i o n 0037700 a l b i t - r e s u l t ) \r 0037720 \r 0037740 006 003 ( * * ) 006 001 \r 0037760 ( % e x p a n d - b i t - o p 0040000 006 002 n o r 006 001 b i t - a r r a 0040020 y 1 b i t - a r r a y 2 b i 0040040 t - r e s u l t ) ) \r \r ( c l : 0040060 d e f u n 006 002 c l : b i t - n 0040100 o t 006 001 ( b i t - a r r a y 0040120 & o p t i o n a l r e s u l t 0040140 - b i t - a r r a y ) 006 003 006 001 0040160 006 003 ( * | j o p : | " 9 0040200 - S e p - 8 6 1 7 : 0 5 " ) 006 0040220 001 \r \r 0040240 006 003 ( * * ) 006 001 0040260 \r \r ( c l : i f ( n o t 0040300 ( b i t - a r r a y - p b i 0040320 t - a r r a y ) ) \r 0040340 ( c l : e r r o r " B 0040360 I T - A R R A Y n o t a b 0040400 i t a r r a y " ) ) \r ( 0040420 c o n d \r ( ( n u l 0040440 l r e s u l t - b i t - a r r 0040460 a y ) \r ( s e t q 0040500 r e s u l t - b i t - a r r a 0040520 y ( c l : m a k e - a r r a y 0040540 ( c l : a r r a y - d i m e n 0040560 s i o n s b i t - a r r a y ) 0040600 \r 0040620 0040640 : e l e m e n t - t 0040660 y p e \r 0040700 0040720 ' b i t ) ) ) 0040740 \r ( ( e q r e s u 0040760 l t - b i t - a r r a y t ) \r 0041000 ( s e t q r e s 0041020 u l t - b i t - a r r a y b i 0041040 t - a r r a y ) ) \r 0041060 ( ( n o t ( a n d ( b i t - 0041100 a r r a y - p r e s u l t - b 0041120 i t - a r r a y ) \r 0041140 ( e q u a 0041160 l - d i m e n s i o n s - p b 0041200 i t - a r r a y r e s u l t - 0041220 b i t - a r r a y ) ) ) \r 0041240 ( c l : e r r o r " I 0041260 l l e g a l r e s u l t a r 0041300 r a y " ) ) ) \r ( % d o - 0041320 l o g i c a l - o p ' n o t 0041340 b i t - a r r a y r e s u l t 0041360 - b i t - a r r a y ) \r r 0041400 e s u l t - b i t - a r r a y ) 0041420 \r \r ( c l : d e f u n 006 002 c l 0041440 : b i t - o r c 1 006 001 ( b i t 0041460 - a r r a y 1 b i t - a r r a 0041500 y 2 & o p t i o n a l b i t 0041520 - r e s u l t ) \r 0041540 \r 006 0041560 003 ( * * ) 006 001 \r ( % e x p a 0041600 n d - b i t - o p o r c 1 b 0041620 i t - a r r a y 1 b i t - a r 0041640 r a y 2 b i t - r e s u l t ) 0041660 ) \r \r ( c l : d e f u n 006 002 c 0041700 l : b i t - o r c 2 006 001 ( b i 0041720 t - a r r a y 1 b i t - a r r 0041740 a y 2 & o p t i o n a l b i 0041760 t - r e s u l t ) \r 0042000 \r 0042020 006 003 ( * * ) 006 001 \r ( % e x p 0042040 a n d - b i t - o p o r c 2 0042060 b i t - a r r a y 1 b i t - a 0042100 r r a y 2 b i t - r e s u l t 0042120 ) ) \r \r ( c l : d e f u n 006 002 0042140 c l : b i t - v e c t o r - p 006 0042160 001 ( c l : v e c t o r ) \r 0042200 \r 0042220 006 003 ( * * ) 006 001 \r ( 0042240 a n d ( % v e c t o r p c l 0042260 : v e c t o r ) \r ( 0042300 006 002 | f e t c h | 006 001 ( a r r 0042320 a y - h e a d e r b i t - p ) 0042340 006 002 | o f | 006 001 c l : v e c 0042360 t o r ) ) ) \r \r ( c l : d e f u 0042400 n 006 002 c l : b i t - x o r 006 001 0042420 ( b i t - a r r a y 1 b i t 0042440 - a r r a y 2 & o p t i o n a 0042460 l b i t - r e s u l t ) \r 0042500 \r 0042520 006 003 ( * * ) 006 001 \r ( 0042540 % e x p a n d - b i t - o p x 0042560 o r b i t - a r r a y 1 b i 0042600 t - a r r a y 2 b i t - r e s 0042620 u l t ) ) \r \r ( c l : d e f u n 0042640 006 002 c h a r 006 001 ( s t r i n 0042660 g i n d e x ) ( c l : a s s 0042700 e r t ( t y p e p s t r i n 0042720 g ' s t r i n g ) \r 0042740 * 0043000 ( s t r i n g ) \r 0043020 0043040 " N 0043060 o t a s t r i n g : ~ S " 0043100 s t r i n g ) \r 0043120 0043140 ( c l : a r e f 0043160 s t r i n g i n d e x ) ) \r \r 0043200 ( c l : d e f u n 006 002 c l : a 0043220 r r a y p 006 001 ( a r r a y ) 0043240 006 003 006 001 0043260 0043300 006 003 ( * | j o p : | 0043320 " 5 - S e p - 8 6 1 2 : 5 0043340 3 " ) 006 001 \r 0043360 \r 006 003 ( * 0043400 * ) 006 001 \r \r ( a n d ( o 0043420 r ( % a r r a y p a r r a y 0043440 ) \r ( s 0043460 t r i n g p a r r a y ) ) \r 0043500 t ) ) \r \r ( c l : 0043520 d e f u n 006 002 c l : s t r i n 0043540 g p 006 001 ( s t r i n g ) ( a 0043560 n d ( o r ( % s t r i n g p 0043600 s t r i n g ) \r 0043620 * 0043660 ( s t r i n g p s t r i n g ) 0043700 ) \r 0043720 0043740 t ) ) \r \r ( c l : d e 0043760 f u n 006 002 c o p y - a r r a y 0044000 006 001 ( f r o m - a r r a y & 0044020 o p t i o n a l t o - a r r a 0044040 y ) ( c l : i f ( n o t ( 0044060 % a r r a y p f r o m - a r r 0044100 a y ) ) \r 0044120 * 0044200 ( c l : e r r o r " N o t 0044220 a n a r r a y : ~ S " f r 0044240 o m - a r r a y ) ) \r 0044260 * 0044340 ( c o n d \r 0044360 * 0044420 ( ( 0044440 n u l l t o - a r r a y ) \r 0044460 * 0044540 ( s e t q t o 0044560 - a r r a y ( c l : m a k e - 0044600 a r r a y ( \r 0044620 * 0044720 c l : a r r 0044740 a y - d i m e n s i o n s \r 0044760 * 0045100 f r o m - a r r a y 0045120 ) \r 0045140 * 0045240 : e l e m e n t - t y p e \r 0045260 * 0045360 ( c 0045400 l : a r r a y - e l e m e n t - 0045420 t y p e \r 0045440 * 0045540 f r o m - a r r a y ) 0045560 \r 0045600 * 0045700 : f a t p \r 0045720 * 0046020 ( % f a t - s t r i n 0046040 g - a r r a y - p \r 0046060 * 0046160 f r o m - a 0046200 r r a y ) ) ) ) \r 0046220 * 0046300 ( ( n o t ( e q u a l - d i 0046320 m e n s i o n s - p f r o m - 0046340 a r r a y t o - a r r a y \r 0046360 * 0046460 ) ) \r 0046500 * 0046560 ( c l : e r r o r " D i m e n 0046600 s i o n a l i t y m i s m a t 0046620 c h " ) ) ) \r 0046640 * 0046700 ( c l : 0046720 i f ( 006 002 | f e t c h | 006 001 0046740 ( a r r a y - h e a d e r r e 0046760 a d - o n l y - p ) \r 0047000 * 0047060 006 002 | o f | 0047100 006 001 t o - a r r a y ) \r 0047120 * 0047200 ( % m a k e - 0047220 a r r a y - w r i t e a b l e 0047240 t o - a r r a y ) ) \r 0047260 * 0047340 ( l e t ( ( f r o m - t y p e 0047360 - n u m b e r ( % a r r a y - 0047400 t y p e - n u m b e r \r 0047420 * 0047520 f r o m - a 0047540 r r a y ) ) \r 0047560 * 0047640 ( t o - t y p e - n u m b e 0047660 r ( % a r r a y - t y p e - n 0047700 u m b e r \r 0047720 * 0050020 t o - a r r a 0050040 y ) ) ) \r 0050060 * 0050120 ( 0050140 c l : w h e n ( a n d ( % f 0050160 a t - c h a r - t y p e - p \r 0050200 * 0050300 f 0050320 r o m - t y p e - n u m b e r ) 0050340 \r 0050360 * 0050440 ( % t h i n - 0050460 c h a r - t y p e - p \r 0050500 * 0050600 t o - t 0050620 y p e - n u m b e r ) ) \r 0050640 * 0050720 ( % 0050740 m a k e - s t r i n g - a r r a 0050760 y - f a t t o - a r r a y ) \r 0051000 * 0051100 ( s e t q t o - t y p e - n 0051120 u m b e r ( \r 0051140 * 0051240 % a r r a 0051260 y - t y p e - n u m b e r \r 0051300 * 0051420 t o - a r r a y ) ) ) 0051440 \r 0051460 * 0051520 ( c l : i 0051540 f ( n o t ( e q f r o m - 0051560 t y p e - n u m b e r \r 0051600 * 0051700 t o - t y p e - n 0051720 u m b e r ) ) \r 0051740 * 0052020 ( c l : e r r 0052040 o r \r 0052060 * 0052140 " A r r a y s h a v 0052160 e d i f f e r e n t t y p e 0052200 n u m b e r s " \r 0052220 * 0052320 ) ) \r 0052340 * 0052400 ( 0052420 % f a s t - c o p y - b a s e 0052440 ( % a r r a y - b a s e f r o 0052460 m - a r r a y ) \r 0052500 * 0052560 ( % a r r a 0052600 y - o f f s e t f r o m - a r 0052620 r a y ) \r 0052640 * 0052720 ( % a r r a y - b a 0052740 s e t o - a r r a y ) \r 0052760 * 0053040 ( % 0053060 a r r a y - o f f s e t t o - 0053100 a r r a y ) \r 0053120 * 0053200 ( 006 002 | f e t c 0053220 h | 006 001 ( a r r a y - h e a d 0053240 e r t o t a l - s i z e ) \r 0053260 * 0053360 006 002 | o f | 006 001 f r o m 0053400 - a r r a y ) \r 0053420 * 0053500 f r o m - t y 0053520 p e - n u m b e r ) \r 0053540 * 0053620 t o - a r r a y ) ) \r 0053640 \r ( c l : d e f u n 006 002 d i s 0053660 p l a c e d - a r r a y - p 006 001 0053700 ( a r r a y ) \r 0053720 \r 006 0053740 003 ( * * ) 006 001 \r ( c o n d \r 0053760 ( ( % a r r a y p a r 0054000 r a y ) \r ( 006 002 | f e 0054020 t c h | 006 001 ( a r r a y - h e 0054040 a d e r d i s p l a c e d - p 0054060 ) 006 002 | o f | 006 001 a r r a y 0054100 ) ) \r ( ( s t r i n g p 0054120 a r r a y ) \r n i l 0054140 ) \r ( t ( c l : e r r 0054160 o r " N o t a n a r r a y 0054200 ~ S " a r r a y ) ) ) ) \r \r 0054220 ( c l : d e f u n 006 002 e q u a 0054240 l - d i m e n s i o n s - p 006 001 0054260 ( a r r a y - 1 a r r a y - 0054300 2 ) \r ( c o n d \r 0054320 ( ( % o n e d - a r r a y - 0054340 p a r r a y - 1 ) \r 0054360 ( c o n d \r 0054400 ( ( % o n e d - a r r a y - 0054420 p a r r a y - 2 ) \r 0054440 ( e q l ( 006 002 | f 0054460 e t c h | 006 001 ( a r r a y - h 0054500 e a d e r t o t a l - s i z e 0054520 ) 006 002 | o f | 006 001 a r r a y 0054540 - 1 ) \r 0054560 ( 006 002 | f e t c h | 006 001 0054600 ( a r r a y - h e a d e r t 0054620 o t a l - s i z e ) 006 002 | o f 0054640 | 006 001 a r r a y - 2 ) ) ) \r 0054660 ( ( % t w o d 0054700 - a r r a y - p a r r a y - 2 0054720 ) \r n i l 0054740 ) \r ( ( % g 0054760 e n e r a l - a r r a y - p a 0055000 r r a y - 2 ) \r 0055020 ( a n d ( e q 1 ( l 0055040 e n g t h ( 006 002 | f f e t c h 0055060 | 006 001 ( g e n e r a l - a r r 0055100 a y d i m s ) 006 002 | o f | 006 0055120 001 a r r a y - 2 ) ) ) \r 0055140 ( e q 0055160 l ( 006 002 | f e t c h | 006 001 ( 0055200 a r r a y - h e a d e r t o t 0055220 a l - s i z e ) 006 002 | o f | 006 0055240 001 a r r a y - 1 ) \r 0055260 0055300 ( 006 002 | f e t c h | 006 001 ( a r 0055320 r a y - h e a d e r t o t a l 0055340 - s i z e ) 006 002 | o f | 006 001 0055360 a r r a y - 2 ) ) ) ) \r 0055400 ( t n i l ) ) ) \r 0055420 ( ( % t w o d - a r 0055440 r a y - p a r r a y - 1 ) \r 0055460 ( c o n d \r 0055500 ( ( % o n e d - a r 0055520 r a y - p a r r a y - 2 ) \r 0055540 n i l ) \r 0055560 ( ( % t w o d 0055600 - a r r a y - p a r r a y - 2 0055620 ) \r ( a n 0055640 d ( e q l ( 006 002 | f f e t c 0055660 h | 006 001 ( t w o d - a r r a y 0055700 b o u n d 0 ) 006 002 | o f | 006 0055720 001 a r r a y - 1 ) \r 0055740 0055760 ( 006 002 | f f e t c h | 006 001 ( t 0056000 w o d - a r r a y b o u n d 0 0056020 ) 006 002 | o f | 006 001 a r r a y 0056040 - 2 ) ) \r 0056060 ( e q l ( 006 002 | f f 0056100 e t c h | 006 001 ( t w o d - a r 0056120 r a y b o u n d 1 ) 006 002 | o 0056140 f | 006 001 a r r a y - 1 ) \r 0056160 0056200 ( 006 002 | f f e t c h | 006 001 0056220 ( t w o d - a r r a y b o u 0056240 n d 1 ) 006 002 | o f | 006 001 a r 0056260 r a y - 2 ) ) ) ) \r 0056300 ( ( % g e n e r a l - a 0056320 r r a y - p a r r a y - 2 ) \r 0056340 ( l e t 0056360 ( ( d i m s ( 006 002 | f f e t c 0056400 h | 006 001 ( g e n e r a l - a r 0056420 r a y d i m s ) 006 002 | o f | 0056440 006 001 a r r a y - 2 ) ) ) \r 0056460 ( a 0056500 n d ( e q 2 ( l e n g t h 0056520 d i m s ) ) \r 0056540 ( a n 0056560 d ( e q l ( 006 002 | f f e t c 0056600 h | 006 001 ( t w o d - a r r a y 0056620 b o u n d 0 ) 006 002 | o f | 006 0056640 001 a r r a y - 1 ) \r 0056660 0056700 ( c a r d 0056720 i m s ) ) \r 0056740 0056760 ( e q l ( 006 002 | f f e t c h | 0057000 006 001 ( t w o d - a r r a y b 0057020 o u n d 1 ) 006 002 | o f | 006 001 0057040 a r r a y - 1 ) \r 0057060 0057100 ( c a d r d i 0057120 m s ) ) ) ) ) ) \r 0057140 ( t n i l ) ) ) \r 0057160 ( ( % g e n e r a l - a r 0057200 r a y - p a r r a y - 1 ) \r 0057220 ( l e t ( ( d i m 0057240 s ( 006 002 | f f e t c h | 006 001 0057260 ( g e n e r a l - a r r a y d 0057300 i m s ) 006 002 | o f | 006 001 a r 0057320 r a y - 1 ) ) ) \r 0057340 ( c o n d \r 0057360 ( ( % o n e 0057400 d - a r r a y - p a r r a y - 0057420 2 ) \r 0057440 ( a n d ( e q 1 ( l 0057460 e n g t h d i m s ) ) \r 0057500 0057520 ( e q l ( 006 002 | f e t c h 0057540 | 006 001 ( a r r a y - h e a d e 0057560 r t o t a l - s i z e ) 006 002 0057600 | o f | 006 001 a r r a y - 1 ) \r 0057620 0057640 ( 006 002 | f e 0057660 t c h | 006 001 ( a r r a y - h e 0057700 a d e r t o t a l - s i z e ) 0057720 006 002 | o f | 006 001 a r r a y - 0057740 2 ) ) ) ) \r 0057760 ( ( % t w o d - a r r 0060000 a y - p a r r a y - 2 ) \r 0060020 ( a 0060040 n d ( e q 2 ( l e n g t h 0060060 d i m s ) ) \r 0060100 ( a n 0060120 d ( e q l ( c a r d i m s 0060140 ) \r 0060160 0060200 ( 006 002 | f f e t c h | 006 001 ( 0060220 t w o d - a r r a y b o u n d 0060240 0 ) 006 002 | o f | 006 001 a r r a 0060260 y - 2 ) ) \r 0060300 0060320 ( e q l ( c a d r d i m s ) 0060340 \r 0060360 0060400 ( 006 002 | f f e t c h | 006 001 ( t 0060420 w o d - a r r a y b o u n d 1 0060440 ) 006 002 | o f | 006 001 a r r a y 0060460 - 2 ) ) ) ) ) \r 0060500 ( ( % g e n e r a 0060520 l - a r r a y - p a r r a y - 0060540 2 ) \r 0060560 ( e q u a l d i m s ( 0060600 006 002 | f f e t c h | 006 001 ( g e 0060620 n e r a l - a r r a y d i m s 0060640 ) 006 002 | o f | 006 001 a r r a y 0060660 - 2 ) ) ) \r 0060700 ( t n i l ) ) ) ) \r 0060720 ( t n i l ) ) ) \r 0060740 \r ( c l : d e f u n 006 002 e x t 0060760 e n d a b l e - a r r a y - p 006 0061000 001 ( a r r a y ) \r 0061020 \r 0061040 006 003 ( * * ) 006 001 \r ( c o n d 0061060 \r ( ( % a r r a y p a 0061100 r r a y ) \r ( 006 002 | f 0061120 e t c h | 006 001 ( a r r a y - h 0061140 e a d e r e x t e n d a b l e 0061160 - p ) 006 002 | o f | 006 001 a r r 0061200 a y ) ) \r ( ( s t r i n 0061220 g p a r r a y ) \r n 0061240 i l ) \r ( t ( c l : e 0061260 r r o r " N o t a n a r r 0061300 a y ~ S " a r r a y ) ) ) ) 0061320 \r \r ( c l : d e f u n 006 002 f i 0061340 l l - a r r a y 006 001 ( a r r a 0061360 y v a l u e ) ( c l : i f 0061400 ( n o t ( % a r r a y p a r 0061420 r a y ) ) \r 0061440 * 0061500 ( c l : e r r o r " N o t a 0061520 n a r r a y : ~ S " a r r 0061540 a y ) ) \r 0061560 0061600 ( l e t ( ( t 0061620 o t a l - s i z e ( 006 002 | f e 0061640 t c h | 006 001 ( a r r a y - h e 0061660 a d e r t o t a l - s i z e ) 0061700 006 002 | o f | 006 001 a r r a y ) 0061720 ) \r 0061740 0061760 ( t y p e 0062000 - n u m b e r ( % a r r a y - 0062020 t y p e - n u m b e r a r r a 0062040 y ) ) ) \r 0062060 0062100 ( c l 0062120 : i f ( 006 002 | f e t c h | 006 001 0062140 ( a r r a y - h e a d e r r 0062160 e a d - o n l y - p ) 006 002 | o 0062200 f | 006 001 a r r a y ) \r 0062220 * 0062260 ( % m a k 0062300 e - a r r a y - w r i t e a b l 0062320 e a r r a y ) ) \r 0062340 * 0062400 ( c l : w h e n ( > t o 0062420 t a l - s i z e 0 ) \r 0062440 * 0062500 ( c l : w 0062520 h e n ( a n d ( % t h i n - 0062540 c h a r - t y p e - p t y p e 0062560 - n u m b e r ) \r 0062600 * 0062660 ( % f a t - s t r i 0062700 n g - c h a r - p v a l u e ) 0062720 ) \r 0062740 * 0063000 ( % m a k e - s 0063020 t r i n g - a r r a y - f a t 0063040 a r r a y ) \r 0063060 * 0063120 ( s e 0063140 t q t y p e - n u m b e r ( 0063160 % a r r a y - t y p e - n u m b 0063200 e r a r r a y ) ) ) \r 0063220 * 0063260 ( c l : i 0063300 f ( n o t ( % l l a r r a y 0063320 - t y p e p t y p e - n u m b 0063340 e r v a l u e ) ) \r 0063360 * 0063440 ( c l : e r r o r \r 0063460 * 0063540 " V a l u e o f i 0063560 n c o r r e c t t y p e f o 0063600 r t h i s a r r a y : ~ S 0063620 " \r 0063640 * 0063720 v a l u e ) ) \r 0063740 * 0064000 ( l e t ( ( b a 0064020 s e ( % a r r a y - b a s e 0064040 a r r a y ) ) \r 0064060 * 0064120 ( o f 0064140 f s e t ( % a r r a y - o f f 0064160 s e t a r r a y ) ) ) \r 0064200 * 0064260 006 003 ( * " 0064300 S t a r t t h i n g s o f f 0064320 " ) 006 001 \r 0064340 * 0064400 ( % a r r a y 0064420 - w r i t e v a l u e b a s 0064440 e t y p e - n u m b e r o f 0064460 f s e t ) \r 0064500 * 0064560 006 003 ( * " A n o v e r 0064600 l a p p i n g b l t " ) 006 001 \r 0064620 * 0064700 ( % f a s t - c o p y - 0064720 b a s e b a s e o f f s e t 0064740 b a s e ( c l : 1 + o f f 0064760 s e t ) \r 0065000 * 0065060 ( c l : 1 - t o t a l - s i z 0065100 e ) \r 0065120 * 0065160 t y 0065200 p e - n u m b e r ) ) ) \r 0065220 * 0065260 a r r a y ) ) \r \r ( c 0065300 l : d e f u n 006 002 c l : f i l 0065320 l - p o i n t e r 006 001 ( c l : 0065340 v e c t o r ) \r 0065360 \r 006 003 0065400 ( * * ) 006 001 \r ( c o n d \r 0065420 ( ( a n d ( o r ( % o 0065440 n e d - a r r a y - p c l : v 0065460 e c t o r ) \r 0065500 ( % g e n e r a l - a 0065520 r r a y - p c l : v e c t o r 0065540 ) ) \r ( 006 002 0065560 | f e t c h | 006 001 ( a r r a y 0065600 - h e a d e r f i l l - p o i 0065620 n t e r - p ) 006 002 | o f | 006 001 0065640 c l : v e c t o r ) ) \r 0065660 ( 006 002 | f e t c h | 006 001 ( 0065700 a r r a y - h e a d e r c l : 0065720 f i l l - p o i n t e r ) 006 002 0065740 | o f | 006 001 c l : v e c t o r 0065760 ) ) \r ( ( o r ( % v e 0066000 c t o r p c l : v e c t o r ) 0066020 \r ( s t r i n 0066040 g p c l : v e c t o r ) ) \r 0066060 ( c l : e r r o r " v 0066100 e c t o r h a s n o f i l 0066120 l p o i n t e r " ) ) \r 0066140 ( t ( c l : e r r o r " N 0066160 o t a v e c t o r ~ S " 0066200 c l : v e c t o r ) ) ) ) \r \r ( 0066220 c l : d e f u n 006 002 f i l l - 0066240 v e c t o r 006 001 ( c l : v e c 0066260 t o r v a l u e & k e y ( 0066300 s t a r t 0 ) \r 0066320 0066340 e n d ) ( c l : i 0066360 f ( n o t ( % v e c t o r p 0066400 c l : v e c t o r ) ) \r 0066420 * 0066460 ( c l : e r r o r 0066500 " N o t a v e c t o r : ~ 0066520 S " c l : v e c t o r ) ) \r 0066540 * 0066600 ( c l : i f ( < s t a r t 0066620 0 ) \r 0066640 0066660 ( c l 0066700 : e r r o r " I n v a l i d 0066720 : s t a r t a r g : ~ S " 0066740 s t a r t ) ) \r 0066760 0067000 ( c o n d \r 0067020 * 0067060 ( ( n u l l e n d ) 0067100 \r 0067120 0067140 ( s e t q e n d 0067160 ( 006 002 | f e t c h | 006 001 ( a 0067200 r r a y - h e a d e r t o t a 0067220 l - s i z e ) 006 002 | o f | 006 001 0067240 c l : v e c t o r ) ) ) \r 0067260 * 0067320 ( ( n o t ( < = 0 e 0067340 n d ( 006 002 | f e t c h | 006 001 0067360 ( a r r a y - h e a d e r t o 0067400 t a l - s i z e ) 006 002 | o f | 0067420 006 001 \r 0067440 * 0067560 c l : v e c t o r \r 0067600 * 0067660 ) ) ) \r 0067700 * 0067740 ( c l : e r r o r " I n v a l 0067760 i d : e n d a r g : ~ S " 0070000 e n d ) ) ) \r 0070020 0070040 ( l e t ( 0070060 ( c n t ( - e n d s t a r 0070100 t ) ) \r 0070120 0070140 ( t y p 0070160 e - n u m b e r ( % a r r a y 0070200 - t y p e - n u m b e r c l : 0070220 v e c t o r ) ) ) \r 0070240 * 0070300 ( c l : i f ( 006 002 | f e t c 0070320 h | 006 001 ( a r r a y - h e a d 0070340 e r r e a d - o n l y - p ) 0070360 006 002 | o f | 006 001 c l : v e c t 0070400 o r ) \r 0070420 * 0070460 ( % m a k e - a r r a y - w 0070500 r i t e a b l e c l : v e c t 0070520 o r ) ) \r 0070540 0070560 ( c l : 0070600 w h e n ( > c n t 0 ) \r 0070620 * 0070660 ( c l 0070700 : w h e n ( a n d ( % t h i 0070720 n - c h a r - t y p e - p t y 0070740 p e - n u m b e r ) \r 0070760 * 0071040 ( % f a t - s t r 0071060 i n g - c h a r - p v a l u e 0071100 ) ) \r 0071120 * 0071160 ( % m a k e - s 0071200 t r i n g - a r r a y - f a t 0071220 c l : v e c t o r ) \r 0071240 * 0071320 ( s e t q t y p e - n u m b e 0071340 r ( % a r r a y - t y p e - n 0071360 u m b e r c l : v e c t o r ) 0071400 \r 0071420 * 0071460 ) ) \r 0071500 * 0071540 ( c l : i f ( 0071560 n o t ( % l l a r r a y - t y 0071600 p e p t y p e - n u m b e r 0071620 v a l u e ) ) \r 0071640 * 0071700 ( c l 0071720 : e r r o r \r 0071740 * 0072020 " V a l u e o f i n c o r 0072040 r e c t t y p e f o r t h 0072060 i s a r r a y : ~ S " \r 0072100 * 0072160 v a l u e 0072200 ) ) \r 0072220 * 0072260 ( l e t ( ( b a s e ( % a 0072300 r r a y - b a s e c l : v e c 0072320 t o r ) ) \r 0072340 * 0072400 ( o f f s e 0072420 t ( + s t a r t ( % a r r 0072440 a y - o f f s e t c l : v e c 0072460 t o r ) ) ) ) \r 0072500 * 0072560 006 003 ( * " S t a r t 0072600 t h i n g s o f f " ) 006 001 \r 0072620 * 0072700 ( % a r r a y - w r i t e 0072720 v a l u e b a s e t y p e 0072740 - n u m b e r o f f s e t ) \r 0072760 * 0073040 006 003 ( 0073060 * " A n o v e r l a p p i n 0073100 g b l t " ) 006 001 \r 0073120 * 0073160 ( % f 0073200 a s t - c o p y - b a s e b a 0073220 s e o f f s e t b a s e ( 0073240 c l : 1 + o f f s e t ) \r 0073260 * 0073340 ( c l : 1 - c 0073360 n t ) \r 0073400 * 0073440 t y 0073460 p e - n u m b e r ) ) ) \r 0073500 * 0073540 c l : v e c t o r ) ) \r 0073560 \r ( c l : d e f u n 006 002 c l : 0073600 m a k e - a r r a y 006 001 ( d i 0073620 m e n s i o n s & k e y ( e 0073640 l e m e n t - t y p e t ) \r 0073660 0073700 ( i 0073720 n i t i a l - e l e m e n t n 0073740 i l i n i t i a l - e l e m e 0073760 n t - p ) \r 0074000 0074020 ( i n i t i a l - c o 0074040 n t e n t s n i l i n i t i 0074060 a l - c o n t e n t s - p ) \r 0074100 0074120 ( d 0074140 i s p l a c e d - t o n i l 0074160 d i s p l a c e d - t o - p ) \r 0074200 0074220 ( 0074240 d i s p l a c e d - t o - b a s 0074260 e n i l d i s p l a c e d - 0074300 t o - b a s e - p ) \r 0074320 0074340 ( d i s p l 0074360 a c e d - i n d e x - o f f s e 0074400 t 0 d i s p l a c e d - i n 0074420 d e x - o f f s e t - p ) \r 0074440 0074460 c l : 0074500 f i l l - p o i n t e r a d j 0074520 u s t a b l e e x t e n d a b 0074540 l e f a t p r e a d - o n l 0074560 y - p ) \r 0074600 * 0074640 " 0074660 M a k e a n a r r a y f o 0074700 l l o w i n g t h e k e y 0074720 w o r d s p e c s " \r 0074740 \r 0074760 006 003 ( * * " S t r i n g 0075000 a r e b y d e f a u l t t 0075020 h i n u n l e s s F A T P 0075040 i s T . D I S P L A C E D - 0075060 T O - B A S E i n d i c a t e 0075100 s d i s p l a c e m e n t t 0075120 o a r a w s t o r a g e 0075140 b l o c k . R E A D - O N L Y 0075160 - P i n d i c a t e s a r 0075200 e a d o n l y a r r a y " ) 0075220 006 001 \r \r ( c l : i f ( n 0075240 o t ( c l : l i s t p d i m 0075260 e n s i o n s ) ) \r 0075300 ( s e t q d i m e n s 0075320 i o n s ( l i s t d i m e n 0075340 s i o n s ) ) ) \r ( c l : 0075360 i f ( c l : d o l i s t ( d 0075400 i m d i m e n s i o n s n i 0075420 l ) \r 0075440 ( c l : i f ( o r ( 0075460 < d i m 0 ) \r 0075500 0075520 ( > = d i m c l : 0075540 a r r a y - d i m e n s i o n - 0075560 l i m i t ) ) \r 0075600 0075620 ( r e t u r n t ) ) ) \r 0075640 ( c l : e r r o r 0075660 " D i m e n s i o n s o u t 0075700 o f b o u n d s ~ S " d 0075720 i m e n s i o n s ) ) \r ( 0075740 l e t ( ( r a n k ( l e n g 0075760 t h d i m e n s i o n s ) ) \r 0076000 ( n e l t s 0076020 ( % t o t a l - s i z e d i m 0076040 e n s i o n s ) ) \r 0076060 a r r a y ) \r 0076100 \r 006 0076120 003 ( * * " C o n s i s t e n 0076140 c y c h e c k s " ) 006 001 \r \r 0076160 ( c l : i f ( > 0076200 = r a n k c l : a r r a y - 0076220 r a n k - l i m i t ) \r 0076240 ( c l : e 0076260 r r o r " T o o m a n y d 0076300 i m e n s i o n s : ~ A " r 0076320 a n k ) ) \r ( c 0076340 l : i f ( > = n e l t s c 0076360 l : a r r a y - t o t a l - s i 0076400 z e - l i m i t ) \r 0076420 ( c l : e r r 0076440 o r " T o o m a n y e l e 0076460 m e n t s : ~ A " n e l t s 0076500 ) ) \r ( c l : i 0076520 f ( o r ( a n d d i s p l 0076540 a c e d - t o - p ( o r i n 0076560 i t i a l - e l e m e n t - p 0076600 i n i t i a l - c o n t e n t s 0076620 - p d i s p l a c e d - t o - 0076640 b a s e - p ) ) \r 0076660 ( a n d 0076700 d i s p l a c e d - t o - b a 0076720 s e - p ( o r i n i t i a l 0076740 - e l e m e n t - p i n i t i 0076760 a l - c o n t e n t s - p d i 0077000 s p l a c e d - t o - p ) ) \r 0077020 0077040 ( a n d c l : f i l l - p 0077060 o i n t e r ( n o t ( e q l 0077100 r a n k 1 ) ) ) \r 0077120 ( a 0077140 n d d i s p l a c e d - i n d 0077160 e x - o f f s e t - p ( n o t 0077200 ( o r d i s p l a c e d - t 0077220 o - p d i s p l a c e d - t o 0077240 - b a s e - p ) ) ) \r 0077260 ( a 0077300 n d i n i t i a l - e l e m e 0077320 n t - p i n i t i a l - c o n 0077340 t e n t s - p ) \r 0077360 ( a n d 0077400 a d j u s t a b l e e x t e 0077420 n d a b l e ) \r 0077440 ( a n d 0077460 r e a d - o n l y - p ( o r 0077500 e x t e n d a b l e a d j u s 0077520 t a b l e ) ) ) \r 0077540 ( c l : e r r o 0077560 r " I n c o n s i s t e n t 0077600 o p t i o n s t o m a k e - 0077620 a r r a y " ) ) \r 0077640 ( c l : i f d i s p l a c e 0077660 d - t o - p ( c o n d \r 0077700 0077720 ( ( 0077740 n o t ( % a r r a y p d i s 0077760 p l a c e d - t o ) ) \r 0100000 0100020 ( c 0100040 l : e r r o r " C a n n o t 0100060 d i s p l a c e t o a n I 0100100 n t e r l i s p a r r a y / s 0100120 t r i n g " ) ) \r 0100140 0100160 ( ( n o t 0100200 ( e q u a l ( % g e t - c a n 0100220 o n i c a l - c m l - t y p e 0100240 e l e m e n t - t y p e ) \r 0100260 * 0100320 ( c l : 0100340 a r r a y - e l e m e n t - t y 0100360 p e d i s p l a c e d - t o ) 0100400 ) ) \r 0100420 0100440 ( c l : e r r o r " 0100460 N o t d i s p l a c e d t o 0100500 a n a r r a y o f t h e 0100520 s a m e e l e m e n t - t y 0100540 p e " ) ) \r 0100560 0100600 ( ( > ( + d i 0100620 s p l a c e d - i n d e x - o f 0100640 f s e t n e l t s ) \r 0100660 * 0100720 ( c l : a r r a y - t o t a l 0100740 - s i z e d i s p l a c e d - 0100760 t o ) ) \r 0101000 0101020 ( c l : e r r o r 0101040 " d i s p l a c e d a r r a 0101060 y o u t o f b o u n d s " 0101100 ) ) ) ) \r ( c l 0101120 : i f c l : f i l l - p o i n 0101140 t e r ( c o n d \r 0101160 0101200 ( ( e q 0101220 c l : f i l l - p o i n t e r 0101240 t ) \r 0101260 0101300 ( s e t q c l : 0101320 f i l l - p o i n t e r n e l 0101340 t s ) ) \r 0101360 0101400 ( ( n o t ( a n 0101420 d ( > = c l : f i l l - p o 0101440 i n t e r 0 ) \r 0101460 * 0101520 ( < = c l : f i l 0101540 l - p o i n t e r n e l t s ) 0101560 ) ) \r 0101600 0101620 ( c l : e r r o r 0101640 " F i l l p o i n t e r o u 0101660 t o f b o u n d s ~ A " 0101700 c l : f i l l - p o i n t e r ) 0101720 ) ) ) \r \r 0101740 006 003 ( * * 0101760 " S p e c s r e a d y , m a 0102000 k e t h e a r r a y b y 0102020 c a s e " ) 006 001 \r \r 0102040 ( s e t q a r r a y ( c 0102060 o n d \r 0102100 ( d i s p 0102120 l a c e d - t o - p ( % m a k 0102140 e - d i s p l a c e d - a r r a 0102160 y n e l t s d i m e n s i o 0102200 n s e l e m e n t - t y p e 0102220 \r 0102240 0102260 d 0102300 i s p l a c e d - t o d i s p 0102320 l a c e d - i n d e x - o f f s 0102340 e t c l : f i l l - p o i n t 0102360 e r \r 0102400 * 0102440 r e a d - o n l y - p a d 0102460 j u s t a b l e e x t e n d a 0102500 b l e ) ) \r 0102520 ( d i 0102540 s p l a c e d - t o - b a s e 0102560 ( c l : i f ( o r ( > r a 0102600 n k 1 ) \r 0102620 * 0102660 a d j u s 0102700 t a b l e ) \r 0102720 * 0102760 ( % m a k e - g 0103000 e n e r a l - a r r a y n e l 0103020 t s d i m e n s i o n s e l 0103040 e m e n t - t y p e \r 0103060 * 0103140 c l : f i l l - p o i n 0103160 t e r f a t p r e a d - o n 0103200 l y - p a d j u s t a b l e 0103220 \r 0103240 * 0103300 e x t e n d a 0103320 b l e d i s p l a c e d - t o 0103340 - b a s e \r 0103360 * 0103420 d 0103440 i s p l a c e d - i n d e x - o 0103460 f f s e t ) \r 0103500 * 0103540 ( % m a k e - o 0103560 n e d - a r r a y n e l t s 0103600 e l e m e n t - t y p e c l : 0103620 f i l l - p o i n t e r \r 0103640 * 0103720 f a t p r e a d - 0103740 o n l y - p e x t e n d a b l 0103760 e d i s p l a c e d - t o - b 0104000 a s e \r 0104020 * 0104060 d i s 0104100 p l a c e d - i n d e x - o f f 0104120 s e t ) ) ) \r 0104140 ( ( 0104160 a n d ( e q r a n k 1 ) \r 0104200 0104220 ( n o 0104240 t a d j u s t a b l e ) ) \r 0104260 0104300 ( % m a k e - o n 0104320 e d - a r r a y n e l t s e 0104340 l e m e n t - t y p e c l : f 0104360 i l l - p o i n t e r f a t p 0104400 r e a d - o n l y - p \r 0104420 0104440 e x t 0104460 e n d a b l e ) ) \r 0104500 0104520 ( ( a n d ( e q r a n k 0104540 2 ) \r 0104560 0104600 ( n o t a d j u s t a b l e ) 0104620 ) \r 0104640 ( % m a k e 0104660 - t w o d - a r r a y n e l t 0104700 s d i m e n s i o n s e l e 0104720 m e n t - t y p e f a t p r 0104740 e a d - o n l y - p e x t e n 0104760 d a b l e ) ) \r 0105000 ( 0105020 t ( % m a k e - g e n e r a l 0105040 - a r r a y n e l t s d i m 0105060 e n s i o n s e l e m e n t - 0105100 t y p e c l : f i l l - p o i 0105120 n t e r f a t p \r 0105140 0105160 r e a d 0105200 - o n l y - p a d j u s t a b 0105220 l e e x t e n d a b l e ) ) ) 0105240 ) \r \r 0105260 006 003 ( * * " I 0105300 n i t i a l i z e t h e s t 0105320 o r a g e " ) 006 001 \r \r 0105340 ( c o n d \r 0105360 ( i n i t i a l - c o n 0105400 t e n t s - p ( % a r r a y - 0105420 c o n t e n t - i n i t i a l i 0105440 z e a r r a y i n i t i a l 0105460 - c o n t e n t s ) ) \r 0105500 ( i n i t i a l - 0105520 e l e m e n t - p ( % a r r a 0105540 y - e l e m e n t - i n i t i a 0105560 l i z e a r r a y i n i t i 0105600 a l - e l e m e n t ) ) ) \r 0105620 \r 0105640 006 003 ( * * " R e t u r 0105660 n t h e a r r a y " ) 006 001 \r 0105700 \r a r r a y ) ) 0105720 \r \r ( c l : d e f u n 006 002 m a 0105740 k e - v e c t o r 006 001 ( s i z 0105760 e & k e y ( e l e m e n t - 0106000 t y p e t ) \r 0106020 0106040 ( i n i t i a l - e l e 0106060 m e n t n i l i n i t i a l 0106100 - e l e m e n t - p ) \r 0106120 0106140 f a t p ) " M 0106160 a k e a v e c t o r " ( c 0106200 l : i f ( o r ( < s i z e 0106220 0 ) \r 0106240 * 0106320 ( > = s i z e c l : a r r 0106340 a y - t o t a l - s i z e - l i 0106360 m i t ) ) \r 0106400 * 0106440 ( 0106460 c l : e r r o r " S i z e o 0106500 u t o f b o u n d s : ~ A 0106520 " s i z e ) ) \r 0106540 * 0106600 ( l e t 0106620 ( ( c l : v e c t o r ( % m a 0106640 k e - o n e d - a r r a y s i 0106660 z e \r 0106700 * 0106760 e l 0107000 e m e n t - t y p e n i l f 0107020 a t p ) ) ) \r 0107040 * 0107100 ( c 0107120 l : i f i n i t i a l - e l e 0107140 m e n t - p ( f i l l - a r r 0107160 a y c l : v e c t o r \r 0107200 * 0107320 i n i t i a l - e l e m 0107340 e n t \r 0107360 * 0107460 ) ) \r 0107500 * 0107560 c l : v e c t o r ) ) 0107600 \r \r ( c l : d e f u n 006 002 r e 0107620 a d - o n l y - a r r a y - p 006 0107640 001 ( a r r a y ) \r 0107660 \r 0107700 006 003 ( * * ) 006 001 \r ( c o n d 0107720 \r ( ( % a r r a y p a 0107740 r r a y ) \r ( 006 002 | f 0107760 e t c h | 006 001 ( a r r a y - h 0110000 e a d e r r e a d - o n l y - 0110020 p ) 006 002 | o f | 006 001 a r r a 0110040 y ) ) \r ( ( s t r i n g 0110060 p a r r a y ) \r n i 0110100 l ) \r ( t ( c l : e r 0110120 r o r " N o t a n a r r a 0110140 y ~ S " a r r a y ) ) ) ) \r 0110160 \r ( c l : d e f u n 006 002 c l : 0110200 s b i t 006 001 ( s i m p l e - b 0110220 i t - a r r a y & r e s t i 0110240 n d i c e s ) ( c l : a s s e 0110260 r t ( t y p e p s i m p l e 0110300 - b i t - a r r a y \r 0110320 * 0110420 ' ( c l : s i m p l e - a r r a 0110440 y b i t ) ) \r 0110460 * 0110540 ( s i m p l e - b i t - a r 0110560 r a y ) \r 0110600 * 0110640 " 0110660 N o t a b i t - a r r a y : 0110700 ~ S " s i m p l e - b i t - 0110720 a r r a y ) \r 0110740 * 0111000 ( c l : a p 0111020 p l y ( f u n c t i o n c l 0111040 : a r e f ) \r 0111060 * 0111140 s i m p l e - b i t - a r r a 0111160 y i n d i c e s ) ) \r \r ( c l 0111200 : d e f u n 006 002 c l : s c h a 0111220 r 006 001 ( c l : s i m p l e - s 0111240 t r i n g i n d e x ) ( c l 0111260 : a s s e r t ( t y p e p c 0111300 l : s i m p l e - s t r i n g 0111320 ' c l : s i m p l e - s t r i n 0111340 g ) \r 0111360 * 0111420 ( c l : s i m p l e 0111440 - s t r i n g ) \r 0111460 * 0111520 " N o t 0111540 a s i m p l e - s t r i n g 0111560 : ~ S " c l : s i m p l e - 0111600 s t r i n g ) \r 0111620 * 0111660 ( c l : a r e f c l : 0111700 s i m p l e - s t r i n g i n 0111720 d e x ) ) \r \r ( c l : d e f u n 0111740 006 002 s e t - f i l l - p o i n 0111760 t e r 006 001 ( c l : v e c t o r 0112000 n e w v a l u e ) 006 003 006 001 0112020 006 003 ( * 0112040 | j o p : | " 5 - S e p - 0112060 8 6 1 2 : 5 5 " ) 006 001 \r 0112100 \r 0112120 006 003 ( * * ) 006 001 \r \r 0112140 ( c o n d \r ( ( a n 0112160 d ( o r ( % o n e d - a r r 0112200 a y - p c l : v e c t o r ) \r 0112220 0112240 ( % g e n e r a l - a r r a y - 0112260 p c l : v e c t o r ) ) \r 0112300 ( 006 002 | f e 0112320 t c h | 006 001 ( a r r a y - h e 0112340 a d e r f i l l - p o i n t e 0112360 r - p ) 006 002 | o f | 006 001 c l 0112400 : v e c t o r ) ) \r 0112420 ( c l : i f ( n o t ( < = 0112440 0 n e w v a l u e ( 006 002 | 0112460 f e t c h | 006 001 ( a r r a y - 0112500 h e a d e r t o t a l - s i z 0112520 e ) 006 002 | o f | 006 001 c l : v 0112540 e c t o r ) ) ) \r 0112560 ( c l : e r r o r 0112600 " F i l l p o i n t e r o 0112620 u t o f b o u n d s : ~ A 0112640 " n e w v a l u e ) ) \r 0112660 ( 006 002 | r e p l a c e | 0112700 006 001 ( a r r a y - h e a d e r 0112720 c l : f i l l - p o i n t e r 0112740 ) 006 002 | o f | 006 001 c l : v e 0112760 c t o r 006 002 | w i t h | 006 001 0113000 n e w v a l u e ) \r 0113020 n e w v a l u e ) \r 0113040 ( ( o r ( % v e c t o r p 0113060 c l : v e c t o r ) \r 0113100 ( s t r i n g p c 0113120 l : v e c t o r ) ) \r 0113140 ( c l : e r r o r " V e c 0113160 t o r h a s n o f i l l 0113200 p o i n t e r " ) ) \r 0113220 ( t ( c l : e r r o r " N 0113240 o t a v e c t o r ~ S " 0113260 c l : v e c t o r ) ) ) ) \r \r ( 0113300 c l : d e f u n 006 002 s i m p l 0113320 e - a r r a y - p 006 001 ( a r r 0113340 a y ) \r \r 0113360 006 003 ( * * 0113400 ) 006 001 \r ( a n d ( o r ( % 0113420 s i m p l e - a r r a y - p a 0113440 r r a y ) \r 0113460 ( s t r i n g p a r r a y ) ) 0113500 \r t ) ) \r \r ( c l : 0113520 d e f u n 006 002 c l : s i m p l 0113540 e - b i t - v e c t o r - p 006 001 0113560 ( c l : v e c t o r ) \r 0113600 \r 0113620 006 003 ( * * ) 006 001 \r ( a 0113640 n d ( % o n e d - a r r a y - 0113660 p c l : v e c t o r ) \r 0113700 ( 006 002 | f e t c h | 006 001 0113720 ( a r r a y - h e a d e r s i 0113740 m p l e - p ) 006 002 | o f | 006 001 0113760 c l : v e c t o r ) \r 0114000 ( 006 002 | f e t c h | 006 001 ( 0114020 a r r a y - h e a d e r b i t 0114040 - p ) 006 002 | o f | 006 001 c l : 0114060 v e c t o r ) ) ) \r \r ( c l : d 0114100 e f u n 006 002 c l : s i m p l e 0114120 - s t r i n g - p 006 001 ( s t r 0114140 i n g ) \r 0114160 \r 006 003 ( * 0114200 * ) 006 001 \r ( a n d ( o r ( 0114220 % s i m p l e - s t r i n g - p 0114240 s t r i n g ) \r 0114260 ( s t r i n g p s t r i 0114300 n g ) ) \r t ) ) \r \r 0114320 ( c l : d e f u n 006 002 c l : s 0114340 i m p l e - v e c t o r - p 006 001 0114360 ( c l : v e c t o r ) 006 003 006 0114400 001 0114420 006 003 ( * | j o p : | 0114440 " 5 - S e p - 8 6 1 2 : 5 0114460 4 " ) 006 001 \r 0114500 \r 006 003 ( * 0114520 * ) 006 001 \r \r ( a n d ( % 0114540 o n e d - a r r a y - p c l : 0114560 v e c t o r ) \r 0114600 ( 006 002 | f e t c h | 006 001 ( a r 0114620 r a y - h e a d e r s i m p l 0114640 e - p ) 006 002 | o f | 006 001 c l 0114660 : v e c t o r ) \r 0114700 ( e q ( c l : a r r a y - e 0114720 l e m e n t - t y p e c l : v 0114740 e c t o r ) \r 0114760 t ) ) ) \r \r ( c l : d e f 0115000 u n 006 002 s t r i n g - a r r a 0115020 y - p 006 001 ( a r r a y ) \r 0115040 \r 0115060 006 003 ( * * ) 006 001 \r ( 0115100 % c h a r - t y p e - p ( % a 0115120 r r a y - t y p e - n u m b e r 0115140 a r r a y ) ) ) \r \r ( c l : d 0115160 e f u n 006 002 c l : s v r e f 006 0115200 001 ( c l : s i m p l e - v e c 0115220 t o r i n d e x ) ( c l : a 0115240 s s e r t ( t y p e p c l : 0115260 s i m p l e - v e c t o r ' c 0115300 l : s i m p l e - v e c t o r ) 0115320 \r 0115340 * 0115400 ( c l : s i m p l e - v 0115420 e c t o r ) \r 0115440 * 0115500 " N o t a 0115520 s i m p l e - v e c t o r : 0115540 ~ S " c l : s i m p l e - v e 0115560 c t o r ) \r 0115600 * 0115640 ( c l : a r e f c l : s i 0115660 m p l e - v e c t o r i n d e 0115700 x ) ) \r \r ( c l : d e f u n 006 0115720 002 v e c t o r - l e n g t h 006 001 0115740 ( c l : v e c t o r ) 006 003 006 0115760 001 0116000 006 003 ( * | 0116020 j o p : | " 5 - S e p - 8 6 0116040 1 2 : 5 5 " ) 006 001 \r ( c 0116060 o n d \r ( ( % v e c 0116100 t o r p c l : v e c t o r ) \r 0116120 ( 006 002 | f e t c h 0116140 | 006 001 ( a r r a y - h e a d e 0116160 r c l : f i l l - p o i n t e 0116200 r ) 006 002 | o f | 006 001 c l : v 0116220 e c t o r ) ) \r ( ( 0116240 s t r i n g p c l : v e c t o 0116260 r ) \r ( n c h a r 0116300 s c l : v e c t o r ) ) \r 0116320 ( t ( c l : e r r o r 0116340 " N o t a v e c t o r : 0116360 ~ s " c l : v e c t o r ) ) ) 0116400 ) \r \r ( c l : d e f u n 006 002 c 0116420 l : v e c t o r - p o p 006 001 ( 0116440 c l : v e c t o r ) 006 003 006 001 0116460 0116500 006 003 ( * | j o 0116520 p : | " 5 - S e p - 8 6 1 0116540 2 : 5 5 " ) 006 001 \r 0116560 \r 006 003 0116600 ( * * ) 006 001 \r \r ( c o n 0116620 d \r ( ( a n d ( o 0116640 r ( % o n e d - a r r a y - p 0116660 c l : v e c t o r ) \r 0116700 ( % g e 0116720 n e r a l - a r r a y - p c l 0116740 : v e c t o r ) ) \r 0116760 ( 006 002 | f e t c h | 0117000 006 001 ( a r r a y - h e a d e r 0117020 f i l l - p o i n t e r - p ) 0117040 006 002 | o f | 006 001 c l : v e c 0117060 t o r ) ) \r ( l e 0117100 t ( ( c l : f i l l - p o i n 0117120 t e r ( 006 002 | f e t c h | 006 001 0117140 ( a r r a y - h e a d e r c 0117160 l : f i l l - p o i n t e r ) 0117200 006 002 | o f | 006 001 c l : v e c t 0117220 o r ) ) ) \r 0117240 ( c l : i f ( < = c l : 0117260 f i l l - p o i n t e r 0 ) \r 0117300 0117320 ( c l : e r r o r " C a 0117340 n ' t p o p f r o m z e r 0117360 o f i l l p o i n t e r " ) 0117400 ) \r ( s 0117420 e t q c l : f i l l - p o i n 0117440 t e r ( c l : 1 - c l : f i 0117460 l l - p o i n t e r ) ) \r 0117500 ( 006 002 | r e p 0117520 l a c e | 006 001 ( a r r a y - h 0117540 e a d e r c l : f i l l - p o 0117560 i n t e r ) 006 002 | o f | 006 001 0117600 c l : v e c t o r 006 002 | w i t 0117620 h | 006 001 c l : f i l l - p o i 0117640 n t e r ) \r 0117660 ( c l : a r e f c l : v e 0117700 c t o r c l : f i l l - p o i 0117720 n t e r ) ) ) \r ( ( 0117740 o r ( % v e c t o r p c l : 0117760 v e c t o r ) \r 0120000 ( s t r i n g p c l : v 0120020 e c t o r ) ) \r ( 0120040 c l : e r r o r " V e c t o r 0120060 h a s n o f i l l p o i 0120100 n t e r " ) ) \r ( t 0120120 ( c l : e r r o r " N o t 0120140 a v e c t o r ~ S " c l : 0120160 v e c t o r ) ) ) ) \r \r ( c l : 0120200 d e f u n 006 002 c l : v e c t o 0120220 r - p u s h 006 001 ( n e w - e l 0120240 e m e n t c l : v e c t o r ) 0120260 006 003 006 001 0120300 006 003 ( * | j o p : | " 5 0120320 - S e p - 8 6 1 2 : 5 5 " ) 006 0120340 001 \r \r 0120360 006 003 ( * * ) 006 001 0120400 \r \r ( c o n d \r 0120420 ( ( a n d ( o r ( % o n e 0120440 d - a r r a y - p c l : v e c 0120460 t o r ) \r 0120500 ( % g e n e r a l - a 0120520 r r a y - p c l : v e c t o r 0120540 ) ) \r ( 0120560 006 002 | f e t c h | 006 001 ( a r r 0120600 a y - h e a d e r f i l l - p 0120620 o i n t e r - p ) 006 002 | o f | 0120640 006 001 c l : v e c t o r ) ) \r 0120660 ( l e t ( ( c l : 0120700 f i l l - p o i n t e r ( 006 002 0120720 | f e t c h | 006 001 ( a r r a y 0120740 - h e a d e r c l : f i l l - 0120760 p o i n t e r ) 006 002 | o f | 006 0121000 001 c l : v e c t o r ) ) ) \r 0121020 ( c l : w 0121040 h e n ( < c l : f i l l - p 0121060 o i n t e r ( 006 002 | f e t c h 0121100 | 006 001 ( a r r a y - h e a d e 0121120 r t o t a l - s i z e ) 006 002 0121140 | o f | 006 001 c l : v e c t o r 0121160 ) ) \r 0121200 ( a s e t n e w - 0121220 e l e m e n t c l : v e c t o 0121240 r c l : f i l l - p o i n t e 0121260 r ) \r 0121300 ( 006 002 | r e p l a c 0121320 e | 006 001 ( a r r a y - h e a d 0121340 e r c l : f i l l - p o i n t 0121360 e r ) 006 002 | o f | 006 001 c l : 0121400 v e c t o r 006 002 | w i t h | 006 0121420 001 ( c l : 1 + \r 0121440 * 0121560 c l : f i l l - p o i n t e r \r 0121600 * 0121720 ) ) \r 0121740 0121760 c l : f i l l - p o i n t e r ) 0122000 ) ) \r ( ( o r ( % 0122020 v e c t o r p c l : v e c t o 0122040 r ) \r ( s 0122060 t r i n g p c l : v e c t o r 0122100 ) ) \r ( c l : e r 0122120 r o r " V e c t o r h a s 0122140 n o f i l l p o i n t e r " 0122160 ) ) \r ( t ( c l : 0122200 e r r o r " N o t a v e c 0122220 t o r ~ S " c l : v e c t o 0122240 r ) ) ) ) \r \r ( c l : d e f u n 0122260 006 002 c l : v e c t o r - p u s 0122300 h - e x t e n d 006 001 ( n e w - 0122320 e l e m e n t c l : v e c t o 0122340 r & o p t i o n a l ( e x t 0122360 e n s i o n - s i z e \r 0122400 * 0122500 * d e f a u l t - p u 0122520 s h - e x t e n s i o n - s i z 0122540 e * \r 0122560 * 0122640 ) ) " L 0122660 i k e V E C T O R - P U S H 0122700 e x c e p t i f V E C T O R 0122720 i s a d j u s t a b l e - 0122740 - i n w h i c h c a s e 0122760 a p u s h b e y o n d ( a 0123000 r r a y - t o t a l - s i z e 0123020 V E C T O R ) w i l l c a 0123040 l l a d j u s t - a r r a y " 0123060 \r ( l e t ( ( n e w - i 0123100 n d e x ( c l : v e c t o r - 0123120 p u s h n e w - e l e m e n t 0123140 c l : v e c t o r ) ) ) \r 0123160 ( c l : i f ( n u 0123200 l l n e w - i n d e x ) \r 0123220 ( c o 0123240 n d \r 0123260 ( ( > e x t e n s i 0123300 o n - s i z e 0 ) \r 0123320 ( c 0123340 l : a d j u s t - a r r a y c 0123360 l : v e c t o r ( + ( c l : 0123400 a r r a y - t o t a l - s i z e 0123420 c l : v e c t o r ) \r 0123440 * 0123500 e x t 0123520 e n s i o n - s i z e ) ) \r 0123540 0123560 ( c l : v e c t o r - p u s h 0123600 n e w - e l e m e n t c l : 0123620 v e c t o r ) ) \r 0123640 ( t ( c 0123660 l : e r r o r " E x t e n s i 0123700 o n - s i z e n o t g r e a 0123720 t e r t h a n z e r o " ) ) 0123740 ) \r 0123760 n e w - i n d e x ) ) ) \r \r ( 0124000 c l : d e f u n 006 002 c l : v e 0124020 c t o r p 006 001 ( c l : v e c t 0124040 o r ) 006 003 006 001 0124060 0124100 006 003 ( * | j o p : | 0124120 " 5 - S e p - 8 6 1 2 : 5 5 0124140 " ) 006 001 \r \r 0124160 006 003 ( * * 0124200 ) 006 001 \r \r ( a n d ( o r 0124220 ( % v e c t o r p c l : v e 0124240 c t o r ) \r 0124260 ( s t r i n g p c l : v e 0124300 c t o r ) ) \r t 0124320 ) ) \r \r ( d e f i n e q \r \r ( 006 0124340 004 % c o p y - t o - n e w - a r 0124360 r a y 006 001 \r ( l a m b d a 0124400 ( o l d - d i m s o l d - a r 0124420 r a y o l d - o f f s e t n 0124440 e w - d i m s n e w - a r r a 0124460 y n e w - o f f s e t ) 006 003 006 0124500 001 \r 0124520 * 0124560 006 0124600 003 ( * | j o p : | " 2 1 - S 0124620 e p - 8 6 1 6 : 5 5 " ) 006 001 \r 0124640 \r 0124660 006 003 ( * * " I t 0124700 i s a s s u m e d t h a t 0124720 O L D - A R R A Y a n d N E 0124740 W - A R R A Y a r e o f t 0124760 h e s a m e r a n k " ) 006 001 0125000 \r \r ( l e t ( ( s i z 0125020 e ( m i n ( c a r o l d - 0125040 d i m s ) \r 0125060 ( c a r 0125100 n e w - d i m s ) ) ) ) \r 0125120 ( c l : i f ( c d 0125140 r o l d - d i m s ) \r 0125160 ( c l : 0125200 d o t i m e s ( i s i z e ) 0125220 \r 0125240 ( 006 002 % c o p y 0125260 - t o - n e w - a r r a y 006 001 0125300 ( c d r o l d - d i m s ) \r 0125320 0125340 o l d 0125360 - a r r a y \r 0125400 0125420 ( c l : * ( c a d r 0125440 o l d - d i m s ) \r 0125460 0125500 ( 0125520 + o l d - o f f s e t i ) ) 0125540 \r 0125560 ( 0125600 c d r n e w - d i m s ) \r 0125620 0125640 n e w - 0125660 a r r a y \r 0125700 0125720 ( c l : * ( c a d r 0125740 n e w - d i m s ) \r 0125760 0126000 ( + 0126020 n e w - o f f s e t i ) ) ) 0126040 ) \r 0126060 ( l e t ( ( o l d - t y p 0126100 e - n u m b e r ( 006 002 % a r r 0126120 a y - t y p e - n u m b e r 006 001 0126140 o l d - a r r a y ) ) \r 0126160 0126200 ( n e w - t y p e - n u m 0126220 b e r ( 006 002 % a r r a y - t y 0126240 p e - n u m b e r 006 001 n e w - 0126260 a r r a y ) ) ) \r 0126300 * 0126360 006 003 ( * \r 006 001 0126400 * 0126440 006 003 " C a n o n l y 0126460 d o a f a s t c o p y w 0126500 h e n a r r a y s h a v e 0126520 t h e s a m e t y p e n u 0126540 m b e r " ) 006 001 \r 0126560 ( c 0126600 l : i f ( e q o l d - t y p 0126620 e - n u m b e r n e w - t y p 0126640 e - n u m b e r ) \r 0126660 0126700 ( 006 002 % f a s t - c 0126720 o p y - b a s e 006 001 ( 006 002 % a 0126740 r r a y - b a s e 006 001 o l d - 0126760 a r r a y ) \r 0127000 0127020 o l d - o f 0127040 f s e t \r 0127060 0127100 ( 006 002 % a r r a 0127120 y - b a s e 006 001 n e w - a r r 0127140 a y ) \r 0127160 0127200 n e w - o f f s e 0127220 t s i z e o l d - t y p e - 0127240 n u m b e r ) \r 0127260 0127300 ( c l : e r r o r " A 0127320 r r a y s h a v e d i f f e 0127340 r i n g t y p e n u m b e r 0127360 s " ) ) ) ) ) ) ) \r \r ( 006 004 c l 0127400 : a r e f 006 001 \r ( l a m b d 0127420 a a r g s 006 003 006 001 0127440 * 0127500 006 003 ( * | j 0127520 o p : | " 2 1 - S e p - 8 6 0127540 1 5 : 0 0 " ) 006 001 \r 0127560 \r 006 0127600 003 ( * * ) 006 001 \r \r ( c 0127620 l : i f ( < a r g s 1 ) \r 0127640 ( c l : e 0127660 r r o r " A r e f t a k e s 0127700 a t l e a s t o n e a r 0127720 g " ) ) \r ( l e t ( ( 0127740 a r r a y ( a r g a r g s 0127760 1 ) ) ) \r ( c 0130000 a s e a r g s ( 1 ( 006 002 % 0130020 a r e f 0 006 001 a r r a y ) ) \r 0130040 ( 0130060 2 ( 006 002 % a r e f 1 006 001 a r 0130100 r a y ( a r g a r g s 2 ) 0130120 ) ) \r 0130140 ( 3 ( 006 002 % a r e f 2 006 001 0130160 a r r a y ( a r g a r g s 0130200 2 ) \r 0130220 ( a r 0130240 g a r g s 3 ) ) ) \r 0130260 ( c l : o 0130300 t h e r w i s e ( c o n d \r 0130320 0130340 ( 0130360 ( n o t ( 006 002 % a r r a y p 006 0130400 001 a r r a y ) ) \r 0130420 0130440 ( c l : e 0130460 r r o r " N o t a n a r r 0130500 a y ~ S " a r r a y ) ) \r 0130520 0130540 ( 0130560 ( n o t ( e q l ( c l : a r 0130600 r a y - r a n k a r r a y ) \r 0130620 * 0130660 ( c l : 1 0130700 - a r g s ) ) ) \r 0130720 0130740 ( c l : e 0130760 r r o r " R a n k m i s m a 0131000 t c h " ) ) \r 0131020 0131040 ( t \r 0131060 \r 0131100 006 003 ( * * " I f w e ' v e 0131120 g o t t e n t h i s f a r 0131140 A R R A Y m u s t b e a 0131160 g e n e r a l a r r a y " ) 0131200 006 001 \r 0131220 * 0131300 006 003 ( * " C h e c k i n d i 0131320 c e s i n b o u n d s " ) 006 0131340 001 \r 0131360 0131400 ( c l : d o ( ( i 0131420 2 ( c l : 1 + i ) ) \r 0131440 * 0131500 ( d i m l i s t 0131520 ( 006 002 | f f e t c h | 006 001 ( 0131540 g e n e r a l - a r r a y d i 0131560 m s ) 006 002 | o f | 006 001 a r r 0131600 a y ) \r 0131620 * 0131660 ( c d r d i m l i 0131700 s t ) ) \r 0131720 * 0131760 i n d e x ) \r 0132000 * 0132040 ( ( > i a r g s ) ) \r 0132060 * 0132120 ( s e t q i n 0132140 d e x ( a r g a r g s i ) 0132160 ) \r 0132200 0132220 ( c l : 0132240 i f ( n o t ( a n d ( > = 0132260 i n d e x 0 ) \r 0132300 * 0132360 ( < i n d e x ( c 0132400 a r d i m l i s t ) ) ) ) \r 0132420 * 0132500 ( c l : e r r o r " I n d e x 0132520 o u t o f b o u n d s : 0132540 ~ A " i n d e x ) ) ) \r 0132560 * 0132640 006 003 ( * " 0132660 N o w p r o c e e d t o e 0132700 x t r a c t t h e e l e m e 0132720 n t " ) 006 001 \r 0132740 0132760 ( l e t ( 0133000 ( r o w - m a j o r - i n d e x 0133020 ( c l : d o ( ( i 2 ( c 0133040 l : 1 + i ) ) \r 0133060 * 0133140 ( d i m l 0133160 i s t ( c d r ( 006 002 | f f e 0133200 t c h | 006 001 \r 0133220 * 0133320 ( g e n e r a l 0133340 - a r r a y \r 0133360 * 0133460 d i m s ) 006 0133500 002 | o f | 006 001 a r r a y ) ) \r 0133520 * 0133620 ( c d r d i 0133640 m l i s t ) ) \r 0133660 * 0133740 ( t o t a l 0133760 0 ) ) \r 0134000 * 0134060 ( ( e q l i a r 0134100 g s ) \r 0134120 * 0134200 ( + t o t a l ( 0134220 a r g a r g s a r g s ) ) ) 0134240 \r 0134260 * 0134340 ( s e t q t o t a l \r 0134360 * 0134460 ( c l : * ( c a r d i m l i 0134500 s t ) \r 0134520 * 0134600 ( + t 0134620 o t a l ( a r g a r g s i 0134640 ) ) ) ) ) ) \r 0134660 * 0134720 ( b a s e - a r r a y a r r a 0134740 y ) ) \r 0134760 0135000 ( % g e 0135020 n e r a l - a r r a y - a d j u 0135040 s t - b a s e b a s e - a r r 0135060 a y r o w - m a j o r - i n d 0135100 e x ) \r 0135120 0135140 ( 006 002 % 0135160 a r r a y - r e a d 006 001 ( 006 002 0135200 | f e t c h | 006 001 ( a r r a y 0135220 - h e a d e r b a s e ) 006 002 0135240 | o f | 006 001 b a s e - a r r a 0135260 y ) \r 0135300 * 0135340 ( 006 002 | f e t c h | 006 001 ( 0135360 a r r a y - h e a d e r t y p 0135400 e - n u m b e r ) 006 002 | o f | 0135420 006 001 b a s e - a r r a y ) \r 0135440 * 0135500 ( + 0135520 ( % g e t - a r r a y - o f f 0135540 s e t b a s e - a r r a y ) \r 0135560 * 0135640 r o w - m a j o r - i n d e 0135660 x ) ) ) ) ) ) ) ) ) ) \r \r ( 006 004 0135700 c l : a r r a y - i n - b o u n 0135720 d s - p 006 001 \r ( l a m b d a 0135740 a r g s 006 003 006 001 0135760 * 0136020 006 003 ( * | j o 0136040 p : | " 5 - S e p - 8 6 1 0136060 1 : 2 2 " ) 006 001 \r 0136100 \r 006 003 0136120 ( * * ) 006 001 \r \r ( c l 0136140 : i f ( < a r g s 1 ) \r 0136160 ( c l : e r 0136200 r o r " A r r a y - i n - b o 0136220 u n d s - p t a k e s a t 0136240 l e a s t o n e a r g " ) ) 0136260 \r ( l e t ( ( a r r a 0136300 y ( a r g a r g s 1 ) ) ) 0136320 \r ( c o n d \r 0136340 ( ( n o 0136360 t ( c l : a r r a y p a r r 0136400 a y ) ) \r 0136420 ( c l : e r r o r " N o t 0136440 a n a r r a y ~ S " a r 0136460 r a y ) ) \r 0136500 ( ( n o t ( e q l ( c l 0136520 : a r r a y - r a n k a r r a 0136540 y ) \r 0136560 ( c l : 1 - 0136600 a r g s ) ) ) \r 0136620 ( c l : e r r o r 0136640 " R a n k m i s m a t c h " ) 0136660 ) \r ( t 0136700 ( % c h e c k - i n d i c e s 0136720 a r r a y 2 a r g s ) ) ) 0136740 ) ) ) \r \r ( 006 004 c l : a r r a y 0136760 - r o w - m a j o r - i n d e x 0137000 006 001 \r ( l a m b d a a r g 0137020 s 006 003 006 001 0137040 * 0137100 006 003 ( * | j o p : | 0137120 " 5 - S e p - 8 6 1 1 : 2 3 0137140 " ) 006 001 \r \r 0137160 006 003 ( * * 0137200 ) 006 001 \r \r ( c l : i f 0137220 ( < a r g s 1 ) \r 0137240 ( c l : e r r o r 0137260 " A r r a y - r o w - m a j o r 0137300 - i n d e x t a k e s a t 0137320 l e a s t o n e a r g " ) ) 0137340 \r ( l e t * ( ( a r r 0137360 a y ( a r g a r g s 1 ) ) 0137400 \r ( r a n 0137420 k ( c l : a r r a y - r a n k 0137440 a r r a y ) ) ) \r 0137460 ( c o n d \r 0137500 ( ( n o t ( e q 0137520 l r a n k ( c l : 1 - a r 0137540 g s ) ) ) \r 0137560 ( c l : e r r o r " R 0137600 a n k m i s m a t c h " ) ) \r 0137620 ( ( n 0137640 o t ( % c h e c k - i n d i c 0137660 e s a r r a y 2 a r g s ) 0137700 ) \r 0137720 ( c l : e r r o r " I n d e x 0137740 o u t o f b o u n d s " ) 0137760 ) \r ( 0140000 t ( c l : d o ( ( i 2 ( 0140020 c l : 1 + i ) ) \r 0140040 0140060 ( t o t a l 0 ) ) \r 0140100 0140120 ( ( e q l i a r g s 0140140 ) \r 0140160 ( + t o t 0140200 a l ( a r g a r g s a r g 0140220 s ) ) ) \r 0140240 ( s e t 0140260 q t o t a l ( c l : * ( c 0140300 l : a r r a y - d i m e n s i o 0140320 n a r r a y ( c l : 1 - i 0140340 ) ) \r 0140360 0140400 ( + t 0140420 o t a l ( a r g a r g s i 0140440 ) ) ) ) ) ) ) ) ) ) \r \r ( 006 004 a 0140460 s e t 006 001 \r ( l a m b d a 0140500 a r g s 006 003 006 001 0140520 * 0140560 006 003 ( * | j o p 0140600 : | " 2 1 - S e p - 8 6 1 8 0140620 : 5 7 " ) 006 001 \r 0140640 \r 006 003 ( 0140660 * * ) 006 001 \r \r ( c l : 0140700 i f ( < a r g s 2 ) \r 0140720 ( c l : e r r 0140740 o r " A s e t t a k e s a 0140760 t l e a s t t w o a r g s 0141000 " ) ) \r ( l e t ( ( n 0141020 e w v a l u e ( a r g a r g 0141040 s 1 ) ) \r 0141060 ( a r r a y ( a r g a r g s 0141100 2 ) ) ) \r ( 0141120 c a s e a r g s ( 2 ( 006 002 0141140 % a s e t 0 006 001 n e w v a l u 0141160 e a r r a y ) ) \r 0141200 ( 3 ( 006 002 % 0141220 a s e t 1 006 001 n e w v a l u e 0141240 a r r a y ( a r g a r g s 0141260 3 ) ) ) \r 0141300 ( 4 ( 006 002 % a s e t 0141320 2 006 001 n e w v a l u e a r r 0141340 a y ( a r g a r g s 3 ) \r 0141360 0141400 ( a r g a r 0141420 g s 4 ) ) ) \r 0141440 ( c l : o t h e r 0141460 w i s e ( c o n d \r 0141500 0141520